From 9ec87878a1d48640caa2d660deee8f739d62bbf9 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:43:37 +0200 Subject: [PATCH 01/54] feat(assets): :bento: new logo proposal --- public/favicon-large-outline.svg | 147 ------------------------------ public/favicon-small-outline.svg | 152 ------------------------------- public/favicon.svg | 136 +-------------------------- src/assets/images/logo.svg | 16 +--- 4 files changed, 2 insertions(+), 449 deletions(-) delete mode 100644 public/favicon-large-outline.svg delete mode 100644 public/favicon-small-outline.svg diff --git a/public/favicon-large-outline.svg b/public/favicon-large-outline.svg deleted file mode 100644 index 0d0aa17..0000000 --- a/public/favicon-large-outline.svg +++ /dev/null @@ -1,147 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - width="92.201767mm" - height="92.201752mm" - viewBox="0 0 92.201767 92.201752" - version="1.1" - id="svg936" - sodipodi:docname="favicon-large-outline.svg" - inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns="http://www.w3.org/2000/svg" - xmlns:svg="http://www.w3.org/2000/svg"> - <sodipodi:namedview - id="namedview36" - pagecolor="#ffffff" - bordercolor="#111111" - borderopacity="1" - inkscape:pageshadow="0" - inkscape:pageopacity="0" - inkscape:pagecheckerboard="1" - inkscape:document-units="mm" - showgrid="false" - inkscape:snap-bbox="true" - inkscape:bbox-paths="true" - inkscape:bbox-nodes="true" - inkscape:snap-bbox-edge-midpoints="true" - inkscape:snap-bbox-midpoints="true" - inkscape:snap-page="true" - inkscape:zoom="1.8116734" - inkscape:cx="-49.677827" - inkscape:cy="206.71496" - inkscape:window-width="2560" - inkscape:window-height="1376" - inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="1" - inkscape:current-layer="svg936" - inkscape:snap-global="true" /> - <defs - id="defs933"> - <inkscape:path-effect - down_right_point="52.288009,77.780807" - down_left_point="20.068929,110.34112" - up_right_point="52.288009,52.530593" - up_left_point="20.068929,20.346231" - effect="perspective-envelope" - id="path-effect4940" - is_visible="true" - lpeversion="1" - deform_type="perspective" - horizontal_mirror="false" - vertical_mirror="false" - overflow_perspective="false" /> - <inkscape:path-effect - down_right_point="15.803945,123.84352" - down_left_point="-17.47761,113.54459" - up_right_point="15.803945,12.392374" - up_left_point="-17.47761,10.76222" - effect="perspective-envelope" - id="path-effect4938" - is_visible="true" - lpeversion="1" - deform_type="perspective" - horizontal_mirror="false" - vertical_mirror="false" - overflow_perspective="false" /> - <inkscape:path-effect - down_right_point="-21.180257,109.09997" - down_left_point="-48.863556,81.317737" - up_right_point="-21.180257,20.975556" - up_left_point="-48.863556,49.182794" - effect="perspective-envelope" - id="path-effect4936" - is_visible="true" - lpeversion="1" - deform_type="perspective" - horizontal_mirror="false" - vertical_mirror="false" - overflow_perspective="false" /> - <inkscape:path-effect - effect="bounding_box" - id="path-effect4915" - is_visible="true" - lpeversion="1" - linkedpath="" - visualbounds="false" /> - <clipPath - clipPathUnits="userSpaceOnUse" - id="clipPath1979"> - <path - id="path1981" - style="fill:#000000;stroke:#000000;stroke-width:2.64583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m -17.562228,-22.854671 c 8.855019,-8.85502 4.008778,-8.4357 26.245047,-30.671974 22.236282,-22.236279 26.885662,-23.232311 32.974431,-29.321072 6.088769,-6.088768 4.904512,-14.698424 -0.387149,-19.990073 -5.291651,-5.29166 -13.901309,-6.47592 -19.990081,-0.38715 -6.088758,6.088764 -7.084779,10.738152 -29.3210584,32.974432 -22.2362696,22.236269 -21.8169606,17.390012 -30.6719906,26.245048 -8.85504,8.855035 -4.44845,17.027382 -0.162511,21.313309 4.285951,4.285922 12.45828,8.692515 21.313312,-0.16252 z" /> - </clipPath> - <clipPath - clipPathUnits="userSpaceOnUse" - id="clipPath1979-1"> - <path - id="path1981-9" - style="fill:#000000;stroke:#000000;stroke-width:2.64583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m -17.562228,-22.854671 c 8.855019,-8.85502 4.008778,-8.4357 26.245047,-30.671974 22.236282,-22.236279 26.885662,-23.232311 32.974431,-29.321072 6.088769,-6.088768 4.904512,-14.698424 -0.387149,-19.990073 -5.291651,-5.29166 -13.901309,-6.47592 -19.990081,-0.38715 -6.088758,6.088764 -7.084779,10.738152 -29.3210584,32.974432 -22.2362696,22.236269 -21.8169606,17.390012 -30.6719906,26.245048 -8.85504,8.855035 -4.44845,17.027382 -0.162511,21.313309 4.285951,4.285922 12.45828,8.692515 21.313312,-0.16252 z" /> - </clipPath> - </defs> - <ellipse - style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;paint-order:normal" - id="path7070" - cx="46.100883" - cy="46.100876" - rx="37.684639" - ry="37.684635" /> - <g - id="layer1-6" - transform="matrix(1.0290845,0,0,1.0290845,45.119552,110.44056)" /> - <path - style="color:#000000;fill:#ffffff;stroke-width:1.00227;-inkscape-stroke:none" - d="M 73.061296,0.01833152 C 68.066071,-0.19603056 62.941066,1.4606521 58.941342,5.4603766 52.622261,11.77946 52.47912,15.115396 33.326535,34.267979 23.779232,43.815284 19.43186,47.241205 16.460111,49.343228 c -2.971749,2.102022 -5.646239,3.569253 -9.9307533,7.853771 -5.0514705,5.051467 -7.14514773,11.453025 -6.37384839,16.811613 0.77129935,5.358586 3.62874789,9.2 6.23290339,11.804147 2.6041461,2.604129 6.4455653,5.461606 11.8041483,6.232904 5.358583,0.771298 11.762104,-1.322382 16.81357,-6.373849 4.284508,-4.284508 5.749789,-6.959006 7.851813,-9.930754 C 44.95997,72.769314 48.385888,68.421943 57.933193,58.874636 77.085779,39.722052 80.421713,39.578906 86.740795,33.259831 94.740243,25.260384 93.36511,12.760038 86.404094,5.7990363 82.923593,2.3185286 78.05652,0.23269361 73.061296,0.01833152 Z M 72.804853,13.78005 c 1.25119,0.128846 2.459473,0.873838 3.601929,2.016298 2.284916,2.28491 2.975946,4.826929 0.336703,7.466171 -4.319609,4.319602 -9.107517,5.916682 -28.807603,25.616764 -9.879018,9.879022 -14.048124,15.061075 -16.619771,18.696752 -2.571647,3.635678 -2.855767,4.646944 -6.307291,8.098467 -2.684577,2.68458 -3.720599,2.534092 -4.801918,2.378449 -1.081321,-0.155642 -2.680979,-1.097311 -3.821178,-2.237503 -1.14018,-1.140175 -2.079905,-2.739858 -2.235545,-3.821177 -0.155643,-1.081319 -0.30809,-2.115383 2.376491,-4.799962 3.451526,-3.451529 4.462785,-3.737602 8.098467,-6.309248 3.635682,-2.571646 8.819689,-6.740751 18.698709,-16.61977 19.700086,-19.700086 21.295214,-24.488006 25.614806,-28.807604 1.319624,-1.319622 2.615011,-1.806484 3.866201,-1.677637 z" - id="path1981-3" /> - <g - id="g1820" - clip-path="url(#clipPath1979)" - transform="matrix(0.87164945,0,0,0.87164945,45.269682,100.59753)"> - <path - id="rect1503" - style="fill:#84cc16;fill-opacity:1;stroke-width:4.24737;stroke-linecap:round;stroke-linejoin:round" - transform="rotate(-45)" - d="m -13.114324,-75.221169 h 39.049752 v 63.372471 h -39.049752 z" - sodipodi:nodetypes="ccccc" /> - <path - id="rect1503-3" - style="fill:#65a30d;fill-opacity:1;stroke-width:4.24737;stroke-linecap:round;stroke-linejoin:round" - transform="rotate(-45)" - d="m 25.935436,-75.221169 h 39.049752 v 63.372471 H 25.935436 Z" /> - <path - id="rect1503-3-6" - style="fill:#4d7c0f;stroke-width:4.24737;stroke-linecap:round;stroke-linejoin:round" - transform="rotate(-45)" - d="m 64.985191,-75.221169 h 39.049749 v 63.372471 H 64.985191 Z" /> - </g> - <g - aria-label="Sno" - transform="rotate(-45)" - id="text10247-6-9" - style="font-size:64.5726px;line-height:1.25;letter-spacing:0px;stroke-width:1.87397" /> -</svg> diff --git a/public/favicon-small-outline.svg b/public/favicon-small-outline.svg deleted file mode 100644 index 0dd8d8e..0000000 --- a/public/favicon-small-outline.svg +++ /dev/null @@ -1,152 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - width="92.201767mm" - height="92.201752mm" - viewBox="0 0 92.201767 92.201752" - version="1.1" - id="svg936" - sodipodi:docname="favicon-small-outline.svg" - inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns="http://www.w3.org/2000/svg" - xmlns:svg="http://www.w3.org/2000/svg"> - <sodipodi:namedview - id="namedview36" - pagecolor="#ffffff" - bordercolor="#111111" - borderopacity="1" - inkscape:pageshadow="0" - inkscape:pageopacity="0" - inkscape:pagecheckerboard="1" - inkscape:document-units="mm" - showgrid="false" - inkscape:snap-bbox="true" - inkscape:bbox-paths="true" - inkscape:bbox-nodes="true" - inkscape:snap-bbox-edge-midpoints="true" - inkscape:snap-bbox-midpoints="true" - inkscape:snap-page="true" - inkscape:zoom="1.8116734" - inkscape:cx="-49.677827" - inkscape:cy="206.71496" - inkscape:window-width="2560" - inkscape:window-height="1376" - inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="1" - inkscape:current-layer="svg936" - inkscape:snap-global="true" /> - <defs - id="defs933"> - <inkscape:path-effect - down_right_point="52.288009,77.780807" - down_left_point="20.068929,110.34112" - up_right_point="52.288009,52.530593" - up_left_point="20.068929,20.346231" - effect="perspective-envelope" - id="path-effect4940" - is_visible="true" - lpeversion="1" - deform_type="perspective" - horizontal_mirror="false" - vertical_mirror="false" - overflow_perspective="false" /> - <inkscape:path-effect - down_right_point="15.803945,123.84352" - down_left_point="-17.47761,113.54459" - up_right_point="15.803945,12.392374" - up_left_point="-17.47761,10.76222" - effect="perspective-envelope" - id="path-effect4938" - is_visible="true" - lpeversion="1" - deform_type="perspective" - horizontal_mirror="false" - vertical_mirror="false" - overflow_perspective="false" /> - <inkscape:path-effect - down_right_point="-21.180257,109.09997" - down_left_point="-48.863556,81.317737" - up_right_point="-21.180257,20.975556" - up_left_point="-48.863556,49.182794" - effect="perspective-envelope" - id="path-effect4936" - is_visible="true" - lpeversion="1" - deform_type="perspective" - horizontal_mirror="false" - vertical_mirror="false" - overflow_perspective="false" /> - <inkscape:path-effect - effect="bounding_box" - id="path-effect4915" - is_visible="true" - lpeversion="1" - linkedpath="" - visualbounds="false" /> - <clipPath - clipPathUnits="userSpaceOnUse" - id="clipPath1979"> - <path - id="path1981" - style="fill:#000000;stroke:#000000;stroke-width:2.64583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m -17.562228,-22.854671 c 8.855019,-8.85502 4.008778,-8.4357 26.245047,-30.671974 22.236282,-22.236279 26.885662,-23.232311 32.974431,-29.321072 6.088769,-6.088768 4.904512,-14.698424 -0.387149,-19.990073 -5.291651,-5.29166 -13.901309,-6.47592 -19.990081,-0.38715 -6.088758,6.088764 -7.084779,10.738152 -29.3210584,32.974432 -22.2362696,22.236269 -21.8169606,17.390012 -30.6719906,26.245048 -8.85504,8.855035 -4.44845,17.027382 -0.162511,21.313309 4.285951,4.285922 12.45828,8.692515 21.313312,-0.16252 z" /> - </clipPath> - </defs> - <ellipse - style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;paint-order:normal" - id="path7070" - cx="46.100883" - cy="46.100876" - rx="37.684639" - ry="37.684635" /> - <g - id="layer1-6" - transform="matrix(1.0290845,0,0,1.0290845,45.119552,110.44056)"> - <g - id="path1981-3"> - <path - style="color:#000000;fill:#ff00ff;stroke-width:10.6629;-inkscape-stroke:none" - d="m -15.185712,-27.945904 c 7.7184726,-7.718473 3.494249,-7.352973 22.876481,-26.735209 19.382243,-19.38224 23.434872,-20.250431 28.742145,-25.557696 5.307272,-5.307272 4.275015,-12.811874 -0.337459,-17.424336 -4.612464,-4.612475 -12.117068,-5.644735 -17.424343,-0.33746 -5.307262,5.307268 -6.175443,9.359905 -25.5576841,28.742146 -19.3822319,19.382232 -19.0167419,15.157994 -26.7352239,22.876482 -7.718491,7.718486 -3.877489,14.841908 -0.141652,18.577734 3.735846,3.735821 10.859252,7.576826 18.577736,-0.141661 z" - id="path9363" /> - <path - style="color:#000000;fill:#ffffff;stroke-width:1.01124;-inkscape-stroke:none" - d="m 28.104252,-107.30019 c -4.578875,-0.20576 -9.278685,1.32109 -12.984165,5.02657 -6.1293874,6.129394 -6.4526034,9.671981 -25.843903,29.06328 -9.673541,9.673541 -14.162354,13.223011 -17.242436,15.401663 -3.080083,2.17865 -5.574151,3.512166 -9.794414,7.732432 -4.805201,4.805197 -6.64145,10.604789 -5.939062,15.484616 0.702388,4.879828 3.349676,8.478963 5.796855,10.926136 2.447173,2.447155 6.046312,5.094467 10.926135,5.796855 4.879824,0.702386 10.67942,-1.133864 15.484615,-5.939062 4.2202586,-4.220258 5.5537806,-6.714334 7.7324334,-9.794414 2.178653,-3.08008 5.7281207,-7.568893 15.4016636,-17.242436 19.391302,-19.3913 22.935861,-19.714518 29.065255,-25.843903 7.410959,-7.410959 6.105792,-18.797991 -0.341689,-25.245447 -3.223732,-3.22374 -7.682411,-5.16054 -12.261288,-5.36629 z m -0.195532,10.493587 c 1.723406,0.140529 3.392445,1.057898 4.833017,2.498474 2.88115,2.881142 3.662598,6.672988 0.339713,9.995873 -4.60445,4.604444 -9.25639,6.03504 -29.0652552,25.843902 -9.9265311,9.926533 -14.0419888,15.054351 -16.5788098,18.640792 -2.53682,3.586442 -2.968346,4.811095 -6.55331,8.396059 -3.000038,3.000039 -4.706525,3.122384 -6.324202,2.88954 -1.617678,-0.232843 -3.50828,-1.416681 -4.838943,-2.747334 -1.330645,-1.330642 -2.51449,-3.221266 -2.747333,-4.838943 -0.232845,-1.617676 -0.108526,-3.322188 2.891515,-6.322226 3.584968,-3.584971 4.809613,-4.018467 8.396059,-6.555286 3.586444,-2.536819 8.712284,-6.652278 18.6388157,-16.57881 19.8088643,-19.808863 21.2414423,-24.460814 25.8458783,-29.065256 1.661444,-1.661443 3.439449,-2.297314 5.162855,-2.156785 z" - id="path9365" /> - </g> - </g> - <g - id="layer1" - transform="matrix(1.0290845,0,0,1.0290845,45.119554,110.44056)" - style="display:inline"> - <g - id="g1820" - clip-path="url(#clipPath1979)" - transform="matrix(0.87164945,0,0,0.87164945,0.12239456,-8.0246424)"> - <path - id="rect1503" - style="fill:#84cc16;fill-opacity:1;stroke-width:4.24737;stroke-linecap:round;stroke-linejoin:round" - transform="rotate(-45)" - d="m -13.114324,-75.221169 h 39.049752 v 63.372471 h -39.049752 z" - sodipodi:nodetypes="ccccc" /> - <path - id="rect1503-3" - style="fill:#65a30d;fill-opacity:1;stroke-width:4.24737;stroke-linecap:round;stroke-linejoin:round" - transform="rotate(-45)" - d="m 25.935436,-75.221169 h 39.049752 v 63.372471 H 25.935436 Z" /> - <path - id="rect1503-3-6" - style="fill:#4d7c0f;stroke-width:4.24737;stroke-linecap:round;stroke-linejoin:round" - transform="rotate(-45)" - d="m 64.985191,-75.221169 h 39.049749 v 63.372471 H 64.985191 Z" /> - </g> - </g> - <g - aria-label="Sno" - transform="rotate(-45)" - id="text10247-6-9" - style="font-size:64.5726px;line-height:1.25;letter-spacing:0px;stroke-width:1.87397" /> -</svg> diff --git a/public/favicon.svg b/public/favicon.svg index aa5e238..5f35e22 100644 --- a/public/favicon.svg +++ b/public/favicon.svg @@ -1,135 +1 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - width="92.201767mm" - height="92.201752mm" - viewBox="0 0 92.201767 92.201752" - version="1.1" - id="svg936" - sodipodi:docname="favicon.svg" - inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns="http://www.w3.org/2000/svg" - xmlns:svg="http://www.w3.org/2000/svg"> - <sodipodi:namedview - id="namedview36" - pagecolor="#ffffff" - bordercolor="#111111" - borderopacity="1" - inkscape:pageshadow="0" - inkscape:pageopacity="0" - inkscape:pagecheckerboard="1" - inkscape:document-units="mm" - showgrid="false" - inkscape:snap-bbox="true" - inkscape:bbox-paths="true" - inkscape:bbox-nodes="true" - inkscape:snap-bbox-edge-midpoints="true" - inkscape:snap-bbox-midpoints="true" - inkscape:snap-page="true" - inkscape:zoom="1.8116734" - inkscape:cx="-49.677827" - inkscape:cy="206.71496" - inkscape:window-width="2560" - inkscape:window-height="1376" - inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="1" - inkscape:current-layer="svg936" - inkscape:snap-global="true" /> - <defs - id="defs933"> - <inkscape:path-effect - down_right_point="52.288009,77.780807" - down_left_point="20.068929,110.34112" - up_right_point="52.288009,52.530593" - up_left_point="20.068929,20.346231" - effect="perspective-envelope" - id="path-effect4940" - is_visible="true" - lpeversion="1" - deform_type="perspective" - horizontal_mirror="false" - vertical_mirror="false" - overflow_perspective="false" /> - <inkscape:path-effect - down_right_point="15.803945,123.84352" - down_left_point="-17.47761,113.54459" - up_right_point="15.803945,12.392374" - up_left_point="-17.47761,10.76222" - effect="perspective-envelope" - id="path-effect4938" - is_visible="true" - lpeversion="1" - deform_type="perspective" - horizontal_mirror="false" - vertical_mirror="false" - overflow_perspective="false" /> - <inkscape:path-effect - down_right_point="-21.180257,109.09997" - down_left_point="-48.863556,81.317737" - up_right_point="-21.180257,20.975556" - up_left_point="-48.863556,49.182794" - effect="perspective-envelope" - id="path-effect4936" - is_visible="true" - lpeversion="1" - deform_type="perspective" - horizontal_mirror="false" - vertical_mirror="false" - overflow_perspective="false" /> - <inkscape:path-effect - effect="bounding_box" - id="path-effect4915" - is_visible="true" - lpeversion="1" - linkedpath="" - visualbounds="false" /> - <clipPath - clipPathUnits="userSpaceOnUse" - id="clipPath1979"> - <path - id="path1981" - style="fill:#000000;stroke:#000000;stroke-width:2.64583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m -17.562228,-22.854671 c 8.855019,-8.85502 4.008778,-8.4357 26.245047,-30.671974 22.236282,-22.236279 26.885662,-23.232311 32.974431,-29.321072 6.088769,-6.088768 4.904512,-14.698424 -0.387149,-19.990073 -5.291651,-5.29166 -13.901309,-6.47592 -19.990081,-0.38715 -6.088758,6.088764 -7.084779,10.738152 -29.3210584,32.974432 -22.2362696,22.236269 -21.8169606,17.390012 -30.6719906,26.245048 -8.85504,8.855035 -4.44845,17.027382 -0.162511,21.313309 4.285951,4.285922 12.45828,8.692515 21.313312,-0.16252 z" /> - </clipPath> - </defs> - <ellipse - style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;paint-order:normal" - id="path7070" - cx="46.100883" - cy="46.100876" - rx="37.684639" - ry="37.684635" /> - <g - id="layer1" - transform="matrix(1.0290845,0,0,1.0290845,45.119554,110.44056)"> - <g - id="g1820" - clip-path="url(#clipPath1979)"> - <path - id="rect1503" - style="fill:#84cc16;fill-opacity:1;stroke-width:4.24737;stroke-linecap:round;stroke-linejoin:round" - transform="rotate(-45)" - d="m -13.114324,-75.221169 h 39.049752 v 63.372471 h -39.049752 z" - sodipodi:nodetypes="ccccc" /> - <path - id="rect1503-3" - style="fill:#65a30d;fill-opacity:1;stroke-width:4.24737;stroke-linecap:round;stroke-linejoin:round" - transform="rotate(-45)" - d="m 25.935436,-75.221169 h 39.049752 v 63.372471 H 25.935436 Z" /> - <path - id="rect1503-3-6" - style="fill:#4d7c0f;stroke-width:4.24737;stroke-linecap:round;stroke-linejoin:round" - transform="rotate(-45)" - d="m 64.985191,-75.221169 h 39.049749 v 63.372471 H 64.985191 Z" /> - </g> - </g> - <g - aria-label="Sno" - transform="rotate(-45)" - id="text10247-6-9" - style="font-size:64.5726px;line-height:1.25;letter-spacing:0px;stroke-width:1.87397" /> -</svg> +<svg width="348.48" height="348.48" viewBox="0 0 92.2 92.2" xmlns="http://www.w3.org/2000/svg"><defs><clipPath clipPathUnits="userSpaceOnUse" id="b"><path d="M-17.56-22.85c8.85-8.86 4-8.44 26.24-30.68 22.24-22.23 26.89-23.23 32.98-29.32 6.09-6.09 4.9-14.7-.39-19.99-5.3-5.29-13.9-6.47-19.99-.38-6.09 6.08-7.08 10.73-29.32 32.97-22.24 22.24-21.82 17.39-30.67 26.24-8.86 8.86-4.45 17.03-.17 21.32 4.29 4.28 12.46 8.69 21.32-.16z" stroke="#000" stroke-width="2.65"/></clipPath><filter id="a" x="-.32" y="-.32" width="1.64" height="1.64" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="5" result="fbSourceGraphic"/><feGaussianBlur stdDeviation=".01" in="SourceGraphic" result="result1"/><feComposite in2="result1" operator="arithmetic" in="fbSourceGraphic" k2=".5" k3=".5" result="result2"/><feBlend in2="fbSourceGraphic" result="fbSourceGraphic"/><feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"/><feGaussianBlur stdDeviation="5" result="fbSourceGraphic" in="fbSourceGraphic"/><feGaussianBlur stdDeviation=".01" in="fbSourceGraphic" result="result1"/><feComposite in2="result1" operator="arithmetic" in="fbSourceGraphic" k2=".5" k3=".5" result="result2"/><feBlend in2="fbSourceGraphic" result="result3"/></filter></defs><circle cx="46.1" cy="46.1" transform="translate(3.03 3.03) scale(.9342)" r="37.68" fill="#fbbf24" filter="url(#a)"/><circle cx="46.1" cy="46.1" r="35.21" fill="#fff"/><g clip-path="url(#b)" transform="translate(45.14 110.4) scale(1.02872)"><path d="m-62.46-43.92 27.61-27.61 44.81 44.8L-17.64.9z" fill="#84cc16"/><path d="m-34.85-71.53 27.62-27.61 44.8 44.8-27.6 27.62Z" fill="#65a30d"/><path d="m-7.23-99.14 27.6-27.6 44.81 44.8-27.6 27.6Z" fill="#4d7c0f"/></g></svg> \ No newline at end of file diff --git a/src/assets/images/logo.svg b/src/assets/images/logo.svg index 6268dc1..718b2ad 100644 --- a/src/assets/images/logo.svg +++ b/src/assets/images/logo.svg @@ -1,15 +1 @@ -<svg width="512" height="295" xmlns="http://www.w3.org/2000/svg"> - <g aria-label="SNO" style="line-height:1.25" font-size="10.583" letter-spacing="-2.117" word-spacing="0" - stroke-width=".265" font-family="Essays1743" writing-mode="vertical-lr"> - <path - d="M29.84 91.32l.275-8.499q.914-1.005 1.92-1.005 1.005 0 2.832.914 2.377 1.37 3.382 4.295 1.097 2.834 2.01 5.85 1.006 3.016 3.748 5.118 2.741 2.01 7.128 2.01 5.027 0 6.855-1.005 1.919-1.005 2.559-2.285 1.645-2.742 1.645-6.397 0-3.747-3.199-8.409-1.645-2.376-3.93-3.564-2.285-1.188-5.575-2.102-3.29-1.005-4.935-1.92-1.645-.913-3.839-1.644-2.102-.731-3.564-1.554-1.462-.822-2.467-2.467-3.565-5.575-3.565-10.602 0-5.118 1.554-9.23 1.554-4.205 3.381-5.941 1.92-1.828 5.027-3.016 3.199-1.28 5.666-1.28 2.56 0 7.038 1.006 4.57.914 6.214 1.188 1.645.183 2.468.365 2.376.549 3.564 2.56 0 6.031-.274 8.407-.183 2.285-1.28 7.952-.913.182-1.187.182-3.29 0-4.296-6.489-.457-2.558-1.645-5.3-1.097-2.742-3.016-3.93-3.381-2.102-5.575-2.102-2.193 0-3.747 1.28-4.478 3.655-4.478 9.687 0 4.204 2.102 8.225.914 1.828 2.376 2.742 1.554.823 3.93 1.462 2.467.64 4.021 1.463 1.645.73 4.57 1.462 2.924.731 5.026 1.736 2.102 1.006 3.473 3.108 3.382 5.026 3.382 10.144t-1.92 10.145q-1.827 4.935-4.02 7.129-2.103 2.193-5.667 3.747-3.473 1.462-6.854 1.462-3.382 0-9.597-1.462l-1.553-.457q-.64-.183-1.188-.275-.549-.182-1.189-.457-.548-.365-.914-.457-.365-.182-1.188-.73-.73-.549-1.188-.732-.365-.274-1.645-1.097L30.39 99.09q-.548-5.21-.548-7.768zM24.22 119.945l-4.387.274q-3.198 0-3.838-1.919-.183-.548-.183-.823 0-2.102 3.838-3.838 4.387-1.097 7.495-1.097 3.198 0 9.87 1.828l21.02 25.225 6.215 8.042 7.586 10.236 1.645-40.03q-1.645 0-3.747.548-2.102.549-3.108.549-.914 0-1.736-.823-.823-.822-.823-1.553l.823-3.2q0-.456-.274-1.005 5.666-.365 8.773-.365 3.108 0 11.79.548 1.097 0 1.097 1.828 0 1.737-1.92 3.656-.913.822-1.827.822l-3.656-.274q-.457 9.048-.457 17.09l.457 21.478q0 7.037-.457 14.714-.091.091-.64 1.005-.457.914-.822 1.371-1.097 1.371-2.468 1.554h-.366q-2.01 0-4.295-3.107l-37.197-45.24q.823 9.87.823 14.989 0 5.026-.549 12.43-.548 7.402-.548 12.885v2.56q.366 1.096 2.01 1.096h.915q2.102 0 2.102 2.102 0 .64-.549 2.01-.457 1.372-.548 2.103-3.199.091-7.951.457-4.753.274-8.043.274h-2.742q-.091-.731-.64-2.102-.548-1.37-.548-2.01 0-.64.64-1.646.731-1.005 3.199-1.005l4.57.366q1.096 0 1.645-.549-.366-9.596-.366-16.816l.366-33.907q-.457-.73-2.194-.73zM54.745 187.685q8.043 0 13.983 2.925 5.94 2.833 10.693 9.596 4.753 6.763 4.753 15.446 0 4.843-1.097 10.235-1.005 5.393-2.193 8.134-1.188 2.65-2.194 4.205-1.005 1.553-3.107 4.386l-2.925 4.296q-6.306 9.505-18.918 9.505-8.134 0-14.075-3.016-10.875-5.575-14.897-10.602-4.02-4.752-5.026-10.967-.914-6.215-.914-10.327 0-10.693 6.123-18.736 6.124-8.134 12.978-11.607 6.946-3.473 16.45-3.473zm-20.563 33.541l-.274 6.032q0 5.85 2.285 10.054 2.376 4.204 4.843 6.306 2.468 2.01 6.215 3.29 3.839 1.28 7.037 1.28 3.199 0 7.038-2.103 3.93-2.193 5.94-5.21 2.102-3.106 4.661-9.504 2.56-6.489 2.56-12.43 0-2.833-.732-7.037-.64-4.204-2.102-7.311-1.462-3.199-4.752-6.032-5.667-4.935-11.15-4.935-8.226 0-13.8 6.58-2.56 2.925-4.113 5.575-1.554 2.56-2.377 5.21-.73 2.65-.914 4.478-.182 1.736-.365 5.757z" - style="-inkscape-font-specification:Essays1743;text-orientation:upright" /> - </g> - <g aria-label="Board" style="line-height:1.25;-inkscape-font-specification:Essays1743" font-size="20.496" - font-family="Essays1743" stroke-width=".321"> - <path - d="M134.463 207.027l4.78-72.216q-2.302-2.3-3.718-2.3-1.239 0-4.779 1.238-3.54 1.24-6.726 1.24-3.009 0-6.018-.709-1.77-1.947-1.77-5.487t3.363-6.548q12.213-3.186 20.532-3.186 8.496 0 16.815 1.062 8.496 1.062 15.399 1.77 6.903.53 10.266 1.062 3.54.53 8.496 1.77 5.133 1.238 9.204 3.716 4.247 2.301 8.318 5.841t5.664 7.788q2.124 6.018 2.124 14.16 0 10.266-7.788 18.054-1.062 1.062-1.947 2.124t-3.009 1.947q-1.946.708-3.185 1.239-1.24.53-5.487 1.947-4.248 1.416-7.434 2.655 4.779 3.363 9.735 5.133 5.133 1.593 8.318 3.186 3.363 1.416 6.018 5.31 4.956 6.726 4.956 15.93 0 1.946-.53 7.964-.532 5.841-1.24 9.381-.53 3.363-2.832 7.788-2.3 4.248-6.372 7.257-9.203 6.903-21.947 6.903l-21.24-1.062q-3.363 0-5.133.177l-22.302 1.593q-8.142 0-20-1.593-2.301-2.832-2.301-6.195 0-6.018 5.31-10.443 1.592-.708 3.716-.708 2.301 0 6.195 1.416 3.894 1.24 5.841 1.24 2.124 0 3.894-1.948v-3.186q0-8.142-1.593-14.867-1.593-6.903-1.593-10.443zm28.32-72.747q-1.416 16.107-1.416 22.833 0 6.549 1.416 18.939 2.832 2.3 5.133 2.3 3.894 0 8.142-2.3 4.248-2.301 6.018-3.186 7.788-3.54 9.912-8.496 2.478-4.956 2.478-9.912t-2.301-9.38q-2.124-4.426-5.133-6.55-3.01-2.3-7.965-4.07-4.78-1.77-8.142-1.77-3.186 0-8.142 1.592zm8.496 104.43q10.797 0 16.46-7.789 5.842-7.965 5.842-16.46 0-8.673-4.071-14.514-4.071-6.018-11.505-6.903l-6.195-1.062q-4.956-.708-7.08-.708-6.195 0-6.372 4.779-1.593 21.593-1.593 25.664v4.78q.177 5.31 4.425 8.85 4.425 3.362 10.089 3.362zM266.858 251.453l-5.664-.177q-2.301.177-5.841.177-10.089 0-18.585-7.61-9.204-9.028-11.328-18.232-1.77-6.903-1.77-13.098 0-6.371 2.301-14.336 2.301-8.142 5.133-13.275 2.832-5.133 8.673-9.558 9.912-7.788 22.833-7.788h2.478q4.602.177 6.372.354 5.31.885 11.505 7.08 6.195 6.195 9.026 12.39 3.54 7.61 3.54 24.78 0 7.256-2.832 16.814-2.831 9.381-7.61 14.337-4.602 4.779-11.86 7.257-3.185.885-6.371.885zm-6.372-11.682l5.31.531q5.31 0 9.027-4.425 1.593-1.77 4.248-9.027 2.655-7.257 2.655-13.275 0-17.7-7.611-27.611-4.248-5.133-7.788-5.841-3.363-.708-6.903-.708-3.54 0-7.965 2.832-4.248 2.832-7.611 11.682-3.186 8.85-3.186 14.69 0 18.94 8.673 27.081 3.009 2.832 11.15 4.071zM361.02 251.63l-3.54.177q-3.185.354-5.31.354-1.946 0-3.893-.885-1.947-1.062-2.655-1.77-.708-.708-1.416-1.77t-1.416-1.593q-.531-.708-1.062-1.77-1.239-2.124-2.655-2.124h-.708q-2.301 0-5.31 2.655-2.832 2.655-3.894 3.363-1.062.531-2.478 1.416-4.425 3.363-10.62 3.363-6.195 0-10.266-2.655-4.07-2.655-5.487-8.319-1.416-5.84-1.416-9.735 0-10.443 10.09-19.116 6.194-4.955 16.106-9.026 1.77-.708 5.841-.885 4.248-.354 6.018-1.947 1.947-1.593 2.655-4.78.708-3.185.708-5.31 0-2.123-.354-4.07t-.531-3.363q-.177-1.416-.354-2.124-.177-.708-.531-1.77-.708-1.77-2.301-2.832-1.593-1.24-3.009-1.24-1.239 0-5.664 1.063-4.248.885-6.372 3.717-2.124 2.655-2.124 8.142v3.363q-.177 3.186-3.009 5.31-2.655 1.947-5.31 1.947-9.38 0-9.38-9.027 0-1.593.176-2.301 1.77-10.266 6.903-14.691 5.31-4.425 10.09-5.664 4.778-1.239 12.743-1.593l3.717-.177q5.664 0 10.266 3.186 6.549 4.425 7.965 12.036 1.416 7.61 1.416 19.647v4.602l.177 7.787.177 3.894-.177 7.257q0 3.363.53 7.965v2.301q0 1.947 2.125 1.947 2.124 0 4.956-3.717 2.832-3.894 4.779-3.894.177 0 1.416.531 1.416.531 1.416 2.655l-.531 4.248-.177 3.54q0 1.947-.354 2.832-.177.708-.354 1.593t-.531 1.593q-.177.531-.708 1.24-2.301 3.716-4.071 4.07-1.77.354-2.301.354zm-18.938-30.975l-.177-1.77q-.354-4.956-4.071-7.08-1.416-.707-5.133.354-3.54.885-8.496 3.894-8.673 5.664-8.673 10.62 0 9.912 5.664 12.39.708.354 1.416.354t2.478-.885q1.77-1.062 2.478-1.239l2.478-1.062q4.956-1.947 7.257-4.602 4.779-5.487 4.779-10.974zM404.562 222.78l-.177 9.911q.531 1.416 3.186 2.832t2.655 5.487q0 3.894-1.77 5.841-3.894 1.062-13.806 2.655-9.912 1.593-14.514 2.655-1.77-.708-2.832-3.54-1.062-2.832-.177-4.602 1.062-1.947 4.071-3.363 3.01-1.593 4.071-3.54.354-5.133.354-13.275l-.177-17.876q0-7.257.177-11.86-1.062-2.3-5.664-4.601-4.425-2.478-4.425-5.487.885-1.24 2.478-4.071 1.77-3.01 2.301-3.54l1.593-2.478q1.24-1.593 2.124-2.124l2.301-1.416q3.54-2.124 6.55-2.124 3.008 0 5.84 1.593 2.478 2.3 3.01 2.832.53.354 1.592.708 1.24.177 3.363 1.239 1.77-1.062 5.133-4.248 3.54-3.186 7.965-3.186h.708q8.85.708 12.036 13.098.53 1.947.53 4.248 0 2.3-3.008 6.726-3.01 4.248-6.726 4.248h-.885q-2.301-.531-3.717-4.602-1.239-4.071-3.363-4.602-5.84 3.894-10.797 7.788-.177 8.496-.177 16.991zM492.353 169.503q-.177-4.956-.177-21.417 0-16.638.708-18.762 0-.53-.708-.53-.53 0-3.54 1.061-3.009 1.062-4.602 1.062-1.947 0-1.947-3.186t3.01-7.61q3.008-4.425 6.017-6.372.885-.708 3.717-.708t6.372 1.77q3.717 1.77 3.717 3.894 0 .354-.354 1.062 1.593 37.17 1.593 106.021v7.257q0 1.24 2.832 4.248 3.009 2.832 3.009 3.894v.885q0 7.08-3.54 8.673-.354.177-1.416.177l-5.84-.53h-.709q-2.655 0-6.195-4.249-3.54-4.425-4.956-4.425-1.239 0-3.54 1.77-2.3 1.593-10.089 4.602-7.787 3.01-11.858 3.01-4.071 0-5.841-.355-3.54-.53-7.434-6.018l-2.832-4.07q-9.558-11.506-9.558-25.489v-2.124q.53-15.752 4.779-24.425 4.248-8.673 7.788-12.744 3.54-4.248 9.38-8.142 6.019-4.071 12.036-4.248h.708q3.363 0 12.036 3.009 1.24.354 3.363 2.478 2.301 2.124 3.01 2.124.884 0 1.061-1.593zm-13.452 7.434q-.708-.177-2.124-.177-1.239 0-5.84 2.3-4.425 2.125-8.673 7.258-4.071 5.133-6.372 9.38-2.301 4.249-3.01 9.382-.53 5.132-.53 6.548 0 6.372 3.186 11.505 3.186 4.956 6.549 7.434 3.54 2.301 8.495 4.248 4.956 1.77 6.726 1.77 1.947 0 3.186-.354 1.24-.354 1.77-.708.708-.354 1.24-.708.707-.53 1.061-.708.531-.354 1.062-.885.531-.708.708-.885.354-.354.885-1.239.531-.885.708-1.062.177-.177.708-1.239.708-1.062.885-1.239 6.372-10.266 6.372-24.248 0-9.204-4.779-16.992t-12.213-9.381z" /> - </g> - <path - d="M43.711 294.848c-2.301-.19-4.738-.586-5.415-.878-4.272-1.843-6.758-2.692-9.22-3.147-7.742-1.43-17.456-9.892-19.387-16.886-.252-.914-1.331-3.18-2.398-5.034-2.015-3.504-2.6-5.446-3.39-11.248-.259-1.895-.841-4.886-1.296-6.646-.54-2.097-.719-4.016-.516-5.566.17-1.301.313-8.791.317-16.645.006-12.46.132-14.823.984-18.557.538-2.353 1.188-5.718 1.446-7.478.257-1.76.754-5.083 1.103-7.385.4-2.635.484-4.914.224-6.154-1.083-5.18-1.004-7.958.345-12.14.72-2.231 1.502-6.097 1.738-8.59.236-2.494.669-4.982.962-5.53.294-.55.534-3.5.534-6.558 0-5.204-.619-9.724-2.213-16.166-.368-1.49-.812-4.148-.985-5.908-.174-1.76-.658-4.75-1.077-6.646-.553-2.506-.802-7.008-.91-16.493-.08-7.175-.396-14.375-.7-16-.304-1.624-.653-3.95-.776-5.169-.123-1.218-.377-2.88-.563-3.692-.187-.812-.391-2.363-.455-3.446-.064-1.083-.374-3.853-.69-6.154C.82 72.685.368 65.4.228 58.27c-.037-1.895.217-7.544.565-12.554.662-9.508 2.121-16.507 4-19.176.485-.69 1.037-1.753 1.226-2.362C6.818 21.6 17.657 9.732 20.3 8.54a36.794 36.794 0 002.734-1.39c4.219-2.444 9.406-4.511 12.062-4.806 1.624-.18 5.169-.81 7.877-1.398C47.133.04 49.079-.098 55.527.052c7.094.164 7.82.27 10.338 1.5 1.49.728 3.345 1.326 4.125 1.329 1.953.006 6.496 2.654 9.217 5.373 1.246 1.244 3.78 3.148 5.634 4.23 6.031 3.52 11.598 10.034 12.34 14.438.593 3.522 1.75 10.467 2.147 12.887.244 1.489.583 4.369.754 6.4.17 2.03.623 4.818 1.005 6.194.387 1.39.673 4.454.645 6.892-.027 2.415.023 4.612.111 4.883.089.27-.103 1.932-.426 3.692-.323 1.76-.83 6.298-1.127 10.085-.297 3.786-.614 7.004-.705 7.152-.092.147.05 2.06.315 4.251.43 3.555.37 4.294-.558 6.879-2.455 6.83-2.9 9.295-2.854 15.803.038 5.215-.135 6.83-1.012 9.433-1.176 3.493-1.283 5.135-.577 8.854.324 1.709.312 2.969-.037 3.883-.688 1.803-.839 4.4-1.161 19.994-.16 7.676-.079 13.977.19 15.015.256.985.587 4.559.737 7.944.274 6.2.695 9.508 1.786 14.03.327 1.354.658 6.255.736 10.89.13 7.732.246 8.693 1.413 11.609 1.072 2.68 1.276 3.985 1.3 8.31.017 2.821.21 6.223.429 7.558.22 1.336.22 4.019.002 5.962-.218 1.944-.528 5.608-.689 8.144-.16 2.535-.741 6.388-1.29 8.561-.548 2.173-1.089 5.6-1.201 7.615-.243 4.332-1.985 12.349-3.223 14.83-1.078 2.16-4.839 5.433-11.985 10.426-6.257 4.373-8.465 5.544-15.302 8.115-4.78 1.798-5.122 1.854-11.815 1.917-3.791.035-8.776-.091-11.077-.282zm13.652-5.65c1.02-.386 3.628-.801 5.794-.923 4.783-.267 8.36-1.77 13.047-5.484 1.76-1.394 3.975-3.058 4.923-3.696 3.323-2.241 6.008-5.224 7.698-8.554 2.06-4.057 3.607-9.917 3.617-13.694.004-1.527.553-4.876 1.22-7.44 1.169-4.5 1.205-5.133 1.036-17.9-.159-12.038-.274-13.549-1.27-16.683-.603-1.895-1.16-4.886-1.236-6.646-.534-12.302-.884-16.768-1.465-18.708-.867-2.893-1.35-7.995-1.294-13.671.029-2.996-.226-5.362-.743-6.883-.529-1.559-.703-3.245-.531-5.141.14-1.553.05-3.74-.203-4.863-.29-1.293-.278-3.056.034-4.818.497-2.802 1.024-12.575 1.266-23.454.09-4.096.459-7.175 1.198-10.04.9-3.484 1.018-4.91.754-9.107-.24-3.795-.118-5.853.514-8.669 1.872-8.34 2.058-10.145 1.335-12.91-.674-2.575-.604-4.244.377-8.998.28-1.353.637-3.458.795-4.676.158-1.219.839-3.632 1.513-5.363 1.574-4.04 1.468-7.336-.928-28.853-.666-5.982-2.316-10.837-5.015-14.758-1.115-1.618-2.691-4.152-3.503-5.632-1.037-1.888-2.43-3.401-4.677-5.08a316.735 316.735 0 01-5.416-4.142c-2.823-2.23-6.105-3.88-8.615-4.33-1.083-.195-2.634-.643-3.446-.995-3.533-1.53-4.872-1.718-12.8-1.795-7.388-.072-8.716.04-11.323.96-1.625.572-3.307 1.046-3.738 1.052-.43.007-2.572.899-4.759 1.982-2.186 1.083-4.22 1.969-4.518 1.969-1.16 0-6.685 2.527-7.813 3.574-.653.606-1.929 2.254-2.834 3.661s-2.168 2.9-2.807 3.319c-1.487.974-2.934 3.624-4.184 7.661-.545 1.76-1.458 4.698-2.029 6.53-.969 3.105-1.096 7.651-.283 10.106.116.35-.117 3.739-.517 7.532-.477 4.522-.578 7.565-.291 8.838.24 1.068.47 4.806.513 8.308.042 3.501.287 7.101.545 8 .258.898.469 2.828.469 4.287 0 1.46.205 3.455.456 4.434 1.144 4.466 1.747 10.829 1.777 18.765.026 7.115.195 9.087.965 11.323.571 1.659.96 4.235 1.004 6.647.039 2.166.267 4.713.507 5.661.24.948.452 3.385.47 5.415.036 3.853 1.499 20.922 1.993 23.247.309 1.457-1.464 13.842-2.381 16.63-.338 1.027-.595 5.605-.636 11.323-.08 11.164-.73 17.875-2.262 23.385-.602 2.166-1.128 4.935-1.167 6.154-.04 1.218-.25 3.434-.465 4.923-.216 1.49-.352 5.81-.301 9.6.05 3.79.067 9.913.036 13.604-.092 11.125 1.79 18.94 5.946 24.676.793 1.095 1.442 2.349 1.442 2.786 0 1.29 3.835 7.503 6.004 9.727 2.83 2.902 7.054 4.675 12.211 5.126 2.302.202 5.182.741 6.4 1.2 6.076 2.285 13.783 2.943 17.59 1.501z" /> -</svg> \ No newline at end of file +<svg width="443.635" height="324.769" viewBox="0 0 117.378 85.929" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"><defs><radialGradient xlink:href="#a" id="d" cx="52.857" cy="-111.757" fx="52.857" fy="-111.757" r="2.204" gradientTransform="matrix(1 0 0 .6874 0 -34.934)" gradientUnits="userSpaceOnUse" spreadMethod="pad"/><radialGradient xlink:href="#b" id="g" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.47963 0 0 1.50836 -55.407 -3.594)" cx="106.633" cy="87.421" fx="106.633" fy="87.421" r="1.46"/><linearGradient id="a"><stop style="stop-color:#f59e0b;stop-opacity:1" offset="0"/><stop style="stop-color:#f59e0b;stop-opacity:1" offset=".725"/><stop style="stop-color:#f59e0b;stop-opacity:.05882353" offset="1"/></linearGradient><linearGradient id="b"><stop style="stop-color:#fbbf24;stop-opacity:1" offset="0"/><stop style="stop-color:#fbbf24;stop-opacity:1" offset=".29"/><stop style="stop-color:#fbbf24;stop-opacity:0" offset="1"/></linearGradient><clipPath clipPathUnits="userSpaceOnUse" id="e"><path style="font-size:26.8628px;line-height:1.25;font-family:Moreganic;-inkscape-font-specification:Moreganic;fill:#000;stroke-width:.271687" class="powerclip" d="M50.225 74.7H155.52v34.507H50.225Zm94.793 1.099A9.463 9.463 0 0 0 143.2 76c-.814.117-1.696.55-1.815 1.455-.36 1.595.138 3.229.206 4.834a815.79 815.79 0 0 0 1.904 13.765c.369 1.528 2.261 2.208 3.639 1.625 1.627-.523 3.099-1.458 4.49-2.432 1.562-1.152 2.467-2.994 2.673-4.9.42-2.882.142-5.914-.98-8.612-1.112-2.304-2.955-4.355-5.314-5.412-.947-.376-1.967-.538-2.986-.525zm-9.489 1.851a4.745 4.745 0 0 0-1.302.187c-1.37.478-2.892.617-4.138 1.388-.85.666-1.155 1.79-.909 2.822l.21 2.206c1.213-.382 2.551-.277 3.668-.962.141-.37-.27-1.026.505-.874 1.103-.352 2.605-.547 3.408.536.636.773.44 1.96-.35 2.551-.739.512-.502 1.52-.73 2.291-.169 1.07-.334 2.14-.506 3.208.62-.308.839.168.975.69.726 2.1 1.685 4.03 2.338 6.132.255.68 1.053 1.097 1.717.692.794-.432 1.966-.407 2.436-1.28.284-.925-.511-1.746-.756-2.598-.8-1.892-1.683-3.758-2.432-5.665.441-1.03 1.434-1.783 1.732-2.909.565-1.987.308-4.309-.948-5.988-1.257-1.365-3.046-2.434-4.918-2.427zm-11.864 2.422c-.053 0-.107.005-.162.012-.97.281-1.973.415-2.955.62-1.231.452-1.097 1.977-1.367 3.021-.748 3.967-1.155 7.99-1.603 11.998-.045 1.37-.27 2.757-.128 4.12.317 1.087 1.677.944 2.57.914.773.07 1.326-.68 1.182-1.412.178-1.298.169-2.632.474-3.907.34-.384 1.052-.23 1.553-.402.926-.252 1.924-.319 2.842-.473l3.25-2.536c-1.423-3.495-2.49-7.128-4.07-10.558-.242-.706-.793-1.408-1.586-1.397zm21.778.138c.427 4.177 1.13 8.328 1.597 12.503.562-.266 1.103-.547 1.57-.967 1.016-.732 1.7-1.921 1.571-3.2.144-1.79-.007-3.681-1.028-5.218-.691-1.498-1.995-2.73-3.626-3.112zm-34.497 2.534c-.321.005-.642.04-.957.11-.995-.093-.395.65-.183 1.19l1.335 3.047c1.089.21 1.142 1.518 1.437 2.367.69 2.461.177 5.1-.787 7.411-.362.637-1.3.724-1.719.092-.897-1.098-1.483-2.488-1.444-3.926.187-.73-.488-.632-.999-.696-1.026-.264-2.112.115-2.78.928-.465.36-.085 1.02-.079 1.523.076.462.186.924.329 1.379a3.205 3.205 0 0 0-.182-.351c-.547-1.1-1.673-1.698-2.827-1.962-.208-.264-.85-.43-1.368-.612-.823-.283-1.645-.573-2.469-.853-.495.373-1.012.73-1.595.952-.223-1.331-.424-2.692-.638-4.008.493-.125.63-.797.902-1.195.396-.747.314-1.615.318-2.43-.716.032-1.43.073-2.13.248-1.02.253-2.14.602-2.842 1.42-.458.835.043 1.813.046 2.702.09.769.185 1.536.284 2.303a5.802 5.802 0 0 0-.123-.289c-.316-1.793-1.562-3.406-3.316-3.981-.623-.26-1.299-.322-1.96-.422l-.042.565-.256 3.342c.688.054 1.189.561 1.302 1.232.682 1.746.65 3.691.025 5.447-.328.857-.52 2.148-1.655 2.234-1.093-.16-1.55-1.384-1.968-2.27-.21-.663-.14-1.373-.212-2.058-1.23.039-2.721-.345-3.66.707-.614.422-.177 1.22-.136 1.828.568 2.937 3.116 5.663 6.24 5.657 2.064.136 3.902-1.316 4.73-3.13 1.05-1.847 1.45-3.967 1.417-6.071.246 1.668.518 3.332.822 4.991.212.959.149 2.099.84 2.865.85.684 2.025.18 3.006.198 2.15-.196 4.38-.746 6.085-2.13 1.132-1.096 1.93-2.848 1.539-4.412.735 1.968 2.097 3.73 4.029 4.594 1.76.792 4.042.52 5.327-1.007 1.297-1.515 1.924-3.499 2.333-5.42.324-2.034.273-4.129-.04-6.157-.505-1.224-.631-2.619-1.476-3.694-1.01-1.405-2.767-2.284-4.503-2.258zm11.807 3.93c-.242 1.426-.462 2.856-.683 4.285.727-.1 1.429-.336 2.123-.57l-.881-2.275-.559-1.44zm-52.65 4.893a.857.857 0 0 0-.31.056c-.824.365-1.737.52-2.568.82-.796.723-.336 1.94-.312 2.87l.046.364c-.472-1.457-1.728-2.656-3.285-2.824-.918-.126-1.858-.057-2.76.143-2.019.408-3.988 2.073-4.087 4.232.111 1.965 1.852 3.404 3.554 4.106.76.32 1.62.712 2.05 1.448.369.57-.497 1.382-1.037 1.425-.192.32.26.58.036.987-.218.632-.162 1.305-.149 1.961 2.045-.017 4.369-.803 5.256-2.804.624-1.225.275-2.709-.628-3.696-1.18-1.534-3.317-1.771-4.633-3.118-.503-.342-.459-1.191.181-1.336.67-.21 1.628.018 1.768.803.568.931 1.708.348 2.503.12.503-.107 1.182-.4 1.301-.906.338 2.603.72 5.2 1.062 7.803.145.661.18 1.355.423 1.985.79.57 1.83.18 2.711.074 1.023-.215.781-1.443.666-2.196-.168-1.36-.353-2.717-.521-4.076 1.244 1.603 2.45 3.276 3.968 4.63 1.243.644 2.722.201 4.001-.116.735-.079 1.467-.613 1.38-1.424-.08-1.836-.445-3.65-.464-5.493-.004-.773-.904-.838-1.451-.594-.966.289-1.976.348-2.978.331.041.56.168 1.279.158 1.74-1.948-2.137-3.362-4.6-5.068-6.915-.21-.235-.505-.398-.813-.4zm29.097 5.53-.273.005c-.527.05-1.038.2-1.564.256.07.7.167 1.398.292 2.09.462-.012.95-.141 1.39-.305.711-.31 1.857-.521 1.973-1.428-.39-.553-1.16-.62-1.818-.617z"/></clipPath><clipPath clipPathUnits="userSpaceOnUse" id="f"><path style="font-size:26.8628px;line-height:1.25;font-family:Moreganic;-inkscape-font-specification:Moreganic;display:inline;stroke-width:.271687" class="powerclip" d="M85.473 84.662h46.146V108.2H85.473Zm38.208-4.591c-.06 0-.119.004-.178.013-.97.281-1.973.415-2.955.62-1.231.452-1.097 1.977-1.367 3.021-.748 3.967-1.155 7.99-1.603 11.997-.045 1.37-.27 2.758-.128 4.121.317 1.087 1.677.944 2.57.914.773.07 1.326-.68 1.182-1.412.178-1.298.169-2.633.474-3.907.34-.384 1.052-.23 1.553-.402.845-.194 1.704-.357 2.57-.404.63 1.501 1.192 3.05 1.94 4.49.46.743 1.443.276 2.148.325.713-.131 1.938-.03 1.974-1.028-.232-.967-.83-1.83-1.117-2.794-1.206-3.256-2.616-6.436-3.696-9.74-.709-1.776-1.304-3.627-2.27-5.28-.274-.303-.681-.531-1.097-.534zm-12.735 2.673c-.321.005-.642.04-.957.11-1.354.325-2.434 1.263-3.619 1.94l2.274 3.834c.664-.836 1.688-1.766 2.84-1.42.831.472.834 1.589 1.132 2.397.636 2.42.117 4.998-.825 7.264-.362.637-1.3.724-1.719.092-.764-.952-1.327-2.115-1.438-3.345-1.36-.174-2.72-.345-4.08-.517.068 1.064.25 2.137.578 3.156a3.82 3.82 0 0 0-2.753-2.312c-.812-.034-.076-.438.145-.752 1.16-1.25 1.515-3.248.557-4.717-1.247-2.094-3.841-3.023-6.192-2.746l-.207.012c-1.532.113-3.195.469-4.348 1.543-.582.828-.017 1.88-.022 2.795.396 3.348.868 6.684 1.483 9.998.197.963.167 2.063.774 2.879.796.78 2.01.271 2.984.282 2.153-.186 4.38-.72 6.108-2.076 1.204-1.124 2.046-2.924 1.583-4.575.405 1.129 1 2.182 1.832 3.07 1.549 1.84 4.464 2.764 6.606 1.42 1.84-1.212 2.549-3.454 3.125-5.466.518-2.254.45-4.613.127-6.888-.51-1.232-.636-2.637-1.485-3.72-1.01-1.405-2.767-2.284-4.503-2.258zm11.807 3.93c-.242 1.426-.462 2.856-.683 4.285.727-.1 1.429-.336 2.123-.57l-.881-2.275-.558-1.44zm-26.413 2.66v-.001c-.11.002-.219.007-.328.01.213 1.164.364 2.338.566 3.504-.106.88.667.18 1.053-.008.646-.535 1.733-1.088 1.602-2.072-.266-1.292-1.813-1.424-2.893-1.433zm2.98 7.75c-.662-.008-1.3.203-1.956.272.07.553.103 1.111.222 1.657-.09.602.42.439.824.323.915-.331 2.13-.513 2.614-1.463-.05-.628-.924-.685-1.42-.772a2.882 2.882 0 0 0-.285-.017z"/></clipPath><filter style="color-interpolation-filters:sRGB" id="c" x="-.061" y="-.087" width="1.122" height="1.174"><feGaussianBlur stdDeviation="5" result="fbSourceGraphic"/><feGaussianBlur stdDeviation=".01" in="SourceGraphic" result="result1"/><feComposite in2="result1" operator="arithmetic" in="fbSourceGraphic" k2=".5" k3=".5" result="result2"/><feBlend in2="fbSourceGraphic" result="fbSourceGraphic"/><feColorMatrix result="fbSourceGraphicAlpha" in="fbSourceGraphic" values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"/><feGaussianBlur stdDeviation="5" result="fbSourceGraphic" in="fbSourceGraphic"/><feGaussianBlur stdDeviation=".01" in="fbSourceGraphic" result="result1"/><feComposite in2="result1" operator="arithmetic" in="fbSourceGraphic" k2=".5" k3=".5" result="result2"/><feBlend in2="fbSourceGraphic" result="result3"/></filter></defs><g style="display:inline"><path style="color:#000;fill:#fbbf24;fill-opacity:1;stroke-width:3.77953;stroke-linecap:round;stroke-linejoin:round;-inkscape-stroke:none;filter:url(#c)" d="M384.352 140.064c-10.04-.009-16.21 3.262-19.975 7.344-3.766 4.083-5.204 8.847-6.37 11.348-.609 1.308-.647 3.094-.849 4.738-.225-.147-.472-.323-.693-.465a67.442 67.442 0 0 0-2.85-1.728c-.913-.523-1.8-1-2.658-1.424a39.628 39.628 0 0 0-2.51-1.137 34.805 34.805 0 0 0-2.435-.9 34.966 34.966 0 0 0-2.4-.688c-.799-.2-1.594-.372-2.407-.523a53.613 53.613 0 0 0-2.473-.399h-.008c-.547-.075-1.373-.148-2.523-.28a77.382 77.382 0 0 1-4.148-.583 57.606 57.606 0 0 1-2.415-.465 45.526 45.526 0 0 1-2.48-.605c-.15-.041-.326-.101-.48-.149-.082-.539-.404-1.393-1.05-1.92-1.039-.848-2.343-.792-3.911-.84-.03-.028-.026-.029-.059-.06a8.415 8.415 0 0 0-1.95-1.357 11.138 11.138 0 0 0-2.103-.805 19.837 19.837 0 0 0-2.133-.451c-1.43-.232-2.875-.37-4.326-.62a24.07 24.07 0 0 1-2.185-.472 17.579 17.579 0 0 1-1.86-.635c-.073-.075-.128-.17-.222-.265a18.757 18.757 0 0 0-2.967-2.398 17.715 17.715 0 0 0-2.258-1.241 15.361 15.361 0 0 0-2.724-.953 13.641 13.641 0 0 0-3.124-.39 12.764 12.764 0 0 0-3.426.465 13.27 13.27 0 0 0-1.763.634c-.061.027-.058.033-.111.058-.808-.25-7.166-2.274-13.346-2.294-1.84-.006-3.62.16-5.227.738-1.605.578-3.12 1.686-3.816 3.41-.64 1.584-.28 3.262.39 4.531.672 1.27 1.623 2.32 2.563 3.309.94.988 1.885 1.911 2.555 2.709.563.67.817 1.182.914 1.467-.04.054-.098.147-.303.326-.481.42-1.31.957-2.154 1.476-.844.52-1.689.995-2.43 1.647-.37.326-.786.674-1.04 1.46-.256.788.154 2.044.745 2.555 2.632 2.276 6.143 2.917 8.977 3.145 1.735.14 2.21.04 3.137-.016.014.193.052.813.052.813a1.89 1.89 0 0 0 .213.717s.289.466.613.775c.327.31.797.668 1.47 1.041.67.373 1.54.765 2.7 1.158.582.197 1.24.391 1.973.584.256.068.535.122.805.184.53 1.306 1.512 2.399 2.996 2.496a1.89 1.89 0 0 0 .133 0c1.1-.006 2.148-.142 3.189-.268.13.143.143.19.354.385.256.238.572.494.96.746.387.251.838.5 1.387.76a1.89 1.89 0 0 0 .008 0 18.22 18.22 0 0 0 1.535.65c.495.18.962.32 1.403.436.889.234 1.692.366 2.406.457.713.091 1.332.142 1.89.229a8.27 8.27 0 0 1 1.594.39c.235.085.421.177.576.268.153.089.27.177.377.271.217.19.388.407.59.71.202.3.426.694.776 1.152.174.228.38.469.634.7.258.237.562.453.9.635a1.89 1.89 0 0 0 0 .008c.352.189.706.315 1.042.407.344.094.68.15 1.004.191.23.029.44.022.664.037.04.107-.01.175.045.287.41.848 1.676 1.633 2.738 1.573 1.125-.065 2.209-.01 3.293.052.275.231.535.446.863.739 1.593 1.423 3.635 3.328 5.862 5.365a253.838 253.838 0 0 0 3.455 3.115 135.723 135.723 0 0 0 3.572 3.049 75.388 75.388 0 0 0 3.537 2.754c.322.234.55.368.818.539.15 1.625 1.113 3.093 2.776 3.426.08.212.124.36.236.605a44.444 44.444 0 0 0 1.729 3.358 73.531 73.531 0 0 0 1.955 3.226 156.74 156.74 0 0 0 2 3.057c1.312 1.96 2.545 3.76 3.455 5.277.042.07.08.159.119.229-.724 1.347-.855 2.967.2 4.177.347.402.716.79 1.077 1.182.054.976.178 2.012.367 3.107a57.8 57.8 0 0 0 .739 3.53c.291 1.215.619 2.462.96 3.705.685 2.485 1.429 4.965 2.051 7.16.312 1.097.592 2.122.82 3.035.229.912.403 1.714.503 2.34.236 1.478.414 2.715.547 3.764.097.771.156 1.364.207 1.957-.115.492-.241.984-.26 1.498-.017.461.189 1.005.347 1.529-.01.192-.018.396-.023.441-.069.602-.195 1.105-.308 1.907-.058.401-.102.858-.125 1.394a21.04 21.04 0 0 0 .006 1.92c0 .022.007.037.008.059-.148-.1-.104-.09-.258-.192-3.681-2.425-9.026-5.496-14.284-5.08-3.908.31-8.941 1.414-13.664 3.729-4.722 2.314-9.18 5.886-11.494 11.154-2.405 5.477-2.196 13.734-1.468 21.488.692 7.376 1.953 13.722 2.634 16.69-.06.1-.135.181-.191.289a5.533 5.533 0 0 0-.436 1.092 5.305 5.305 0 0 0-.17 1.003 1.89 1.89 0 0 0 0 .008c-.047.612-.002 1.064 0 1.374.002.153-.002.278-.015.384-.007.059-.024.12-.037.176-.17.256-1.74 2.615-3.41 5.604-.88 1.573-1.739 3.244-2.37 4.783-.63 1.539-1.23 2.784-.834 4.488.033.141.134.372.178.524-15.867 2.475-61.426 9.673-78.056 10.888-10.324.755-19.19 4.141-25.504 10.106-6.316 5.964-9.967 14.483-9.996 25.01-.03 10.724 5.157 22.172 13.501 30.222 8.345 8.05 20.08 12.684 32.747 9.147 20.189-5.639 53.95-12.25 97.226-18.057 38.436-5.157 172.61-13.68 201.504-14.365 14.719-.35 28.814-6.152 38.393-16.83 9.578-10.679 14.514-26.229 11.072-45.532-3.962-22.217-17.134-33.496-30.47-38.52-13.338-5.022-26.599-4.153-32.306-2.538-21.732 6.148-44.263 11.423-67.646 16.83.229-.304.467-.6.672-.922.337-.53.642-1.092.892-1.684.25-.589.444-1.204.561-1.853.118-.65.158-1.331.09-2.016a12.062 12.062 0 0 0-.518-2.478 12.985 12.985 0 0 0-.922-2.194 15.364 15.364 0 0 0-1.21-1.904 19.55 19.55 0 0 0-1.368-1.639c-.18-.194-.295-.283-.457-.435.25-1.489-.12-3.042-1.476-3.861a1.89 1.89 0 0 0-.118-.067c-1.13-.577-2.287-.997-3.433-1.41a34.182 34.182 0 0 1-.479-1.557c-.212-.729-.462-1.54-.879-2.369a7.515 7.515 0 0 0-.767-1.234 6.506 6.506 0 0 0-1.115-1.13 5.639 5.639 0 0 0-1.344-.788 5.51 5.51 0 0 0-1.27-.356v.008c-.64-.097-1.013-.082-1.27-.088a5.224 5.224 0 0 1-.132-.834c-.142-1.58-.35-3.466-.613-5.558-.263-2.093-.584-4.39-.967-6.77-.066-.41-.138-.8-.2-1.166v-.015a.151.151 0 0 0-.007-.037c-.001-.016.005-.016-.006-.11a1.89 1.89 0 0 0-.045-.052l.021.008a163.885 163.885 0 0 0-1.091-5.92 115.28 115.28 0 0 0-1.58-6.666c.03-.145.111-.297.126-.436.047-.431.03-.848-.023-1.256a1.89 1.89 0 0 0 0-.002 1.89 1.89 0 0 0 0-.002 1.89 1.89 0 0 0 0-.002 1.89 1.89 0 0 0 0-.002 8.329 8.329 0 0 0-.266-1.224 13.075 13.075 0 0 0-.435-1.233 23.63 23.63 0 0 0-1.248-2.584A43.034 43.034 0 0 0 439.43 232c-.587-.9-1.211-1.8-1.846-2.672a73.146 73.146 0 0 0-1.904-2.502c-.314-.393-.6-.717-.887-1.057.004-.503.015-1.01.008-1.511-.03-1.623-1.233-2.747-2.695-3.249-.156-.604-.282-1.161-.524-1.912a33.928 33.928 0 0 0-.738-2.068c-.28-.708-.592-1.43-.945-2.133-.166-.33-.376-.637-.56-.959.612-.044 1.22-.076 1.874-.17a14.38 14.38 0 0 0 1.455-.281c.492-.124.983-.283 1.469-.486.484-.203.965-.45 1.432-.768a7.397 7.397 0 0 0 1.306-1.13 6.236 6.236 0 0 0 1.033-1.557 7.29 7.29 0 0 0 .532-1.631c.11-.535.16-1.061.177-1.567v-.013a11.29 11.29 0 0 0-.044-1.448 14.825 14.825 0 0 0-.399-2.289c-.023-.094-.021-.095-.043-.168.203-.377.426-.78.752-1.574a16.24 16.24 0 0 0 .768-2.316c.103-.425.189-.867.244-1.323.055-.457.076-.926.052-1.402a1.89 1.89 0 0 0 0-.002 1.89 1.89 0 0 0 0-.002 1.89 1.89 0 0 0 0-.002 1.89 1.89 0 0 0 0-.002c-.034-.604-.176-1.159-.37-1.705a11.296 11.296 0 0 0-.731-1.61 18.75 18.75 0 0 0-.967-1.572 25.44 25.44 0 0 0-1.115-1.505 24.187 24.187 0 0 0-2.332-2.561c-.38-.356-.744-.669-1.108-.932-.365-.264-.693-.502-1.27-.672.3.088.16.082-.02-.066a1.89 1.89 0 0 0 0-.002 1.89 1.89 0 0 0 0-.002 1.89 1.89 0 0 0 0-.002 9.84 9.84 0 0 1-.762-.717c-.617-.636-1.395-1.531-2.221-2.488-.826-.957-1.704-1.978-2.563-2.908-.429-.465-.85-.91-1.27-1.315a13.467 13.467 0 0 0-1.253-1.084 8.86 8.86 0 0 0-1.404-.857 1.89 1.89 0 0 0-.006 0c-.487-.24-.99-.443-1.5-.62-1.022-.352-2.075-.602-3.108-.812-.575-.116-1.093-.206-1.638-.302v-.229l-.03.229-.045-.008a1.89 1.89 0 0 0-.015-.325l.088.088a45.68 45.68 0 0 0-.272-4.45v-.009c-.668-5.988-2.94-13.115-7.789-18.912-4.849-5.798-12.36-10.16-22.912-10.379h-.008a40.45 40.45 0 0 0-.973-.014z" transform="translate(-46 -30.696) scale(.26458)"/><path style="fill:#d97706;fill-opacity:1;stroke:#000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M80.812 122.984c-.325-1.354-1.471-7.506-.371-10.011 1.1-2.506 4.292-3.487 6.237-3.64 1.148-.092 2.528.644 3.466 1.262.65.43 1.089.802 1.089.802l8.642-.72 10.656 2.695 5.725 4.107-.315 5.52-16.47 4.508-10.906 1.457z" transform="translate(-41.955 -71.433)"/><g style="display:inline"><path style="display:inline;fill:#fff;stroke:#000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M83.071 87.768c-3.828.596-16.674 2.63-21.278 2.967-5.288.387-8.914 3.45-8.93 8.795-.014 5.345 5.268 11.7 11.602 9.931 5.383-1.503 14.327-3.252 25.793-4.79 10.249-1.376 45.664-3.623 53.37-3.805 7.54-.18 14.384-5.95 12.607-15.914-2.04-11.443-13.29-11.23-15.982-10.468-14.813 4.19-30.335 6.919-50.09 12.31" transform="translate(-46 -30.696)"/><g aria-label="SnoBoard" style="font-size:26.8628px;line-height:1.25;font-family:'Lohit Tamil Classical';-inkscape-font-specification:'Lohit Tamil Classical';display:inline;stroke-width:.271687"><path style="display:inline;fill:#84cc16;stroke-width:.559859;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1.11972,2.23943" d="M87.703 119.898a4.26 4.26 0 0 0-.996-.042 5.531 5.531 0 0 0-1.646.393l-1.589.606a1.658 1.658 0 0 0-.522.387l-.413.501c-.803.997-1.376 2.06-1.723 3.193a15.383 15.383 0 0 0-.6 3.443c-.074.96.005 1.896.236 2.812.248.901.676 1.761 1.287 2.582.914 1.193 2.095 1.903 3.553 2.124.063.009.124.013.185.02l2.318-.428a4.84 4.84 0 0 0 1.48-1.196 12.808 12.808 0 0 0 1.47-2.185c.428-.788.752-1.64.97-2.555a3.52 3.52 0 0 0 .11-.56l.108-.51c.053-.426.107-.843.16-1.252.052-.426.086-.852.1-1.278a1.435 1.435 0 0 0-.093-.638 2.07 2.07 0 0 1-.123-.687c-.048-.816-.238-1.551-.57-2.204-.332-.668-.87-1.242-1.61-1.72a5.003 5.003 0 0 0-1.49-.669 4.665 4.665 0 0 0-.602-.137zm-9.115.507a2.395 2.395 0 0 0-.342-.023 8.257 8.257 0 0 0-.946.047 7.39 7.39 0 0 1-.88.044c-.32-.002-.534.062-.645.192-.11.13-.155.336-.133.62.022.264.044.6.067 1.008.024.407.038.833.043 1.276l.014 1.278.012 1.012a70.97 70.97 0 0 1-.117 2.05l-.09 2.047a3.246 3.246 0 0 0-.022.425c.001.142-.006.284-.023.425a2.92 2.92 0 0 1-.285-.48 2.91 2.91 0 0 0-.283-.479l-.336-.424a6.962 6.962 0 0 1-.31-.476 24.401 24.401 0 0 1-.949-1.68c-.315-.625-.628-1.256-.941-1.894-.294-.637-.586-1.262-.878-1.877-.29-.63-.562-1.207-.815-1.73a1.297 1.297 0 0 0-.268-.402c-.124-.149-.308-.183-.552-.103-.26.064-.528.12-.804.166-.275.03-.558.068-.848.116a1.89 1.89 0 0 1-.536.05c-.186-.026-.32.065-.402.271a1.858 1.858 0 0 0-.147.462l-.045.482c-.042.743-.076 1.51-.1 2.303a109.99 109.99 0 0 0 0 2.298c.005.37-.007.901-.032 1.591l-.028 2.07c-.008.705-.018 1.361-.028 1.966.007.606.02 1.01.039 1.211.018.152.02.287.005.404a.596.596 0 0 0 .028.304.48.48 0 0 0 .254.16c.119.039.321.064.61.075l.766.029c.446.017.722-.024.825-.123.12-.098.186-.36.199-.787.012-.41.024-.88.036-1.41l.033-1.666.034-1.642c.011-.548.023-1.028.036-1.439l-.003-.282c-.002-.137.014-.231.048-.283.035.017.089.076.16.179.07.085.14.187.212.307.071.12.134.24.188.36.071.103.116.171.134.206.179.326.386.706.62 1.138.235.433.47.876.706 1.329.255.437.51.866.766 1.289.257.423.496.796.717 1.116.165.214.286.392.36.535.093.125.194.234.305.325.11.074.248.14.414.198.166.04.415.093.749.157.167.04.371.056.613.047l.788-.027c.282-.026.556-.053.821-.08.285-.044.533-.08.744-.11.115-.014.22-.083.314-.206a.797.797 0 0 0 .17-.373c.09-.593.13-1.26.122-2 .01-.757.041-1.443.093-2.056a55.53 55.53 0 0 0 .155-1.735c.07-.688.13-1.394.18-2.119.05-.725.08-1.432.092-2.12a12.742 12.742 0 0 0-.078-1.792l-.012-1.086c-.042-.252-.121-.429-.239-.532-.073-.064-.192-.108-.355-.132zm8.632 2.45c.156.025.298.069.427.131.203.078.39.215.557.411.169.196.273.386.312.57.194.765.305 1.541.332 2.328a7.02 7.02 0 0 1-.252 2.311 12.46 12.46 0 0 1-.673 1.799 13.199 13.199 0 0 1-.888 1.657c-.321.54-.807.835-1.455.885-.358.04-.68-.058-.968-.294a2.848 2.848 0 0 1-.835-1.118 10.76 10.76 0 0 1-.462-1.252 3.53 3.53 0 0 1-.145-1.148c.03-.422.061-.771.093-1.048.08-.683.196-1.335.347-1.956.152-.638.339-1.27.562-1.895.086-.247.26-.472.525-.675.283-.22.594-.393.933-.518.36-.125.72-.194 1.083-.204.182-.014.351-.008.507.016zm-24.558-1.52a7.228 7.228 0 0 0-2.1-.02 4.506 4.506 0 0 0-1.309.346 5.25 5.25 0 0 0-1.152.698 4.229 4.229 0 0 0-.899.962 3.13 3.13 0 0 0-.476 1.164c-.064.42-.016.857.143 1.309.48 1.311 1.464 2.376 2.973 3.2.144.077.26.173.352.29.108.103.236.213.38.33.438.365.714.711.827 1.039.113.314.152.622.12.923-.034.248-.168.462-.402.641a1.34 1.34 0 0 1-.728.282c-.465.031-.821-.008-1.07-.115-.249-.107-.436-.31-.563-.607a1.822 1.822 0 0 1-.081-.251.444.444 0 0 0-.082-.252c-.036-.051-.133-.084-.29-.098a3.451 3.451 0 0 0-.549-.043 5.812 5.812 0 0 0-.672-.005 4.663 4.663 0 0 1-.617-.043c-.238-.027-.382-.016-.433.034a.693.693 0 0 1-.176.094c-.05.024-.084.087-.1.188.001.1.011.183.029.246.143.77.532 1.447 1.17 2.032.644.577 1.57.957 2.79 1.138.25.033.51.042.778.025.27-.004.532-.029.786-.073.6-.073 1.122-.228 1.563-.465a3.922 3.922 0 0 0 1.083-.827c.298-.326.521-.675.669-1.046.147-.372.22-.718.216-1.04-.006-.521-.193-1.104-.56-1.744-.346-.638-.943-1.237-1.785-1.796a9.855 9.855 0 0 1-.916-.675c-.276-.244-.56-.486-.853-.727a2.128 2.128 0 0 1-.491-.515l-.329-.614a.949.949 0 0 1-.14-.481 2.23 2.23 0 0 1 .102-.49c.07-.158.158-.297.264-.418.124-.135.266-.232.428-.29.413-.149.84-.154 1.28-.015.46.126.815.37 1.06.73a.698.698 0 0 1 .144.411c.02.145.078.283.172.412a.634.634 0 0 0 .17.114.653.653 0 0 0 .253.053l.762-.083c.341-.05.589-.092.741-.123.287-.05.497-.096.631-.14.135-.059.211-.122.23-.19.038-.082.037-.19-.003-.324a20.25 20.25 0 0 1-.151-.54 3.308 3.308 0 0 0-1.228-1.858c-.48-.376-1.136-.627-1.96-.752z" transform="matrix(.98054 -.14748 .14328 .95264 -62.103 -43.725)"/><path style="display:inline;fill:#65a30d;stroke-width:.8684;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1.7368,3.47359" d="M139.678 109.707a8.624 8.624 0 0 0-2.341.083c-.088.009-.24.056-.455.141-.215.085-.352.183-.411.294a4.09 4.09 0 0 0-.41.735c-.083.218-.173.564-.271 1.035a29.6 29.6 0 0 0-.154 1.244c-.076.68-.167 1.443-.27 2.293a128.056 128.056 0 0 0-.374 4.442c-.036.297-.07.572-.103.826-.03.234-.055.477-.07.73l-.039.634a308.561 308.561 0 0 1-.313 3.865 304.13 304.13 0 0 0-.313 3.863c-.022.358.063.673.254.945.207.293.429.501.665.625.236.125.485.196.746.215.261.04.526.027.794-.04.268-.045.536-.101.807-.169a12.58 12.58 0 0 0 1.535-.565 51.101 51.101 0 0 0 1.563-.703 9.394 9.394 0 0 0 2.499-1.647c.75-.696 1.358-1.611 1.821-2.746a18.304 18.304 0 0 0 1.41-6.865c.048-1.413-.13-2.677-.535-3.789a10.826 10.826 0 0 0-1.695-3.039c-.875-1.114-1.886-1.828-3.03-2.146a7.32 7.32 0 0 0-1.31-.261zm-9.788.955a5.184 5.184 0 0 0-1.36.039l-1.818.33c-.589.088-1.175.206-1.76.353-.405.086-.791.329-1.16.729-.349.376-.543.766-.585 1.167l-.3 2.414a96.783 96.783 0 0 0-.222 2.375c-.12 1.679-.23 3.347-.33 5.004a475.602 475.602 0 0 1-.28 5.003c-.02.34-.05.68-.088 1.019-.02.34-.032.679-.036 1.018l-.047.779c-.01.18-.002.32.026.419.026.12.099.19.217.209.135.039.331.057.589.056l.778-.004c.33-.002.6.006.809.025.439-.003.675-.268.707-.796.005-.366.019-.741.043-1.127.04-.386.074-.793.1-1.22.03-.507.05-.984.06-1.43.028-.447.064-.884.107-1.312.022-.365.054-.731.093-1.098l.12-1.1.96-.046c.324-.036.649-.062.973-.079l.109-.005c.146-.028.232.03.26.172l.086.365c.07.346.11.591.119.734.009.144.034.338.073.583.122.983.273 1.947.452 2.891.18.947.305 1.918.373 2.911.023.228.093.435.21.621.117.208.336.259.657.153.341-.106.692-.202 1.053-.287a6.289 6.289 0 0 0 1.065-.292c.37-.15.502-.457.397-.92-.246-1.26-.482-2.505-.71-3.737-.226-1.227-.46-2.461-.702-3.701-.076-.288-.08-.538-.01-.75.087-.213.24-.43.46-.65v-.001c.3-.31.6-.61.902-.902.32-.292.596-.625.828-.998.293-.42.525-.92.694-1.502.19-.605.304-1.204.34-1.798a6.244 6.244 0 0 0-.067-1.733c-.1-.56-.273-1.016-.519-1.37-.611-.88-1.334-1.555-2.166-2.025a3.797 3.797 0 0 0-1.5-.486zm9.337 2.561c.13.017.278.065.446.144a5.03 5.03 0 0 1 1.76 1.337c.495.565.854 1.295 1.075 2.189.316.846.488 1.67.513 2.473.043.803-.055 1.657-.295 2.561-.119.441-.23.892-.331 1.353a4.41 4.41 0 0 1-.465 1.29 4.021 4.021 0 0 1-.632.902 5.421 5.421 0 0 1-.78.675c-.266.203-.55.395-.85.577l-.838.476-.107.003-.714.277c-.235.07-.472.162-.709.275l.055-.896.135-1.348c.046-.47.091-.92.135-1.349.044-.428.072-.738.084-.93l.376-4.432c.144-1.5.28-3.001.407-4.501.05-.537.16-.865.327-.986a.531.531 0 0 1 .408-.09zm-21.758-1.289a.919.919 0 0 0-.273.012l-1.249.19c-.402.042-.802.063-1.199.063-.342.015-.616.114-.824.298-.188.162-.355.424-.502.784-.336.866-.68 1.72-1.031 2.562a56.794 56.794 0 0 0-.945 2.564c-.505 1.427-.99 2.837-1.455 4.23-.463 1.389-.925 2.781-1.386 4.178l-.23.846c-.11.403-.229.825-.357 1.267-.11.421-.22.832-.33 1.233-.091.4-.15.68-.177.84-.04.1-.04.23.002.389.042.14.104.229.186.269.18.099.371.168.573.207.204.02.407.05.61.089.188.02.376.03.566.029a.717.717 0 0 0 .5-.123c.127-.081.205-.233.236-.456a3.92 3.92 0 0 1 .196-.639c.022-.081.077-.274.166-.579.107-.325.214-.661.323-1.008.127-.367.235-.704.323-1.01.09-.327.156-.532.196-.614a3.2 3.2 0 0 1 .303-.648.947.947 0 0 1 .312-.345.84.84 0 0 1 .404-.104c.18-.026.393-.044.643-.05.287-.01.566-.03.837-.058.273-.05.51-.078.71-.084a7.63 7.63 0 0 1 .685-.053l.715-.022c.221-.007.397-.002.525.014.13-.004.22.024.272.085.07.06.12.174.147.34.028.146.062.354.1.625l.14.937c.072.334.135.678.188 1.034.073.334.136.68.19 1.036.073.335.129.64.169.913.032.084.073.178.123.283.052.084.096.126.134.125l1.332.058c.459-.002.912-.025 1.358-.069a.44.44 0 0 0 .3-.162c.084-.107.085-.289.004-.544a21.538 21.538 0 0 1-.332-1.693 54.928 54.928 0 0 1-.258-1.942c-.067-.466-.143-.962-.225-1.49a45.05 45.05 0 0 0-.277-1.58 58.03 58.03 0 0 0-.24-1.701c-.08-.545-.162-1.089-.243-1.632-.089-.711-.17-1.41-.24-2.1a35.35 35.35 0 0 0-.27-2.09l-.325-2.045a22.417 22.417 0 0 0-.411-1.996.801.801 0 0 0-.333-.497.607.607 0 0 0-.356-.166zm11.156 2.228c.195.023.39.064.585.122.592.19 1.03.541 1.313 1.053.302.511.367 1.128.193 1.848-.12.445-.337.814-.65 1.106-.313.292-.641.564-.986.815a4.158 4.158 0 0 1-1.506.628c-.507.076-1.004.18-1.492.315-.144.05-.25.057-.32.021-.048-.057-.076-.177-.083-.358l.03-2.215c.008-.728.018-1.466.029-2.213a1.09 1.09 0 0 0 .02-.335l.018-.304c.006-.102.028-.174.066-.218.038-.044.12-.073.243-.085.514-.01 1.032-.06 1.557-.151.33-.058.657-.068.983-.029zm-24.264-.761a3.691 3.691 0 0 0-.999.01c-.55.08-1.113.265-1.687.554l-1.645.796c-.2.114-.386.274-.556.478l-.455.605a13.492 13.492 0 0 0-1.988 3.795 21.702 21.702 0 0 0-.882 4.018 11.362 11.362 0 0 0 .006 3.238 8.446 8.446 0 0 0 1.079 2.92c.818 1.33 1.945 2.09 3.391 2.267.84.09 1.603-.059 2.286-.45a6.014 6.014 0 0 0 1.851-1.621 17.894 17.894 0 0 0 1.66-2.617c.497-.939.894-1.946 1.19-3.02.072-.24.123-.459.155-.657l.152-.598c.089-.497.176-.985.263-1.463.088-.498.157-.995.207-1.49a1.822 1.822 0 0 0-.042-.735 2.62 2.62 0 0 1-.068-.792c.019-.944-.113-1.787-.395-2.526-.28-.756-.775-1.39-1.483-1.902a4.066 4.066 0 0 0-1.445-.687 3.835 3.835 0 0 0-.595-.123zm11.082 2.983c.03.1.052.192.065.273.013.082.026.173.038.275l.387 2.637c.13.861.26 1.745.389 2.65.015.062-.018.147-.099.255-.08.108-.148.174-.205.197l-1.054.237c-.348.059-.704.117-1.067.175l-.431.021a.604.604 0 0 0-.27.013c-.306.056-.394-.093-.266-.447.361-.958.714-1.909 1.058-2.851.363-.947.728-1.907 1.095-2.88a.893.893 0 0 1 .152-.26c.078-.088.147-.187.208-.295zm-25-1.291c-.06-.007-.121-.012-.182-.017-.27-.02-.54-.033-.81-.037a6.639 6.639 0 0 0-.856-.006c-.463.034-.898.09-1.306.166a5.95 5.95 0 0 0-1.222.373 3.766 3.766 0 0 0-.372.16 1.497 1.497 0 0 0-.346.18.93.93 0 0 0-.403.739c-.092.955-.19 1.997-.293 3.128-.102 1.113-.2 2.155-.292 3.123-.031.226-.063.605-.095 1.136l-.099 1.618-.092 1.52c-.011.466-.021.772-.03.917-.006.37-.028.732-.067 1.086-.038.355-.06.717-.066 1.087.002.257-.005.498-.019.724-.013.225 0 .426.04.602a.723.723 0 0 0 .232.408c.112.111.288.174.528.188.29.029.636.041 1.036.037.4.012.802.016 1.207.012.407-.005.8-.025 1.177-.062.377-.02.693-.05.948-.085a9.995 9.995 0 0 0 1.47-.343 14.937 14.937 0 0 0 1.476-.524 4.823 4.823 0 0 0 1.597-1.172 6.505 6.505 0 0 0 1.102-1.638c.263-.538.382-1.064.355-1.575a3.474 3.474 0 0 0-.455-1.515 2.088 2.088 0 0 0-.89-.872c-.365-.2-.74-.382-1.123-.546a20.629 20.629 0 0 0-.518-.222c-.089-.062-.085-.129.012-.202.14-.142.336-.313.59-.514a8.36 8.36 0 0 0 .652-.52c1.344-1.208 1.847-2.554 1.496-4.02a2.402 2.402 0 0 0-.121-.346 1.79 1.79 0 0 0-.15-.368c-.443-.822-1.027-1.447-1.75-1.879-.671-.401-1.46-.648-2.362-.741zm13.19 1.766c.154.02.294.062.418.127.199.079.374.226.528.444a1.4 1.4 0 0 1 .267.641c.133.877.18 1.772.144 2.684a9.761 9.761 0 0 1-.444 2.695c-.23.726-.505 1.434-.824 2.123a18.755 18.755 0 0 1-1.029 1.97c-.368.644-.88 1.013-1.536 1.106a1.032 1.032 0 0 1-.948-.287c-.336-.312-.585-.729-.747-1.25a12.498 12.498 0 0 1-.361-1.425 4.538 4.538 0 0 1-.052-1.32c.065-.49.125-.897.18-1.22.136-.795.305-1.557.508-2.284.204-.748.444-1.49.718-2.227.107-.291.3-.562.583-.812a3.98 3.98 0 0 1 .98-.655 3.47 3.47 0 0 1 1.106-.3 1.9 1.9 0 0 1 .508-.01zm-15.12.781c.419.044.827.121 1.225.233.534.133.991.399 1.37.797.15.237.254.486.311.748.06.228.073.468.04.721-.016.251-.114.5-.295.747-.18.246-.413.479-.7.698a8.908 8.908 0 0 1-.908.61c-.3.184-.615.344-.945.481-.33.136-.629.238-.898.304a1.2 1.2 0 0 1-.212-.012.528.528 0 0 1-.153-.088.457.457 0 0 1-.07-.167 1.023 1.023 0 0 1-.012-.219l.133-2.185a46.98 46.98 0 0 0 .134-2.209c-.004-.211.039-.345.13-.403.092-.057.235-.087.43-.09.141.008.281.02.42.034zm1.138 8.371a3.815 3.815 0 0 1 .86.182c.18.06.35.136.51.229.178.092.319.204.422.333a.83.83 0 0 1 .225.419c.069.383-.092.749-.484 1.097-.37.33-.843.569-1.417.719-.388.11-.764.211-1.13.304-.362.076-.74.119-1.131.13-.248.005-.422-.039-.522-.134-.081-.112-.116-.274-.103-.487.028-.164.038-.32.029-.467l.028-.466.187-1.771c.476.01.948-.011 1.415-.065a4.456 4.456 0 0 1 1.111-.023z" transform="matrix(.98662 -.09823 .2135 .93955 -62.103 -43.725)"/></g></g><path style="fill:#f59e0b;fill-opacity:1;stroke:#000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M76.934 38.324s-4.857-1.505-5.53.163c-.421 1.043 1.647 2.076 1.753 2.985.075.637-1.97 1.252-1.563 1.604 1.107.958 3.348.704 3.348.704" transform="translate(-46 -30.696)"/><path style="fill:#f59e0b;fill-opacity:1;stroke:#000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="m85.874 82.018-1.298 1.46s-1.903 2.871-1.728 3.626c.175.754 2.053 5.524 4.596 4.814 2.542-.71 3.3-2.314 3.08-3.33-.22-1.016-.476-2.079-.38-2.5.097-.423 1.356-.646 1.356-.646l1.377-1.86" transform="translate(-46 -30.696)"/><path style="display:inline;fill:#fcd34d;fill-opacity:1;stroke:none;stroke-width:3.77953;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M396.877 163.404s12.431 10.877 15.292 11.736c2.86.858 7.996 1.03 10.659 3.03 2.662 2.002 7.221 8.461 8.691 8.894 1.47.432 6.4 6.017 6.541 8.844.14 2.828-1.955 6.34-1.955 6.34s1.763 4.956-.625 7.576c-2.388 2.619-6.513 2.059-9.604 2.54 3.646 3.606 5.086 11.923 5.086 11.923 3.445 3.463 11.583 14.128 9.998 17.153 2.464 8.951 3.983 20.223 4.544 26.445.377 4.181 2.273 1.436 4.727 3.37 2.453 1.936 1.936 5.638 3.783 7.514 2.189 2.223 7.667 5.56 8.247 11.468.394 4.002-4.026 7.843-6.917 9.905l-2.615.573c-.334-1.283-1.304-4.702-2.159-6.565-1.026-2.236-12.366-7.903-12.366-7.903s-5.345-2.831-13.222-5.2c-1.986.889-12.334 9.801-19.588 12.303-.29 3.255-46.231 29.728-59.566 29.58-2.75-3.862-4.98-6.84-9.756-8.62-4.776-1.781-9.822-1.733-16.415 1.2.642-1.948-.819-2.93 1.976-5.675 6.569-6.45 25.492-23.165 30.643-21.946 4.15-5.93 14.515-11.597 17.998-14.986-5.975-2.76-10.802-3.14-11.111-10.396-.24-5.597 1.501-2.676-.41-14.625-.91-5.693-6.432-19.901-5.305-25.118-.624-4.227-9.443-13.457-12.064-21.971-8.02-4.58-20.612-18.124-22.862-18.892-2.249-.768-5.042-.062-6.62-.91-1.578-.847-1.404-2.879-4.106-3.851-2.703-.972-4.774-.253-8.668-2.092-3.895-1.84-.786-2.46-7.8-3.88-7.015-1.418-7.924-3.161-7.924-3.161s-1.905-17.544 6.42-22.627c8.327-5.083 15.721 2.471 16.203 3.232 6.617 2.785 12.557.572 15.629 5.706 6.202 2.957 15.075 3.548 16.816 3.788 6.545.901 11.462 2.602 20.022 8.556 17.767-2.495 20.417-3.258 38.383-3.258z" transform="translate(-46 -30.696) scale(.26458)"/><path style="display:inline;fill:none;fill-opacity:1;stroke:#000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M105.007 43.234s3.29 2.878 4.046 3.105c.757.227 2.116.273 2.82.802.705.53 1.91 2.239 2.3 2.353.389.114 1.693 1.592 1.73 2.34.038.748-.517 1.677-.517 1.677s.467 1.312-.165 2.005c-.632.693-1.724.545-2.541.672.964.954 1.345 3.155 1.345 3.155.912.916 3.065 3.738 2.646 4.538.652 2.368 1.053 5.35 1.202 6.997.1 1.106.601.38 1.25.892.65.512.513 1.491 1.001 1.988.58.588 2.03 1.47 2.183 3.034.104 1.059-1.066 2.075-1.83 2.62l-.692.152c-.089-.34-.345-1.244-.572-1.737-.271-.591-3.271-2.09-3.271-2.09s-1.415-.75-3.499-1.377c-.525.236-3.263 2.594-5.182 3.256-.077.86-12.233 7.865-15.76 7.826-.728-1.022-1.318-1.81-2.582-2.28-1.264-.472-2.599-.46-4.343.317.17-.516-.217-.775.523-1.502 1.738-1.706 6.745-6.129 8.107-5.806 1.099-1.57 3.84-3.069 4.762-3.966-1.58-.73-2.858-.83-2.94-2.75-.063-1.48.398-.708-.108-3.87-.24-1.506-1.702-5.265-1.404-6.645-.165-1.119-2.498-3.561-3.192-5.814-2.121-1.211-5.453-4.795-6.048-4.998-.595-.203-1.334-.016-1.752-.24-.418-.225-.371-.762-1.086-1.02-.715-.257-1.263-.067-2.294-.553-1.03-.487-.208-.651-2.063-1.027-1.856-.375-2.097-.836-2.097-.836s-.504-4.642 1.699-5.987c2.203-1.345 4.16.654 4.287.855 1.75.737 3.322.152 4.135 1.51 1.64.782 3.988.939 4.449 1.002 1.732.239 3.033.689 5.297 2.264 4.701-.66 5.403-.862 10.156-.862z" transform="translate(-46 -30.696)"/><path style="display:inline;fill:none;stroke:#000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M97.968 72.205s2.212-2.051 2.83-4.042c.616-1.992 2.042-5.257 2.498-6.476-.164-1.04 2.433-5.093 4.673-5.87 1.347-.467 3.891-.542 4.71.371m-.236 18.172c1.157-1.12 5.43-3.482 4.958-7.072" transform="translate(-46 -30.696)"/><path style="display:inline;fill:#f59e0b;fill-opacity:1;stroke:#000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M109.568 47.608s3.015.625 2.243 2.372c-.197.446-1.299.62-1.862 1.038a74.83 74.83 0 0 1-3.571 2.455" transform="translate(-46 -30.696)"/><path style="display:inline;fill:#f59e0b;fill-opacity:1;stroke:#000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M95.08 48.855c.119.41-.11 2.637 1.81 2.937.424.067-.395 1.218.064 1.516.46.298.171 1.446.427 1.539 1.582.573 1.949 3.34 2.849 3.263.334-.028 1.571-1.608 2.398-2.222.67-.498 2.176-1.058 3.076-1.41.82-.32.457-1.673 1.38-1.559.874.109 1.877-2.372 1.878-2.648-.791-.296-1.064.359-1.838.219-.285-.052-.905-.417-1.348-.654" transform="translate(-46 -30.696)"/><path style="display:inline;fill:#d97706;fill-opacity:1;stroke:#000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M95.08 48.855s-.288-3.004-.23-4.737c.026-.755.118-1.454.326-1.902.688-1.476 1.438-4.763 6.764-4.653 5.327.11 7.305 4.302 7.64 7.307.334 3.004-.618 5.401-.618 5.401" transform="translate(-46 -30.696)"/><path style="fill:url(#d);stroke-width:.571755;stroke-linecap:round;stroke-linejoin:round" transform="matrix(-.23112 .97293 -.99585 .09096 -46 -30.696)" d="M55.06-111.757a2.204 1.515 0 0 1-2.203 1.516 2.204 1.515 0 0 1-2.204-1.516 2.204 1.515 0 0 1 2.204-1.515 2.204 1.515 0 0 1 2.204 1.515z"/><path style="display:inline;fill:#334155;fill-opacity:1;stroke:#000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M95.077 47.885s.664.699 1.408 1.173l9.572.007c1.434.05 3.253-1.066 3.253-1.066l.34-2s-1.82 1.117-3.254 1.068l-10.1.05c-.744-.473-1.408-1.172-1.408-1.172z" transform="translate(-46 -30.696)"/><path style="display:inline;fill:#334155;fill-opacity:1;stroke:#000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M96.676 46.344c.312-.172 4.13.443 5.106.495.978.052 3.429-.41 4.192-.358.763.052.535 3.014.148 3.147-.387.132-2.27 1.844-2.982 1.466-.713-.378-1.399-1.345-2.23-1.345-.83 0-.776 1.059-1.55 1.059s-3.108-1.083-3.06-1.42c.049-.338-.34-2.65.376-3.044z" transform="translate(-46 -30.696)"/><path style="fill:#94a3b8;fill-opacity:1;stroke:none;stroke-linecap:round;stroke-linejoin:round" d="M98.418 46.662h2.099l-1.588 3.646h-2.098z" transform="translate(-46 -30.696)"/><path style="display:inline;fill:none;fill-opacity:1;stroke:#000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M96.676 46.344c.312-.172 4.13.443 5.106.495.978.052 3.429-.41 4.192-.358.763.052.535 3.014.148 3.147-.387.132-2.27 1.844-2.982 1.466-.713-.378-1.399-1.345-2.23-1.345-.83 0-.776 1.059-1.55 1.059s-3.108-1.083-3.06-1.42c.049-.338-.34-2.65.376-3.044z" transform="translate(-46 -30.696)"/><path style="color:#000;display:inline;fill:#000;stroke-linecap:round;-inkscape-stroke:none" d="M91.336 77.27c.074-.92.016.56-.385-.625-.4-1.185-.575-2.52-.73-2.321-.153.198-.454 1.172-.118 2.486.336 1.315.285-.245.235.38.33.136.737.086.998.08zm.391-.913c-.372-.686-.677-1.188-.508-1.16.181.031.704.317 1.222.94-.34.176-.603.197-.714.22z" transform="translate(-46 -30.696)"/><path style="color:#000;fill:#000;stroke-linecap:round;-inkscape-stroke:none" d="M104.37 79.484c1.092.424 2.26.468 3.23.682.969.214 1.492.5 1.51.385.018-.115-.535-.537-1.379-.85-.843-.315-1.632-.395-2.76-.832-.034.313-.092.465-.6.615z" transform="translate(-46 -30.696)"/><path style="color:#000;display:inline;fill:#000;stroke-linecap:round;-inkscape-stroke:none" d="M119.527 79.689a.5.5 0 0 0-.126-.698c-1.545-.91-3.546-1.22-3.597-1.108-.05.114 1.692.67 3.16 2.031.202.188.405.001.563-.225z" transform="translate(-46 -30.696)"/><path style="color:#000;fill:#000;stroke-linecap:round;-inkscape-stroke:none" d="M97.045 52.816a.5.5 0 0 0-.182.983s.741.34 1.608.457c.867.118 1.824.031 2.492-.053.274-.034 1.338-.373 1.31-.489-.026-.115-1.029.156-2.15.172-1.123.016-1.871-.243-2.803-.944-.678-.51-.275-.126-.275-.126zm3.019 2.787c.769-.124 1.477-.142 1.475-.229 0-.087-.529-.14-1.477-.236-.947-.096-1.327-.034-1.982-.478-.655-.443-.315.539-.235.804.079.264.63.78.726.855.85-.443.724-.592 1.493-.716zm-3.06-4.298a.5.5 0 1 0-.229.974s1.274-.177 1.802-.075c.863.075 1.812.41 1.821.239.01-.172-1.619-.755-2.457-.94a26.365 26.365 0 0 1-.937-.198zm10.49.815c-.4.407-1.186.37-2.356.322-1.17-.048-2.29.287-3.277.398-.986.111-1.574.01-1.553.125.02.114.68.335 1.58.359.9.024 1.672-.155 2.88-.106 1.209.05 1.692.477 2.605.18.262-.085.272-.37.188-.632-.085-.264.331-1.055-.067-.647zm-14.365 6.144a.5.5 0 0 0-.05.707c.603.696 1.258 1.373 2.385 1.918 1.126.544 2.2 1.355 2.167 1.106-.034-.25-.518-1.147-1.69-1.828-1.174-.681-1.88-1.388-2.138-1.945-.117-.25-.465-.14-.674.042zm14.748-2.356c-.056-.271-.15-.543-.398-.431-.841.378-1.982.568-3.004 1.29-1.022.722-2.042 1.17-2.042 1.275 0 .104 1.234-.153 1.843-.5.609-.346.791-.109.688.019-.105.128 2.97-1.383 2.913-1.653zm13.264 18.641a.5.5 0 0 0-.168-.69c-1.598-.814-3.614-1.002-3.657-.886-.044.116 1.429.7 3.138 1.743a.5.5 0 0 0 .687-.167zm-25.799-7.767c-.233.15-.38.895-.228 1.127.236.31.409 1.434.421 1.105.006-.165.453-.581.88-.453 1.066.32 2.043-.27 2.09-.315.089-.086-2.666.24-2.879-1.24-.039-.272-.053-.375-.284-.224zm20.066-13.616c.115.253-.199 1.555-.352 1.288-.024-.393-.083.421-1.334.446-.311.006-1.565-.228-1.952-.223-1.166.016-2.073.057-2.012-.003.119-.116.827-.413 1.788-.548.494-.07 1.168 0 1.626-.043 1.35-.128 1.752-.807 1.911-1.076.175-.295.21-.092.325.16zm-1.276-3.442c-.144-.236-.906-.392-.712-.195.327.33.059 1.252-.602 1.952-.61.645-1.212.621-1.224.692-.016.092.784.26 1.894-.464.535-.348.382-.376.834-.844.23-.24.31-.259.407-.18.25.202-.597-.96-.597-.96zM93.439 75.841c.251.116 1.37-.655.965-.261-.495.482-.95 1.988-2.801 3.418-.99.764-2.175 1.347-2.327 1.335-.153-.012 1.043-.91 1.984-1.888.94-.978 1.32-1.69 1.066-1.556.116-.25.862-1.164 1.113-1.048zm20.591-16.989a.5.5 0 0 1 .512.491c.018.922-.015 1.863-.486 3.022-.47 1.16-2.675 3.673-2.817 3.466-.143-.207 1.566-2.39 1.98-3.682.414-1.291.31-2.212.298-2.839-.006-.275.237-.452.513-.458zm-6.118 18.512c.079.265-.026.569-.292.646-.885.26-3.1.605-4.342.456-1.242-.15-4.032.864-3.87.672.163-.191 2.503-1.597 3.858-1.537 1.356.06 3.628-.328 4.19-.607.255-.126.378.105.456.37zm-31.01-32.061a.5.5 0 0 0 .466.535c1.794-.011 3.67-.772 3.656-.895-.015-.123-1.796.293-3.754-.122-.27-.058-.349.207-.368.482zm6.518 2.653c.023-.276.26-.433.536-.409 1.771.282 3.517 1.27 3.484 1.389-.033.12-1.73-.561-3.729-.447-.276.016-.313-.257-.29-.533zm6.42 5.002a.5.5 0 0 0 .4.585c1.783.197 3.188 2.257 3.187 2.133 0-.084-.363-1.2-1.315-2.122-.458-.444-1.277-.708-1.834-1.044-.284-.172-.388.177-.439.448zM84.548 40.91c.294.474.525 1.034 1.041 1.739.517.704 1.616 1.514 2.482 1.938.865.424 3.06 1.94 3.086 1.79.027-.148-1.988-1.808-3.354-2.846-3.458-2.628-.457-2.985-3.127-3.037-.318.298.781.446-.128.416z" transform="translate(-46 -30.696)"/><path style="display:inline;fill:none;stroke:#94a3b8;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" d="M55.975 99.831a5.61 5.61 0 0 0 2.658 3.009 5.609 5.609 0 0 0 3.993.428c.975-.263 1.865-.791 2.638-1.442.773-.65 1.435-1.423 2.05-2.224 1.23-1.604 2.308-3.36 3.865-4.648 2.268-1.875 5.319-2.547 8.26-2.594 2.943-.048 5.862.465 8.796.678 3.604.26 7.396.024 10.53-1.774 1.078-.617 2.048-1.403 3.074-2.103 1.025-.7 2.132-1.326 3.348-1.575a6.506 6.506 0 0 1 3.124.154c1.009.296 1.938.81 2.834 1.359 1.469.9 2.872 1.903 4.231 2.96 1.296 1.009 2.562 2.072 4 2.864 1.44.79 3.09 1.3 4.72 1.095 1.83-.23 3.441-1.332 4.778-2.605 2.355-2.244 4.065-5.062 5.948-7.715.935-1.316 1.935-2.616 3.223-3.59 1.292-.977 2.87-1.599 4.489-1.655 2.049-.07 4.115.802 5.48 2.333a7.041 7.041 0 0 1 1.671 5.716" transform="translate(-46 -30.696)" clip-path="url(#e)"/><path style="display:inline;fill:none;fill-opacity:1;stroke:#334155;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M91.173 102.501c6.021-2.01 6.76-7.397 11.07-10.587 1.271-.93 2.797-1.607 4.371-1.549.877.032 1.735.29 2.529.664.794.374 1.529.861 2.243 1.37 2.411 1.722 4.657 3.743 7.37 4.932 2.237.98 4.744 1.351 7.163 1.013" transform="translate(-46 -30.696)" clip-path="url(#f)"/><path style="display:inline;fill:url(#g);fill-opacity:1;stroke-width:2.44399;stroke-linecap:round;stroke-linejoin:round" d="M104.532 128.268a2.16 2.203 0 0 1-2.161 2.203 2.16 2.203 0 0 1-2.161-2.203 2.16 2.203 0 0 1 2.16-2.203 2.16 2.203 0 0 1 2.162 2.203z" transform="translate(-41.955 -71.433)"/><path style="display:inline;fill:#f59e0b;stroke-width:2.07148;stroke-linecap:round;stroke-linejoin:round" d="M103.67 128.268a1.3 1.3 0 0 1-1.3 1.3 1.3 1.3 0 0 1-1.299-1.3 1.3 1.3 0 0 1 1.3-1.3 1.3 1.3 0 0 1 1.3 1.3z" transform="translate(-41.955 -71.433)"/><path style="fill:#000;stroke:#000;stroke-width:.264583px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" d="m123.691 118.334-1.31 3.227 1.037-.163-.91 2.745 2.623-3.88-1.401.372 2.428-2.82" transform="translate(-41.955 -71.433)"/><path style="display:inline;fill:#000;stroke:#000;stroke-width:.264583px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" d="m62.56 149.44 1.31-3.228-1.037.163.91-2.745-2.622 3.88 1.4-.371-2.428 2.82" transform="translate(-41.955 -71.433)"/></g></svg> \ No newline at end of file -- GitLab From 47a1b8fd4f88c2b2f009c7743cbdb7df8b7c190e Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:43:37 +0200 Subject: [PATCH 02/54] feat(router): :sparkles: pass initial table columns & filters from url to props --- src/router/index.ts | 13 +++++++++++++ src/views/DataTableView.vue | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/router/index.ts b/src/router/index.ts index f2bccdf..b3449b8 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -34,6 +34,19 @@ const router = createRouter({ path: '/table', name: 'data-table', component: () => import('@/views/DataTableView.vue'), + props: (to) => ({ + initialColumns: Array.isArray(to.query.columns) + ? to.query.columns.map((column) => column?.split(',')).flat() + : to.query.columns && to.query.columns.split(','), + initialFilters: Object.entries(to.query).reduce( + (initialFilters, [key, value]) => { + return key === 'columns' || !value + ? initialFilters + : { ...initialFilters, [key]: value } + }, + {} + ) + }), meta: { title: 'Data table' } diff --git a/src/views/DataTableView.vue b/src/views/DataTableView.vue index d6fd47d..e8f2280 100644 --- a/src/views/DataTableView.vue +++ b/src/views/DataTableView.vue @@ -94,6 +94,16 @@ interface ColumnGroupModel { columns: ColumnModel[] } +/** + * Component props. + */ +const props = defineProps<{ + /** The columns of the table to display initially. */ + initialColumns?: string[] + /** The filters to apply on the table initially. */ + initialFilters?: Record<string, any> +}>() + /** * Reactive urql GraphQL query object, updated with query state & response */ @@ -101,6 +111,9 @@ const gqlQuery = useQuery({ query: tableEntriesQuery }) +/** + * Data to display in the table. + */ const tableEntries = computed(() => gqlQuery.data.value?.tableEntries.map((entry) => ({ ...entry, -- GitLab From 4a82b844bfb540f4e0d7647b70f6197bbe36da5e Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:43:37 +0200 Subject: [PATCH 03/54] feat(router): :sparkles: allow table aray filter in url --- src/router/index.ts | 27 ++++++++++++++++++++------- src/typings/typeUtils.ts | 18 +++++++++++++++++- src/views/DataTableView.vue | 4 ++-- 3 files changed, 39 insertions(+), 10 deletions(-) diff --git a/src/router/index.ts b/src/router/index.ts index b3449b8..870e4f9 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -10,6 +10,7 @@ import HomeView from '@/views/HomeView.vue' * Other 3rd-party imports */ import { useTitle } from '@vueuse/core' +import { isNonNullish } from '@/typings/typeUtils' declare module 'vue-router' { interface RouteMeta { @@ -35,15 +36,27 @@ const router = createRouter({ name: 'data-table', component: () => import('@/views/DataTableView.vue'), props: (to) => ({ - initialColumns: Array.isArray(to.query.columns) - ? to.query.columns.map((column) => column?.split(',')).flat() - : to.query.columns && to.query.columns.split(','), + initialColumnIds: Array.isArray(to.query.columns) + ? to.query.columns + .filter(isNonNullish) + .map((column) => column?.split(',')) + .flat() + : to.query.columns?.split(','), initialFilters: Object.entries(to.query).reduce( - (initialFilters, [key, value]) => { - return key === 'columns' || !value + (initialFilters, [key, value]) => + key === 'columns' || !value ? initialFilters - : { ...initialFilters, [key]: value } - }, + : { + ...initialFilters, + [key]: Array.isArray(value) + ? value + .filter(isNonNullish) + .map((filter) => filter?.split(',')) + .flat() + : value.includes(',') + ? value.split(',') + : value + }, {} ) }), diff --git a/src/typings/typeUtils.ts b/src/typings/typeUtils.ts index dd65d23..f74bd66 100644 --- a/src/typings/typeUtils.ts +++ b/src/typings/typeUtils.ts @@ -34,7 +34,23 @@ export type DeepDefined<T> = T extends object : T /** - * Checks if a value is defined, narrowing by excluding `undefined` if yes. + * Checks if a value is truthy (`!= false`), narrowing it. + * @param value The value to check. + */ +// export const isTruthy = <T>( +// value: T +// ): value is Exclude<T, false | 0 | '' | null | undefined> => +// !!value + +/** + * Checks if a value is not nullish (`!= null`), narrowing it. + * @param value The value to check. + */ +export const isNonNullish = <T>(value: T): value is NonNullable<T> => + typeof value != null + +/** + * Checks if a value is defined, narrowing it. * @param value The value to check. */ export const isDefined = <T>(value: T): value is Exclude<T, undefined> => diff --git a/src/views/DataTableView.vue b/src/views/DataTableView.vue index e8f2280..a955039 100644 --- a/src/views/DataTableView.vue +++ b/src/views/DataTableView.vue @@ -99,9 +99,9 @@ interface ColumnGroupModel { */ const props = defineProps<{ /** The columns of the table to display initially. */ - initialColumns?: string[] + initialColumnIds?: string[] /** The filters to apply on the table initially. */ - initialFilters?: Record<string, any> + initialFilters?: Record<string, string | string[]> }>() /** -- GitLab From 6aa47365ecfd756ab73ede1f8a4c90a9a3d9694e Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:43:37 +0200 Subject: [PATCH 04/54] feat(table-view): :sparkles: actually use initial column & filters from props Closes #83 --- src/views/DataTableView.vue | 77 +++++++++++++++++++++++-------------- 1 file changed, 49 insertions(+), 28 deletions(-) diff --git a/src/views/DataTableView.vue b/src/views/DataTableView.vue index a955039..f7c97c1 100644 --- a/src/views/DataTableView.vue +++ b/src/views/DataTableView.vue @@ -386,27 +386,42 @@ const columns = columnGroups.reduce<ColumnModel[]>( ) /** - * Columns to display at startup + * List of all column IDs. */ -const defaultColumnIds = [ - 'entryId', - 'modificationId', - 'modificationName', - 'modificationPosition', - 'modificationSymbol', - 'targetId', - 'targetName', - 'targetClass', - 'guideId', - 'guideName', - 'guideClass', - 'guideChromosomeName', - 'guideStart', - 'guideEnd', - 'guideLength', - 'organismName', - 'organismId' -] +const columnIds = columns.map((column) => column.id) + +/** + * Columns IDs to display initially (from props), filtered by keeping only those + * actually existing. + */ +const filteredInitialColumnsIds = props.initialColumnIds?.filter((columnId) => + columnIds?.includes(columnId) +) + +/** + * Columns IDs to display initially, with default value if none provided. + */ +const initialColumnIdsWithDefaults = filteredInitialColumnsIds + ? ['entryId', ...filteredInitialColumnsIds] + : [ + 'entryId', + 'modificationId', + 'modificationName', + 'modificationPosition', + 'modificationSymbol', + 'targetId', + 'targetName', + 'targetClass', + 'guideId', + 'guideName', + 'guideClass', + 'guideChromosomeName', + 'guideStart', + 'guideEnd', + 'guideLength', + 'organismName', + 'organismId' + ] /** * Columns selected by user with the MultiSelect @@ -414,7 +429,7 @@ const defaultColumnIds = [ * because MultiSelect v-model puts new selection at the end of the array */ const selectedColumns = ref<ColumnModel[]>( - columns.filter((col) => defaultColumnIds.includes(col.id)) + columns.filter((col) => initialColumnIdsWithDefaults.includes(col.id)) ) /** @@ -448,22 +463,28 @@ const sortedSelectedColumnGroups = computed<ColumnGroupModel[]>(() => * Reactive column filters object */ const filters = ref<DataTableFilterMeta>( - columns.reduce( - (filters, column) => ({ + columns.reduce((filters, column) => { + const thisColumnFilter = props.initialFilters?.[column.id] + return { ...filters, [column.field]: { - value: null, + value: thisColumnFilter + ? Array.isArray(thisColumnFilter) + ? thisColumnFilter.filter((filterValue) => + column.filter?.options?.includes(filterValue) + ) + : thisColumnFilter + : null, matchMode: column.filter?.matchMode ? column.filter?.matchMode : primeVueFilterMatchMode.CONTAINS } - }), - {} - ) + } + }, {}) ) // Also set the global filter filters.value.global = { - value: null, + value: props.initialFilters?.global ? props.initialFilters.global : null, matchMode: primeVueFilterMatchMode.CONTAINS } </script> -- GitLab From a38b8fc6b898bea7e59b14a6c23f447f3a577849 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:43:37 +0200 Subject: [PATCH 05/54] refactor(table-view): :recycle: enforce consistency between column's groupId & actual group id --- src/views/DataTableView.vue | 79 +++++++++++++------------------------ 1 file changed, 28 insertions(+), 51 deletions(-) diff --git a/src/views/DataTableView.vue b/src/views/DataTableView.vue index f7c97c1..78e5cb2 100644 --- a/src/views/DataTableView.vue +++ b/src/views/DataTableView.vue @@ -146,7 +146,6 @@ const columnGroups: ColumnGroupModel[] = [ id: 'entryId', field: 'id', title: 'Data entry ID', - groupId: 'entryId', single: true } ] @@ -159,7 +158,6 @@ const columnGroups: ColumnGroupModel[] = [ id: 'modificationId', field: 'modification.id', title: 'ID', - groupId: 'modification', link: { routeName: 'modificationDetails', queryIdField: 'modification.id', @@ -169,27 +167,23 @@ const columnGroups: ColumnGroupModel[] = [ { id: 'modificationName', field: 'modification.name', - title: 'Name', - groupId: 'modification' + title: 'Name' }, { id: 'modificationPosition', field: 'modification.position', - title: 'Position', - groupId: 'modification' + title: 'Position' }, { id: 'modificationSymbol', field: 'modification.symbol_label', title: 'Symbol', - groupId: 'modification', isMarkdown: true }, { id: 'modificationType', field: 'modification.type_short_label', title: 'Type', - groupId: 'modification', isMarkdown: true } ] @@ -202,7 +196,6 @@ const columnGroups: ColumnGroupModel[] = [ id: 'guideId', field: 'guide.id', title: 'ID', - groupId: 'guide', link: { routeName: 'guideDetails', queryIdField: 'guide.id', @@ -212,51 +205,43 @@ const columnGroups: ColumnGroupModel[] = [ { id: 'guideName', field: 'guide.name', - title: 'Name', - groupId: 'guide' + title: 'Name' }, { id: 'guideClass', field: 'guide.class', - title: 'Class', - groupId: 'guide' + title: 'Class' }, { id: 'guideSubclass', field: 'guide.subclass_label', title: 'Subclass', - groupId: 'guide', isMarkdown: true }, { id: 'guideChromosomeId', field: 'guide.chromosomeConnection.node.id', - title: 'Chromosome ID', - groupId: 'guide' + title: 'Chromosome ID' }, { id: 'guideChromosomeName', field: 'guide.chromosomeConnection.node.name', - title: 'Chromosome name', - groupId: 'guide' + title: 'Chromosome name' }, { id: 'guideStart', field: 'guide.chromosomeConnection.start', - title: 'Start', - groupId: 'guide' + title: 'Start' }, { id: 'guideEnd', field: 'guide.chromosomeConnection.end', - title: 'End', - groupId: 'guide' + title: 'End' }, { id: 'guideStrand', field: 'guide.chromosomeConnection.strand', - title: 'Strand', - groupId: 'guide' + title: 'Strand' }, { id: 'guideHostGenes', @@ -268,14 +253,12 @@ const columnGroups: ColumnGroupModel[] = [ { id: 'guideLength', field: 'guide.length', - title: 'Length', - groupId: 'guide' + title: 'Length' }, { id: 'guideSequence', field: 'guide.seq', - title: 'Sequence', - groupId: 'guide' + title: 'Sequence' } ] }, @@ -287,7 +270,6 @@ const columnGroups: ColumnGroupModel[] = [ id: 'targetId', field: 'modification.target.id', title: 'ID', - groupId: 'target', link: { routeName: 'targetDetails', queryIdField: 'modification.target.id', @@ -297,56 +279,47 @@ const columnGroups: ColumnGroupModel[] = [ { id: 'targetName', field: 'modification.target.name', - title: 'Name', - groupId: 'target' + title: 'Name' }, { id: 'targetLength', field: 'modification.target.length', - title: 'Length', - groupId: 'target' + title: 'Length' }, { id: 'targetClass', field: 'modification.target.class', - title: 'Class', - groupId: 'target' + title: 'Class' }, { id: 'targetUnit', field: 'modification.target.unit', - title: 'Unit', - groupId: 'target' + title: 'Unit' }, { id: 'targetChromosomeId', field: 'modification.target.chromosomeConnection.node.id', - title: 'Chromosome ID', - groupId: 'target' + title: 'Chromosome ID' }, { id: 'targetChromosomeName', field: 'modification.target.chromosomeConnection.node.name', - title: 'Chromosome Name', - groupId: 'target' + title: 'Chromosome Name' }, { id: 'targetStart', field: 'modification.target.chromosomeConnection.start', - title: 'Start', - groupId: 'target' + title: 'Start' }, { id: 'targetEnd', field: 'modification.target.chromosomeConnection.end', - title: 'End', - groupId: 'target' + title: 'End' }, { id: 'targetStrand', field: 'modification.target.chromosomeConnection.strand', - title: 'Strand', - groupId: 'target' + title: 'Strand' } ] }, @@ -358,7 +331,6 @@ const columnGroups: ColumnGroupModel[] = [ id: 'organismName', field: 'organism.label', title: 'Organism Name', - groupId: 'misc', link: { routeName: 'organism', queryIdField: 'organism.id', @@ -369,12 +341,17 @@ const columnGroups: ColumnGroupModel[] = [ { id: 'organismId', field: 'organism.id', - title: 'Organism ID', - groupId: 'misc' + title: 'Organism ID' } ] } -] +].map((group) => ({ + ...group, + columns: group.columns.map((column) => ({ + ...column, + groupId: group.id + })) +})) /** * Array of the columns (not structured in groups), -- GitLab From 1fc3563bfe25658ce98932c73713c5c6b7db455e Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:43:37 +0200 Subject: [PATCH 06/54] feat(table-view): :sparkles: make row ID column optional & not frozen & rename it --- src/views/DataTableView.vue | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/src/views/DataTableView.vue b/src/views/DataTableView.vue index 78e5cb2..2434749 100644 --- a/src/views/DataTableView.vue +++ b/src/views/DataTableView.vue @@ -139,13 +139,13 @@ const tableEntries = computed(() => */ const columnGroups: ColumnGroupModel[] = [ { - title: 'Data entry ID', - id: 'entryId', + title: 'Data row ID', + id: 'rowId', columns: [ { - id: 'entryId', + id: 'rowId', field: 'id', - title: 'Data entry ID', + title: 'Data row ID', single: true } ] @@ -378,10 +378,10 @@ const filteredInitialColumnsIds = props.initialColumnIds?.filter((columnId) => /** * Columns IDs to display initially, with default value if none provided. */ -const initialColumnIdsWithDefaults = filteredInitialColumnsIds - ? ['entryId', ...filteredInitialColumnsIds] +const initialColumnIdsWithDefaults = filteredInitialColumnsIds?.length + ? filteredInitialColumnsIds : [ - 'entryId', + 'rowId', 'modificationId', 'modificationName', 'modificationPosition', @@ -513,20 +513,16 @@ filters.value.global = { placeholder="Select Columns" display="chip" :max-selected-labels="3" - :option-disabled="(column) => column.id === 'entryId'" scroll-height="50vh" > <template #value> <Chip v-for="column in sortedSelectedColumns.slice(0, 3)" :key="column.id" - :class="[{ 'opacity-60': column.id === 'entryId' }, 'mr-1']" - :removable="column.id === 'entryId' ? false : true" + class="mr-1" + removable :label="`${ - column.single || - columnGroups.find( - (columnGroup) => columnGroup.id === column.groupId - )?.id === 'misc' + column.single || column.groupId === 'misc' ? '' : columnGroups.find( (columnGroup) => columnGroup.id === column.groupId @@ -568,13 +564,11 @@ filters.value.global = { :key="columnGroup.id" :header="columnGroup.title" :colspan="columnGroup.columns.length" - :sortable="columnGroup.id === 'entryId'" + :sortable="columnGroup.id === 'rowId'" :field="columnGroup.id" :rowspan="columnGroup.columns[0]?.single ? 2 : 1" - :frozen="columnGroup.id === 'entryId'" :class="[ { - 'frozen-column': columnGroup.id === 'entryId', 'column-headers': columnGroup.columns[0]?.single }, !columnGroup.columns[0]?.single && @@ -657,8 +651,6 @@ filters.value.global = { <Column v-for="(column, columnIndex) in sortedSelectedColumns" :key="columnIndex" - :frozen="column.id === 'entryId'" - :class="column.id === 'entryId' ? 'frozen-column' : ''" > <template #body="{ data }"> <!-- Only display something if cell content is defined --> -- GitLab From fdab9bda38735a08867b1a59146617aa6aef40b1 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:43:37 +0200 Subject: [PATCH 07/54] feat(table-view): :sparkles: dedup table entries based on column selection --- src/views/DataTableView.vue | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/views/DataTableView.vue b/src/views/DataTableView.vue index 2434749..01a6a6e 100644 --- a/src/views/DataTableView.vue +++ b/src/views/DataTableView.vue @@ -20,7 +20,7 @@ import IconFa6SolidArrowUpRightFromSquare from '~icons/fa6-solid/arrow-up-right- /** * Other 3rd-party imports */ -import { get as _get } from 'lodash-es' +import { get as _get, uniqBy as _uniqBy } from 'lodash-es' import { FilterMatchMode as primeVueFilterMatchMode } from 'primevue/api' import { useQuery } from '@urql/vue' /** @@ -464,6 +464,21 @@ filters.value.global = { value: props.initialFilters?.global ? props.initialFilters.global : null, matchMode: primeVueFilterMatchMode.CONTAINS } + +/** + * Deduped table entries, by the values in the currently selected columns. + */ +const dedupedTableEntries = computed(() => + _uniqBy(tableEntries.value, (entry) => + sortedSelectedColumns.value + .map((column) => _get(entry, column.field)) + .join('') + ).filter((entry) => + sortedSelectedColumns.value + .map((column) => _get(entry, column.field)) + .join('') + ) +) </script> <template> @@ -477,7 +492,7 @@ filters.value.global = { 'modification.target.name', 'organism.name' ]" - :value="tableEntries" + :value="dedupedTableEntries" paginator :rows="10" :rows-per-page-options="[5, 10, 20, 50]" @@ -489,6 +504,7 @@ filters.value.global = { scroll-height="flex" reorderable-columns column-resize-mode="expand" + size="small" :pt="{ table: { style: { -- GitLab From c0d9fc7bae70983fd4fb44e3d0321556bb0996f2 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:43:37 +0200 Subject: [PATCH 08/54] feat(table-view): :sparkles: move link from id to name (modif, guide, target) & remove link icon --- src/views/DataTableView.vue | 42 +++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/src/views/DataTableView.vue b/src/views/DataTableView.vue index 01a6a6e..a8cb9b0 100644 --- a/src/views/DataTableView.vue +++ b/src/views/DataTableView.vue @@ -16,7 +16,6 @@ import ColumnGroup from 'primevue/columngroup' import Row from 'primevue/row' import InputText from 'primevue/inputtext' import DataTable from 'primevue/datatable' -import IconFa6SolidArrowUpRightFromSquare from '~icons/fa6-solid/arrow-up-right-from-square' /** * Other 3rd-party imports */ @@ -157,18 +156,18 @@ const columnGroups: ColumnGroupModel[] = [ { id: 'modificationId', field: 'modification.id', - title: 'ID', + title: 'ID' + }, + { + id: 'modificationName', + field: 'modification.name', + title: 'Name', link: { routeName: 'modificationDetails', queryIdField: 'modification.id', color: 'sky' } }, - { - id: 'modificationName', - field: 'modification.name', - title: 'Name' - }, { id: 'modificationPosition', field: 'modification.position', @@ -195,18 +194,18 @@ const columnGroups: ColumnGroupModel[] = [ { id: 'guideId', field: 'guide.id', - title: 'ID', + title: 'ID' + }, + { + id: 'guideName', + field: 'guide.name', + title: 'Name', link: { routeName: 'guideDetails', queryIdField: 'guide.id', color: 'lime' } }, - { - id: 'guideName', - field: 'guide.name', - title: 'Name' - }, { id: 'guideClass', field: 'guide.class', @@ -269,18 +268,18 @@ const columnGroups: ColumnGroupModel[] = [ { id: 'targetId', field: 'modification.target.id', - title: 'ID', + title: 'ID' + }, + { + id: 'targetName', + field: 'modification.target.name', + title: 'Name', link: { routeName: 'targetDetails', queryIdField: 'modification.target.id', color: 'amber' } }, - { - id: 'targetName', - field: 'modification.target.name', - title: 'Name' - }, { id: 'targetLength', field: 'modification.target.length', @@ -494,7 +493,7 @@ const dedupedTableEntries = computed(() => ]" :value="dedupedTableEntries" paginator - :rows="10" + :rows="20" :rows-per-page-options="[5, 10, 20, 50]" sort-mode="multiple" removable-sort @@ -691,9 +690,6 @@ const dedupedTableEntries = computed(() => /> <span v-else class="italic"> {{ _get(data, column.field) }} - <sup> - <icon-fa6-solid-arrow-up-right-from-square class="inline" /> - </sup> </span> </RouterLink> <Tag -- GitLab From 10e39b47acd7b87a5c80cd26955d871429234b1f Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:43:37 +0200 Subject: [PATCH 09/54] feat(table-view): :sparkles: remove some fields from default columns --- src/views/DataTableView.vue | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/views/DataTableView.vue b/src/views/DataTableView.vue index a8cb9b0..7a8a9e5 100644 --- a/src/views/DataTableView.vue +++ b/src/views/DataTableView.vue @@ -380,23 +380,17 @@ const filteredInitialColumnsIds = props.initialColumnIds?.filter((columnId) => const initialColumnIdsWithDefaults = filteredInitialColumnsIds?.length ? filteredInitialColumnsIds : [ - 'rowId', - 'modificationId', 'modificationName', 'modificationPosition', 'modificationSymbol', - 'targetId', 'targetName', 'targetClass', - 'guideId', 'guideName', 'guideClass', 'guideChromosomeName', 'guideStart', 'guideEnd', - 'guideLength', - 'organismName', - 'organismId' + 'organismName' ] /** -- GitLab From f8bfd243ee3fce5a67bc9eff394bed90d099c591 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:43:37 +0200 Subject: [PATCH 10/54] feat(table-view): :sparkles: move target between modif & guide --- src/views/DataTableView.vue | 188 +++++++++++++++++++++++++++++------- 1 file changed, 154 insertions(+), 34 deletions(-) diff --git a/src/views/DataTableView.vue b/src/views/DataTableView.vue index 7a8a9e5..567699d 100644 --- a/src/views/DataTableView.vue +++ b/src/views/DataTableView.vue @@ -187,6 +187,67 @@ const columnGroups: ColumnGroupModel[] = [ } ] }, + { + title: 'Target', + id: 'target', + columns: [ + { + id: 'targetId', + field: 'modification.target.id', + title: 'ID' + }, + { + id: 'targetName', + field: 'modification.target.name', + title: 'Name', + link: { + routeName: 'targetDetails', + queryIdField: 'modification.target.id', + color: 'amber' + } + }, + { + id: 'targetLength', + field: 'modification.target.length', + title: 'Length' + }, + { + id: 'targetClass', + field: 'modification.target.class', + title: 'Class' + }, + { + id: 'targetUnit', + field: 'modification.target.unit', + title: 'Unit' + }, + { + id: 'targetChromosomeId', + field: 'modification.target.chromosomeConnection.node.id', + title: 'Chromosome ID' + }, + { + id: 'targetChromosomeName', + field: 'modification.target.chromosomeConnection.node.name', + title: 'Chromosome Name' + }, + { + id: 'targetStart', + field: 'modification.target.chromosomeConnection.start', + title: 'Start' + }, + { + id: 'targetEnd', + field: 'modification.target.chromosomeConnection.end', + title: 'End' + }, + { + id: 'targetStrand', + field: 'modification.target.chromosomeConnection.strand', + title: 'Strand' + } + ] + }, { title: 'Guide', id: 'guide', @@ -207,48 +268,40 @@ const columnGroups: ColumnGroupModel[] = [ } }, { - id: 'guideClass', - field: 'guide.class', - title: 'Class' + id: 'guideType', + field: 'guide.type', + title: 'Type' }, { - id: 'guideSubclass', - field: 'guide.subclass_label', - title: 'Subclass', - isMarkdown: true + id: 'guideSubtype', + field: 'guide.subtype', + title: 'Subtype' }, { id: 'guideChromosomeId', - field: 'guide.chromosomeConnection.node.id', - title: 'Chromosome ID' + field: 'guide.parentConnection.node.id', + title: 'Chr. ID' }, { id: 'guideChromosomeName', - field: 'guide.chromosomeConnection.node.name', - title: 'Chromosome name' + field: 'guide.parentConnection.node.name', + title: 'Chromosome' }, { id: 'guideStart', - field: 'guide.chromosomeConnection.start', + field: 'guide.parentConnection.start', title: 'Start' }, { id: 'guideEnd', - field: 'guide.chromosomeConnection.end', + field: 'guide.parentConnection.end', title: 'End' }, { id: 'guideStrand', - field: 'guide.chromosomeConnection.strand', + field: 'guide.parentConnection.strand', title: 'Strand' }, - { - id: 'guideHostGenes', - field: 'guide.host_genes', - title: 'Host genes', - groupId: 'guide', - isArray: true - }, { id: 'guideLength', field: 'guide.length', @@ -286,39 +339,106 @@ const columnGroups: ColumnGroupModel[] = [ title: 'Length' }, { - id: 'targetClass', - field: 'modification.target.class', - title: 'Class' - }, - { - id: 'targetUnit', - field: 'modification.target.unit', - title: 'Unit' + id: 'targetType', + field: 'modification.target.type', + title: 'Type' }, { id: 'targetChromosomeId', - field: 'modification.target.chromosomeConnection.node.id', + field: 'modification.target.parentConnection.node.id', title: 'Chromosome ID' }, { id: 'targetChromosomeName', - field: 'modification.target.chromosomeConnection.node.name', + field: 'modification.target.parentConnection.node.name', title: 'Chromosome Name' }, { id: 'targetStart', - field: 'modification.target.chromosomeConnection.start', + field: 'modification.target.parentConnection.start', title: 'Start' }, { id: 'targetEnd', - field: 'modification.target.chromosomeConnection.end', + field: 'modification.target.parentConnection.end', title: 'End' }, { id: 'targetStrand', - field: 'modification.target.chromosomeConnection.strand', + field: 'modification.target.parentConnection.strand', + title: 'Strand' + } + ] + }, + { + title: 'Guide', + id: 'guide', + columns: [ + { + id: 'guideId', + field: 'guide.id', + title: 'ID' + }, + { + id: 'guideName', + field: 'guide.name', + title: 'Name', + link: { + routeName: 'guideDetails', + queryIdField: 'guide.id', + color: 'lime' + } + }, + { + id: 'guideClass', + field: 'guide.class', + title: 'Class' + }, + { + id: 'guideSubclass', + field: 'guide.subclass_label', + title: 'Subclass' + }, + { + id: 'guideChromosomeId', + field: 'guide.chromosomeConnection.node.id', + title: 'Chr. ID' + }, + { + id: 'guideChromosomeName', + field: 'guide.chromosomeConnection.node.name', + title: 'Chromosome' + }, + { + id: 'guideStart', + field: 'guide.chromosomeConnection.start', + title: 'Start' + }, + { + id: 'guideEnd', + field: 'guide.chromosomeConnection.end', + title: 'End' + }, + { + id: 'guideStrand', + field: 'guide.chromosomeConnection.strand', title: 'Strand' + }, + { + id: 'guideHostGenes', + field: 'guide.host_genes', + title: 'Host genes', + isArray: true + }, + { + id: 'guideLength', + field: 'guide.length', + title: 'Length' + }, + { + id: 'guideSequence', + field: 'guide.seq', + title: 'Sequence' } ] }, -- GitLab From 9bc274bb7105fc989c73c523859428d5792fd263 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:43:37 +0200 Subject: [PATCH 11/54] feat(table-view): :sparkles: remove sort icon when not sorted --- src/views/DataTableView.vue | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/src/views/DataTableView.vue b/src/views/DataTableView.vue index 567699d..10bc863 100644 --- a/src/views/DataTableView.vue +++ b/src/views/DataTableView.vue @@ -16,6 +16,8 @@ import ColumnGroup from 'primevue/columngroup' import Row from 'primevue/row' import InputText from 'primevue/inputtext' import DataTable from 'primevue/datatable' +import IconFa6SolidArrowDownShortWide from '~icons/fa6-solid/arrow-down-short-wide' +import IconFa6SolidArrowUpShortWide from '~icons/fa6-solid/arrow-up-short-wide' /** * Other 3rd-party imports */ @@ -740,20 +742,16 @@ const dedupedTableEntries = computed(() => columnFilter: { style: { marginLeft: '.5ch' } } }" > - <!-- <template #filter> - <MultiSelect - v-if="column.filter?.matchMode === primeVueFilterMatchMode.IN" - v-model="filters[column.field].value" - :options="column.filter?.options" - placeholder="Chose" - ></MultiSelect> - <InputText - v-else - v-model="filters[column.field].value" - type="text" - placeholder="Type" + <template #sorticon="{ sortOrder }"> + <icon-fa6-solid-arrow-up-short-wide + v-if="sortOrder === 1" + class="p-icon p-sortable-column-icon" /> - </template> --> + <icon-fa6-solid-arrow-down-short-wide + v-else-if="sortOrder === -1" + class="p-icon p-sortable-column-icon" + /> + </template> <template #filter="{ filterModel, filterCallback }"> <MultiSelect v-if="column.filter?.matchMode === primeVueFilterMatchMode.IN" -- GitLab From 2aa8328910ae1b70fc180e0d66680afb9fa08248 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:43:37 +0200 Subject: [PATCH 12/54] feat(table-view): :sparkles: scroll to table top when changing page --- src/views/DataTableView.vue | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/views/DataTableView.vue b/src/views/DataTableView.vue index 10bc863..8db5bba 100644 --- a/src/views/DataTableView.vue +++ b/src/views/DataTableView.vue @@ -594,6 +594,16 @@ const dedupedTableEntries = computed(() => .join('') ) ) + +/** + * Function to call to scroll to the top of the table. + */ +const scrollToTableTop = () => + setTimeout(() => { + document + .getElementById('data-table') + ?.scrollTo({ top: 0, behavior: 'smooth' }) + }, 10) </script> <template> @@ -621,6 +631,9 @@ const dedupedTableEntries = computed(() => column-resize-mode="expand" size="small" :pt="{ + wrapper: { + id: 'data-table' + }, table: { style: { borderCollapse: 'separate' @@ -632,6 +645,7 @@ const dedupedTableEntries = computed(() => } } }" + @page="scrollToTableTop" > <template #header> <div class="flex justify-between"> -- GitLab From 49ec7c7f6f6fc2049371f1eb8a1477c4dabb4bb1 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:43:37 +0200 Subject: [PATCH 13/54] feat(utils): :sparkles: add formatted guide subtype options --- src/utils/textFormatting.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/utils/textFormatting.ts b/src/utils/textFormatting.ts index 21ddb0f..c0746dd 100644 --- a/src/utils/textFormatting.ts +++ b/src/utils/textFormatting.ts @@ -49,8 +49,14 @@ export const formatGuideSubclass = (guideSubclass?: GuideClass) => { case GuideClass.Haca: return 'H/ACA box' + case GuideType.Other: + return 'Other' + + case GuideType.ScaRna: + return 'scaRNA' + default: - return 'UNKNOWN_TYPE' + return 'Unknown Type' } } -- GitLab From 4ec64cd01d6ca1283f85a2b0cc0ee23b4742b1bf Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:43:37 +0200 Subject: [PATCH 14/54] refactor: :recycle: use v-bind shorthand (:) everywhere --- src/layouts/MainLayout.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/layouts/MainLayout.vue b/src/layouts/MainLayout.vue index 7e92a41..d163680 100644 --- a/src/layouts/MainLayout.vue +++ b/src/layouts/MainLayout.vue @@ -69,10 +69,10 @@ const menuItems: CustomMenuItem[] = [ <RouterLink v-if="item.routerDest" :to="item.routerDest" - v-bind="props.action" + :="props.action" > - <component :is="item.iconComponent || ''" v-bind="props.icon" /> - <span v-bind="props.label">{{ item.label }}</span> + <component :is="item.iconComponent || ''" :="props.icon" /> + <span :="props.label">{{ item.label }}</span> </RouterLink> </template> </Menubar> -- GitLab From 53a2a4ae43947d09a1c0f9fd284a3a131db8b0ae Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:43:37 +0200 Subject: [PATCH 15/54] refactor(layouts): :fire: remove useless icon name --- src/layouts/MainLayout.vue | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/layouts/MainLayout.vue b/src/layouts/MainLayout.vue index d163680..be6875d 100644 --- a/src/layouts/MainLayout.vue +++ b/src/layouts/MainLayout.vue @@ -29,25 +29,21 @@ interface CustomMenuItem extends MenuItem { const menuItems: CustomMenuItem[] = [ { label: 'Data Table', - icon: 'icon-fas-table', iconComponent: IconFa6SolidTable, routerDest: { name: 'data-table' } }, { label: 'API', - icon: 'icon-fas-database', iconComponent: IconFa6SolidDatabase, routerDest: { name: 'api' } }, { label: 'Help', - icon: 'icon-fas-circle-question', iconComponent: IconFa6SolidCircleQuestion, routerDest: { name: 'about' } }, { label: 'Contact', - icon: 'icon-fas-address-card', iconComponent: IconFa6SolidAddressCard, routerDest: { name: 'contact' } } -- GitLab From 02ef848ea52d22ae9be1022de4925be8a07aeb78 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:43:37 +0200 Subject: [PATCH 16/54] feat(assets): :bento: add custom icons for guide & modification -- GitLab From b9b2cd43f5ebdf2f004c5c0dad969823b93b6702 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:43:37 +0200 Subject: [PATCH 17/54] feat(table-view): :sparkles: use options (multiselect) for guide subtype filter --- src/views/DataTableView.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/views/DataTableView.vue b/src/views/DataTableView.vue index 8db5bba..ab91f6a 100644 --- a/src/views/DataTableView.vue +++ b/src/views/DataTableView.vue @@ -399,7 +399,8 @@ const columnGroups: ColumnGroupModel[] = [ { id: 'guideSubclass', field: 'guide.subclass_label', - title: 'Subclass' + title: 'Subclass', + isMarkdown: true }, { id: 'guideChromosomeId', -- GitLab From a55c7df194ca9671e67b3ab8fb85d45f8398f383 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:43:37 +0200 Subject: [PATCH 18/54] feat(table-view): :sparkles: prettify multiselect's value for 'IN' filters --- src/views/DataTableView.vue | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/views/DataTableView.vue b/src/views/DataTableView.vue index ab91f6a..8d4e7d4 100644 --- a/src/views/DataTableView.vue +++ b/src/views/DataTableView.vue @@ -778,6 +778,31 @@ const scrollToTableTop = () => <template v-if="column.isMarkdown" #option="{ option }"> <BaseRenderedMarkdown :stringified-markdown="option" /> </template> + + <template #value="{ value: selection }"> + <template v-if="selection"> + <template + v-for="(selected, selIndex) in column.filter?.options + ?.filter((option) => selection.includes(option)) + .slice(0, 3)" + :key="selIndex" + > + <FormattedModificationType + v-if="column.id === 'modificationType'" + :type-code="selected" + /> + <span v-else-if="column.id === 'guideSubtype'"> + {{ formatGuideSubtype(selected) }} + </span> + <span v-else>{{ selected }}</span> + <span v-if="selIndex !== selection.length - 1">, </span> + </template> + + <span v-if="selection.length > 3"> + +{{ selection.length - 3 }}... + </span> + </template> + </template> </MultiSelect> <InputText v-else -- GitLab From 3170e8f525e10d8248c1a39c1f8b3084d0f47532 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:43:37 +0200 Subject: [PATCH 19/54] fix(table-view): :bug: error when passing 'IN' filter through url when a single value was passed with url to 'IN' filters, being a string instead of an array it resulted in an error --- src/views/DataTableView.vue | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/views/DataTableView.vue b/src/views/DataTableView.vue index 8d4e7d4..dbbbbe4 100644 --- a/src/views/DataTableView.vue +++ b/src/views/DataTableView.vue @@ -563,7 +563,9 @@ const filters = ref<DataTableFilterMeta>( [column.field]: { value: thisColumnFilter ? Array.isArray(thisColumnFilter) - ? thisColumnFilter.filter((filterValue) => + ? thisColumnFilter + : column.filter?.matchMode === primeVueFilterMatchMode.IN + ? [thisColumnFilter].filter((filterValue) => column.filter?.options?.includes(filterValue) ) : thisColumnFilter -- GitLab From 245f4873b43764b12f1fe6e72751dd84f7adf324 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:43:37 +0200 Subject: [PATCH 20/54] feat(home-view): :sparkles: rework landing page navigation use a menubar with quick links instead of buttons --- src/utils/textFormatting.ts | 4 +- src/views/DataTableView.vue | 138 +----------- src/views/HomeView.vue | 419 +++++++++++++++++++++++++++++++----- 3 files changed, 374 insertions(+), 187 deletions(-) diff --git a/src/utils/textFormatting.ts b/src/utils/textFormatting.ts index c0746dd..e499653 100644 --- a/src/utils/textFormatting.ts +++ b/src/utils/textFormatting.ts @@ -49,10 +49,10 @@ export const formatGuideSubclass = (guideSubclass?: GuideClass) => { case GuideClass.Haca: return 'H/ACA box' - case GuideType.Other: + case GuideClass.Other: return 'Other' - case GuideType.ScaRna: + case GuideClass.ScaRna: return 'scaRNA' default: diff --git a/src/views/DataTableView.vue b/src/views/DataTableView.vue index dbbbbe4..2bdc365 100644 --- a/src/views/DataTableView.vue +++ b/src/views/DataTableView.vue @@ -250,128 +250,6 @@ const columnGroups: ColumnGroupModel[] = [ } ] }, - { - title: 'Guide', - id: 'guide', - columns: [ - { - id: 'guideId', - field: 'guide.id', - title: 'ID' - }, - { - id: 'guideName', - field: 'guide.name', - title: 'Name', - link: { - routeName: 'guideDetails', - queryIdField: 'guide.id', - color: 'lime' - } - }, - { - id: 'guideType', - field: 'guide.type', - title: 'Type' - }, - { - id: 'guideSubtype', - field: 'guide.subtype', - title: 'Subtype' - }, - { - id: 'guideChromosomeId', - field: 'guide.parentConnection.node.id', - title: 'Chr. ID' - }, - { - id: 'guideChromosomeName', - field: 'guide.parentConnection.node.name', - title: 'Chromosome' - }, - { - id: 'guideStart', - field: 'guide.parentConnection.start', - title: 'Start' - }, - { - id: 'guideEnd', - field: 'guide.parentConnection.end', - title: 'End' - }, - { - id: 'guideStrand', - field: 'guide.parentConnection.strand', - title: 'Strand' - }, - { - id: 'guideLength', - field: 'guide.length', - title: 'Length' - }, - { - id: 'guideSequence', - field: 'guide.seq', - title: 'Sequence' - } - ] - }, - { - title: 'Target', - id: 'target', - columns: [ - { - id: 'targetId', - field: 'modification.target.id', - title: 'ID' - }, - { - id: 'targetName', - field: 'modification.target.name', - title: 'Name', - link: { - routeName: 'targetDetails', - queryIdField: 'modification.target.id', - color: 'amber' - } - }, - { - id: 'targetLength', - field: 'modification.target.length', - title: 'Length' - }, - { - id: 'targetType', - field: 'modification.target.type', - title: 'Type' - }, - { - id: 'targetChromosomeId', - field: 'modification.target.parentConnection.node.id', - title: 'Chromosome ID' - }, - { - id: 'targetChromosomeName', - field: 'modification.target.parentConnection.node.name', - title: 'Chromosome Name' - }, - { - id: 'targetStart', - field: 'modification.target.parentConnection.start', - title: 'Start' - }, - { - id: 'targetEnd', - field: 'modification.target.parentConnection.end', - title: 'End' - }, - { - id: 'targetStrand', - field: 'modification.target.parentConnection.strand', - title: 'Strand' - } - ] - }, { title: 'Guide', id: 'guide', @@ -789,14 +667,14 @@ const scrollToTableTop = () => .slice(0, 3)" :key="selIndex" > - <FormattedModificationType - v-if="column.id === 'modificationType'" - :type-code="selected" + <BaseRenderedMarkdown + v-if="column.isMarkdown" + :stringified-markdown="selected" + inline-content /> - <span v-else-if="column.id === 'guideSubtype'"> - {{ formatGuideSubtype(selected) }} - </span> + <span v-else>{{ selected }}</span> + <span v-if="selIndex !== selection.length - 1">, </span> </template> @@ -846,6 +724,7 @@ const scrollToTableTop = () => {{ _get(data, column.field) }} </span> </RouterLink> + <Tag v-else-if="column.id === 'modificationSymbol'" :class="[ @@ -859,14 +738,17 @@ const scrollToTableTop = () => :stringified-markdown="data.modification.symbol_label" /> </Tag> + <span v-else-if="column.isMarkdown"> <BaseRenderedMarkdown :stringified-markdown="_get(data, column.field)" /> </span> + <span v-else-if="column.isArray"> {{ _get(data, column.field).join(', ') }} </span> + <span v-else>{{ _get(data, column.field) }}</span> </template> </template> diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index cb338d3..1638ca0 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -2,22 +2,35 @@ /** * Vue imports */ -import { computed, ref } from 'vue' +import { computed } from 'vue' /** * Components imports */ import Image from 'primevue/image' -import Button from 'primevue/button' +import Menubar from 'primevue/menubar' import SearchBar from '@/components/SearchBar.vue' -import BaseRadioFieldset from '@/components/BaseRadioFieldset.vue' +import FormattedModificationType from '@/components/FormattedModificationType.vue' import BaseRenderedMarkdown from '@/components/BaseRenderedMarkdown.vue' import IconFa6SolidMagnifyingGlass from '~icons/fa6-solid/magnifying-glass' import IconFa6SolidCircleXmark from '~icons/fa6-solid/circle-xmark' import IconFa6SolidArrowRight from '~icons/fa6-solid/arrow-right' +import IconFa6SolidChevronDown from '~icons/fa6-solid/chevron-down' +import IconFa6SolidChevronRight from '~icons/fa6-solid/chevron-right' +import IconFa6SolidSliders from '~icons/fa6-solid/sliders' +import IconFa6SolidTable from '~icons/fa6-solid/table' +import IconFa6SolidDatabase from '~icons/fa6-solid/database' +import IconFa6SolidPaw from '~icons/fa6-solid/paw' +import IconFa6SolidBullseye from '~icons/fa6-solid/bullseye' +import IconSnoboardGuide from '~icons/snoboard/guide' +import IconSnoboardModification from '~icons/snoboard/modification' /** * Other 3rd-party imports */ import { useQuery } from '@urql/vue' +/** + * Types imports. + */ +import type { MenuItem } from 'primevue/menuitem' /** * Utils imports */ @@ -26,6 +39,51 @@ import { organismListQuery } from '@/gql/queries' * Assets imports */ import logoUrl from '@/assets/images/logo.svg' +import { GuideClass, ModifType } from '@/gql/codegen/graphql' +import { formatGuideSubclass } from '@/utils/textFormatting' +import { isInEnum } from '@/typings/typeUtils' +import tailwindDefaultColors from 'tailwindcss/colors' + +/** + * Useful columns to show to list guides in the table. + */ +const LIST_GUIDES_TABLE_COLUMNS = [ + 'guideId', + 'guideName', + 'guideClass', + 'guideSubclass', + 'guideChromosomeName', + 'guideLength', + 'organismName', + 'organismId' +] + +/** + * Useful columns to show to list modifications in the table. + */ +const LIST_MODIFICATIONS_TABLE_COLUMNS = [ + 'modificationId', + 'modificationName', + 'modificationPosition', + 'modificationSymbol', + 'modificationType', + 'targetName', + 'organismName', + 'organismId' +] + +/** + * Useful columns to show to list modifications in the table. + */ +const LIST_TARGETS_TABLE_COLUMNS = [ + 'targetId', + 'targetName', + 'targetLength', + 'targetClass', + 'targetChromosomeName', + 'organismName', + 'organismId' +] /** * Reactive urql GraphQL query object, updated with query state & response. @@ -41,9 +99,204 @@ const gqlQuery = useQuery({ const organismList = computed(() => gqlQuery.data.value?.organisms) /** - * The currently selected organism. + * Menu items. */ -const selectedOrganismId = ref<number>() +const menuItems = computed<MenuItem[]>(() => [ + { + label: 'Guides', + items: [ + { + key: 'guides', + label: 'All guides', + route: { + name: 'data-table', + query: { + columns: LIST_GUIDES_TABLE_COLUMNS + } + }, + iconComponent: IconFa6SolidTable + }, + ...Object.values(GuideClass) + .filter((guideClass) => guideClass !== GuideClass.Other) + .map((guideClass) => ({ + key: `guides${guideClass}`, + label: formatGuideSubclass(guideClass), + indent: 1, + route: { + name: 'data-table', + query: { + columns: LIST_GUIDES_TABLE_COLUMNS, + guideSubclass: guideClass + } + } + })), + { + key: 'guideSelection', + label: 'Advanced guide selection', + route: { + // name: 'data-selection', + // query: { + // type: 'guide' + // } + }, + iconComponent: IconFa6SolidSliders + } + ] + }, + { + key: 'modifications', + label: 'Modifications', + items: [ + { + label: 'All modifications', + route: { + name: 'data-table', + query: { + columns: LIST_MODIFICATIONS_TABLE_COLUMNS + } + }, + iconComponent: IconFa6SolidTable + }, + ...Object.values(ModifType) + .filter((modificationType) => modificationType !== ModifType.Other) + .map((modificationType) => ({ + key: `modifications${modificationType}`, + label: modificationType, + indent: 1, + route: { + name: 'data-table', + query: { + columns: LIST_MODIFICATIONS_TABLE_COLUMNS, + modificationType: modificationType + } + } + })), + { + key: 'modificationSelection', + label: 'Advanced modification selection', + route: { + // name: 'data-selection', + // query: { + // type: 'modification' + // } + }, + iconComponent: IconFa6SolidSliders + } + ] + }, + { + key: 'targets', + label: 'Targets', + items: [ + { + label: 'All targets', + route: { + name: 'data-table', + query: { + columns: LIST_TARGETS_TABLE_COLUMNS + } + }, + iconComponent: IconFa6SolidTable + }, + // ...Object.values(ModifType) + // .filter((modificationType) => modificationType !== ModifType.Other) + // .map((modificationType) => ({ + // label: modificationType, + // indent: 1, + // route: { + // name: 'data-table', + // query: { + // columns: LIST_TARGETS_TABLE_COLUMNS, + // guideSubtype: modificationType + // } + // } + // })), + { + key: 'targetSelection', + label: 'Advanced target selection', + route: { + // name: 'data-selection', + // query: { + // type: 'target' + // } + }, + iconComponent: IconFa6SolidSliders + } + ] + }, + { + label: 'spacer', + separator: true + }, + { + key: 'conservation', + label: 'Conservation', + items: [ + { + key: 'conservationModifications', + label: 'Modifications', + route: { + // name: 'conservation', + // query: { + // type: 'modification' + // } + }, + iconComponent: IconSnoboardModification + }, + { + key: 'conservationGuides', + label: 'Guides', + route: { + // name: 'conservation', + // query: { + // type: 'modification' + // } + }, + iconComponent: IconSnoboardGuide + }, + { + key: 'conservationTargets', + label: 'Targets', + route: { + // name: 'conservation', + // query: { + // type: 'modification' + // } + }, + iconComponent: IconFa6SolidBullseye + } + ] + }, + { + key: 'statistics', + label: 'Statistics', + items: [ + { + key: 'statisticsDB', + label: 'Database-wide', + route: { + name: 'statistics' + }, + iconComponent: IconFa6SolidDatabase + }, + { + key: 'statisticsOrganism', + label: 'By organism', + items: organismList.value?.map((organism) => ({ + key: `statisticsOrganism${organism.id}`, + label: organism.label, + route: { + name: 'statistics', + query: { + id: organism.id + } + } + })), + iconComponent: IconFa6SolidPaw + } + ] + } +]) </script> <template> @@ -54,7 +307,7 @@ const selectedOrganismId = ref<number>() :src="logoUrl" /> - <SearchBar disabled class="mx-auto mb-8 max-w-xl 2xl:mb-16"> + <SearchBar disabled class="mx-auto mb-16 max-w-xl 2xl:mb-16"> <template #icon="{ className }"> <icon-fa6-solid-magnifying-glass :class="className" /> </template> @@ -80,57 +333,109 @@ const selectedOrganismId = ref<number>() </template> </SearchBar> - <div class="grid grid-rows-3 gap-8 sm:grid-cols-3 sm:grid-rows-none"> - <form class="flex items-center"> - <BaseRadioFieldset - v-if="organismList" - v-model:selection-model="selectedOrganismId" - legend="Organisms" - :values="organismList" - data-field-path="id" - label-field-path="label" - class="min-w-full" - > - <template #item-label="{ currentValue }"> - <BaseRenderedMarkdown - :stringified-markdown="currentValue.label" - inline-content - class="whitespace-nowrap text-start" - /> - </template> - </BaseRadioFieldset> - <!-- <Button - type="reset" - size="small" - @click="selectedOrganismId = undefined" - > - Clear - </Button> --> - </form> - - <div class="grid grid-rows-[1fr_min-content_1fr] items-center"> - <h3>Select an organism to browse its particular data...</h3> - <RouterLink - :class="[!selectedOrganismId && 'pointer-events-none', 'my-4']" - :to="{ name: 'organism', query: { id: selectedOrganismId || 0 } }" - > - <Button - class="inline-flex h-48 w-48 justify-center" - :disabled="selectedOrganismId === undefined" - > - Select an organism to inspect its statistics - </Button> - </RouterLink> - <h3>...or leave it clear to browse all</h3> - </div> - - <div class="flex items-center justify-center"> - <RouterLink :to="{ name: 'data-table' }"> - <Button class="inline-flex h-48 w-48 justify-center" - >Browse all data</Button - > - </RouterLink> - </div> + <div class="flex justify-center"> + <Menubar + :model="menuItems" + :pt="{ + submenu: { + style: { + minWidth: 'max-content' + } + }, + separator: { + style: { + margin: '0 1rem', + border: `solid ${tailwindDefaultColors['slate'][300]} 1px`, + height: '3rem', + borderRadius: '999999px' + } + } + }" + > + <template #item="{ item, props, hasSubmenu, root }"> + <span :class="[{ 'font-normal': item.indent }]"> + <RouterLink + v-if="item.route && !hasSubmenu" + :to="item.route" + custom + #="{ href, navigate }" + > + <a :href="href" :="props.action" @click="navigate"> + <component + :is="item.iconComponent || ''" + v-if="item.iconComponent" + :="props.icon" + /> + + <span + v-if="item.indent" + class="mr-2" + :style="{ paddingLeft: `${item.indent}rem` }" + > + → + </span> + + <FormattedModificationType + v-if=" + typeof item.label === 'string' && + isInEnum(item.label, ModifType) + " + :type-code="item.label" + /> + + <BaseRenderedMarkdown + v-else-if="typeof item.label === 'string'" + :stringified-markdown="item.label" + /> + </a> + </RouterLink> + <a + v-else + :href="item.url" + :target="item.target" + :="props.action" + class="flex" + > + <component + :is="item.iconComponent || ''" + v-if="item.iconComponent" + :="props.icon" + /> + + <span + v-if="item.indent" + class="mr-2" + :style="{ paddingLeft: `${item.indent}rem` }" + > + → + </span> + + <FormattedModificationType + v-if=" + typeof item.label === 'string' && + isInEnum(item.label, ModifType) + " + :type-code="item.label" + /> + + <BaseRenderedMarkdown + v-else-if="typeof item.label === 'string'" + :stringified-markdown="item.label" + /> + + <icon-fa6-solid-chevron-down + v-if="hasSubmenu && root" + :="props.submenuicon" + /> + + <icon-fa6-solid-chevron-right + v-else-if="hasSubmenu" + :="props.submenuicon" + /> + </a> + </span> + </template> + </Menubar> </div> </main> </template> -- GitLab From decc97f8bd6551e06fc732c25f031e2e8d226d50 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:43:38 +0200 Subject: [PATCH 21/54] feat(table-view): :sparkles: allow for asynchronous filter options fetching --- src/views/DataTableView.vue | 129 +++++++++++++++++++++++++++++------- 1 file changed, 105 insertions(+), 24 deletions(-) diff --git a/src/views/DataTableView.vue b/src/views/DataTableView.vue index 2bdc365..0552d8c 100644 --- a/src/views/DataTableView.vue +++ b/src/views/DataTableView.vue @@ -2,7 +2,7 @@ /** * Vue imports */ -import { ref, computed } from 'vue' +import { ref, computed, watchEffect } from 'vue' /** * Components imports */ @@ -27,10 +27,8 @@ import { useQuery } from '@urql/vue' /** * Types imports */ -import type { - DataTableFilterMeta, - DataTableFilterMetaData -} from 'primevue/datatable' +import type { DataTableFilterMetaData } from 'primevue/datatable' +import { GuideClass, ModifType } from '@/gql/codegen/graphql' /** * Utils imports */ @@ -73,8 +71,6 @@ interface ColumnModel { groupId?: string /** Wether the column is the only one in its group */ single?: boolean - /** The filter type to apply to the column */ - filter?: ColumnFilterModel /** If the column should be represented as a link, the link representation */ link?: ColumnLinkModel /** Whether the content of the column is formatted in markdown */ @@ -430,27 +426,63 @@ const sortedSelectedColumnGroups = computed<ColumnGroupModel[]>(() => })) ) +/** + * Filter for fields with specific filtering strategy, i.e. different from + * `CONTAINS`. + * @description Needs to be reactive as some `filter.options` are fetched from + * the API (e.g. the species names list).\ + * Then, only this `option` field may actually change (so not every dependence + * of this object needs to be reactive, only those depending on `options`). + */ +const specificFilterConfigs = computed<{ + [columnId: string]: { columnField: string; filter: ColumnFilterModel } +}>(() => ({ + modificationResult: { + columnField: + columns.find((column) => column.id == 'modificationResult')?.field || '', + filter: { + matchMode: primeVueFilterMatchMode.IN, + options: ['Am', 'Um', 'Cm', 'Gm', 'Ψ'] + } + }, + modificationType: { + columnField: + columns.find((column) => column.id == 'modificationType')?.field || '', + filter: { + matchMode: primeVueFilterMatchMode.IN, + options: Object.values(ModifType) + } + }, + guideSubclass: { + columnField: + columns.find((column) => column.id == 'guideSubclass')?.field || '', + filter: { + matchMode: primeVueFilterMatchMode.IN, + options: Object.values(GuideClass) + } + } +})) + /** * Reactive column filters object */ -const filters = ref<DataTableFilterMeta>( +const filters = ref<{ [columnField: string]: DataTableFilterMetaData }>( columns.reduce((filters, column) => { - const thisColumnFilter = props.initialFilters?.[column.id] + const columnInitialFilter = props.initialFilters?.[column.id] return { ...filters, [column.field]: { - value: thisColumnFilter - ? Array.isArray(thisColumnFilter) - ? thisColumnFilter - : column.filter?.matchMode === primeVueFilterMatchMode.IN - ? [thisColumnFilter].filter((filterValue) => - column.filter?.options?.includes(filterValue) - ) - : thisColumnFilter - : null, - matchMode: column.filter?.matchMode - ? column.filter?.matchMode - : primeVueFilterMatchMode.CONTAINS + matchMode: + specificFilterConfigs.value[column.id]?.filter.matchMode || + primeVueFilterMatchMode.CONTAINS, + value: !columnInitialFilter + ? null + : specificFilterConfigs.value[column.id]?.filter.matchMode !== + primeVueFilterMatchMode.IN + ? columnInitialFilter + : Array.isArray(columnInitialFilter) + ? columnInitialFilter + : [columnInitialFilter] } } }, {}) @@ -461,6 +493,50 @@ filters.value.global = { matchMode: primeVueFilterMatchMode.CONTAINS } +/** + * Watcher to filter filter with specific configs values when options are + * fetched. + */ +watchEffect(() => { + Object.values(specificFilterConfigs.value).forEach((specificFilterConfig) => { + // Don't modify filter value if not of type `IN` or if options are not ready + // (fetched) yet (as an array) + const specificFilterOptions = specificFilterConfig.filter.options + if ( + specificFilterConfig.filter.matchMode !== primeVueFilterMatchMode.IN || + !(Array.isArray(specificFilterOptions) && specificFilterOptions.length) + ) { + return + } + + // Get the actual filter matching the currently processed config + const correspondingFilter = filters.value[specificFilterConfig.columnField] + if ( + !(correspondingFilter?.value && Array.isArray(correspondingFilter.value)) + ) + return + + // Get type of the options (i.e. type of the value of the column the filter + // applies to) + const filterOptionType = typeof specificFilterOptions[0] + // Cast current filter value to options' type + const castCorrespondingFilterValue = + filterOptionType === 'number' + ? correspondingFilter.value.map((filterValue) => + parseFloat(filterValue) + ) + : filterOptionType === 'boolean' + ? correspondingFilter.value.map((filterValue) => filterValue === 'true') + : correspondingFilter.value + + // Keep only value available in options + correspondingFilter.value = castCorrespondingFilterValue.filter( + (correspondingFilterValue) => + specificFilterConfig.filter.options?.includes(correspondingFilterValue) + ) + }) +}) + /** * Deduped table entries, by the values in the currently selected columns. */ @@ -649,9 +725,12 @@ const scrollToTableTop = () => </template> <template #filter="{ filterModel, filterCallback }"> <MultiSelect - v-if="column.filter?.matchMode === primeVueFilterMatchMode.IN" + v-if=" + specificFilterConfigs[column.id]?.filter.matchMode === + primeVueFilterMatchMode.IN + " v-model="filterModel.value" - :options="column.filter?.options" + :options="specificFilterConfigs[column.id]?.filter?.options" placeholder="Chose" @change="filterCallback()" > @@ -662,7 +741,9 @@ const scrollToTableTop = () => <template #value="{ value: selection }"> <template v-if="selection"> <template - v-for="(selected, selIndex) in column.filter?.options + v-for="(selected, selIndex) in specificFilterConfigs[ + column.id + ]?.filter?.options ?.filter((option) => selection.includes(option)) .slice(0, 3)" :key="selIndex" -- GitLab From b52d946513a1e8b72258dd3793b540516481e7e6 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:44:23 +0200 Subject: [PATCH 22/54] feat(table-view): :sparkles: add filter options for species ID, name & target name use `IN` matchMode --- src/gql/codegen/gql.ts | 9 ++++- src/gql/codegen/graphql.ts | 15 ++++++- src/gql/queries.ts | 80 +++++++++++++++++++++++++++++++++++++ src/views/DataTableView.vue | 43 +++++++++++++++++++- 4 files changed, 141 insertions(+), 6 deletions(-) diff --git a/src/gql/codegen/gql.ts b/src/gql/codegen/gql.ts index 0fa8ddb..a2358ec 100644 --- a/src/gql/codegen/gql.ts +++ b/src/gql/codegen/gql.ts @@ -14,7 +14,8 @@ import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document- */ const documents = { "\n query organismListQuery {\n organisms {\n id\n label\n shortname\n }\n }\n": types.OrganismListQueryDocument, - "\n query tableEntriesQuery {\n tableEntries {\n id\n modification {\n id\n name\n position\n symbol_label\n type\n type_short_label\n target {\n id\n name\n class\n unit\n length\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n }\n }\n }\n }\n }\n guide {\n id\n name\n class\n subclass_label\n length\n seq\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n length\n }\n }\n }\n host_genes\n }\n organism {\n id\n label\n name\n }\n }\n }\n": types.TableEntriesQueryDocument, + "\n query guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n name\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n": types.GuideSelectionQueryDocument, + "\n query tableEntriesQuery {\n tableEntries {\n id\n modification {\n id\n name\n position\n symbol_label\n type\n type_short_label\n target {\n id\n name\n class\n unit\n length\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n }\n }\n }\n }\n }\n guide {\n id\n name\n class\n subclass_label\n length\n seq\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n length\n }\n }\n }\n host_genes\n }\n organism {\n id\n label\n name\n }\n }\n\n targets {\n name\n }\n\n organisms {\n label\n id\n }\n }\n": types.TableEntriesQueryDocument, "\n query organismByIdQuery($id: Int) {\n organisms(where: { id: $id }) {\n id\n label\n shortname\n genomes {\n sequences(where: { graphql_type: Chromosome }) {\n id\n name\n altnames\n description\n length\n graphql_type\n guides: featuresConnection(where: { node: { graphql_type: Guide } }) {\n totalCount\n }\n }\n }\n }\n\n modifications(where: { target: { genome: { organism: { id: $id } } } }) {\n id\n name\n symbol_label\n type_short_label\n guidesAggregate {\n count\n }\n }\n\n allModificationsCount: modificationsAggregate(\n where: { target: { genome: { organism: { id: $id } } } }\n ) {\n count\n }\n\n nonOrphanModificationsCount: modificationsAggregate(\n where: {\n guidesAggregate: { count_GT: 0 }\n target: { genome: { organism: { id: $id } } }\n }\n ) {\n count\n }\n\n targets(where: { genome: { organism: { id: $id } } }) {\n id\n name\n class\n unit\n modificationsAggregate {\n count\n }\n }\n\n allTargetsCount: targetsAggregate(\n where: { genome: { organism: { id: $id } } }\n ) {\n count\n }\n\n guides(where: { genome: { organism: { id: $id } } }) {\n id\n name\n class\n subclass\n subclass_label\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n }\n node {\n id\n }\n }\n }\n modificationsAggregate {\n count\n }\n }\n\n allGuidesCount: guidesAggregate(\n where: { genome: { organism: { id: $id } } }\n ) {\n count\n }\n\n nonOrphanGuidesCount: guidesAggregate(\n where: {\n modificationsAggregate: { count_GT: 0 }\n genome: { organism: { id: $id } }\n }\n ) {\n count\n }\n }\n": types.OrganismByIdQueryDocument, "\n query modificationByIdQuery($id: ID) {\n modifications(where: { id: $id }) {\n id\n name\n type\n type_short_label\n symbol\n symbol_label\n position\n target {\n id\n name\n class\n unit\n genome {\n organism {\n id\n label\n }\n }\n }\n # chebi_id\n # so_id\n\n interactions {\n duplexes {\n primaryStrandsConnection: strandsConnection(\n where: { edge: { primary: true } }\n ) {\n edges {\n properties {\n start\n end\n primary\n }\n node {\n seq\n parentConnection {\n edges {\n properties {\n start\n end\n }\n }\n }\n }\n }\n }\n secondaryStrandsConnection: strandsConnection(\n where: { edge: { primary: false } }\n ) {\n edges {\n properties {\n start\n end\n primary\n }\n node {\n seq\n parentConnection {\n edges {\n properties {\n start\n end\n }\n }\n }\n }\n }\n }\n index\n }\n guide {\n id\n name\n subclass_label\n class\n }\n target {\n id\n name\n unit\n class\n }\n }\n }\n\n guides(where: { modifications_SOME: { id: $id } }) {\n id\n name\n class\n }\n }\n": types.ModificationByIdQueryDocument, "\n query guideByIdQuery($id: ID) {\n guides(where: { id: $id }) {\n id\n name\n altnames\n description\n length\n class\n subclass_label\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n length\n graphql_type\n }\n }\n }\n host_genes\n seq\n genome {\n organism {\n id\n label\n }\n }\n boxConnections: featuresConnection(\n where: { NOT: { node: { class: DuplexFragment } } }\n ) {\n edges {\n properties {\n ... on HasFeature {\n start\n end\n }\n }\n node {\n id\n annotation\n }\n }\n }\n modifications {\n id\n name\n }\n modificationsAggregate {\n count\n }\n interactions {\n duplexes {\n primaryStrandsConnection: strandsConnection(\n where: { edge: { primary: true } }\n ) {\n edges {\n properties {\n start\n end\n primary\n }\n node {\n seq\n parentConnection {\n edges {\n properties {\n start\n end\n }\n }\n }\n }\n }\n }\n secondaryStrandsConnection: strandsConnection(\n where: { edge: { primary: false } }\n ) {\n edges {\n properties {\n start\n end\n primary\n }\n node {\n seq\n parentConnection {\n edges {\n properties {\n start\n end\n }\n }\n }\n }\n }\n }\n index\n }\n modification {\n id\n name\n position\n symbol\n symbol_label\n type\n type_short_label\n }\n target {\n id\n name\n class\n unit\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\n targets(where: { modifications_SOME: { guides_SOME: { id: $id } } }) {\n id\n name\n class\n unit\n }\n }\n": types.GuideByIdQueryDocument, @@ -44,7 +45,11 @@ export function graphql(source: "\n query organismListQuery {\n organisms {\ /** * 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 tableEntriesQuery {\n tableEntries {\n id\n modification {\n id\n name\n position\n symbol_label\n type\n type_short_label\n target {\n id\n name\n class\n unit\n length\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n }\n }\n }\n }\n }\n guide {\n id\n name\n class\n subclass_label\n length\n seq\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n length\n }\n }\n }\n host_genes\n }\n organism {\n id\n label\n name\n }\n }\n }\n"): (typeof documents)["\n query tableEntriesQuery {\n tableEntries {\n id\n modification {\n id\n name\n position\n symbol_label\n type\n type_short_label\n target {\n id\n name\n class\n unit\n length\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n }\n }\n }\n }\n }\n guide {\n id\n name\n class\n subclass_label\n length\n seq\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n length\n }\n }\n }\n host_genes\n }\n organism {\n id\n label\n name\n }\n }\n }\n"]; +export function graphql(source: "\n query guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n name\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n"): (typeof documents)["\n query guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n name\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n"]; +/** + * 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 tableEntriesQuery {\n tableEntries {\n id\n modification {\n id\n name\n position\n symbol_label\n type\n type_short_label\n target {\n id\n name\n class\n unit\n length\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n }\n }\n }\n }\n }\n guide {\n id\n name\n class\n subclass_label\n length\n seq\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n length\n }\n }\n }\n host_genes\n }\n organism {\n id\n label\n name\n }\n }\n\n targets {\n name\n }\n\n organisms {\n label\n id\n }\n }\n"): (typeof documents)["\n query tableEntriesQuery {\n tableEntries {\n id\n modification {\n id\n name\n position\n symbol_label\n type\n type_short_label\n target {\n id\n name\n class\n unit\n length\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n }\n }\n }\n }\n }\n guide {\n id\n name\n class\n subclass_label\n length\n seq\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n length\n }\n }\n }\n host_genes\n }\n organism {\n id\n label\n name\n }\n }\n\n targets {\n name\n }\n\n organisms {\n label\n id\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 0e4525a..ec44230 100644 --- a/src/gql/codegen/graphql.ts +++ b/src/gql/codegen/graphql.ts @@ -8860,10 +8860,20 @@ export type OrganismListQueryQueryVariables = Exact<{ [key: string]: never; }>; export type OrganismListQueryQuery = { __typename?: 'Query', organisms: Array<{ __typename?: 'Organism', id: number, label: string, shortname: string }> }; +export type GuideSelectionQueryQueryVariables = Exact<{ + guideSubclasses?: InputMaybe<Array<GuideClass> | GuideClass>; + targetNames?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>> | InputMaybe<Scalars['String']['input']>>; + modificationTypes?: InputMaybe<Array<InputMaybe<ModifType>> | InputMaybe<ModifType>>; + organismIds?: InputMaybe<Array<Scalars['Int']['input']> | Scalars['Int']['input']>; +}>; + + +export type GuideSelectionQueryQuery = { __typename?: 'Query', guides: Array<{ __typename?: 'Guide', subclass: GuideClass }>, targetsBase: Array<{ __typename?: 'Target', name?: string | null }>, targets: Array<{ __typename?: 'Target', name?: string | null }>, modifications: Array<{ __typename?: 'Modification', type?: ModifType | null }>, organismsBase: Array<{ __typename?: 'Organism', name: string, id: number }>, organisms: Array<{ __typename?: 'Organism', id: number }> }; + export type TableEntriesQueryQueryVariables = Exact<{ [key: string]: never; }>; -export type TableEntriesQueryQuery = { __typename?: 'Query', tableEntries: Array<{ __typename?: 'TableEntry', id: string, modification?: { __typename?: 'Modification', id: string, name: string, position: number, symbol_label: string, type?: ModifType | null, type_short_label?: string | null, target: { __typename?: 'Target', id: string, name?: string | null, class: SequenceClass, unit?: string | null, length: number, chromosomeConnection: { __typename?: 'TargetParentConnection', edges: Array<{ __typename?: 'TargetParentRelationship', properties: { __typename?: 'HasFeature', start: number, end: number, strand?: Strand | null }, node: { __typename?: 'Chromosome', id: string, name?: string | null } | { __typename?: 'GenericSequence', id: string, name?: string | null } | { __typename?: 'Guide', id: string, name?: string | null } | { __typename?: 'Target', id: string, name?: string | null } }> } } } | null, guide?: { __typename?: 'Guide', id: string, name?: string | null, class: SequenceClass, subclass_label: string, length: number, seq?: string | null, host_genes: Array<string>, chromosomeConnection: { __typename?: 'GuideParentConnection', edges: Array<{ __typename?: 'GuideParentRelationship', properties: { __typename?: 'HasFeature', start: number, end: number, strand?: Strand | null }, node: { __typename?: 'Chromosome', id: string, name?: string | null, length: number } | { __typename?: 'GenericSequence', id: string, name?: string | null, length: number } | { __typename?: 'Guide', id: string, name?: string | null, length: number } | { __typename?: 'Target', id: string, name?: string | null, length: number } }> } } | null, organism: { __typename?: 'Organism', id: number, label: string, name: string } }> }; +export type TableEntriesQueryQuery = { __typename?: 'Query', tableEntries: Array<{ __typename?: 'TableEntry', id: string, modification?: { __typename?: 'Modification', id: string, name: string, position: number, symbol_label: string, type?: ModifType | null, type_short_label?: string | null, target: { __typename?: 'Target', id: string, name?: string | null, class: SequenceClass, unit?: string | null, length: number, chromosomeConnection: { __typename?: 'TargetParentConnection', edges: Array<{ __typename?: 'TargetParentRelationship', properties: { __typename?: 'HasFeature', start: number, end: number, strand?: Strand | null }, node: { __typename?: 'Chromosome', id: string, name?: string | null } | { __typename?: 'GenericSequence', id: string, name?: string | null } | { __typename?: 'Guide', id: string, name?: string | null } | { __typename?: 'Target', id: string, name?: string | null } }> } } } | null, guide?: { __typename?: 'Guide', id: string, name?: string | null, class: SequenceClass, subclass_label: string, length: number, seq?: string | null, host_genes: Array<string>, chromosomeConnection: { __typename?: 'GuideParentConnection', edges: Array<{ __typename?: 'GuideParentRelationship', properties: { __typename?: 'HasFeature', start: number, end: number, strand?: Strand | null }, node: { __typename?: 'Chromosome', id: string, name?: string | null, length: number } | { __typename?: 'GenericSequence', id: string, name?: string | null, length: number } | { __typename?: 'Guide', id: string, name?: string | null, length: number } | { __typename?: 'Target', id: string, name?: string | null, length: number } }> } } | null, organism: { __typename?: 'Organism', id: number, label: string, name: string } }>, targets: Array<{ __typename?: 'Target', name?: string | null }>, organisms: Array<{ __typename?: 'Organism', label: string, id: number }> }; export type OrganismByIdQueryQueryVariables = Exact<{ id?: InputMaybe<Scalars['Int']['input']>; @@ -8907,7 +8917,8 @@ export type DatabaseStatisticsQueryQuery = { __typename?: 'Query', organismsAggr export const OrganismListQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"organismListQuery"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"shortname"}}]}}]}}]} as unknown as DocumentNode<OrganismListQueryQuery, OrganismListQueryQueryVariables>; -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":"symbol_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}},{"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"host_genes"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organism"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode<TableEntriesQueryQuery, TableEntriesQueryQueryVariables>; +export const GuideSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"guideSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"GuideClass"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guide"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<GuideSelectionQueryQuery, GuideSelectionQueryQueryVariables>; +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":"symbol_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}},{"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"host_genes"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organism"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<TableEntriesQueryQuery, TableEntriesQueryQueryVariables>; export const OrganismByIdQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"organismByIdQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"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":"graphql_type"},"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":"altnames"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"graphql_type"}},{"kind":"Field","alias":{"kind":"Name","value":"guides"},"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":"graphql_type"},"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"symbol_label"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}},{"kind":"Field","name":{"kind":"Name","value":"guidesAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"allModificationsCount"},"name":{"kind":"Name","value":"modificationsAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"nonOrphanModificationsCount"},"name":{"kind":"Name","value":"modificationsAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"guidesAggregate"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"count_GT"},"value":{"kind":"IntValue","value":"0"}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}]}}],"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"modificationsAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"allTargetsCount"},"name":{"kind":"Name","value":"targetsAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"class"}},{"kind":"Field","name":{"kind":"Name","value":"subclass"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"allGuidesCount"},"name":{"kind":"Name","value":"guidesAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"nonOrphanGuidesCount"},"name":{"kind":"Name","value":"guidesAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modificationsAggregate"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"count_GT"},"value":{"kind":"IntValue","value":"0"}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}}]} as unknown as DocumentNode<OrganismByIdQueryQuery, OrganismByIdQueryQueryVariables>; 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":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}],"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":"type_short_label"}},{"kind":"Field","name":{"kind":"Name","value":"symbol"}},{"kind":"Field","name":{"kind":"Name","value":"symbol_label"}},{"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"genome"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organism"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}}]}}]}}]}},{"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":"properties"},"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":"properties"},"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":"properties"},"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":"properties"},"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":"subclass_label"}},{"kind":"Field","name":{"kind":"Name","value":"class"}}]}},{"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":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"class"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"class"}}]}}]}}]} 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":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"altnames"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"class"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"graphql_type"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"host_genes"}},{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","name":{"kind":"Name","value":"genome"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organism"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"boxConnections"},"name":{"kind":"Name","value":"featuresConnection"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"NOT"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"node"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"class"},"value":{"kind":"EnumValue","value":"DuplexFragment"}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"properties"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"HasFeature"}},"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":"annotation"}}]}}]}}]}},{"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":"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":"properties"},"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":"properties"},"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":"properties"},"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":"properties"},"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":"symbol"}},{"kind":"Field","name":{"kind":"Name","value":"symbol_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}}]}},{"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}}]}}]}},{"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}}]}}]}}]} as unknown as DocumentNode<GuideByIdQueryQuery, GuideByIdQueryQueryVariables>; diff --git a/src/gql/queries.ts b/src/gql/queries.ts index 5d1e557..e0f9905 100644 --- a/src/gql/queries.ts +++ b/src/gql/queries.ts @@ -16,6 +16,77 @@ export const organismListQuery = graphql(/* GraphQL */ ` } `) +/** + * Get available data in the base matching given filters for guide selection. + */ +export const guideSelectionQuery = graphql(/* GraphQL */ ` + query guideSelectionQuery( + $guideSubclasses: [GuideClass!] + $targetNames: [String] + $modificationTypes: [ModifType] + $organismIds: [Int!] + ) { + guides( + where: { + modifications_SOME: { + target: { name_IN: $targetNames } + type_IN: $modificationTypes + } + genome: { organism: { id_IN: $organismIds } } + } + ) { + subclass + } + + targetsBase: targets { + name + } + + targets( + where: { + modifications_SOME: { + guides_SOME: { subclass_IN: $guideSubclasses } + type_IN: $modificationTypes + } + genome: { organism: { id_IN: $organismIds } } + } + ) { + name + } + + modifications( + where: { + target: { + name_IN: $targetNames + genome: { organism: { id_IN: $organismIds } } + } + guides_SOME: { subclass_IN: $guideSubclasses } + } + ) { + type + } + + organismsBase: organisms { + name + id + } + + organisms( + where: { + tableEntries_SOME: { + modification: { + type_IN: $modificationTypes + target: { name_IN: $targetNames } + } + guide: { subclass_IN: $guideSubclasses } + } + } + ) { + id + } + } +`) + /** * Get the entries for data table display */ @@ -84,6 +155,15 @@ export const tableEntriesQuery = graphql(/* GraphQL */ ` name } } + + targets { + name + } + + organisms { + label + id + } } `) diff --git a/src/views/DataTableView.vue b/src/views/DataTableView.vue index 0552d8c..b01d983 100644 --- a/src/views/DataTableView.vue +++ b/src/views/DataTableView.vue @@ -21,7 +21,7 @@ import IconFa6SolidArrowUpShortWide from '~icons/fa6-solid/arrow-up-short-wide' /** * Other 3rd-party imports */ -import { get as _get, uniqBy as _uniqBy } from 'lodash-es' +import { get as _get, uniqBy as _uniqBy, uniq as _uniq } from 'lodash-es' import { FilterMatchMode as primeVueFilterMatchMode } from 'primevue/api' import { useQuery } from '@urql/vue' /** @@ -130,6 +130,21 @@ const tableEntries = computed(() => })) ) +/** + * All target names existing in the database. + */ +const allTargetNames = computed(() => + _uniq(gqlQuery.data.value?.targets.map((target) => target.name)) +) + +/** + * All organisms (label & ID) existing in the database. + */ +const allOrganisms = computed(() => ({ + labels: gqlQuery.data.value?.organisms.map((organism) => organism.label), + ids: gqlQuery.data.value?.organisms.map((organism) => organism.id) +})) + /** * Structure in which to represent the data in the table, columns will be * in the same order in the table @@ -430,7 +445,7 @@ const sortedSelectedColumnGroups = computed<ColumnGroupModel[]>(() => * Filter for fields with specific filtering strategy, i.e. different from * `CONTAINS`. * @description Needs to be reactive as some `filter.options` are fetched from - * the API (e.g. the species names list).\ + * the API (e.g. the organism names list).\ * Then, only this `option` field may actually change (so not every dependence * of this object needs to be reactive, only those depending on `options`). */ @@ -453,6 +468,14 @@ const specificFilterConfigs = computed<{ options: Object.values(ModifType) } }, + targetName: { + columnField: + columns.find((column) => column.id == 'targetName')?.field || '', + filter: { + matchMode: primeVueFilterMatchMode.IN, + options: allTargetNames.value + } + }, guideSubclass: { columnField: columns.find((column) => column.id == 'guideSubclass')?.field || '', @@ -460,6 +483,22 @@ const specificFilterConfigs = computed<{ matchMode: primeVueFilterMatchMode.IN, options: Object.values(GuideClass) } + }, + organismName: { + columnField: + columns.find((column) => column.id == 'organismName')?.field || '', + filter: { + matchMode: primeVueFilterMatchMode.IN, + options: allOrganisms.value.labels + } + }, + organismId: { + columnField: + columns.find((column) => column.id == 'organismId')?.field || '', + filter: { + matchMode: primeVueFilterMatchMode.IN, + options: allOrganisms.value.ids + } } })) -- GitLab From 97e0c8f18ac6bbdc031a3b62d34a1a77ef8737c8 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:44:23 +0200 Subject: [PATCH 23/54] feat(advanced-selection): :sparkles: add actual view & route for advanced data selection --- src/components/GuideSelectionForm.vue | 9 + src/components/ModificationSelectionForm.vue | 9 + src/components/TargetSelectionForm.vue | 9 + src/router/index.ts | 29 +++ src/utils/constant.ts | 5 + src/views/HomeView.vue | 24 +-- src/views/SelectionView.vue | 191 +++++++++++++++++++ 7 files changed, 264 insertions(+), 12 deletions(-) create mode 100644 src/components/GuideSelectionForm.vue create mode 100644 src/components/ModificationSelectionForm.vue create mode 100644 src/components/TargetSelectionForm.vue create mode 100644 src/utils/constant.ts create mode 100644 src/views/SelectionView.vue diff --git a/src/components/GuideSelectionForm.vue b/src/components/GuideSelectionForm.vue new file mode 100644 index 0000000..2841e18 --- /dev/null +++ b/src/components/GuideSelectionForm.vue @@ -0,0 +1,9 @@ +<script setup lang="ts"> +</script> + +<template> + <div + class="grid grid-cols-[max-content_1fr] grid-rows-4 items-center gap-x-16 gap-y-8" + > + </div> +</template> diff --git a/src/components/ModificationSelectionForm.vue b/src/components/ModificationSelectionForm.vue new file mode 100644 index 0000000..2841e18 --- /dev/null +++ b/src/components/ModificationSelectionForm.vue @@ -0,0 +1,9 @@ +<script setup lang="ts"> +</script> + +<template> + <div + class="grid grid-cols-[max-content_1fr] grid-rows-4 items-center gap-x-16 gap-y-8" + > + </div> +</template> diff --git a/src/components/TargetSelectionForm.vue b/src/components/TargetSelectionForm.vue new file mode 100644 index 0000000..2841e18 --- /dev/null +++ b/src/components/TargetSelectionForm.vue @@ -0,0 +1,9 @@ +<script setup lang="ts"> +</script> + +<template> + <div + class="grid grid-cols-[max-content_1fr] grid-rows-4 items-center gap-x-16 gap-y-8" + > + </div> +</template> diff --git a/src/router/index.ts b/src/router/index.ts index 870e4f9..b51d496 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -11,6 +11,14 @@ import HomeView from '@/views/HomeView.vue' */ import { useTitle } from '@vueuse/core' import { isNonNullish } from '@/typings/typeUtils' +/** + * Types imports + */ +import type { SelectionFormModesType } from '@/views/SelectionView.vue' +/** + * Utils imports + */ +import { SELECTION_FORM_MODES } from '@/utils/constant' declare module 'vue-router' { interface RouteMeta { @@ -31,6 +39,27 @@ const router = createRouter({ title: 'Home' } }, + { + path: '/select', + name: 'data-selection', + component: () => import('@/views/SelectionView.vue'), + props: (to) => ({ + mode: to.query.mode + }), + beforeEnter: (to) => { + if ( + typeof to.query.mode !== 'string' || + !SELECTION_FORM_MODES.includes( + to.query.mode as SelectionFormModesType + ) + ) { + router.replace({ name: 'lost' }) + } + }, + meta: { + title: 'Advanced selection' + } + }, { path: '/table', name: 'data-table', diff --git a/src/utils/constant.ts b/src/utils/constant.ts new file mode 100644 index 0000000..0608ef8 --- /dev/null +++ b/src/utils/constant.ts @@ -0,0 +1,5 @@ +/** + * The different modes available for advanced selection form on the selection + * page. + */ +export const SELECTION_FORM_MODES = ['modification', 'guide', 'target'] as const diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index 1638ca0..853d3f8 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -134,10 +134,10 @@ const menuItems = computed<MenuItem[]>(() => [ key: 'guideSelection', label: 'Advanced guide selection', route: { - // name: 'data-selection', - // query: { - // type: 'guide' - // } + name: 'data-selection', + query: { + mode: 'guide' + } }, iconComponent: IconFa6SolidSliders } @@ -175,10 +175,10 @@ const menuItems = computed<MenuItem[]>(() => [ key: 'modificationSelection', label: 'Advanced modification selection', route: { - // name: 'data-selection', - // query: { - // type: 'modification' - // } + name: 'data-selection', + query: { + mode: 'modification' + } }, iconComponent: IconFa6SolidSliders } @@ -215,10 +215,10 @@ const menuItems = computed<MenuItem[]>(() => [ key: 'targetSelection', label: 'Advanced target selection', route: { - // name: 'data-selection', - // query: { - // type: 'target' - // } + name: 'data-selection', + query: { + mode: 'target' + } }, iconComponent: IconFa6SolidSliders } diff --git a/src/views/SelectionView.vue b/src/views/SelectionView.vue new file mode 100644 index 0000000..fea334f --- /dev/null +++ b/src/views/SelectionView.vue @@ -0,0 +1,191 @@ +<script setup lang="ts"> +/** + * Vue imports + */ +import { computed, ref } from 'vue' +import { useRouter } from 'vue-router' +/** + * Components imports + */ +import MainLayout from '@/layouts/MainLayout.vue' +import ModificationSelectionForm from '@/components/ModificationSelectionForm.vue' +import GuideSelectionForm from '@/components/GuideSelectionForm.vue' +import TargetSelectionForm from '@/components/TargetSelectionForm.vue' +import TabView, { type TabViewChangeEvent } from 'primevue/tabview' +import TabPanel from 'primevue/tabpanel' +import Card from 'primevue/card' +import Button from 'primevue/button' +import IconFa6SolidTable from '~icons/fa6-solid/table' +/** + * Other 3rd-party imports + */ +import { useTitle } from '@vueuse/core' +import { capitalize as _capitalize } from 'lodash-es' +/** + * Utils imports + */ +import { SELECTION_FORM_MODES } from '@/utils/constant' + +/** + * Type of data to select. + */ +export type SelectionFormModesType = (typeof SELECTION_FORM_MODES)[number] +enum TabEnum { + Modification = 0, + Guide, + Target +} + +/** + * A selection option. + */ +export interface SelectionOptionModel { + /** Label of the option. */ + label: string + /** Value of the option. */ + value: string + /** Optional disabling state of the option. */ + isDisabled?: boolean +} + +/** + * Component props. + */ +const props = defineProps<{ + mode: SelectionFormModesType +}>() + +/** + * Vue Router instance reactive object. + */ +const router = useRouter() + +/** + * The index of the tab currently selected, reactively updated when changed. + */ +const activeTabIndex = ref<TabEnum>( + SELECTION_FORM_MODES.findIndex((mode) => mode === props.mode) +) + +/** + * Title of the page, reactively updated when data is fetched. + */ +const pageTitle = computed( + () => + `${_capitalize( + SELECTION_FORM_MODES[activeTabIndex.value] + )} • Selection | SnoBoard` +) +// Bind actual page title to computed one +useTitle(pageTitle) + +/** + * Callback to change the URL when switching tab. + * @param e The event emitted when changing tab. + */ +const updateUrlQuery = (e: TabViewChangeEvent) => { + const newMode = SELECTION_FORM_MODES[e.index] + if (newMode) { + router.replace({ name: 'data-selection', query: { mode: newMode } }) + } +} + +const activeTabTableColumns = computed(() => { + switch (activeTabIndex.value) { + case TabEnum.Modification: + return [ + 'modificationId', + 'modificationName', + 'modificationPosition', + 'modificationSymbol', + 'modificationType', + 'targetName', + 'organismName', + 'organismId' + ] + case TabEnum.Guide: + return [ + 'guideId', + 'guideName', + 'guideClass', + 'guideSubclass', + 'guideChromosomeName', + 'guideLength', + 'organismName', + 'organismId' + ] + case TabEnum.Target: + return [ + 'targetId', + 'targetName', + 'targetLength', + 'targetClass', + 'targetChromosomeName', + 'organismName', + 'organismId' + ] + default: + return [] + } +}) +</script> + +<template> + <MainLayout> + <h1 class="mb-8 text-center text-3xl">Advanced selection</h1> + + <Card + class="mx-16 !rounded-2xl border-2 !shadow-none" + :pt="{ + footer: { + style: { + display: 'flex', + justifyContent: 'center' + } + } + }" + > + <template #content> + <TabView + v-model:active-index="activeTabIndex" + :pt="{ + nav: { + style: { + justifyContent: 'center', + marginBottom: '2rem', + fontSize: '1.25em' + } + } + }" + @tab-change="updateUrlQuery" + > + <TabPanel header="Modification"> + <ModificationSelectionForm /> + </TabPanel> + <TabPanel header="Guide"> + <GuideSelectionForm /> + </TabPanel> + <TabPanel header="Target"> + <TargetSelectionForm /> + </TabPanel> + </TabView> + </template> + + <template #footer> + <RouterLink + :to="{ + name: 'data-table', + query: { + columns: activeTabTableColumns + } + }" + > + <Button> + <icon-fa6-solid-table /> + <span class="ml-2">View in table</span> + </Button> + </RouterLink> + </template> + </Card> + </MainLayout> +</template> -- GitLab From 66f0aa99b1ee243ac1b8aa7677b9263d30ec988b Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:44:23 +0200 Subject: [PATCH 24/54] feat(advanced-selection): :sparkles: add actual guide selection form --- src/components/GuideSelectionForm.vue | 345 ++++++++++++++++++++++++++ src/views/SelectionView.vue | 45 +++- 2 files changed, 383 insertions(+), 7 deletions(-) diff --git a/src/components/GuideSelectionForm.vue b/src/components/GuideSelectionForm.vue index 2841e18..a76c2fc 100644 --- a/src/components/GuideSelectionForm.vue +++ b/src/components/GuideSelectionForm.vue @@ -1,9 +1,354 @@ <script setup lang="ts"> +/** + * Vue imports + */ +import { computed, ref, toRef } from 'vue' +/** + * Component imports + */ +import FormattedModificationType from './FormattedModificationType.vue' +import Chip from 'primevue/chip' +import SelectButton from 'primevue/selectbutton' +import MultiSelect from 'primevue/multiselect' +import { GuideType, ModifType } from '@/gql/codegen/graphql' +import { formatGuideSubtype, formatSpeciesName } from '@/utils/textFormatting' +/** + * Other 3rd-party imports + */ +import { useQuery } from '@urql/vue' +import { + uniqWith as _uniqWith, + isEqual as _isEqual, + remove as _remove +} from 'lodash-es' +/** + * Utils imports + */ +import { guideSelectionQuery } from '@/gql/queries' +/** + * Types imports + */ +import type { SelectionOptionModel } from '@/views/SelectionView.vue' + +/** + * A selection. + */ +export interface GuideSelectionModel { + /** Currently selected guide subtypes. */ + guideSubtypes: GuideType[] + /** Currently selected target names. */ + targetNames: string[] + /** Currently selected modification types. */ + modificationTypes: ModifType[] + /** Currently selected species IDs.*/ + speciesIds: number[] +} + +/** + * Available options for guide subtype selection, independently of other fields' + * selection. + */ +const GUIDE_SUBTYPE_OPTIONS_BASE: SelectionOptionModel[] = Object.values( + GuideType +).map((guideSubtype) => ({ + label: formatGuideSubtype(guideSubtype), + value: guideSubtype +})) + +/** + * Available options for modification type selection, independently of other + * fields' selection. + */ +const MODIFICATION_TYPE_OPTIONS_BASE: SelectionOptionModel[] = Object.values( + ModifType +).map((modifType) => ({ + label: modifType, + value: modifType +})) + +/** + * Component props + */ +defineProps<{ + /** The current selection. */ + modelValue?: GuideSelectionModel +}>() + +/** + * Component events. + */ +defineEmits<{ + /** Event used to update the `v-model` value. */ + 'update:modelValue': [modelValue: GuideSelectionModel] +}>() + +/** + * Current selection of parameters/filters for the guides to pick. + */ +const selection = ref<GuideSelectionModel>({ + guideSubtypes: [], + targetNames: [], + modificationTypes: [], + speciesIds: [] +}) + +/** + * Reactive urql GraphQL query object, updated with query state & response. + */ +const gqlQuery = useQuery({ + query: guideSelectionQuery, + variables: toRef(() => ({ + guideSubtypes: selection.value.guideSubtypes?.length + ? selection.value.guideSubtypes + : undefined, + targetNames: selection.value.targetNames?.length + ? selection.value.targetNames + : undefined, + modificationTypes: selection.value.modificationTypes?.length + ? selection.value.modificationTypes + : undefined, + speciesIds: selection.value.speciesIds?.length + ? selection.value.speciesIds + : undefined + })) +}) + +/** + * Available guide subtypes, filtered based on other fields' selection (only guide + * types which exists with selected options are present). + */ +const guideSubtypesFiltered = computed(() => + _uniqWith(gqlQuery.data.value?.guides, _isEqual).map((guide) => guide.subtype) +) + +/** + * Available options for guide subtype selection, with a `isDisabled` field on + * absence in `guideSubtypesFiltered`. + */ +const guideSubtypeOptionsWithDisabling = computed(() => + GUIDE_SUBTYPE_OPTIONS_BASE.map((guideSubtypeOption) => ({ + ...guideSubtypeOption, + isDisabled: !guideSubtypesFiltered.value.some( + (guideSubtypeFiltered) => + guideSubtypeFiltered === guideSubtypeOption.value + ) + })) +) + +/** + * Available options for target name selection, independently of other fields' + * selection. + */ +const targetNameOptionsBase = computed(() => + _uniqWith(gqlQuery.data.value?.targetsBase, _isEqual).map((target) => ({ + label: target.name, + value: target.name + })) +) + +/** + * Available target names, filtered based on other fields' selection (only + * target names which exists with selected options are present). + */ +const targetNamesFiltered = computed(() => + _uniqWith(gqlQuery.data.value?.targets, _isEqual).map((target) => target.name) +) + +/** + * Available options for target name selection, with a `isDisabled` field on + * absence in `targetNamesFiltered`. + */ +const targetNameOptionsWithDisabling = computed(() => + targetNameOptionsBase.value.map((targetNameOption) => ({ + ...targetNameOption, + isDisabled: !targetNamesFiltered.value.some( + (targetNameFiltered) => targetNameFiltered === targetNameOption.value + ) + })) +) + +/** + * Available modification types, filtered based on other fields' selection (only + * modification types which exists with selected options are present). + */ +const modificationTypesFiltered = computed(() => + _uniqWith(gqlQuery.data.value?.modifications, _isEqual).map( + (modification) => modification.type + ) +) + +/** + * Available options for modification type selection, with a `isDisabled` field + * on absence in `modificationTypesFiltered`. + */ +const modificationTypeOptionsWithDisabling = computed(() => + MODIFICATION_TYPE_OPTIONS_BASE.map((modificationTypeOption) => ({ + ...modificationTypeOption, + isDisabled: !modificationTypesFiltered.value.some( + (modificationTypeFiltered) => + modificationTypeFiltered === modificationTypeOption.value + ) + })) +) + +/** + * Available options for species ID selection, independently of other fields' + * selection. + */ +const speciesIdOptionsBase = computed(() => + _uniqWith(gqlQuery.data.value?.genomesBase, _isEqual).map((genome) => ({ + label: genome.species?.name, + value: genome.species?.id + })) +) + +/** + * Available species IDs, filtered based on other fields' selection (only + * species IDs which exists with selected options are present). + */ +const speciesIdsFiltered = computed(() => + _uniqWith(gqlQuery.data.value?.genomes, _isEqual).map( + (genome) => genome.species?.id + ) +) + +/** + * Available options for species ID selection, with a `isDisabled` field on + * absence in `speciesIdsFiltered`. + */ +const speciesIdOptionsWithDisabling = computed(() => + speciesIdOptionsBase.value.map((speciesIdOption) => ({ + ...speciesIdOption, + isDisabled: !speciesIdsFiltered.value.some( + (speciesIdFiltered) => speciesIdFiltered === speciesIdOption.value + ) + })) +) </script> <template> <div class="grid grid-cols-[max-content_1fr] grid-rows-4 items-center gap-x-16 gap-y-8" > + <h3 class="text-lg font-bold">Guide subtype</h3> + <SelectButton + v-model="selection.guideSubtypes" + :options="guideSubtypeOptionsWithDisabling" + option-label="label" + option-value="value" + option-disabled="isDisabled" + multiple + class="mr-auto" + @update:model-value="(selectedGuideSubtypes: GuideType[]) => $emit('update:modelValue', {...selection, guideSubtypes:selectedGuideSubtypes })" + /> + + <h3 class="text-lg font-bold">Targets</h3> + <MultiSelect + v-model="selection.targetNames" + :options="targetNameOptionsWithDisabling" + option-label="label" + option-value="value" + option-disabled="isDisabled" + multiple + class="mr-auto" + placeholder="Select targets..." + :max-selected-labels="3" + display="chip" + filter + @update:model-value="(selectedTargetNames: string[]) => $emit('update:modelValue', {...selection, targetNames:selectedTargetNames })" + > + <template #value> + <Chip + v-for="targetName in selection.targetNames.slice(0, 3)" + :key="targetName" + class="mr-1" + :label="targetName" + removable + @remove.stop=" + $emit('update:modelValue', { + ...selection, + targetNames: _remove( + selection.targetNames, + (currTargetName) => currTargetName === targetName + ) + }) + " + /> + <template v-if="selection.targetNames.length > 3"> + +{{ selection.targetNames.length - 3 }} others... + </template> + </template> + </MultiSelect> + + <h3 class="text-lg font-bold">Modifications</h3> + <SelectButton + v-model="selection.modificationTypes" + :options="modificationTypeOptionsWithDisabling" + option-label="label" + option-value="value" + option-disabled="isDisabled" + multiple + class="mr-auto" + @update:model-value="(selectedModificationTypes: ModifType[]) => $emit('update:modelValue', {...selection, modificationTypes:selectedModificationTypes })" + > + <template #option="{ option }"> + <FormattedModificationType + :type-code="option.label" + class="font-medium" + /> + </template> + </SelectButton> + + <h3 class="text-lg font-bold">Species</h3> + <MultiSelect + v-model="selection.speciesIds" + :options="speciesIdOptionsWithDisabling" + option-label="label" + option-value="value" + option-disabled="isDisabled" + multiple + class="mr-auto" + placeholder="Select species..." + :max-selected-labels="3" + display="chip" + filter + @update:model-value="(selectedSpeciesIds: number[]) => $emit('update:modelValue', {...selection, speciesIds:selectedSpeciesIds })" + > + <template #value> + <Chip + v-for="speciesId in selection.speciesIds.slice(0, 3)" + :key="speciesId" + class="mr-1" + removable + @remove.stop=" + $emit('update:modelValue', { + ...selection, + speciesIds: _remove( + selection.speciesIds, + (currSpeciesId) => currSpeciesId === speciesId + ) + }) + " + > + <em class="my-1.5"> + {{ + formatSpeciesName( + speciesIdOptionsBase.find( + (speciesIdOption) => speciesIdOption.value === speciesId + )?.label || '' + ) + }} + </em> + </Chip> + <template v-if="selection.speciesIds.length > 3"> + +{{ selection.speciesIds.length - 3 }} others... + </template> + </template> + <template #option="{ option }"> + <em> + {{ formatSpeciesName(option.label) }} + </em> + </template> + </MultiSelect> </div> </template> diff --git a/src/views/SelectionView.vue b/src/views/SelectionView.vue index fea334f..80fb224 100644 --- a/src/views/SelectionView.vue +++ b/src/views/SelectionView.vue @@ -67,14 +67,16 @@ const activeTabIndex = ref<TabEnum>( SELECTION_FORM_MODES.findIndex((mode) => mode === props.mode) ) +/** + * The mode corresponding to the tab currently selected. + */ +const activeMode = computed(() => SELECTION_FORM_MODES[activeTabIndex.value]) + /** * Title of the page, reactively updated when data is fetched. */ const pageTitle = computed( - () => - `${_capitalize( - SELECTION_FORM_MODES[activeTabIndex.value] - )} • Selection | SnoBoard` + () => `${_capitalize(activeMode.value)} • Selection | SnoBoard` ) // Bind actual page title to computed one useTitle(pageTitle) @@ -90,7 +92,35 @@ const updateUrlQuery = (e: TabViewChangeEvent) => { } } -const activeTabTableColumns = computed(() => { +/** + * The current selection. + */ +const selection = ref<{ + modification?: undefined + guide?: GuideSelectionModel + target?: undefined +}>({ + modification: undefined, + guide: undefined, + target: undefined +}) + +/** + * The filter to apply to the table when navigating to it, derived from current + * selection. + */ +const tableFilters = computed(() => ({ + guideSubtype: selection.value[activeMode.value]?.guideSubtypes, + targetName: selection.value[activeMode.value]?.targetNames, + modificationType: selection.value[activeMode.value]?.modificationTypes, + speciesId: selection.value[activeMode.value]?.speciesIds +})) + +/** + * The columns to display in the table when navigating to it, based on the + * active tab (i.e. form mode). + */ +const activeModeTableColumns = computed(() => { switch (activeTabIndex.value) { case TabEnum.Modification: return [ @@ -163,7 +193,7 @@ const activeTabTableColumns = computed(() => { <ModificationSelectionForm /> </TabPanel> <TabPanel header="Guide"> - <GuideSelectionForm /> + <GuideSelectionForm v-model="selection.guide" /> </TabPanel> <TabPanel header="Target"> <TargetSelectionForm /> @@ -176,7 +206,8 @@ const activeTabTableColumns = computed(() => { :to="{ name: 'data-table', query: { - columns: activeTabTableColumns + columns: activeModeTableColumns, + ...tableFilters } }" > -- GitLab From 6fbe51f91b6ffc5b6b938fbc2ee8cbd68c0bd3d4 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:44:24 +0200 Subject: [PATCH 25/54] fix(table-view): :adhesive_bandage: if instead of else-if caused unwanted else execution -- GitLab From 2fb0aa1e7ae1703f22b02ad645c1164ff2de5fdb Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:44:24 +0200 Subject: [PATCH 26/54] fix(home-view): :adhesive_bandage: non-reactive object causing no updates -- GitLab From f7d2c802172b07d17ad3be9b1d3885d436f86e99 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:44:24 +0200 Subject: [PATCH 27/54] feat(advanced-selection): :sparkles: add actual modification selection --- src/components/GuideSelectionForm.vue | 206 ++++++------- src/components/ModificationSelectionForm.vue | 290 +++++++++++++++++++ src/gql/codegen/gql.ts | 9 +- src/gql/codegen/graphql.ts | 14 +- src/gql/queries.ts | 70 ++++- src/views/HomeView.vue | 13 - src/views/SelectionView.vue | 19 +- 7 files changed, 496 insertions(+), 125 deletions(-) diff --git a/src/components/GuideSelectionForm.vue b/src/components/GuideSelectionForm.vue index a76c2fc..8b91b7e 100644 --- a/src/components/GuideSelectionForm.vue +++ b/src/components/GuideSelectionForm.vue @@ -6,12 +6,11 @@ import { computed, ref, toRef } from 'vue' /** * Component imports */ -import FormattedModificationType from './FormattedModificationType.vue' +import BaseRenderedMarkdown from './BaseRenderedMarkdown.vue' import Chip from 'primevue/chip' import SelectButton from 'primevue/selectbutton' import MultiSelect from 'primevue/multiselect' -import { GuideType, ModifType } from '@/gql/codegen/graphql' -import { formatGuideSubtype, formatSpeciesName } from '@/utils/textFormatting' +import { GuideClass, ModifType } from '@/gql/codegen/graphql' /** * Other 3rd-party imports */ @@ -25,47 +24,21 @@ import { * Utils imports */ import { guideSelectionQuery } from '@/gql/queries' -/** - * Types imports - */ -import type { SelectionOptionModel } from '@/views/SelectionView.vue' /** * A selection. */ export interface GuideSelectionModel { - /** Currently selected guide subtypes. */ - guideSubtypes: GuideType[] + /** Currently selected guide subclasses. */ + guideSubclasses: GuideClass[] /** Currently selected target names. */ targetNames: string[] /** Currently selected modification types. */ modificationTypes: ModifType[] - /** Currently selected species IDs.*/ - speciesIds: number[] + /** Currently selected organism IDs.*/ + organismIds: number[] } -/** - * Available options for guide subtype selection, independently of other fields' - * selection. - */ -const GUIDE_SUBTYPE_OPTIONS_BASE: SelectionOptionModel[] = Object.values( - GuideType -).map((guideSubtype) => ({ - label: formatGuideSubtype(guideSubtype), - value: guideSubtype -})) - -/** - * Available options for modification type selection, independently of other - * fields' selection. - */ -const MODIFICATION_TYPE_OPTIONS_BASE: SelectionOptionModel[] = Object.values( - ModifType -).map((modifType) => ({ - label: modifType, - value: modifType -})) - /** * Component props */ @@ -86,10 +59,10 @@ defineEmits<{ * Current selection of parameters/filters for the guides to pick. */ const selection = ref<GuideSelectionModel>({ - guideSubtypes: [], + guideSubclasses: [], targetNames: [], modificationTypes: [], - speciesIds: [] + organismIds: [] }) /** @@ -98,8 +71,8 @@ const selection = ref<GuideSelectionModel>({ const gqlQuery = useQuery({ query: guideSelectionQuery, variables: toRef(() => ({ - guideSubtypes: selection.value.guideSubtypes?.length - ? selection.value.guideSubtypes + guideSubclasses: selection.value.guideSubclasses?.length + ? selection.value.guideSubclasses : undefined, targetNames: selection.value.targetNames?.length ? selection.value.targetNames @@ -107,30 +80,43 @@ const gqlQuery = useQuery({ modificationTypes: selection.value.modificationTypes?.length ? selection.value.modificationTypes : undefined, - speciesIds: selection.value.speciesIds?.length - ? selection.value.speciesIds + organismsIds: selection.value.organismIds?.length + ? selection.value.organismIds : undefined })) }) /** - * Available guide subtypes, filtered based on other fields' selection (only guide - * types which exists with selected options are present). + * Available options for guide subclass selection, independently of other fields' + * selection. */ -const guideSubtypesFiltered = computed(() => - _uniqWith(gqlQuery.data.value?.guides, _isEqual).map((guide) => guide.subtype) +const guideSubclassOptionsBase = computed(() => + _uniqWith(gqlQuery.data.value?.guidesBase, _isEqual).map((guide) => ({ + label: guide.subclass_label, + value: guide.subclass + })) ) /** - * Available options for guide subtype selection, with a `isDisabled` field on - * absence in `guideSubtypesFiltered`. + * Available guide subclasses, filtered based on other fields' selection (only guide + * subclasses which exists with selected options are present). */ -const guideSubtypeOptionsWithDisabling = computed(() => - GUIDE_SUBTYPE_OPTIONS_BASE.map((guideSubtypeOption) => ({ - ...guideSubtypeOption, - isDisabled: !guideSubtypesFiltered.value.some( - (guideSubtypeFiltered) => - guideSubtypeFiltered === guideSubtypeOption.value +const guideSubclassesFiltered = computed(() => + _uniqWith(gqlQuery.data.value?.guides, _isEqual).map( + (guide) => guide.subclass + ) +) + +/** + * Available options for guide subclass selection, with a `isDisabled` field on + * absence in `guideSubclassesFiltered`. + */ +const guideSubclassOptionsWithDisabling = computed(() => + guideSubclassOptionsBase.value.map((guideSubclassOption) => ({ + ...guideSubclassOption, + isDisabled: !guideSubclassesFiltered.value.some( + (guideSubclassFiltered) => + guideSubclassFiltered === guideSubclassOption.value ) })) ) @@ -167,6 +153,19 @@ const targetNameOptionsWithDisabling = computed(() => })) ) +/** + * Available options for modification type selection, independently of other + * fields' selection. + */ +const modificationTypeOptionsBase = computed(() => + _uniqWith(gqlQuery.data.value?.modificationsBase, _isEqual).map( + (modification) => ({ + label: modification.type_label, + value: modification.type + }) + ) +) + /** * Available modification types, filtered based on other fields' selection (only * modification types which exists with selected options are present). @@ -182,7 +181,7 @@ const modificationTypesFiltered = computed(() => * on absence in `modificationTypesFiltered`. */ const modificationTypeOptionsWithDisabling = computed(() => - MODIFICATION_TYPE_OPTIONS_BASE.map((modificationTypeOption) => ({ + modificationTypeOptionsBase.value.map((modificationTypeOption) => ({ ...modificationTypeOption, isDisabled: !modificationTypesFiltered.value.some( (modificationTypeFiltered) => @@ -192,35 +191,35 @@ const modificationTypeOptionsWithDisabling = computed(() => ) /** - * Available options for species ID selection, independently of other fields' + * Available options for organism ID selection, independently of other fields' * selection. */ -const speciesIdOptionsBase = computed(() => - _uniqWith(gqlQuery.data.value?.genomesBase, _isEqual).map((genome) => ({ - label: genome.species?.name, - value: genome.species?.id +const organismIdOptionsBase = computed(() => + _uniqWith(gqlQuery.data.value?.organismsBase, _isEqual).map((organism) => ({ + label: organism.label, + value: organism.id })) ) /** - * Available species IDs, filtered based on other fields' selection (only - * species IDs which exists with selected options are present). + * Available organism IDs, filtered based on other fields' selection (only + * organism IDs which exists with selected options are present). */ -const speciesIdsFiltered = computed(() => - _uniqWith(gqlQuery.data.value?.genomes, _isEqual).map( - (genome) => genome.species?.id +const organismIdsFiltered = computed(() => + _uniqWith(gqlQuery.data.value?.organisms, _isEqual).map( + (organism) => organism.id ) ) /** - * Available options for species ID selection, with a `isDisabled` field on - * absence in `speciesIdsFiltered`. + * Available options for organism ID selection, with a `isDisabled` field on + * absence in `organismIdsFiltered`. */ -const speciesIdOptionsWithDisabling = computed(() => - speciesIdOptionsBase.value.map((speciesIdOption) => ({ - ...speciesIdOption, - isDisabled: !speciesIdsFiltered.value.some( - (speciesIdFiltered) => speciesIdFiltered === speciesIdOption.value +const organismIdOptionsWithDisabling = computed(() => + organismIdOptionsBase.value.map((organismIdOption) => ({ + ...organismIdOption, + isDisabled: !organismIdsFiltered.value.some( + (organismIdFiltered) => organismIdFiltered === organismIdOption.value ) })) ) @@ -230,17 +229,24 @@ const speciesIdOptionsWithDisabling = computed(() => <div class="grid grid-cols-[max-content_1fr] grid-rows-4 items-center gap-x-16 gap-y-8" > - <h3 class="text-lg font-bold">Guide subtype</h3> + <h3 class="text-lg font-bold">Guide subclasses</h3> <SelectButton - v-model="selection.guideSubtypes" - :options="guideSubtypeOptionsWithDisabling" + v-model="selection.guideSubclasses" + :options="guideSubclassOptionsWithDisabling" option-label="label" option-value="value" option-disabled="isDisabled" multiple class="mr-auto" - @update:model-value="(selectedGuideSubtypes: GuideType[]) => $emit('update:modelValue', {...selection, guideSubtypes:selectedGuideSubtypes })" - /> + @update:model-value="(selectedGuideSubclasses: GuideClass[]) => $emit('update:modelValue', {...selection, guideSubclasses:selectedGuideSubclasses })" + > + <template #option="{ option }"> + <BaseRenderedMarkdown + :stringified-markdown="option.label" + class="font-medium" + /> + </template> + </SelectButton> <h3 class="text-lg font-bold">Targets</h3> <MultiSelect @@ -280,7 +286,7 @@ const speciesIdOptionsWithDisabling = computed(() => </template> </MultiSelect> - <h3 class="text-lg font-bold">Modifications</h3> + <h3 class="text-lg font-bold">Guided modification types</h3> <SelectButton v-model="selection.modificationTypes" :options="modificationTypeOptionsWithDisabling" @@ -292,62 +298,60 @@ const speciesIdOptionsWithDisabling = computed(() => @update:model-value="(selectedModificationTypes: ModifType[]) => $emit('update:modelValue', {...selection, modificationTypes:selectedModificationTypes })" > <template #option="{ option }"> - <FormattedModificationType - :type-code="option.label" + <BaseRenderedMarkdown + :stringified-markdown="option.label" class="font-medium" /> </template> </SelectButton> - <h3 class="text-lg font-bold">Species</h3> + <h3 class="text-lg font-bold">Organisms</h3> <MultiSelect - v-model="selection.speciesIds" - :options="speciesIdOptionsWithDisabling" + v-model="selection.organismIds" + :options="organismIdOptionsWithDisabling" option-label="label" option-value="value" option-disabled="isDisabled" multiple class="mr-auto" - placeholder="Select species..." + placeholder="Select organism..." :max-selected-labels="3" display="chip" filter - @update:model-value="(selectedSpeciesIds: number[]) => $emit('update:modelValue', {...selection, speciesIds:selectedSpeciesIds })" + @update:model-value="(selectedOrganismIds: number[]) => $emit('update:modelValue', {...selection, organismIds:selectedOrganismIds })" > <template #value> <Chip - v-for="speciesId in selection.speciesIds.slice(0, 3)" - :key="speciesId" + v-for="organismId in selection.organismIds.slice(0, 3)" + :key="organismId" class="mr-1" removable @remove.stop=" $emit('update:modelValue', { ...selection, - speciesIds: _remove( - selection.speciesIds, - (currSpeciesId) => currSpeciesId === speciesId + organismIds: _remove( + selection.organismIds, + (currOrganismId) => currOrganismId === organismId ) }) " > - <em class="my-1.5"> - {{ - formatSpeciesName( - speciesIdOptionsBase.find( - (speciesIdOption) => speciesIdOption.value === speciesId - )?.label || '' - ) - }} - </em> + <BaseRenderedMarkdown + :stringified-markdown=" + organismIdOptionsBase.find( + (organismIdOption) => organismIdOption.value === organismId + )?.label || '' + " + class="my-1.5" + /> </Chip> - <template v-if="selection.speciesIds.length > 3"> - +{{ selection.speciesIds.length - 3 }} others... + + <template v-if="selection.organismIds.length > 3"> + +{{ selection.organismIds.length - 3 }} others... </template> </template> <template #option="{ option }"> - <em> - {{ formatSpeciesName(option.label) }} - </em> + <BaseRenderedMarkdown :stringified-markdown="option.label" /> </template> </MultiSelect> </div> diff --git a/src/components/ModificationSelectionForm.vue b/src/components/ModificationSelectionForm.vue index 2841e18..322bbc0 100644 --- a/src/components/ModificationSelectionForm.vue +++ b/src/components/ModificationSelectionForm.vue @@ -1,9 +1,299 @@ <script setup lang="ts"> +/** + * Vue imports + */ +import { computed, ref, toRef } from 'vue' +/** + * Component imports + */ +import BaseRenderedMarkdown from './BaseRenderedMarkdown.vue' +import Chip from 'primevue/chip' +import SelectButton from 'primevue/selectbutton' +import MultiSelect from 'primevue/multiselect' +import { ModifType } from '@/gql/codegen/graphql' +/** + * Other 3rd-party imports + */ +import { useQuery } from '@urql/vue' +import { + uniqWith as _uniqWith, + isEqual as _isEqual, + remove as _remove +} from 'lodash-es' +/** + * Utils imports + */ +import { modificationSelectionQuery } from '@/gql/queries' + +/** + * A selection. + */ +export interface ModificationSelectionModel { + /** Currently selected modification types. */ + modificationTypes: ModifType[] + /** Currently selected target names. */ + targetNames: string[] + /** Currently selected organism IDs.*/ + organismIds: number[] +} + +/** + * Component props + */ +defineProps<{ + /** The current selection. */ + modelValue?: ModificationSelectionModel +}>() + +/** + * Component events. + */ +defineEmits<{ + /** Event used to update the `v-model` value. */ + 'update:modelValue': [modelValue: ModificationSelectionModel] +}>() + +/** + * Current selection of parameters/filters for the modifications to pick. + */ +const selection = ref<ModificationSelectionModel>({ + modificationTypes: [], + targetNames: [], + organismIds: [] +}) + +/** + * Reactive urql GraphQL query object, updated with query state & response. + */ +const gqlQuery = useQuery({ + query: modificationSelectionQuery, + variables: toRef(() => ({ + targetNames: selection.value.targetNames?.length + ? selection.value.targetNames + : undefined, + modificationTypes: selection.value.modificationTypes?.length + ? selection.value.modificationTypes + : undefined, + organismIds: selection.value.organismIds?.length + ? selection.value.organismIds + : undefined + })) +}) + +/** + * Available options for modification type selection, independently of other + * fields' selection. + */ +const modificationTypeOptionsBase = computed(() => + _uniqWith(gqlQuery.data.value?.modificationsBase, _isEqual).map( + (modification) => ({ + label: modification.type_label, + value: modification.type + }) + ) +) + +/** + * Available modification types, filtered based on other fields' selection (only + * modification types which exists with selected options are present). + */ +const modificationTypesFiltered = computed(() => + _uniqWith(gqlQuery.data.value?.modifications, _isEqual).map( + (modification) => modification.type + ) +) + +/** + * Available options for modification type selection, with a `isDisabled` field + * on absence in `modificationTypesFiltered`. + */ +const modificationTypeOptionsWithDisabling = computed(() => + modificationTypeOptionsBase.value.map((modificationTypeOption) => ({ + ...modificationTypeOption, + isDisabled: !modificationTypesFiltered.value.some( + (modificationTypeFiltered) => + modificationTypeFiltered === modificationTypeOption.value + ) + })) +) + +/** + * Available options for target name selection, independently of other fields' + * selection. + */ +const targetNameOptionsBase = computed(() => + _uniqWith(gqlQuery.data.value?.targetsBase, _isEqual).map((target) => ({ + label: target.name, + value: target.name + })) +) + +/** + * Available target names, filtered based on other fields' selection (only + * target names which exists with selected options are present). + */ +const targetNamesFiltered = computed(() => + _uniqWith(gqlQuery.data.value?.targets, _isEqual).map((target) => target.name) +) + +/** + * Available options for target name selection, with a `isDisabled` field on + * absence in `targetNamesFiltered`. + */ +const targetNameOptionsWithDisabling = computed(() => + targetNameOptionsBase.value.map((targetNameOption) => ({ + ...targetNameOption, + isDisabled: !targetNamesFiltered.value.some( + (targetNameFiltered) => targetNameFiltered === targetNameOption.value + ) + })) +) + +/** + * Available options for organism ID selection, independently of other fields' + * selection. + */ +const organismIdOptionsBase = computed(() => + _uniqWith(gqlQuery.data.value?.organismsBase, _isEqual).map((organism) => ({ + label: organism.label, + value: organism.id + })) +) + +/** + * Available organism IDs, filtered based on other fields' selection (only + * organism IDs which exists with selected options are present). + */ +const organismIdsFiltered = computed(() => + _uniqWith(gqlQuery.data.value?.organisms, _isEqual).map( + (organism) => organism.id + ) +) + +/** + * Available options for organism ID selection, with a `isDisabled` field on + * absence in `organismIdsFiltered`. + */ +const organismIdOptionsWithDisabling = computed(() => + organismIdOptionsBase.value.map((organismIdOption) => ({ + ...organismIdOption, + isDisabled: !organismIdsFiltered.value.some( + (organismIdFiltered) => organismIdFiltered === organismIdOption.value + ) + })) +) </script> <template> <div class="grid grid-cols-[max-content_1fr] grid-rows-4 items-center gap-x-16 gap-y-8" > + <h3 class="text-lg font-bold">Modification types</h3> + <SelectButton + v-model="selection.modificationTypes" + :options="modificationTypeOptionsWithDisabling" + option-label="label" + option-value="value" + option-disabled="isDisabled" + multiple + class="mr-auto" + @update:model-value="(selectedModificationTypes: ModifType[]) => $emit('update:modelValue', {...selection, modificationTypes:selectedModificationTypes })" + > + <template #option="{ option }"> + <BaseRenderedMarkdown + :stringified-markdown="option.label" + class="font-medium" + /> + </template> + </SelectButton> + + <h3 class="text-lg font-bold">Targets</h3> + <MultiSelect + v-model="selection.targetNames" + :options="targetNameOptionsWithDisabling" + option-label="label" + option-value="value" + option-disabled="isDisabled" + multiple + class="mr-auto" + placeholder="Select targets..." + :max-selected-labels="3" + display="chip" + filter + @update:model-value="(selectedTargetNames: string[]) => $emit('update:modelValue', {...selection, targetNames:selectedTargetNames })" + > + <template #value> + <Chip + v-for="targetName in selection.targetNames.slice(0, 3)" + :key="targetName" + class="mr-1" + :label="targetName" + removable + @remove.stop=" + $emit('update:modelValue', { + ...selection, + targetNames: _remove( + selection.targetNames, + (currTargetName) => currTargetName === targetName + ) + }) + " + /> + <template v-if="selection.targetNames.length > 3"> + +{{ selection.targetNames.length - 3 }} others... + </template> + </template> + </MultiSelect> + + <h3 class="text-lg font-bold">Organism</h3> + <MultiSelect + v-model="selection.organismIds" + :options="organismIdOptionsWithDisabling" + option-label="label" + option-value="value" + option-disabled="isDisabled" + multiple + class="mr-auto" + placeholder="Select organism..." + :max-selected-labels="3" + display="chip" + filter + @update:model-value="(selectedOrganismIds: number[]) => $emit('update:modelValue', {...selection, organismIds:selectedOrganismIds })" + > + <template #value> + <Chip + v-for="organismId in selection.organismIds.slice(0, 3)" + :key="organismId" + class="mr-1" + removable + @remove.stop=" + $emit('update:modelValue', { + ...selection, + organismIds: _remove( + selection.organismIds, + (currOrganismId) => currOrganismId === organismId + ) + }) + " + > + <BaseRenderedMarkdown + class="my-1.5" + :stringified-markdown=" + organismIdOptionsBase.find( + (organismIdOption) => organismIdOption.value === organismId + )?.label || '' + " + /> + </Chip> + + <template v-if="selection.organismIds.length > 3"> + +{{ selection.organismIds.length - 3 }} others... + </template> + </template> + + <template #option="{ option }"> + <BaseRenderedMarkdown :stringified-markdown="option.label" /> + </template> + </MultiSelect> </div> </template> diff --git a/src/gql/codegen/gql.ts b/src/gql/codegen/gql.ts index a2358ec..883354e 100644 --- a/src/gql/codegen/gql.ts +++ b/src/gql/codegen/gql.ts @@ -14,7 +14,8 @@ import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document- */ const documents = { "\n query organismListQuery {\n organisms {\n id\n label\n shortname\n }\n }\n": types.OrganismListQueryDocument, - "\n query guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n name\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n": types.GuideSelectionQueryDocument, + "\n query modificationSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n": types.ModificationSelectionQueryDocument, + "\n query guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guidesBase: guides {\n subclass\n subclass_label\n }\n\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n": types.GuideSelectionQueryDocument, "\n query tableEntriesQuery {\n tableEntries {\n id\n modification {\n id\n name\n position\n symbol_label\n type\n type_short_label\n target {\n id\n name\n class\n unit\n length\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n }\n }\n }\n }\n }\n guide {\n id\n name\n class\n subclass_label\n length\n seq\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n length\n }\n }\n }\n host_genes\n }\n organism {\n id\n label\n name\n }\n }\n\n targets {\n name\n }\n\n organisms {\n label\n id\n }\n }\n": types.TableEntriesQueryDocument, "\n query organismByIdQuery($id: Int) {\n organisms(where: { id: $id }) {\n id\n label\n shortname\n genomes {\n sequences(where: { graphql_type: Chromosome }) {\n id\n name\n altnames\n description\n length\n graphql_type\n guides: featuresConnection(where: { node: { graphql_type: Guide } }) {\n totalCount\n }\n }\n }\n }\n\n modifications(where: { target: { genome: { organism: { id: $id } } } }) {\n id\n name\n symbol_label\n type_short_label\n guidesAggregate {\n count\n }\n }\n\n allModificationsCount: modificationsAggregate(\n where: { target: { genome: { organism: { id: $id } } } }\n ) {\n count\n }\n\n nonOrphanModificationsCount: modificationsAggregate(\n where: {\n guidesAggregate: { count_GT: 0 }\n target: { genome: { organism: { id: $id } } }\n }\n ) {\n count\n }\n\n targets(where: { genome: { organism: { id: $id } } }) {\n id\n name\n class\n unit\n modificationsAggregate {\n count\n }\n }\n\n allTargetsCount: targetsAggregate(\n where: { genome: { organism: { id: $id } } }\n ) {\n count\n }\n\n guides(where: { genome: { organism: { id: $id } } }) {\n id\n name\n class\n subclass\n subclass_label\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n }\n node {\n id\n }\n }\n }\n modificationsAggregate {\n count\n }\n }\n\n allGuidesCount: guidesAggregate(\n where: { genome: { organism: { id: $id } } }\n ) {\n count\n }\n\n nonOrphanGuidesCount: guidesAggregate(\n where: {\n modificationsAggregate: { count_GT: 0 }\n genome: { organism: { id: $id } }\n }\n ) {\n count\n }\n }\n": types.OrganismByIdQueryDocument, "\n query modificationByIdQuery($id: ID) {\n modifications(where: { id: $id }) {\n id\n name\n type\n type_short_label\n symbol\n symbol_label\n position\n target {\n id\n name\n class\n unit\n genome {\n organism {\n id\n label\n }\n }\n }\n # chebi_id\n # so_id\n\n interactions {\n duplexes {\n primaryStrandsConnection: strandsConnection(\n where: { edge: { primary: true } }\n ) {\n edges {\n properties {\n start\n end\n primary\n }\n node {\n seq\n parentConnection {\n edges {\n properties {\n start\n end\n }\n }\n }\n }\n }\n }\n secondaryStrandsConnection: strandsConnection(\n where: { edge: { primary: false } }\n ) {\n edges {\n properties {\n start\n end\n primary\n }\n node {\n seq\n parentConnection {\n edges {\n properties {\n start\n end\n }\n }\n }\n }\n }\n }\n index\n }\n guide {\n id\n name\n subclass_label\n class\n }\n target {\n id\n name\n unit\n class\n }\n }\n }\n\n guides(where: { modifications_SOME: { id: $id } }) {\n id\n name\n class\n }\n }\n": types.ModificationByIdQueryDocument, @@ -45,7 +46,11 @@ export function graphql(source: "\n query organismListQuery {\n organisms {\ /** * 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 guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n name\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n"): (typeof documents)["\n query guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n name\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n"]; +export function graphql(source: "\n query modificationSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n"): (typeof documents)["\n query modificationSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n"]; +/** + * 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 guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guidesBase: guides {\n subclass\n subclass_label\n }\n\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n"): (typeof documents)["\n query guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guidesBase: guides {\n subclass\n subclass_label\n }\n\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\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 ec44230..c3850e7 100644 --- a/src/gql/codegen/graphql.ts +++ b/src/gql/codegen/graphql.ts @@ -8860,6 +8860,15 @@ export type OrganismListQueryQueryVariables = Exact<{ [key: string]: never; }>; export type OrganismListQueryQuery = { __typename?: 'Query', organisms: Array<{ __typename?: 'Organism', id: number, label: string, shortname: string }> }; +export type ModificationSelectionQueryQueryVariables = Exact<{ + modificationTypes?: InputMaybe<Array<InputMaybe<ModifType>> | InputMaybe<ModifType>>; + targetNames?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>> | InputMaybe<Scalars['String']['input']>>; + organismIds?: InputMaybe<Array<Scalars['Int']['input']> | Scalars['Int']['input']>; +}>; + + +export type ModificationSelectionQueryQuery = { __typename?: 'Query', targetsBase: Array<{ __typename?: 'Target', name?: string | null }>, targets: Array<{ __typename?: 'Target', name?: string | null }>, modificationsBase: Array<{ __typename?: 'Modification', type_label?: string | null, type?: ModifType | null }>, modifications: Array<{ __typename?: 'Modification', type?: ModifType | null }>, organismsBase: Array<{ __typename?: 'Organism', label: string, id: number }>, organisms: Array<{ __typename?: 'Organism', id: number }> }; + export type GuideSelectionQueryQueryVariables = Exact<{ guideSubclasses?: InputMaybe<Array<GuideClass> | GuideClass>; targetNames?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>> | InputMaybe<Scalars['String']['input']>>; @@ -8868,7 +8877,7 @@ export type GuideSelectionQueryQueryVariables = Exact<{ }>; -export type GuideSelectionQueryQuery = { __typename?: 'Query', guides: Array<{ __typename?: 'Guide', subclass: GuideClass }>, targetsBase: Array<{ __typename?: 'Target', name?: string | null }>, targets: Array<{ __typename?: 'Target', name?: string | null }>, modifications: Array<{ __typename?: 'Modification', type?: ModifType | null }>, organismsBase: Array<{ __typename?: 'Organism', name: string, id: number }>, organisms: Array<{ __typename?: 'Organism', id: number }> }; +export type GuideSelectionQueryQuery = { __typename?: 'Query', guidesBase: Array<{ __typename?: 'Guide', subclass: GuideClass, subclass_label: string }>, guides: Array<{ __typename?: 'Guide', subclass: GuideClass }>, targetsBase: Array<{ __typename?: 'Target', name?: string | null }>, targets: Array<{ __typename?: 'Target', name?: string | null }>, modificationsBase: Array<{ __typename?: 'Modification', type_label?: string | null, type?: ModifType | null }>, modifications: Array<{ __typename?: 'Modification', type?: ModifType | null }>, organismsBase: Array<{ __typename?: 'Organism', label: string, id: number }>, organisms: Array<{ __typename?: 'Organism', id: number }> }; export type TableEntriesQueryQueryVariables = Exact<{ [key: string]: never; }>; @@ -8917,7 +8926,8 @@ export type DatabaseStatisticsQueryQuery = { __typename?: 'Query', organismsAggr export const OrganismListQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"organismListQuery"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"shortname"}}]}}]}}]} as unknown as DocumentNode<OrganismListQueryQuery, OrganismListQueryQueryVariables>; -export const GuideSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"guideSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"GuideClass"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guide"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<GuideSelectionQueryQuery, GuideSelectionQueryQueryVariables>; +export const ModificationSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"modificationSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<ModificationSelectionQueryQuery, ModificationSelectionQueryQueryVariables>; +export const GuideSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"guideSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"GuideClass"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"guidesBase"},"name":{"kind":"Name","value":"guides"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}}]}},{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guide"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<GuideSelectionQueryQuery, GuideSelectionQueryQueryVariables>; 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":"symbol_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}},{"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"host_genes"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organism"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<TableEntriesQueryQuery, TableEntriesQueryQueryVariables>; export const OrganismByIdQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"organismByIdQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"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":"graphql_type"},"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":"altnames"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"graphql_type"}},{"kind":"Field","alias":{"kind":"Name","value":"guides"},"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":"graphql_type"},"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"symbol_label"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}},{"kind":"Field","name":{"kind":"Name","value":"guidesAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"allModificationsCount"},"name":{"kind":"Name","value":"modificationsAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"nonOrphanModificationsCount"},"name":{"kind":"Name","value":"modificationsAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"guidesAggregate"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"count_GT"},"value":{"kind":"IntValue","value":"0"}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}]}}],"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"modificationsAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"allTargetsCount"},"name":{"kind":"Name","value":"targetsAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"class"}},{"kind":"Field","name":{"kind":"Name","value":"subclass"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"allGuidesCount"},"name":{"kind":"Name","value":"guidesAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"nonOrphanGuidesCount"},"name":{"kind":"Name","value":"guidesAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modificationsAggregate"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"count_GT"},"value":{"kind":"IntValue","value":"0"}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}}]} as unknown as DocumentNode<OrganismByIdQueryQuery, OrganismByIdQueryQueryVariables>; 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":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}],"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":"type_short_label"}},{"kind":"Field","name":{"kind":"Name","value":"symbol"}},{"kind":"Field","name":{"kind":"Name","value":"symbol_label"}},{"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"genome"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organism"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}}]}}]}}]}},{"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":"properties"},"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":"properties"},"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":"properties"},"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":"properties"},"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":"subclass_label"}},{"kind":"Field","name":{"kind":"Name","value":"class"}}]}},{"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":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"class"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"class"}}]}}]}}]} as unknown as DocumentNode<ModificationByIdQueryQuery, ModificationByIdQueryQueryVariables>; diff --git a/src/gql/queries.ts b/src/gql/queries.ts index e0f9905..0e50fc0 100644 --- a/src/gql/queries.ts +++ b/src/gql/queries.ts @@ -16,6 +16,64 @@ export const organismListQuery = graphql(/* GraphQL */ ` } `) +/** + * Get available data in the base matching given filters for guide selection. + */ +export const modificationSelectionQuery = graphql(/* GraphQL */ ` + query modificationSelectionQuery( + $modificationTypes: [ModifType] + $targetNames: [String] + $organismIds: [Int!] + ) { + targetsBase: targets { + name + } + + targets( + where: { + modifications_SOME: { type_IN: $modificationTypes } + genome: { organism: { id_IN: $organismIds } } + } + ) { + name + } + + modificationsBase: modifications { + type_label + type + } + + modifications( + where: { + target: { + name_IN: $targetNames + genome: { organism: { id_IN: $organismIds } } + } + } + ) { + type + } + + organismsBase: organisms { + label + id + } + + organisms( + where: { + tableEntries_SOME: { + modification: { + type_IN: $modificationTypes + target: { name_IN: $targetNames } + } + } + } + ) { + id + } + } +`) + /** * Get available data in the base matching given filters for guide selection. */ @@ -26,6 +84,11 @@ export const guideSelectionQuery = graphql(/* GraphQL */ ` $modificationTypes: [ModifType] $organismIds: [Int!] ) { + guidesBase: guides { + subclass + subclass_label + } + guides( where: { modifications_SOME: { @@ -54,6 +117,11 @@ export const guideSelectionQuery = graphql(/* GraphQL */ ` name } + modificationsBase: modifications { + type_label + type + } + modifications( where: { target: { @@ -67,7 +135,7 @@ export const guideSelectionQuery = graphql(/* GraphQL */ ` } organismsBase: organisms { - name + label id } diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index 853d3f8..cf80bff 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -198,19 +198,6 @@ const menuItems = computed<MenuItem[]>(() => [ }, iconComponent: IconFa6SolidTable }, - // ...Object.values(ModifType) - // .filter((modificationType) => modificationType !== ModifType.Other) - // .map((modificationType) => ({ - // label: modificationType, - // indent: 1, - // route: { - // name: 'data-table', - // query: { - // columns: LIST_TARGETS_TABLE_COLUMNS, - // guideSubtype: modificationType - // } - // } - // })), { key: 'targetSelection', label: 'Advanced target selection', diff --git a/src/views/SelectionView.vue b/src/views/SelectionView.vue index 80fb224..2faca23 100644 --- a/src/views/SelectionView.vue +++ b/src/views/SelectionView.vue @@ -8,8 +8,12 @@ import { useRouter } from 'vue-router' * Components imports */ import MainLayout from '@/layouts/MainLayout.vue' -import ModificationSelectionForm from '@/components/ModificationSelectionForm.vue' -import GuideSelectionForm from '@/components/GuideSelectionForm.vue' +import ModificationSelectionForm, { + type ModificationSelectionModel +} from '@/components/ModificationSelectionForm.vue' +import GuideSelectionForm, { + type GuideSelectionModel +} from '@/components/GuideSelectionForm.vue' import TargetSelectionForm from '@/components/TargetSelectionForm.vue' import TabView, { type TabViewChangeEvent } from 'primevue/tabview' import TabPanel from 'primevue/tabpanel' @@ -96,7 +100,7 @@ const updateUrlQuery = (e: TabViewChangeEvent) => { * The current selection. */ const selection = ref<{ - modification?: undefined + modification?: ModificationSelectionModel guide?: GuideSelectionModel target?: undefined }>({ @@ -110,10 +114,13 @@ const selection = ref<{ * selection. */ const tableFilters = computed(() => ({ - guideSubtype: selection.value[activeMode.value]?.guideSubtypes, + guideSubclass: + activeMode.value === 'guide' + ? selection.value[activeMode.value]?.guideSubclasses + : undefined, targetName: selection.value[activeMode.value]?.targetNames, modificationType: selection.value[activeMode.value]?.modificationTypes, - speciesId: selection.value[activeMode.value]?.speciesIds + organismId: selection.value[activeMode.value]?.organismIds })) /** @@ -190,7 +197,7 @@ const activeModeTableColumns = computed(() => { @tab-change="updateUrlQuery" > <TabPanel header="Modification"> - <ModificationSelectionForm /> + <ModificationSelectionForm v-model="selection.modification" /> </TabPanel> <TabPanel header="Guide"> <GuideSelectionForm v-model="selection.guide" /> -- GitLab From d76984d6d291f645f50a40ae0dfc80732d4bc4c4 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:44:24 +0200 Subject: [PATCH 28/54] feat(advanced-selection): :sparkles: add actual target selection form --- src/components/GuideSelectionForm.vue | 2 +- src/components/ModificationSelectionForm.vue | 6 +- src/components/TargetSelectionForm.vue | 288 +++++++++++++++++++ src/gql/codegen/gql.ts | 4 +- src/gql/codegen/graphql.ts | 6 +- src/gql/queries.ts | 7 +- src/views/SelectionView.vue | 8 +- 7 files changed, 306 insertions(+), 15 deletions(-) diff --git a/src/components/GuideSelectionForm.vue b/src/components/GuideSelectionForm.vue index 8b91b7e..3dae7db 100644 --- a/src/components/GuideSelectionForm.vue +++ b/src/components/GuideSelectionForm.vue @@ -26,7 +26,7 @@ import { import { guideSelectionQuery } from '@/gql/queries' /** - * A selection. + * A guide selection. */ export interface GuideSelectionModel { /** Currently selected guide subclasses. */ diff --git a/src/components/ModificationSelectionForm.vue b/src/components/ModificationSelectionForm.vue index 322bbc0..4437878 100644 --- a/src/components/ModificationSelectionForm.vue +++ b/src/components/ModificationSelectionForm.vue @@ -23,10 +23,10 @@ import { /** * Utils imports */ -import { modificationSelectionQuery } from '@/gql/queries' +import { modificationAndTargetSelectionQuery } from '@/gql/queries' /** - * A selection. + * A modification selection. */ export interface ModificationSelectionModel { /** Currently selected modification types. */ @@ -66,7 +66,7 @@ const selection = ref<ModificationSelectionModel>({ * Reactive urql GraphQL query object, updated with query state & response. */ const gqlQuery = useQuery({ - query: modificationSelectionQuery, + query: modificationAndTargetSelectionQuery, variables: toRef(() => ({ targetNames: selection.value.targetNames?.length ? selection.value.targetNames diff --git a/src/components/TargetSelectionForm.vue b/src/components/TargetSelectionForm.vue index 2841e18..259a39c 100644 --- a/src/components/TargetSelectionForm.vue +++ b/src/components/TargetSelectionForm.vue @@ -1,9 +1,297 @@ <script setup lang="ts"> +/** + * Vue imports + */ +import { computed, ref, toRef } from 'vue' +/** + * Component imports + */ +import BaseRenderedMarkdown from './BaseRenderedMarkdown.vue' +import Chip from 'primevue/chip' +import SelectButton from 'primevue/selectbutton' +import MultiSelect from 'primevue/multiselect' +import { ModifType } from '@/gql/codegen/graphql' +/** + * Other 3rd-party imports + */ +import { useQuery } from '@urql/vue' +import { + uniqWith as _uniqWith, + isEqual as _isEqual, + remove as _remove +} from 'lodash-es' +/** + * Utils imports + */ +import { modificationAndTargetSelectionQuery } from '@/gql/queries' + +/** + * A selection. + */ +export interface TargetSelectionModel { + /** Currently selected target names. */ + targetNames: string[] + /** Currently selected modification types. */ + modificationTypes: ModifType[] + /** Currently selected species IDs.*/ + organismIds: number[] +} + +/** + * Component props + */ +defineProps<{ + /** The current selection. */ + modelValue?: TargetSelectionModel +}>() + +/** + * Component events. + */ +defineEmits<{ + /** Event used to update the `v-model` value. */ + 'update:modelValue': [modelValue: TargetSelectionModel] +}>() + +/** + * Current selection of parameters/filters for the modifications to pick. + */ +const selection = ref<TargetSelectionModel>({ + modificationTypes: [], + targetNames: [], + organismIds: [] +}) + +/** + * Reactive urql GraphQL query object, updated with query state & response. + */ +const gqlQuery = useQuery({ + query: modificationAndTargetSelectionQuery, + variables: toRef(() => ({ + targetNames: selection.value.targetNames?.length + ? selection.value.targetNames + : undefined, + modificationTypes: selection.value.modificationTypes?.length + ? selection.value.modificationTypes + : undefined, + speciesIds: selection.value.organismIds?.length + ? selection.value.organismIds + : undefined + })) +}) + +/** + * Available options for modification type selection, independently of other + * fields' selection. + */ +const modificationTypeOptionsBase = computed(() => + _uniqWith(gqlQuery.data.value?.modificationsBase, _isEqual).map( + (modification) => ({ + label: modification.type_label, + value: modification.type + }) + ) +) + +/** + * Available modification types, filtered based on other fields' selection (only + * modification types which exists with selected options are present). + */ +const modificationTypesFiltered = computed(() => + _uniqWith(gqlQuery.data.value?.modifications, _isEqual).map( + (modification) => modification.type + ) +) + +/** + * Available options for modification type selection, with a `isDisabled` field + * on absence in `modificationTypesFiltered`. + */ +const modificationTypeOptionsWithDisabling = computed(() => + modificationTypeOptionsBase.value.map((modificationTypeOption) => ({ + ...modificationTypeOption, + isDisabled: !modificationTypesFiltered.value.some( + (modificationTypeFiltered) => + modificationTypeFiltered === modificationTypeOption.value + ) + })) +) + +/** + * Available options for target name selection, independently of other fields' + * selection. + */ +const targetNameOptionsBase = computed(() => + _uniqWith(gqlQuery.data.value?.targetsBase, _isEqual).map((target) => ({ + label: target.name, + value: target.name + })) +) + +/** + * Available target names, filtered based on other fields' selection (only + * target names which exists with selected options are present). + */ +const targetNamesFiltered = computed(() => + _uniqWith(gqlQuery.data.value?.targets, _isEqual).map((target) => target.name) +) + +/** + * Available options for target name selection, with a `isDisabled` field on + * absence in `targetNamesFiltered`. + */ +const targetNameOptionsWithDisabling = computed(() => + targetNameOptionsBase.value.map((targetNameOption) => ({ + ...targetNameOption, + isDisabled: !targetNamesFiltered.value.some( + (targetNameFiltered) => targetNameFiltered === targetNameOption.value + ) + })) +) + +/** + * Available options for organism ID selection, independently of other fields' + * selection. + */ +const organismIdOptionsBase = computed(() => + _uniqWith(gqlQuery.data.value?.organismsBase, _isEqual).map((organism) => ({ + label: organism.label, + value: organism.id + })) +) + +/** + * Available organism IDs, filtered based on other fields' selection (only + * organism IDs which exists with selected options are present). + */ +const organismIdsFiltered = computed(() => + _uniqWith(gqlQuery.data.value?.organisms, _isEqual).map( + (organism) => organism.id + ) +) + +/** + * Available options for organism ID selection, with a `isDisabled` field on + * absence in `organismIdsFiltered`. + */ +const organismIdOptionsWithDisabling = computed(() => + organismIdOptionsBase.value.map((organismIdOption) => ({ + ...organismIdOption, + isDisabled: !organismIdsFiltered.value.some( + (organismIdFiltered) => organismIdFiltered === organismIdOption.value + ) + })) +) </script> <template> <div class="grid grid-cols-[max-content_1fr] grid-rows-4 items-center gap-x-16 gap-y-8" > + <h3 class="text-lg font-bold">Targets</h3> + <MultiSelect + v-model="selection.targetNames" + :options="targetNameOptionsWithDisabling" + option-label="label" + option-value="value" + option-disabled="isDisabled" + multiple + class="mr-auto" + placeholder="Select targets..." + :max-selected-labels="3" + display="chip" + filter + @update:model-value="(selectedTargetNames: string[]) => $emit('update:modelValue', {...selection, targetNames:selectedTargetNames })" + > + <template #value> + <Chip + v-for="targetName in selection.targetNames.slice(0, 3)" + :key="targetName" + class="mr-1" + :label="targetName" + removable + @remove.stop=" + $emit('update:modelValue', { + ...selection, + targetNames: _remove( + selection.targetNames, + (currTargetName) => currTargetName === targetName + ) + }) + " + /> + <template v-if="selection.targetNames.length > 3"> + +{{ selection.targetNames.length - 3 }} others... + </template> + </template> + </MultiSelect> + + <h3 class="text-lg font-bold">Modification types</h3> + <SelectButton + v-model="selection.modificationTypes" + :options="modificationTypeOptionsWithDisabling" + option-label="label" + option-value="value" + option-disabled="isDisabled" + multiple + class="mr-auto" + @update:model-value="(selectedModificationTypes: ModifType[]) => $emit('update:modelValue', {...selection, modificationTypes:selectedModificationTypes })" + > + <template #option="{ option }"> + <BaseRenderedMarkdown + :stringified-markdown="option.label" + class="font-medium" + /> + </template> + </SelectButton> + + <h3 class="text-lg font-bold">Organisms</h3> + <MultiSelect + v-model="selection.organismIds" + :options="organismIdOptionsWithDisabling" + option-label="label" + option-value="value" + option-disabled="isDisabled" + multiple + class="mr-auto" + placeholder="Select organisms..." + :max-selected-labels="3" + display="chip" + filter + @update:model-value="(selectedOrganismIds: number[]) => $emit('update:modelValue', {...selection, organismIds:selectedOrganismIds })" + > + <template #value> + <Chip + v-for="organismId in selection.organismIds.slice(0, 3)" + :key="organismId" + class="mr-1" + removable + @remove.stop=" + $emit('update:modelValue', { + ...selection, + organismIds: _remove( + selection.organismIds, + (currOrganismId) => currOrganismId === organismId + ) + }) + " + > + <BaseRenderedMarkdown + class="my-1.5" + :stringified-markdown=" + organismIdOptionsBase.find( + (organismIdOption) => organismIdOption.value === organismId + )?.label || '' + " + /> + </Chip> + <template v-if="selection.organismIds.length > 3"> + +{{ selection.organismIds.length - 3 }} others... + </template> + </template> + <template #option="{ option }"> + <BaseRenderedMarkdown :stringified-markdown="option.label" /> + </template> + </MultiSelect> </div> </template> diff --git a/src/gql/codegen/gql.ts b/src/gql/codegen/gql.ts index 883354e..899377e 100644 --- a/src/gql/codegen/gql.ts +++ b/src/gql/codegen/gql.ts @@ -14,7 +14,7 @@ import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document- */ const documents = { "\n query organismListQuery {\n organisms {\n id\n label\n shortname\n }\n }\n": types.OrganismListQueryDocument, - "\n query modificationSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n": types.ModificationSelectionQueryDocument, + "\n query modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n": types.ModificationAndTargetSelectionQueryDocument, "\n query guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guidesBase: guides {\n subclass\n subclass_label\n }\n\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n": types.GuideSelectionQueryDocument, "\n query tableEntriesQuery {\n tableEntries {\n id\n modification {\n id\n name\n position\n symbol_label\n type\n type_short_label\n target {\n id\n name\n class\n unit\n length\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n }\n }\n }\n }\n }\n guide {\n id\n name\n class\n subclass_label\n length\n seq\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n length\n }\n }\n }\n host_genes\n }\n organism {\n id\n label\n name\n }\n }\n\n targets {\n name\n }\n\n organisms {\n label\n id\n }\n }\n": types.TableEntriesQueryDocument, "\n query organismByIdQuery($id: Int) {\n organisms(where: { id: $id }) {\n id\n label\n shortname\n genomes {\n sequences(where: { graphql_type: Chromosome }) {\n id\n name\n altnames\n description\n length\n graphql_type\n guides: featuresConnection(where: { node: { graphql_type: Guide } }) {\n totalCount\n }\n }\n }\n }\n\n modifications(where: { target: { genome: { organism: { id: $id } } } }) {\n id\n name\n symbol_label\n type_short_label\n guidesAggregate {\n count\n }\n }\n\n allModificationsCount: modificationsAggregate(\n where: { target: { genome: { organism: { id: $id } } } }\n ) {\n count\n }\n\n nonOrphanModificationsCount: modificationsAggregate(\n where: {\n guidesAggregate: { count_GT: 0 }\n target: { genome: { organism: { id: $id } } }\n }\n ) {\n count\n }\n\n targets(where: { genome: { organism: { id: $id } } }) {\n id\n name\n class\n unit\n modificationsAggregate {\n count\n }\n }\n\n allTargetsCount: targetsAggregate(\n where: { genome: { organism: { id: $id } } }\n ) {\n count\n }\n\n guides(where: { genome: { organism: { id: $id } } }) {\n id\n name\n class\n subclass\n subclass_label\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n }\n node {\n id\n }\n }\n }\n modificationsAggregate {\n count\n }\n }\n\n allGuidesCount: guidesAggregate(\n where: { genome: { organism: { id: $id } } }\n ) {\n count\n }\n\n nonOrphanGuidesCount: guidesAggregate(\n where: {\n modificationsAggregate: { count_GT: 0 }\n genome: { organism: { id: $id } }\n }\n ) {\n count\n }\n }\n": types.OrganismByIdQueryDocument, @@ -46,7 +46,7 @@ export function graphql(source: "\n query organismListQuery {\n organisms {\ /** * 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 modificationSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n"): (typeof documents)["\n query modificationSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n"]; +export function graphql(source: "\n query modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n"): (typeof documents)["\n query modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\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 c3850e7..c513d6d 100644 --- a/src/gql/codegen/graphql.ts +++ b/src/gql/codegen/graphql.ts @@ -8860,14 +8860,14 @@ export type OrganismListQueryQueryVariables = Exact<{ [key: string]: never; }>; export type OrganismListQueryQuery = { __typename?: 'Query', organisms: Array<{ __typename?: 'Organism', id: number, label: string, shortname: string }> }; -export type ModificationSelectionQueryQueryVariables = Exact<{ +export type ModificationAndTargetSelectionQueryQueryVariables = Exact<{ modificationTypes?: InputMaybe<Array<InputMaybe<ModifType>> | InputMaybe<ModifType>>; targetNames?: InputMaybe<Array<InputMaybe<Scalars['String']['input']>> | InputMaybe<Scalars['String']['input']>>; organismIds?: InputMaybe<Array<Scalars['Int']['input']> | Scalars['Int']['input']>; }>; -export type ModificationSelectionQueryQuery = { __typename?: 'Query', targetsBase: Array<{ __typename?: 'Target', name?: string | null }>, targets: Array<{ __typename?: 'Target', name?: string | null }>, modificationsBase: Array<{ __typename?: 'Modification', type_label?: string | null, type?: ModifType | null }>, modifications: Array<{ __typename?: 'Modification', type?: ModifType | null }>, organismsBase: Array<{ __typename?: 'Organism', label: string, id: number }>, organisms: Array<{ __typename?: 'Organism', id: number }> }; +export type ModificationAndTargetSelectionQueryQuery = { __typename?: 'Query', targetsBase: Array<{ __typename?: 'Target', name?: string | null }>, targets: Array<{ __typename?: 'Target', name?: string | null }>, modificationsBase: Array<{ __typename?: 'Modification', type_label?: string | null, type?: ModifType | null }>, modifications: Array<{ __typename?: 'Modification', type?: ModifType | null }>, organismsBase: Array<{ __typename?: 'Organism', label: string, id: number }>, organisms: Array<{ __typename?: 'Organism', id: number }> }; export type GuideSelectionQueryQueryVariables = Exact<{ guideSubclasses?: InputMaybe<Array<GuideClass> | GuideClass>; @@ -8926,7 +8926,7 @@ export type DatabaseStatisticsQueryQuery = { __typename?: 'Query', organismsAggr export const OrganismListQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"organismListQuery"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"shortname"}}]}}]}}]} as unknown as DocumentNode<OrganismListQueryQuery, OrganismListQueryQueryVariables>; -export const ModificationSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"modificationSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<ModificationSelectionQueryQuery, ModificationSelectionQueryQueryVariables>; +export const ModificationAndTargetSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"modificationAndTargetSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<ModificationAndTargetSelectionQueryQuery, ModificationAndTargetSelectionQueryQueryVariables>; export const GuideSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"guideSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"GuideClass"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"guidesBase"},"name":{"kind":"Name","value":"guides"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}}]}},{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guide"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<GuideSelectionQueryQuery, GuideSelectionQueryQueryVariables>; 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":"symbol_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}},{"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"host_genes"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organism"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<TableEntriesQueryQuery, TableEntriesQueryQueryVariables>; export const OrganismByIdQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"organismByIdQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"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":"graphql_type"},"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":"altnames"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"graphql_type"}},{"kind":"Field","alias":{"kind":"Name","value":"guides"},"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":"graphql_type"},"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"symbol_label"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}},{"kind":"Field","name":{"kind":"Name","value":"guidesAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"allModificationsCount"},"name":{"kind":"Name","value":"modificationsAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"nonOrphanModificationsCount"},"name":{"kind":"Name","value":"modificationsAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"guidesAggregate"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"count_GT"},"value":{"kind":"IntValue","value":"0"}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}]}}],"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"modificationsAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"allTargetsCount"},"name":{"kind":"Name","value":"targetsAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"class"}},{"kind":"Field","name":{"kind":"Name","value":"subclass"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"allGuidesCount"},"name":{"kind":"Name","value":"guidesAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"nonOrphanGuidesCount"},"name":{"kind":"Name","value":"guidesAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modificationsAggregate"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"count_GT"},"value":{"kind":"IntValue","value":"0"}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}}]} as unknown as DocumentNode<OrganismByIdQueryQuery, OrganismByIdQueryQueryVariables>; diff --git a/src/gql/queries.ts b/src/gql/queries.ts index 0e50fc0..7452754 100644 --- a/src/gql/queries.ts +++ b/src/gql/queries.ts @@ -17,10 +17,11 @@ export const organismListQuery = graphql(/* GraphQL */ ` `) /** - * Get available data in the base matching given filters for guide selection. + * Get available data in the base matching given filters for modification and + * target selection. */ -export const modificationSelectionQuery = graphql(/* GraphQL */ ` - query modificationSelectionQuery( +export const modificationAndTargetSelectionQuery = graphql(/* GraphQL */ ` + query modificationAndTargetSelectionQuery( $modificationTypes: [ModifType] $targetNames: [String] $organismIds: [Int!] diff --git a/src/views/SelectionView.vue b/src/views/SelectionView.vue index 2faca23..ba5f512 100644 --- a/src/views/SelectionView.vue +++ b/src/views/SelectionView.vue @@ -14,7 +14,9 @@ import ModificationSelectionForm, { import GuideSelectionForm, { type GuideSelectionModel } from '@/components/GuideSelectionForm.vue' -import TargetSelectionForm from '@/components/TargetSelectionForm.vue' +import TargetSelectionForm, { + type TargetSelectionModel +} from '@/components/TargetSelectionForm.vue' import TabView, { type TabViewChangeEvent } from 'primevue/tabview' import TabPanel from 'primevue/tabpanel' import Card from 'primevue/card' @@ -102,7 +104,7 @@ const updateUrlQuery = (e: TabViewChangeEvent) => { const selection = ref<{ modification?: ModificationSelectionModel guide?: GuideSelectionModel - target?: undefined + target?: TargetSelectionModel }>({ modification: undefined, guide: undefined, @@ -203,7 +205,7 @@ const activeModeTableColumns = computed(() => { <GuideSelectionForm v-model="selection.guide" /> </TabPanel> <TabPanel header="Target"> - <TargetSelectionForm /> + <TargetSelectionForm v-model="selection.target" /> </TabPanel> </TabView> </template> -- GitLab From 3499ba8647231cac9a6ec71e648f56b4bf60013e Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 11:44:24 +0200 Subject: [PATCH 29/54] feat(advanced-selection): :sparkles: group targets by their types in MultiSelect --- src/components/GuideSelectionForm.vue | 68 +++++++++++++++++--- src/components/ModificationSelectionForm.vue | 68 +++++++++++++++++--- src/components/TargetSelectionForm.vue | 68 +++++++++++++++++--- src/gql/codegen/gql.ts | 8 +-- src/gql/codegen/graphql.ts | 8 +-- src/gql/queries.ts | 2 + 6 files changed, 184 insertions(+), 38 deletions(-) diff --git a/src/components/GuideSelectionForm.vue b/src/components/GuideSelectionForm.vue index 3dae7db..3999bc5 100644 --- a/src/components/GuideSelectionForm.vue +++ b/src/components/GuideSelectionForm.vue @@ -128,7 +128,8 @@ const guideSubclassOptionsWithDisabling = computed(() => const targetNameOptionsBase = computed(() => _uniqWith(gqlQuery.data.value?.targetsBase, _isEqual).map((target) => ({ label: target.name, - value: target.name + value: target.name, + groupLabel: target.type })) ) @@ -142,15 +143,60 @@ const targetNamesFiltered = computed(() => /** * Available options for target name selection, with a `isDisabled` field on - * absence in `targetNamesFiltered`. + * absence in `targetNamesFiltered`, and grouped. */ -const targetNameOptionsWithDisabling = computed(() => - targetNameOptionsBase.value.map((targetNameOption) => ({ - ...targetNameOption, - isDisabled: !targetNamesFiltered.value.some( - (targetNameFiltered) => targetNameFiltered === targetNameOption.value - ) - })) +const targetNameOptionsWithDisablingGroups = computed(() => + targetNameOptionsBase.value.reduce( + (targetNameOptionsWithDisablingGroups: any[], targetNameOption) => { + const targetNameOptionGroupIndex = + targetNameOptionsWithDisablingGroups.findIndex( + (group) => group.label === targetNameOption.groupLabel + ) + return targetNameOptionGroupIndex !== -1 + ? [ + ...targetNameOptionsWithDisablingGroups.slice( + 0, + targetNameOptionGroupIndex + ), + { + ...targetNameOptionsWithDisablingGroups[ + targetNameOptionGroupIndex + ], + children: [ + ...targetNameOptionsWithDisablingGroups[ + targetNameOptionGroupIndex + ].children, + { + ...targetNameOption, + isDisabled: !targetNamesFiltered.value.some( + (targetNameFiltered) => + targetNameFiltered === targetNameOption.value + ) + } + ] + }, + ...targetNameOptionsWithDisablingGroups.slice( + targetNameOptionGroupIndex + 1 + ) + ] + : [ + ...targetNameOptionsWithDisablingGroups, + { + label: targetNameOption.groupLabel, + children: [ + { + ...targetNameOption, + isDisabled: !targetNamesFiltered.value.some( + (targetNameFiltered) => + targetNameFiltered === targetNameOption.value + ) + } + ] + } + ] + }, + [] + ) ) /** @@ -251,10 +297,12 @@ const organismIdOptionsWithDisabling = computed(() => <h3 class="text-lg font-bold">Targets</h3> <MultiSelect v-model="selection.targetNames" - :options="targetNameOptionsWithDisabling" + :options="targetNameOptionsWithDisablingGroups" option-label="label" option-value="value" option-disabled="isDisabled" + option-group-label="label" + option-group-children="children" multiple class="mr-auto" placeholder="Select targets..." diff --git a/src/components/ModificationSelectionForm.vue b/src/components/ModificationSelectionForm.vue index 4437878..47a5890 100644 --- a/src/components/ModificationSelectionForm.vue +++ b/src/components/ModificationSelectionForm.vue @@ -124,7 +124,8 @@ const modificationTypeOptionsWithDisabling = computed(() => const targetNameOptionsBase = computed(() => _uniqWith(gqlQuery.data.value?.targetsBase, _isEqual).map((target) => ({ label: target.name, - value: target.name + value: target.name, + groupLabel: target.type })) ) @@ -138,15 +139,60 @@ const targetNamesFiltered = computed(() => /** * Available options for target name selection, with a `isDisabled` field on - * absence in `targetNamesFiltered`. + * absence in `targetNamesFiltered`, and grouped. */ -const targetNameOptionsWithDisabling = computed(() => - targetNameOptionsBase.value.map((targetNameOption) => ({ - ...targetNameOption, - isDisabled: !targetNamesFiltered.value.some( - (targetNameFiltered) => targetNameFiltered === targetNameOption.value - ) - })) +const targetNameOptionsWithDisablingGroups = computed(() => + targetNameOptionsBase.value.reduce( + (targetNameOptionsWithDisablingGroups: any[], targetNameOption) => { + const targetNameOptionGroupIndex = + targetNameOptionsWithDisablingGroups.findIndex( + (group) => group.label === targetNameOption.groupLabel + ) + return targetNameOptionGroupIndex !== -1 + ? [ + ...targetNameOptionsWithDisablingGroups.slice( + 0, + targetNameOptionGroupIndex + ), + { + ...targetNameOptionsWithDisablingGroups[ + targetNameOptionGroupIndex + ], + children: [ + ...targetNameOptionsWithDisablingGroups[ + targetNameOptionGroupIndex + ].children, + { + ...targetNameOption, + isDisabled: !targetNamesFiltered.value.some( + (targetNameFiltered) => + targetNameFiltered === targetNameOption.value + ) + } + ] + }, + ...targetNameOptionsWithDisablingGroups.slice( + targetNameOptionGroupIndex + 1 + ) + ] + : [ + ...targetNameOptionsWithDisablingGroups, + { + label: targetNameOption.groupLabel, + children: [ + { + ...targetNameOption, + isDisabled: !targetNamesFiltered.value.some( + (targetNameFiltered) => + targetNameFiltered === targetNameOption.value + ) + } + ] + } + ] + }, + [] + ) ) /** @@ -210,10 +256,12 @@ const organismIdOptionsWithDisabling = computed(() => <h3 class="text-lg font-bold">Targets</h3> <MultiSelect v-model="selection.targetNames" - :options="targetNameOptionsWithDisabling" + :options="targetNameOptionsWithDisablingGroups" option-label="label" option-value="value" option-disabled="isDisabled" + option-group-label="label" + option-group-children="children" multiple class="mr-auto" placeholder="Select targets..." diff --git a/src/components/TargetSelectionForm.vue b/src/components/TargetSelectionForm.vue index 259a39c..68c0f4b 100644 --- a/src/components/TargetSelectionForm.vue +++ b/src/components/TargetSelectionForm.vue @@ -124,7 +124,8 @@ const modificationTypeOptionsWithDisabling = computed(() => const targetNameOptionsBase = computed(() => _uniqWith(gqlQuery.data.value?.targetsBase, _isEqual).map((target) => ({ label: target.name, - value: target.name + value: target.name, + groupLabel: target.type })) ) @@ -138,15 +139,60 @@ const targetNamesFiltered = computed(() => /** * Available options for target name selection, with a `isDisabled` field on - * absence in `targetNamesFiltered`. + * absence in `targetNamesFiltered`, and grouped. */ -const targetNameOptionsWithDisabling = computed(() => - targetNameOptionsBase.value.map((targetNameOption) => ({ - ...targetNameOption, - isDisabled: !targetNamesFiltered.value.some( - (targetNameFiltered) => targetNameFiltered === targetNameOption.value - ) - })) +const targetNameOptionsWithDisablingGroups = computed(() => + targetNameOptionsBase.value.reduce( + (targetNameOptionsWithDisablingGroups: any[], targetNameOption) => { + const targetNameOptionGroupIndex = + targetNameOptionsWithDisablingGroups.findIndex( + (group) => group.label === targetNameOption.groupLabel + ) + return targetNameOptionGroupIndex !== -1 + ? [ + ...targetNameOptionsWithDisablingGroups.slice( + 0, + targetNameOptionGroupIndex + ), + { + ...targetNameOptionsWithDisablingGroups[ + targetNameOptionGroupIndex + ], + children: [ + ...targetNameOptionsWithDisablingGroups[ + targetNameOptionGroupIndex + ].children, + { + ...targetNameOption, + isDisabled: !targetNamesFiltered.value.some( + (targetNameFiltered) => + targetNameFiltered === targetNameOption.value + ) + } + ] + }, + ...targetNameOptionsWithDisablingGroups.slice( + targetNameOptionGroupIndex + 1 + ) + ] + : [ + ...targetNameOptionsWithDisablingGroups, + { + label: targetNameOption.groupLabel, + children: [ + { + ...targetNameOption, + isDisabled: !targetNamesFiltered.value.some( + (targetNameFiltered) => + targetNameFiltered === targetNameOption.value + ) + } + ] + } + ] + }, + [] + ) ) /** @@ -191,10 +237,12 @@ const organismIdOptionsWithDisabling = computed(() => <h3 class="text-lg font-bold">Targets</h3> <MultiSelect v-model="selection.targetNames" - :options="targetNameOptionsWithDisabling" + :options="targetNameOptionsWithDisablingGroups" option-label="label" option-value="value" option-disabled="isDisabled" + option-group-label="label" + option-group-children="children" multiple class="mr-auto" placeholder="Select targets..." diff --git a/src/gql/codegen/gql.ts b/src/gql/codegen/gql.ts index 899377e..7cecb85 100644 --- a/src/gql/codegen/gql.ts +++ b/src/gql/codegen/gql.ts @@ -14,8 +14,8 @@ import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document- */ const documents = { "\n query organismListQuery {\n organisms {\n id\n label\n shortname\n }\n }\n": types.OrganismListQueryDocument, - "\n query modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n": types.ModificationAndTargetSelectionQueryDocument, - "\n query guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guidesBase: guides {\n subclass\n subclass_label\n }\n\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n": types.GuideSelectionQueryDocument, + "\n query modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n": types.ModificationAndTargetSelectionQueryDocument, + "\n query guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guidesBase: guides {\n subclass\n subclass_label\n }\n\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n": types.GuideSelectionQueryDocument, "\n query tableEntriesQuery {\n tableEntries {\n id\n modification {\n id\n name\n position\n symbol_label\n type\n type_short_label\n target {\n id\n name\n class\n unit\n length\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n }\n }\n }\n }\n }\n guide {\n id\n name\n class\n subclass_label\n length\n seq\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n length\n }\n }\n }\n host_genes\n }\n organism {\n id\n label\n name\n }\n }\n\n targets {\n name\n }\n\n organisms {\n label\n id\n }\n }\n": types.TableEntriesQueryDocument, "\n query organismByIdQuery($id: Int) {\n organisms(where: { id: $id }) {\n id\n label\n shortname\n genomes {\n sequences(where: { graphql_type: Chromosome }) {\n id\n name\n altnames\n description\n length\n graphql_type\n guides: featuresConnection(where: { node: { graphql_type: Guide } }) {\n totalCount\n }\n }\n }\n }\n\n modifications(where: { target: { genome: { organism: { id: $id } } } }) {\n id\n name\n symbol_label\n type_short_label\n guidesAggregate {\n count\n }\n }\n\n allModificationsCount: modificationsAggregate(\n where: { target: { genome: { organism: { id: $id } } } }\n ) {\n count\n }\n\n nonOrphanModificationsCount: modificationsAggregate(\n where: {\n guidesAggregate: { count_GT: 0 }\n target: { genome: { organism: { id: $id } } }\n }\n ) {\n count\n }\n\n targets(where: { genome: { organism: { id: $id } } }) {\n id\n name\n class\n unit\n modificationsAggregate {\n count\n }\n }\n\n allTargetsCount: targetsAggregate(\n where: { genome: { organism: { id: $id } } }\n ) {\n count\n }\n\n guides(where: { genome: { organism: { id: $id } } }) {\n id\n name\n class\n subclass\n subclass_label\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n }\n node {\n id\n }\n }\n }\n modificationsAggregate {\n count\n }\n }\n\n allGuidesCount: guidesAggregate(\n where: { genome: { organism: { id: $id } } }\n ) {\n count\n }\n\n nonOrphanGuidesCount: guidesAggregate(\n where: {\n modificationsAggregate: { count_GT: 0 }\n genome: { organism: { id: $id } }\n }\n ) {\n count\n }\n }\n": types.OrganismByIdQueryDocument, "\n query modificationByIdQuery($id: ID) {\n modifications(where: { id: $id }) {\n id\n name\n type\n type_short_label\n symbol\n symbol_label\n position\n target {\n id\n name\n class\n unit\n genome {\n organism {\n id\n label\n }\n }\n }\n # chebi_id\n # so_id\n\n interactions {\n duplexes {\n primaryStrandsConnection: strandsConnection(\n where: { edge: { primary: true } }\n ) {\n edges {\n properties {\n start\n end\n primary\n }\n node {\n seq\n parentConnection {\n edges {\n properties {\n start\n end\n }\n }\n }\n }\n }\n }\n secondaryStrandsConnection: strandsConnection(\n where: { edge: { primary: false } }\n ) {\n edges {\n properties {\n start\n end\n primary\n }\n node {\n seq\n parentConnection {\n edges {\n properties {\n start\n end\n }\n }\n }\n }\n }\n }\n index\n }\n guide {\n id\n name\n subclass_label\n class\n }\n target {\n id\n name\n unit\n class\n }\n }\n }\n\n guides(where: { modifications_SOME: { id: $id } }) {\n id\n name\n class\n }\n }\n": types.ModificationByIdQueryDocument, @@ -46,11 +46,11 @@ export function graphql(source: "\n query organismListQuery {\n organisms {\ /** * 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 modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n"): (typeof documents)["\n query modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n"]; +export function graphql(source: "\n query modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n"): (typeof documents)["\n query modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n"]; /** * 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 guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guidesBase: guides {\n subclass\n subclass_label\n }\n\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n"): (typeof documents)["\n query guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guidesBase: guides {\n subclass\n subclass_label\n }\n\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n"]; +export function graphql(source: "\n query guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guidesBase: guides {\n subclass\n subclass_label\n }\n\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n"): (typeof documents)["\n query guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guidesBase: guides {\n subclass\n subclass_label\n }\n\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\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 c513d6d..bc137a3 100644 --- a/src/gql/codegen/graphql.ts +++ b/src/gql/codegen/graphql.ts @@ -8867,7 +8867,7 @@ export type ModificationAndTargetSelectionQueryQueryVariables = Exact<{ }>; -export type ModificationAndTargetSelectionQueryQuery = { __typename?: 'Query', targetsBase: Array<{ __typename?: 'Target', name?: string | null }>, targets: Array<{ __typename?: 'Target', name?: string | null }>, modificationsBase: Array<{ __typename?: 'Modification', type_label?: string | null, type?: ModifType | null }>, modifications: Array<{ __typename?: 'Modification', type?: ModifType | null }>, organismsBase: Array<{ __typename?: 'Organism', label: string, id: number }>, organisms: Array<{ __typename?: 'Organism', id: number }> }; +export type ModificationAndTargetSelectionQueryQuery = { __typename?: 'Query', targetsBase: Array<{ __typename?: 'Target', name?: string | null, type: SequenceType }>, targets: Array<{ __typename?: 'Target', name?: string | null }>, modificationsBase: Array<{ __typename?: 'Modification', type_label?: string | null, type?: ModifType | null }>, modifications: Array<{ __typename?: 'Modification', type?: ModifType | null }>, organismsBase: Array<{ __typename?: 'Organism', label: string, id: number }>, organisms: Array<{ __typename?: 'Organism', id: number }> }; export type GuideSelectionQueryQueryVariables = Exact<{ guideSubclasses?: InputMaybe<Array<GuideClass> | GuideClass>; @@ -8877,7 +8877,7 @@ export type GuideSelectionQueryQueryVariables = Exact<{ }>; -export type GuideSelectionQueryQuery = { __typename?: 'Query', guidesBase: Array<{ __typename?: 'Guide', subclass: GuideClass, subclass_label: string }>, guides: Array<{ __typename?: 'Guide', subclass: GuideClass }>, targetsBase: Array<{ __typename?: 'Target', name?: string | null }>, targets: Array<{ __typename?: 'Target', name?: string | null }>, modificationsBase: Array<{ __typename?: 'Modification', type_label?: string | null, type?: ModifType | null }>, modifications: Array<{ __typename?: 'Modification', type?: ModifType | null }>, organismsBase: Array<{ __typename?: 'Organism', label: string, id: number }>, organisms: Array<{ __typename?: 'Organism', id: number }> }; +export type GuideSelectionQueryQuery = { __typename?: 'Query', guidesBase: Array<{ __typename?: 'Guide', subclass: GuideClass, subclass_label: string }>, guides: Array<{ __typename?: 'Guide', subclass: GuideClass }>, targetsBase: Array<{ __typename?: 'Target', name?: string | null, type: SequenceType }>, targets: Array<{ __typename?: 'Target', name?: string | null }>, modificationsBase: Array<{ __typename?: 'Modification', type_label?: string | null, type?: ModifType | null }>, modifications: Array<{ __typename?: 'Modification', type?: ModifType | null }>, organismsBase: Array<{ __typename?: 'Organism', label: string, id: number }>, organisms: Array<{ __typename?: 'Organism', id: number }> }; export type TableEntriesQueryQueryVariables = Exact<{ [key: string]: never; }>; @@ -8926,8 +8926,8 @@ export type DatabaseStatisticsQueryQuery = { __typename?: 'Query', organismsAggr export const OrganismListQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"organismListQuery"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"shortname"}}]}}]}}]} as unknown as DocumentNode<OrganismListQueryQuery, OrganismListQueryQueryVariables>; -export const ModificationAndTargetSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"modificationAndTargetSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<ModificationAndTargetSelectionQueryQuery, ModificationAndTargetSelectionQueryQueryVariables>; -export const GuideSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"guideSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"GuideClass"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"guidesBase"},"name":{"kind":"Name","value":"guides"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}}]}},{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guide"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<GuideSelectionQueryQuery, GuideSelectionQueryQueryVariables>; +export const ModificationAndTargetSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"modificationAndTargetSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<ModificationAndTargetSelectionQueryQuery, ModificationAndTargetSelectionQueryQueryVariables>; +export const GuideSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"guideSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"GuideClass"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"guidesBase"},"name":{"kind":"Name","value":"guides"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}}]}},{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guide"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<GuideSelectionQueryQuery, GuideSelectionQueryQueryVariables>; 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":"symbol_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}},{"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"host_genes"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organism"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<TableEntriesQueryQuery, TableEntriesQueryQueryVariables>; export const OrganismByIdQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"organismByIdQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"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":"graphql_type"},"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":"altnames"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"graphql_type"}},{"kind":"Field","alias":{"kind":"Name","value":"guides"},"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":"graphql_type"},"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"symbol_label"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}},{"kind":"Field","name":{"kind":"Name","value":"guidesAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"allModificationsCount"},"name":{"kind":"Name","value":"modificationsAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"nonOrphanModificationsCount"},"name":{"kind":"Name","value":"modificationsAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"guidesAggregate"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"count_GT"},"value":{"kind":"IntValue","value":"0"}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}]}}],"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"modificationsAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"allTargetsCount"},"name":{"kind":"Name","value":"targetsAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"class"}},{"kind":"Field","name":{"kind":"Name","value":"subclass"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"allGuidesCount"},"name":{"kind":"Name","value":"guidesAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"nonOrphanGuidesCount"},"name":{"kind":"Name","value":"guidesAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modificationsAggregate"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"count_GT"},"value":{"kind":"IntValue","value":"0"}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}}]} as unknown as DocumentNode<OrganismByIdQueryQuery, OrganismByIdQueryQueryVariables>; 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":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}],"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":"type_short_label"}},{"kind":"Field","name":{"kind":"Name","value":"symbol"}},{"kind":"Field","name":{"kind":"Name","value":"symbol_label"}},{"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"genome"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organism"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}}]}}]}}]}},{"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":"properties"},"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":"properties"},"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":"properties"},"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":"properties"},"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":"subclass_label"}},{"kind":"Field","name":{"kind":"Name","value":"class"}}]}},{"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":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"class"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"class"}}]}}]}}]} as unknown as DocumentNode<ModificationByIdQueryQuery, ModificationByIdQueryQueryVariables>; diff --git a/src/gql/queries.ts b/src/gql/queries.ts index 7452754..c358197 100644 --- a/src/gql/queries.ts +++ b/src/gql/queries.ts @@ -28,6 +28,7 @@ export const modificationAndTargetSelectionQuery = graphql(/* GraphQL */ ` ) { targetsBase: targets { name + type } targets( @@ -104,6 +105,7 @@ export const guideSelectionQuery = graphql(/* GraphQL */ ` targetsBase: targets { name + type } targets( -- GitLab From b892b60d07b11dd6fa08fd692b74c8ce46ca5b7b Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 15:44:42 +0200 Subject: [PATCH 30/54] feat(advanced-selection): :lipstick: lighter & consistent with other pages style --- src/views/SelectionView.vue | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/views/SelectionView.vue b/src/views/SelectionView.vue index ba5f512..8fe9316 100644 --- a/src/views/SelectionView.vue +++ b/src/views/SelectionView.vue @@ -31,6 +31,7 @@ import { capitalize as _capitalize } from 'lodash-es' * Utils imports */ import { SELECTION_FORM_MODES } from '@/utils/constant' +import { getColorWithOptionalShade } from '@/utils/colors' /** * Type of data to select. @@ -171,10 +172,12 @@ const activeModeTableColumns = computed(() => { <template> <MainLayout> - <h1 class="mb-8 text-center text-3xl">Advanced selection</h1> + <h1 class="text-center text-3xl font-semibold text-slate-700"> + Advanced selection + </h1> <Card - class="mx-16 !rounded-2xl border-2 !shadow-none" + class="mx-16 !rounded-2xl border-none !shadow-none" :pt="{ footer: { style: { @@ -192,7 +195,16 @@ const activeModeTableColumns = computed(() => { style: { justifyContent: 'center', marginBottom: '2rem', - fontSize: '1.25em' + fontSize: '1.25em', + background: `linear-gradient(white 0 0) padding-box, + linear-gradient(90deg, + ${getColorWithOptionalShade('slate', '300')}00 10%, + ${getColorWithOptionalShade('slate', '300')} 15%, + ${getColorWithOptionalShade('slate', '300')} 85%, + ${getColorWithOptionalShade('slate', '300')}00 90%) + border-box`, + borderStyle: 'dashed', + borderColor: 'white' } } }" -- GitLab From 5793b1c119baddfad70daa2050c659f470dc08cc Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 15:46:47 +0200 Subject: [PATCH 31/54] feat(home-view): :sparkles: truncate species list menu to 3 entries and add link to table for more --- src/gql/codegen/gql.ts | 4 +-- src/gql/codegen/graphql.ts | 4 +-- src/gql/queries.ts | 5 +++- src/views/HomeView.vue | 61 +++++++++++++++++++++++++++++++------- 4 files changed, 59 insertions(+), 15 deletions(-) diff --git a/src/gql/codegen/gql.ts b/src/gql/codegen/gql.ts index 7cecb85..5c329a6 100644 --- a/src/gql/codegen/gql.ts +++ b/src/gql/codegen/gql.ts @@ -13,7 +13,7 @@ import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document- * Therefore it is highly recommended to use the babel or swc plugin for production. */ const documents = { - "\n query organismListQuery {\n organisms {\n id\n label\n shortname\n }\n }\n": types.OrganismListQueryDocument, + "\n query organismListQuery {\n organisms(options: { limit: 3 }) {\n id\n label\n shortname\n }\n organismsAggregate {\n count\n }\n }\n": types.OrganismListQueryDocument, "\n query modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n": types.ModificationAndTargetSelectionQueryDocument, "\n query guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guidesBase: guides {\n subclass\n subclass_label\n }\n\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n": types.GuideSelectionQueryDocument, "\n query tableEntriesQuery {\n tableEntries {\n id\n modification {\n id\n name\n position\n symbol_label\n type\n type_short_label\n target {\n id\n name\n class\n unit\n length\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n }\n }\n }\n }\n }\n guide {\n id\n name\n class\n subclass_label\n length\n seq\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n length\n }\n }\n }\n host_genes\n }\n organism {\n id\n label\n name\n }\n }\n\n targets {\n name\n }\n\n organisms {\n label\n id\n }\n }\n": types.TableEntriesQueryDocument, @@ -42,7 +42,7 @@ export function graphql(source: string): unknown; /** * 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 organismListQuery {\n organisms {\n id\n label\n shortname\n }\n }\n"): (typeof documents)["\n query organismListQuery {\n organisms {\n id\n label\n shortname\n }\n }\n"]; +export function graphql(source: "\n query organismListQuery {\n organisms(options: { limit: 3 }) {\n id\n label\n shortname\n }\n organismsAggregate {\n count\n }\n }\n"): (typeof documents)["\n query organismListQuery {\n organisms(options: { limit: 3 }) {\n id\n label\n shortname\n }\n organismsAggregate {\n count\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 bc137a3..9818f40 100644 --- a/src/gql/codegen/graphql.ts +++ b/src/gql/codegen/graphql.ts @@ -8858,7 +8858,7 @@ export type TargetsConnection = { export type OrganismListQueryQueryVariables = Exact<{ [key: string]: never; }>; -export type OrganismListQueryQuery = { __typename?: 'Query', organisms: Array<{ __typename?: 'Organism', id: number, label: string, shortname: string }> }; +export type OrganismListQueryQuery = { __typename?: 'Query', organisms: Array<{ __typename?: 'Organism', id: number, label: string, shortname: string }>, organismsAggregate: { __typename?: 'OrganismAggregateSelection', count: number } }; export type ModificationAndTargetSelectionQueryQueryVariables = Exact<{ modificationTypes?: InputMaybe<Array<InputMaybe<ModifType>> | InputMaybe<ModifType>>; @@ -8925,7 +8925,7 @@ export type DatabaseStatisticsQueryQueryVariables = Exact<{ [key: string]: never export type DatabaseStatisticsQueryQuery = { __typename?: 'Query', organismsAggregate: { __typename?: 'OrganismAggregateSelection', count: number }, allModifications: Array<{ __typename?: 'Modification', type?: ModifType | null }>, allModificationsCount: { __typename?: 'ModificationAggregateSelection', count: number }, nonOrphanModificationsCount: { __typename?: 'ModificationAggregateSelection', count: number }, allGuides: Array<{ __typename?: 'Guide', subclass: GuideClass }>, allGuidesCount: { __typename?: 'GuideAggregateSelection', count: number }, nonOrphanGuidesCount: { __typename?: 'GuideAggregateSelection', count: number } }; -export const OrganismListQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"organismListQuery"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"shortname"}}]}}]}}]} as unknown as DocumentNode<OrganismListQueryQuery, OrganismListQueryQueryVariables>; +export const OrganismListQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"organismListQuery"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"options"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"3"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"shortname"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organismsAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}}]} as unknown as DocumentNode<OrganismListQueryQuery, OrganismListQueryQueryVariables>; export const ModificationAndTargetSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"modificationAndTargetSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<ModificationAndTargetSelectionQueryQuery, ModificationAndTargetSelectionQueryQueryVariables>; export const GuideSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"guideSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"GuideClass"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"guidesBase"},"name":{"kind":"Name","value":"guides"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}}]}},{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guide"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<GuideSelectionQueryQuery, GuideSelectionQueryQueryVariables>; 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":"symbol_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}},{"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"host_genes"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organism"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<TableEntriesQueryQuery, TableEntriesQueryQueryVariables>; diff --git a/src/gql/queries.ts b/src/gql/queries.ts index c358197..8fc2d33 100644 --- a/src/gql/queries.ts +++ b/src/gql/queries.ts @@ -8,11 +8,14 @@ import { graphql } from './codegen' */ export const organismListQuery = graphql(/* GraphQL */ ` query organismListQuery { - organisms { + organisms(options: { limit: 3 }) { id label shortname } + organismsAggregate { + count + } } `) diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index cf80bff..07e56bd 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -41,7 +41,7 @@ import { organismListQuery } from '@/gql/queries' import logoUrl from '@/assets/images/logo.svg' import { GuideClass, ModifType } from '@/gql/codegen/graphql' import { formatGuideSubclass } from '@/utils/textFormatting' -import { isInEnum } from '@/typings/typeUtils' +import { isDefined, isInEnum } from '@/typings/typeUtils' import tailwindDefaultColors from 'tailwindcss/colors' /** @@ -85,6 +85,11 @@ const LIST_TARGETS_TABLE_COLUMNS = [ 'organismId' ] +/** + * Useful columns to show to list organisms in the table. + */ +const LIST_ORGANISMS_TABLE_COLUMNS = ['organismName', 'organismId'] + /** * Reactive urql GraphQL query object, updated with query state & response. */ @@ -98,6 +103,14 @@ const gqlQuery = useQuery({ */ const organismList = computed(() => gqlQuery.data.value?.organisms) +/** + * The number of all the organisms present in the database, reactively updated + * when fetched. + */ +const organismCount = computed( + () => gqlQuery.data.value?.organismsAggregate.count +) + /** * Menu items. */ @@ -198,6 +211,19 @@ const menuItems = computed<MenuItem[]>(() => [ }, iconComponent: IconFa6SolidTable }, + // ...Object.values(UnitType) + // .filter((unitType) => unitType !== UnitType.Other) + // .map((unitType) => ({ + // label: unitType, + // indent: 1, + // route: { + // name: 'data-table', + // query: { + // columns: LIST_TARGETS_TABLE_COLUMNS, + // unitType: unitType + // } + // } + // })), { key: 'targetSelection', label: 'Advanced target selection', @@ -269,16 +295,31 @@ const menuItems = computed<MenuItem[]>(() => [ { key: 'statisticsOrganism', label: 'By organism', - items: organismList.value?.map((organism) => ({ - key: `statisticsOrganism${organism.id}`, - label: organism.label, - route: { - name: 'statistics', - query: { - id: organism.id + items: [ + ...(organismList.value?.map((organism) => ({ + key: `statisticsOrganism${organism.id}`, + label: organism.label, + route: { + name: 'statistics', + query: { + id: organism.id + } + }, + metadata: { + type: 'organism' } - } - })), + })) || []), + organismCount.value && organismCount.value > 3 + ? { + label: `+${organismCount.value - 3} more...`, + route: { + name: 'data-table', + query: { columns: LIST_ORGANISMS_TABLE_COLUMNS } + }, + iconComponent: IconFa6SolidTable + } + : undefined + ].filter(isDefined), iconComponent: IconFa6SolidPaw } ] -- GitLab From 68ab13d21eaa45f72bd3c86ce01cc16013734052 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 15:48:06 +0200 Subject: [PATCH 32/54] feat(home-view): :speech_balloon: move modifications menu before guides one --- src/views/HomeView.vue | 56 +++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index 07e56bd..566ff91 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -116,40 +116,40 @@ const organismCount = computed( */ const menuItems = computed<MenuItem[]>(() => [ { - label: 'Guides', + key: 'modifications', + label: 'Modifications', items: [ { - key: 'guides', - label: 'All guides', + label: 'All modifications', route: { name: 'data-table', query: { - columns: LIST_GUIDES_TABLE_COLUMNS + columns: LIST_MODIFICATIONS_TABLE_COLUMNS } }, iconComponent: IconFa6SolidTable }, - ...Object.values(GuideClass) - .filter((guideClass) => guideClass !== GuideClass.Other) - .map((guideClass) => ({ - key: `guides${guideClass}`, - label: formatGuideSubclass(guideClass), + ...Object.values(ModifType) + .filter((modificationType) => modificationType !== ModifType.Other) + .map((modificationType) => ({ + key: `modifications${modificationType}`, + label: modificationType, indent: 1, route: { name: 'data-table', query: { - columns: LIST_GUIDES_TABLE_COLUMNS, - guideSubclass: guideClass + columns: LIST_MODIFICATIONS_TABLE_COLUMNS, + modificationType: modificationType } } })), { - key: 'guideSelection', - label: 'Advanced guide selection', + key: 'modificationSelection', + label: 'Advanced modification selection', route: { name: 'data-selection', query: { - mode: 'guide' + mode: 'modification' } }, iconComponent: IconFa6SolidSliders @@ -157,40 +157,40 @@ const menuItems = computed<MenuItem[]>(() => [ ] }, { - key: 'modifications', - label: 'Modifications', + label: 'Guides', items: [ { - label: 'All modifications', + key: 'guides', + label: 'All guides', route: { name: 'data-table', query: { - columns: LIST_MODIFICATIONS_TABLE_COLUMNS + columns: LIST_GUIDES_TABLE_COLUMNS } }, iconComponent: IconFa6SolidTable }, - ...Object.values(ModifType) - .filter((modificationType) => modificationType !== ModifType.Other) - .map((modificationType) => ({ - key: `modifications${modificationType}`, - label: modificationType, + ...Object.values(GuideClass) + .filter((guideClass) => guideClass !== GuideClass.Other) + .map((guideClass) => ({ + key: `guides${guideClass}`, + label: formatGuideSubclass(guideClass), indent: 1, route: { name: 'data-table', query: { - columns: LIST_MODIFICATIONS_TABLE_COLUMNS, - modificationType: modificationType + columns: LIST_GUIDES_TABLE_COLUMNS, + guideSubclass: guideClass } } })), { - key: 'modificationSelection', - label: 'Advanced modification selection', + key: 'guideSelection', + label: 'Advanced guide selection', route: { name: 'data-selection', query: { - mode: 'modification' + mode: 'guide' } }, iconComponent: IconFa6SolidSliders -- GitLab From b3df1e0ad9f3ea966279d878b08736e412fe421e Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 15:48:51 +0200 Subject: [PATCH 33/54] fix(home-view): :adhesive_bandage: species names in italic in menu -- GitLab From 1b888d6110c67fe001ccad8dca1884c35df6e284 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 10 Jun 2024 17:34:32 +0200 Subject: [PATCH 34/54] fix(table-view): :bug: filtering hidden columns causing some lines not being displayed as deduplication is occuring before filtering, some lines where removed because similar ones were already displayed with current column selection, but with filtering the selected ones are removed were the removed ones would match --- src/views/DataTableView.vue | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/views/DataTableView.vue b/src/views/DataTableView.vue index b01d983..43b4d9f 100644 --- a/src/views/DataTableView.vue +++ b/src/views/DataTableView.vue @@ -577,14 +577,32 @@ watchEffect(() => { }) /** - * Deduped table entries, by the values in the currently selected columns. + * Columns used for deduplication, i.e. selected ones & filtered ones. + */ +const deduplicationColumnFields = computed(() => [ + ...sortedSelectedColumns.value.map((column) => column.field), + ...Object.entries(filters.value).reduce( + (filteredColumnFields: string[], [currFilterField, currFilter]) => + currFilter.value + ? [...filteredColumnFields, currFilterField] + : filteredColumnFields, + [] + ) +]) + +/** + * Deduped table entries, by the values in the currently selected & filtered + * columns. */ const dedupedTableEntries = computed(() => _uniqBy(tableEntries.value, (entry) => - sortedSelectedColumns.value - .map((column) => _get(entry, column.field)) + // Concat the entry values in the selected & the filtered columns to form a + // "hash" used to dedup the entries + deduplicationColumnFields.value + .map((columnField) => _get(entry, columnField)) .join('') ).filter((entry) => + // Remove entries for which there is no data in any of the selected column sortedSelectedColumns.value .map((column) => _get(entry, column.field)) .join('') -- GitLab From bf86a1c6039e275f70b5977b144b36195ed0fc72 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Wed, 12 Jun 2024 10:48:59 +0200 Subject: [PATCH 35/54] fix(advanced-selection): :bug: removing from chip in multiselects not working --- src/components/GuideSelectionForm.vue | 24 ++++++++---------- src/components/ModificationSelectionForm.vue | 26 +++++++++----------- 2 files changed, 21 insertions(+), 29 deletions(-) diff --git a/src/components/GuideSelectionForm.vue b/src/components/GuideSelectionForm.vue index 3999bc5..70175a3 100644 --- a/src/components/GuideSelectionForm.vue +++ b/src/components/GuideSelectionForm.vue @@ -15,11 +15,7 @@ import { GuideClass, ModifType } from '@/gql/codegen/graphql' * Other 3rd-party imports */ import { useQuery } from '@urql/vue' -import { - uniqWith as _uniqWith, - isEqual as _isEqual, - remove as _remove -} from 'lodash-es' +import { uniqWith as _uniqWith, isEqual as _isEqual } from 'lodash-es' /** * Utils imports */ @@ -321,10 +317,10 @@ const organismIdOptionsWithDisabling = computed(() => @remove.stop=" $emit('update:modelValue', { ...selection, - targetNames: _remove( - selection.targetNames, - (currTargetName) => currTargetName === targetName - ) + targetNames: (selection.targetNames = + selection.targetNames.filter( + (currTargetName) => currTargetName !== targetName + )) }) " /> @@ -362,7 +358,7 @@ const organismIdOptionsWithDisabling = computed(() => option-disabled="isDisabled" multiple class="mr-auto" - placeholder="Select organism..." + placeholder="Select organisms..." :max-selected-labels="3" display="chip" filter @@ -377,10 +373,10 @@ const organismIdOptionsWithDisabling = computed(() => @remove.stop=" $emit('update:modelValue', { ...selection, - organismIds: _remove( - selection.organismIds, - (currOrganismId) => currOrganismId === organismId - ) + organismIds: (selection.organismIds = + selection.organismIds.filter( + (currOrganismId) => currOrganismId !== organismId + )) }) " > diff --git a/src/components/ModificationSelectionForm.vue b/src/components/ModificationSelectionForm.vue index 47a5890..a7875b2 100644 --- a/src/components/ModificationSelectionForm.vue +++ b/src/components/ModificationSelectionForm.vue @@ -15,11 +15,7 @@ import { ModifType } from '@/gql/codegen/graphql' * Other 3rd-party imports */ import { useQuery } from '@urql/vue' -import { - uniqWith as _uniqWith, - isEqual as _isEqual, - remove as _remove -} from 'lodash-es' +import { uniqWith as _uniqWith, isEqual as _isEqual } from 'lodash-es' /** * Utils imports */ @@ -280,10 +276,10 @@ const organismIdOptionsWithDisabling = computed(() => @remove.stop=" $emit('update:modelValue', { ...selection, - targetNames: _remove( - selection.targetNames, - (currTargetName) => currTargetName === targetName - ) + targetNames: (selection.targetNames = + selection.targetNames.filter( + (currTargetName) => currTargetName !== targetName + )) }) " /> @@ -293,7 +289,7 @@ const organismIdOptionsWithDisabling = computed(() => </template> </MultiSelect> - <h3 class="text-lg font-bold">Organism</h3> + <h3 class="text-lg font-bold">Organisms</h3> <MultiSelect v-model="selection.organismIds" :options="organismIdOptionsWithDisabling" @@ -302,7 +298,7 @@ const organismIdOptionsWithDisabling = computed(() => option-disabled="isDisabled" multiple class="mr-auto" - placeholder="Select organism..." + placeholder="Select organisms..." :max-selected-labels="3" display="chip" filter @@ -317,10 +313,10 @@ const organismIdOptionsWithDisabling = computed(() => @remove.stop=" $emit('update:modelValue', { ...selection, - organismIds: _remove( - selection.organismIds, - (currOrganismId) => currOrganismId === organismId - ) + organismIds: (selection.organismIds = + selection.organismIds.filter( + (currOrganismId) => currOrganismId !== organismId + )) }) " > -- GitLab From 7624e80994668af8b3819ef509ecc703a0ab317f Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Wed, 12 Jun 2024 15:09:12 +0200 Subject: [PATCH 36/54] feat(router): :sparkles: add scroll behavior to handle anchors & saved positions --- src/router/index.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/router/index.ts b/src/router/index.ts index b51d496..805f13b 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -222,7 +222,23 @@ const router = createRouter({ to.query && console.warn(`Route query :`, to.query) } } - ] + ], + scrollBehavior: (to, _from, savedPosition) => + // Scroll to anchor if present (smoothly), if not to saved position, and if + // none to top + to.hash + ? new Promise((resolve) => { + setTimeout(() => { + resolve({ + el: to.hash, + top: 20, + behavior: 'smooth' + }) + }, 500) + }) + : savedPosition + ? { ...savedPosition } + : { top: 0 } }) router.afterEach((to) => { -- GitLab From 8e5dadf3d7e1e952872b9884af3f024419f4e5d3 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Wed, 12 Jun 2024 15:10:04 +0200 Subject: [PATCH 37/54] feat: :sparkles: add anchors to detail views panels --- src/views/GuideView.vue | 2 ++ src/views/ModificationView.vue | 1 + src/views/TargetView.vue | 2 ++ 3 files changed, 5 insertions(+) diff --git a/src/views/GuideView.vue b/src/views/GuideView.vue index bbc37bd..4a3deab 100644 --- a/src/views/GuideView.vue +++ b/src/views/GuideView.vue @@ -746,6 +746,7 @@ const ontologyLinks = computed(() => ({ </Panel> <Panel + id="sequence-panel" toggleable class="mx-auto mb-16 max-w-7xl break-words 2xl:max-w-[100rem]" :pt="{ @@ -810,6 +811,7 @@ const ontologyLinks = computed(() => ({ </Panel> <Panel + id="graphics-panel" toggleable class="mx-auto mb-16 max-w-7xl break-words 2xl:max-w-[100rem]" :pt="{ diff --git a/src/views/ModificationView.vue b/src/views/ModificationView.vue index b8a4d9c..8e03ba9 100644 --- a/src/views/ModificationView.vue +++ b/src/views/ModificationView.vue @@ -374,6 +374,7 @@ const linkedGuidesFieldName = computed( </Panel> <Panel + id="graphics-panel" toggleable class="mx-auto mb-16 max-w-7xl break-words 2xl:max-w-[100rem]" :pt="{ diff --git a/src/views/TargetView.vue b/src/views/TargetView.vue index 7196295..cfcce12 100644 --- a/src/views/TargetView.vue +++ b/src/views/TargetView.vue @@ -653,6 +653,7 @@ const ontologyLinks = computed(() => ({ </Panel> <Panel + id="sequence-panel" toggleable class="mx-auto mb-16 max-w-7xl break-words 2xl:max-w-[100rem]" :pt="{ @@ -698,6 +699,7 @@ const ontologyLinks = computed(() => ({ </Panel> <Panel + id="graphics-panel" toggleable class="mx-auto mb-16 max-w-7xl break-words 2xl:max-w-[100rem]" :pt="{ -- GitLab From 2b1727cefedcbf38f44f92b6728e59b8bd7e70bb Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Wed, 12 Jun 2024 15:27:32 +0200 Subject: [PATCH 38/54] refactor(router): :recycle: rename routes --- src/layouts/MainLayout.vue | 2 +- src/router/index.ts | 4 ++-- src/views/DataTableView.vue | 6 ++---- src/views/HomeView.vue | 20 ++++++++++---------- src/views/SelectionView.vue | 4 ++-- 5 files changed, 17 insertions(+), 19 deletions(-) diff --git a/src/layouts/MainLayout.vue b/src/layouts/MainLayout.vue index be6875d..e1a386c 100644 --- a/src/layouts/MainLayout.vue +++ b/src/layouts/MainLayout.vue @@ -30,7 +30,7 @@ const menuItems: CustomMenuItem[] = [ { label: 'Data Table', iconComponent: IconFa6SolidTable, - routerDest: { name: 'data-table' } + routerDest: { name: 'table' } }, { label: 'API', diff --git a/src/router/index.ts b/src/router/index.ts index 805f13b..1590078 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -41,7 +41,7 @@ const router = createRouter({ }, { path: '/select', - name: 'data-selection', + name: 'selection', component: () => import('@/views/SelectionView.vue'), props: (to) => ({ mode: to.query.mode @@ -62,7 +62,7 @@ const router = createRouter({ }, { path: '/table', - name: 'data-table', + name: 'table', component: () => import('@/views/DataTableView.vue'), props: (to) => ({ initialColumnIds: Array.isArray(to.query.columns) diff --git a/src/views/DataTableView.vue b/src/views/DataTableView.vue index 43b4d9f..aaaf0ba 100644 --- a/src/views/DataTableView.vue +++ b/src/views/DataTableView.vue @@ -614,9 +614,7 @@ const dedupedTableEntries = computed(() => */ const scrollToTableTop = () => setTimeout(() => { - document - .getElementById('data-table') - ?.scrollTo({ top: 0, behavior: 'smooth' }) + document.getElementById('table')?.scrollTo({ top: 0, behavior: 'smooth' }) }, 10) </script> @@ -646,7 +644,7 @@ const scrollToTableTop = () => size="small" :pt="{ wrapper: { - id: 'data-table' + id: 'table' }, table: { style: { diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index 566ff91..ffcb63f 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -122,7 +122,7 @@ const menuItems = computed<MenuItem[]>(() => [ { label: 'All modifications', route: { - name: 'data-table', + name: 'table', query: { columns: LIST_MODIFICATIONS_TABLE_COLUMNS } @@ -136,7 +136,7 @@ const menuItems = computed<MenuItem[]>(() => [ label: modificationType, indent: 1, route: { - name: 'data-table', + name: 'table', query: { columns: LIST_MODIFICATIONS_TABLE_COLUMNS, modificationType: modificationType @@ -147,7 +147,7 @@ const menuItems = computed<MenuItem[]>(() => [ key: 'modificationSelection', label: 'Advanced modification selection', route: { - name: 'data-selection', + name: 'selection', query: { mode: 'modification' } @@ -163,7 +163,7 @@ const menuItems = computed<MenuItem[]>(() => [ key: 'guides', label: 'All guides', route: { - name: 'data-table', + name: 'table', query: { columns: LIST_GUIDES_TABLE_COLUMNS } @@ -177,7 +177,7 @@ const menuItems = computed<MenuItem[]>(() => [ label: formatGuideSubclass(guideClass), indent: 1, route: { - name: 'data-table', + name: 'table', query: { columns: LIST_GUIDES_TABLE_COLUMNS, guideSubclass: guideClass @@ -188,7 +188,7 @@ const menuItems = computed<MenuItem[]>(() => [ key: 'guideSelection', label: 'Advanced guide selection', route: { - name: 'data-selection', + name: 'selection', query: { mode: 'guide' } @@ -204,7 +204,7 @@ const menuItems = computed<MenuItem[]>(() => [ { label: 'All targets', route: { - name: 'data-table', + name: 'table', query: { columns: LIST_TARGETS_TABLE_COLUMNS } @@ -217,7 +217,7 @@ const menuItems = computed<MenuItem[]>(() => [ // label: unitType, // indent: 1, // route: { - // name: 'data-table', + // name: 'table', // query: { // columns: LIST_TARGETS_TABLE_COLUMNS, // unitType: unitType @@ -228,7 +228,7 @@ const menuItems = computed<MenuItem[]>(() => [ key: 'targetSelection', label: 'Advanced target selection', route: { - name: 'data-selection', + name: 'selection', query: { mode: 'target' } @@ -313,7 +313,7 @@ const menuItems = computed<MenuItem[]>(() => [ ? { label: `+${organismCount.value - 3} more...`, route: { - name: 'data-table', + name: 'table', query: { columns: LIST_ORGANISMS_TABLE_COLUMNS } }, iconComponent: IconFa6SolidTable diff --git a/src/views/SelectionView.vue b/src/views/SelectionView.vue index 8fe9316..7073b11 100644 --- a/src/views/SelectionView.vue +++ b/src/views/SelectionView.vue @@ -95,7 +95,7 @@ useTitle(pageTitle) const updateUrlQuery = (e: TabViewChangeEvent) => { const newMode = SELECTION_FORM_MODES[e.index] if (newMode) { - router.replace({ name: 'data-selection', query: { mode: newMode } }) + router.replace({ name: 'selection', query: { mode: newMode } }) } } @@ -225,7 +225,7 @@ const activeModeTableColumns = computed(() => { <template #footer> <RouterLink :to="{ - name: 'data-table', + name: 'table', query: { columns: activeModeTableColumns, ...tableFilters -- GitLab From e1e6fcadfc853829715e6c97fec90ab2af1f1846 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Wed, 12 Jun 2024 16:41:43 +0200 Subject: [PATCH 39/54] fix(router): :bug: wrap useTitle bindings in onMounted hook This allows to correctly overwrite the default value set in router (i.e. set it after having set the default) --- src/components/TargetSelectionForm.vue | 4 ++-- src/router/index.ts | 4 +--- src/views/ClusterView.vue | 4 ++-- src/views/GuideView.vue | 4 ++-- src/views/ModificationView.vue | 4 ++-- src/views/OrganismView.vue | 4 ++-- src/views/SelectionView.vue | 4 ++-- src/views/TargetView.vue | 4 ++-- 8 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/components/TargetSelectionForm.vue b/src/components/TargetSelectionForm.vue index 68c0f4b..0e15b39 100644 --- a/src/components/TargetSelectionForm.vue +++ b/src/components/TargetSelectionForm.vue @@ -33,7 +33,7 @@ export interface TargetSelectionModel { targetNames: string[] /** Currently selected modification types. */ modificationTypes: ModifType[] - /** Currently selected species IDs.*/ + /** Currently selected organism IDs.*/ organismIds: number[] } @@ -74,7 +74,7 @@ const gqlQuery = useQuery({ modificationTypes: selection.value.modificationTypes?.length ? selection.value.modificationTypes : undefined, - speciesIds: selection.value.organismIds?.length + organismIds: selection.value.organismIds?.length ? selection.value.organismIds : undefined })) diff --git a/src/router/index.ts b/src/router/index.ts index 1590078..4e6d9fd 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -26,8 +26,6 @@ declare module 'vue-router' { } } -const title = useTitle() - const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), routes: [ @@ -242,7 +240,7 @@ const router = createRouter({ }) router.afterEach((to) => { - title.value = (to.meta.title ? `${to.meta.title} | ` : '') + 'SnoBoard' + useTitle((to.meta.title ? `${to.meta.title} | ` : '') + 'SnoBoard') console.info('Title changed.') }) diff --git a/src/views/ClusterView.vue b/src/views/ClusterView.vue index 7ae9fc6..3cd95a5 100644 --- a/src/views/ClusterView.vue +++ b/src/views/ClusterView.vue @@ -2,7 +2,7 @@ /** * Vue imports */ -import { computed, toRef } from 'vue' +import { computed, onMounted, toRef } from 'vue' /** * Components imports */ @@ -71,7 +71,7 @@ const pageTitle = computed(() => : 'Cluster | SnoBoard' ) // Bind actual page title to computed one -useTitle(pageTitle) +onMounted(() => useTitle(pageTitle)) /** * First guide in the cluster diff --git a/src/views/GuideView.vue b/src/views/GuideView.vue index 4a3deab..09b4132 100644 --- a/src/views/GuideView.vue +++ b/src/views/GuideView.vue @@ -2,7 +2,7 @@ /** * Vue imports */ -import { computed, toRef } from 'vue' +import { computed, onMounted, toRef } from 'vue' /** * Components imports */ @@ -122,7 +122,7 @@ const pageTitle = computed(() => guide.value ? `${guide.value.name} • Guide | SnoBoard` : 'Guide | SnoBoard' ) // Bind actual page title to computed one -useTitle(pageTitle) +onMounted(() => useTitle(pageTitle)) /** * The list of the interaction, formatted for display. If some mandatory fields diff --git a/src/views/ModificationView.vue b/src/views/ModificationView.vue index 8e03ba9..5a02682 100644 --- a/src/views/ModificationView.vue +++ b/src/views/ModificationView.vue @@ -2,7 +2,7 @@ /** * Vue imports */ -import { computed, toRef } from 'vue' +import { computed, onMounted, toRef } from 'vue' /** * Components imports */ @@ -72,7 +72,7 @@ const pageTitle = computed(() => : 'Modification | SnoBoard' ) // Bind actual page title to computed one -useTitle(pageTitle) +onMounted(() => useTitle(pageTitle)) /** * The list of the interaction, formatted for display. If some mandatory fields diff --git a/src/views/OrganismView.vue b/src/views/OrganismView.vue index 5627ddf..c8c9527 100644 --- a/src/views/OrganismView.vue +++ b/src/views/OrganismView.vue @@ -2,7 +2,7 @@ /** * Vue imports */ -import { ref, computed, toRef } from 'vue' +import { ref, computed, toRef, onMounted } from 'vue' /** * Components imports */ @@ -181,7 +181,7 @@ const pageTitle = computed(() => : 'Guide | SnoBoard' ) // Bind actual page title to computed one. -useTitle(pageTitle) +onMounted(() => useTitle(pageTitle)) /** * The field selected for displaying the list of its entries (targets, guides diff --git a/src/views/SelectionView.vue b/src/views/SelectionView.vue index 7073b11..555954e 100644 --- a/src/views/SelectionView.vue +++ b/src/views/SelectionView.vue @@ -2,7 +2,7 @@ /** * Vue imports */ -import { computed, ref } from 'vue' +import { computed, onMounted, ref } from 'vue' import { useRouter } from 'vue-router' /** * Components imports @@ -86,7 +86,7 @@ const pageTitle = computed( () => `${_capitalize(activeMode.value)} • Selection | SnoBoard` ) // Bind actual page title to computed one -useTitle(pageTitle) +onMounted(() => useTitle(pageTitle)) /** * Callback to change the URL when switching tab. diff --git a/src/views/TargetView.vue b/src/views/TargetView.vue index cfcce12..bc7a8c7 100644 --- a/src/views/TargetView.vue +++ b/src/views/TargetView.vue @@ -2,7 +2,7 @@ /** * Vue imports */ -import { computed, toRef } from 'vue' +import { computed, onMounted, toRef } from 'vue' /** * Components imports */ @@ -193,7 +193,7 @@ const pageTitle = computed(() => : 'Target | SnoBoard' ) // Bind actual page title to computed one -useTitle(pageTitle) +onMounted(() => useTitle(pageTitle)) /** * The list of the interaction, formatted for display. If some mandatory fields -- GitLab From 759e945dfcaf98bb925d5b30ba4a2a917e0442b4 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Thu, 13 Jun 2024 10:30:40 +0200 Subject: [PATCH 40/54] refactor(advanced-selection): :recycle: change name of the v-modelof the selection forms --- src/components/GuideSelectionForm.vue | 18 +++++++++--------- src/components/ModificationSelectionForm.vue | 16 ++++++++-------- src/components/TargetSelectionForm.vue | 16 ++++++++-------- src/views/SelectionView.vue | 10 +++++++--- 4 files changed, 32 insertions(+), 28 deletions(-) diff --git a/src/components/GuideSelectionForm.vue b/src/components/GuideSelectionForm.vue index 70175a3..b5dd210 100644 --- a/src/components/GuideSelectionForm.vue +++ b/src/components/GuideSelectionForm.vue @@ -40,15 +40,15 @@ export interface GuideSelectionModel { */ defineProps<{ /** The current selection. */ - modelValue?: GuideSelectionModel + selectionModel?: GuideSelectionModel }>() /** * Component events. */ defineEmits<{ - /** Event used to update the `v-model` value. */ - 'update:modelValue': [modelValue: GuideSelectionModel] + /** Event used to update the `v-model:selectionModel` value. */ + 'update:selectionModel': [selectionModel: GuideSelectionModel] }>() /** @@ -280,7 +280,7 @@ const organismIdOptionsWithDisabling = computed(() => option-disabled="isDisabled" multiple class="mr-auto" - @update:model-value="(selectedGuideSubclasses: GuideClass[]) => $emit('update:modelValue', {...selection, guideSubclasses:selectedGuideSubclasses })" + @update:model-value="(selectedGuideSubclasses: GuideClass[]) => $emit('update:selectionModel', {...selection, guideSubclasses:selectedGuideSubclasses })" > <template #option="{ option }"> <BaseRenderedMarkdown @@ -305,7 +305,7 @@ const organismIdOptionsWithDisabling = computed(() => :max-selected-labels="3" display="chip" filter - @update:model-value="(selectedTargetNames: string[]) => $emit('update:modelValue', {...selection, targetNames:selectedTargetNames })" + @update:model-value="(selectedTargetNames: string[]) => $emit('update:selectionModel', {...selection, targetNames:selectedTargetNames })" > <template #value> <Chip @@ -315,7 +315,7 @@ const organismIdOptionsWithDisabling = computed(() => :label="targetName" removable @remove.stop=" - $emit('update:modelValue', { + $emit('update:selectionModel', { ...selection, targetNames: (selection.targetNames = selection.targetNames.filter( @@ -339,7 +339,7 @@ const organismIdOptionsWithDisabling = computed(() => option-disabled="isDisabled" multiple class="mr-auto" - @update:model-value="(selectedModificationTypes: ModifType[]) => $emit('update:modelValue', {...selection, modificationTypes:selectedModificationTypes })" + @update:model-value="(selectedModificationTypes: ModifType[]) => $emit('update:selectionModel', {...selection, modificationTypes:selectedModificationTypes })" > <template #option="{ option }"> <BaseRenderedMarkdown @@ -362,7 +362,7 @@ const organismIdOptionsWithDisabling = computed(() => :max-selected-labels="3" display="chip" filter - @update:model-value="(selectedOrganismIds: number[]) => $emit('update:modelValue', {...selection, organismIds:selectedOrganismIds })" + @update:model-value="(selectedOrganismIds: number[]) => $emit('update:selectionModel', {...selection, organismIds:selectedOrganismIds })" > <template #value> <Chip @@ -371,7 +371,7 @@ const organismIdOptionsWithDisabling = computed(() => class="mr-1" removable @remove.stop=" - $emit('update:modelValue', { + $emit('update:selectionModel', { ...selection, organismIds: (selection.organismIds = selection.organismIds.filter( diff --git a/src/components/ModificationSelectionForm.vue b/src/components/ModificationSelectionForm.vue index a7875b2..26e97cc 100644 --- a/src/components/ModificationSelectionForm.vue +++ b/src/components/ModificationSelectionForm.vue @@ -38,15 +38,15 @@ export interface ModificationSelectionModel { */ defineProps<{ /** The current selection. */ - modelValue?: ModificationSelectionModel + selectionModel?: ModificationSelectionModel }>() /** * Component events. */ defineEmits<{ - /** Event used to update the `v-model` value. */ - 'update:modelValue': [modelValue: ModificationSelectionModel] + /** Event used to update the `v-model:selectionModel` value. */ + 'update:selectionModel': [selectionModel: ModificationSelectionModel] }>() /** @@ -239,7 +239,7 @@ const organismIdOptionsWithDisabling = computed(() => option-disabled="isDisabled" multiple class="mr-auto" - @update:model-value="(selectedModificationTypes: ModifType[]) => $emit('update:modelValue', {...selection, modificationTypes:selectedModificationTypes })" + @update:model-value="(selectedModificationTypes: ModifType[]) => $emit('update:selectionModel', {...selection, modificationTypes:selectedModificationTypes })" > <template #option="{ option }"> <BaseRenderedMarkdown @@ -264,7 +264,7 @@ const organismIdOptionsWithDisabling = computed(() => :max-selected-labels="3" display="chip" filter - @update:model-value="(selectedTargetNames: string[]) => $emit('update:modelValue', {...selection, targetNames:selectedTargetNames })" + @update:model-value="(selectedTargetNames: string[]) => $emit('update:selectionModel', {...selection, targetNames:selectedTargetNames })" > <template #value> <Chip @@ -274,7 +274,7 @@ const organismIdOptionsWithDisabling = computed(() => :label="targetName" removable @remove.stop=" - $emit('update:modelValue', { + $emit('update:selectionModel', { ...selection, targetNames: (selection.targetNames = selection.targetNames.filter( @@ -302,7 +302,7 @@ const organismIdOptionsWithDisabling = computed(() => :max-selected-labels="3" display="chip" filter - @update:model-value="(selectedOrganismIds: number[]) => $emit('update:modelValue', {...selection, organismIds:selectedOrganismIds })" + @update:model-value="(selectedOrganismIds: number[]) => $emit('update:selectionModel', {...selection, organismIds:selectedOrganismIds })" > <template #value> <Chip @@ -311,7 +311,7 @@ const organismIdOptionsWithDisabling = computed(() => class="mr-1" removable @remove.stop=" - $emit('update:modelValue', { + $emit('update:selectionModel', { ...selection, organismIds: (selection.organismIds = selection.organismIds.filter( diff --git a/src/components/TargetSelectionForm.vue b/src/components/TargetSelectionForm.vue index 0e15b39..30bb78c 100644 --- a/src/components/TargetSelectionForm.vue +++ b/src/components/TargetSelectionForm.vue @@ -42,15 +42,15 @@ export interface TargetSelectionModel { */ defineProps<{ /** The current selection. */ - modelValue?: TargetSelectionModel + selectionModel?: TargetSelectionModel }>() /** * Component events. */ defineEmits<{ - /** Event used to update the `v-model` value. */ - 'update:modelValue': [modelValue: TargetSelectionModel] + /** Event used to update the `v-model:selectionModel` value. */ + 'update:selectionModel': [selectionModel: TargetSelectionModel] }>() /** @@ -249,7 +249,7 @@ const organismIdOptionsWithDisabling = computed(() => :max-selected-labels="3" display="chip" filter - @update:model-value="(selectedTargetNames: string[]) => $emit('update:modelValue', {...selection, targetNames:selectedTargetNames })" + @update:model-value="(selectedTargetNames: string[]) => $emit('update:selectionModel', {...selection, targetNames:selectedTargetNames })" > <template #value> <Chip @@ -259,7 +259,7 @@ const organismIdOptionsWithDisabling = computed(() => :label="targetName" removable @remove.stop=" - $emit('update:modelValue', { + $emit('update:selectionModel', { ...selection, targetNames: _remove( selection.targetNames, @@ -283,7 +283,7 @@ const organismIdOptionsWithDisabling = computed(() => option-disabled="isDisabled" multiple class="mr-auto" - @update:model-value="(selectedModificationTypes: ModifType[]) => $emit('update:modelValue', {...selection, modificationTypes:selectedModificationTypes })" + @update:model-value="(selectedModificationTypes: ModifType[]) => $emit('update:selectionModel', {...selection, modificationTypes:selectedModificationTypes })" > <template #option="{ option }"> <BaseRenderedMarkdown @@ -306,7 +306,7 @@ const organismIdOptionsWithDisabling = computed(() => :max-selected-labels="3" display="chip" filter - @update:model-value="(selectedOrganismIds: number[]) => $emit('update:modelValue', {...selection, organismIds:selectedOrganismIds })" + @update:model-value="(selectedOrganismIds: number[]) => $emit('update:selectionModel', {...selection, organismIds:selectedOrganismIds })" > <template #value> <Chip @@ -315,7 +315,7 @@ const organismIdOptionsWithDisabling = computed(() => class="mr-1" removable @remove.stop=" - $emit('update:modelValue', { + $emit('update:selectionModel', { ...selection, organismIds: _remove( selection.organismIds, diff --git a/src/views/SelectionView.vue b/src/views/SelectionView.vue index 555954e..2bebd63 100644 --- a/src/views/SelectionView.vue +++ b/src/views/SelectionView.vue @@ -211,13 +211,17 @@ const activeModeTableColumns = computed(() => { @tab-change="updateUrlQuery" > <TabPanel header="Modification"> - <ModificationSelectionForm v-model="selection.modification" /> + <ModificationSelectionForm + v-model:selection-model="selection.modification" + /> </TabPanel> <TabPanel header="Guide"> - <GuideSelectionForm v-model="selection.guide" /> + <GuideSelectionForm v-model:selection-model="selection.guide" /> </TabPanel> <TabPanel header="Target"> - <TargetSelectionForm v-model="selection.target" /> + <TargetSelectionForm + v-model:selection-model="selection.target" + /> </TabPanel> </TabView> </template> -- GitLab From 789e62b4b76e58e47d88e550a224ed68a26d4949 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Thu, 13 Jun 2024 10:34:31 +0200 Subject: [PATCH 41/54] feat(advanced-selection): :sparkles: add a v-model for unique target id when available --- src/components/ModificationSelectionForm.vue | 29 ++++++- src/components/TargetSelectionForm.vue | 29 ++++++- src/gql/codegen/gql.ts | 4 +- src/gql/codegen/graphql.ts | 4 +- src/gql/queries.ts | 1 + src/views/OrganismView.vue | 2 +- src/views/SelectionView.vue | 84 ++++++++++---------- 7 files changed, 104 insertions(+), 49 deletions(-) diff --git a/src/components/ModificationSelectionForm.vue b/src/components/ModificationSelectionForm.vue index 26e97cc..2b37c3a 100644 --- a/src/components/ModificationSelectionForm.vue +++ b/src/components/ModificationSelectionForm.vue @@ -2,7 +2,7 @@ /** * Vue imports */ -import { computed, ref, toRef } from 'vue' +import { computed, ref, toRef, watchEffect } from 'vue' /** * Component imports */ @@ -39,14 +39,20 @@ export interface ModificationSelectionModel { defineProps<{ /** The current selection. */ selectionModel?: ModificationSelectionModel + /** The ID of the target which matches the selection if it is unique (i.e. a + * single target name & a single species is selected), `undefined` otherwise. + */ + onlyTargetId?: string }>() /** * Component events. */ -defineEmits<{ +const emit = defineEmits<{ /** Event used to update the `v-model:selectionModel` value. */ 'update:selectionModel': [selectionModel: ModificationSelectionModel] + /** Event used to update the `v-model:onlyTargetId` value. */ + 'update:onlyTargetId': [onlyTargetId: string | undefined] }>() /** @@ -224,6 +230,25 @@ const organismIdOptionsWithDisabling = computed(() => ) })) ) + +/** + * Watcher to update the `v-model:onlyTargetId` value. + */ +watchEffect(() => { + if ( + selection.value.organismIds.length === 1 && + selection.value.targetNames.length === 1 + ) { + const onlyTargetId = gqlQuery.data.value?.targets.find( + (target) => target.name === selection.value.targetNames[0] + )?.id + if (onlyTargetId) { + emit('update:onlyTargetId', onlyTargetId) + return + } + } + emit('update:onlyTargetId', undefined) +}) </script> <template> diff --git a/src/components/TargetSelectionForm.vue b/src/components/TargetSelectionForm.vue index 30bb78c..0032610 100644 --- a/src/components/TargetSelectionForm.vue +++ b/src/components/TargetSelectionForm.vue @@ -2,7 +2,7 @@ /** * Vue imports */ -import { computed, ref, toRef } from 'vue' +import { computed, ref, toRef, watchEffect } from 'vue' /** * Component imports */ @@ -43,14 +43,20 @@ export interface TargetSelectionModel { defineProps<{ /** The current selection. */ selectionModel?: TargetSelectionModel + /** The ID of the target which matches the selection if it is unique (i.e. a + * single target name & a single species is selected), `undefined` otherwise. + */ + onlyTargetId?: string }>() /** * Component events. */ -defineEmits<{ +const emit = defineEmits<{ /** Event used to update the `v-model:selectionModel` value. */ 'update:selectionModel': [selectionModel: TargetSelectionModel] + /** Event used to update the `v-model:onlyTargetId` value. */ + 'update:onlyTargetId': [onlyTargetId: string | undefined] }>() /** @@ -228,6 +234,25 @@ const organismIdOptionsWithDisabling = computed(() => ) })) ) + +/** + * Watcher to update the `v-model:onlyTargetId` value. + */ +watchEffect(() => { + if ( + selection.value.organismIds.length === 1 && + selection.value.targetNames.length === 1 + ) { + const onlyTargetId = gqlQuery.data.value?.targets.find( + (target) => target.name === selection.value.targetNames[0] + )?.id + if (onlyTargetId) { + emit('update:onlyTargetId', onlyTargetId) + return + } + } + emit('update:onlyTargetId', undefined) +}) </script> <template> diff --git a/src/gql/codegen/gql.ts b/src/gql/codegen/gql.ts index 5c329a6..d69fc0b 100644 --- a/src/gql/codegen/gql.ts +++ b/src/gql/codegen/gql.ts @@ -14,7 +14,7 @@ import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document- */ const documents = { "\n query organismListQuery {\n organisms(options: { limit: 3 }) {\n id\n label\n shortname\n }\n organismsAggregate {\n count\n }\n }\n": types.OrganismListQueryDocument, - "\n query modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n": types.ModificationAndTargetSelectionQueryDocument, + "\n query modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n id\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n": types.ModificationAndTargetSelectionQueryDocument, "\n query guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guidesBase: guides {\n subclass\n subclass_label\n }\n\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n": types.GuideSelectionQueryDocument, "\n query tableEntriesQuery {\n tableEntries {\n id\n modification {\n id\n name\n position\n symbol_label\n type\n type_short_label\n target {\n id\n name\n class\n unit\n length\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n }\n }\n }\n }\n }\n guide {\n id\n name\n class\n subclass_label\n length\n seq\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n length\n }\n }\n }\n host_genes\n }\n organism {\n id\n label\n name\n }\n }\n\n targets {\n name\n }\n\n organisms {\n label\n id\n }\n }\n": types.TableEntriesQueryDocument, "\n query organismByIdQuery($id: Int) {\n organisms(where: { id: $id }) {\n id\n label\n shortname\n genomes {\n sequences(where: { graphql_type: Chromosome }) {\n id\n name\n altnames\n description\n length\n graphql_type\n guides: featuresConnection(where: { node: { graphql_type: Guide } }) {\n totalCount\n }\n }\n }\n }\n\n modifications(where: { target: { genome: { organism: { id: $id } } } }) {\n id\n name\n symbol_label\n type_short_label\n guidesAggregate {\n count\n }\n }\n\n allModificationsCount: modificationsAggregate(\n where: { target: { genome: { organism: { id: $id } } } }\n ) {\n count\n }\n\n nonOrphanModificationsCount: modificationsAggregate(\n where: {\n guidesAggregate: { count_GT: 0 }\n target: { genome: { organism: { id: $id } } }\n }\n ) {\n count\n }\n\n targets(where: { genome: { organism: { id: $id } } }) {\n id\n name\n class\n unit\n modificationsAggregate {\n count\n }\n }\n\n allTargetsCount: targetsAggregate(\n where: { genome: { organism: { id: $id } } }\n ) {\n count\n }\n\n guides(where: { genome: { organism: { id: $id } } }) {\n id\n name\n class\n subclass\n subclass_label\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n }\n node {\n id\n }\n }\n }\n modificationsAggregate {\n count\n }\n }\n\n allGuidesCount: guidesAggregate(\n where: { genome: { organism: { id: $id } } }\n ) {\n count\n }\n\n nonOrphanGuidesCount: guidesAggregate(\n where: {\n modificationsAggregate: { count_GT: 0 }\n genome: { organism: { id: $id } }\n }\n ) {\n count\n }\n }\n": types.OrganismByIdQueryDocument, @@ -46,7 +46,7 @@ export function graphql(source: "\n query organismListQuery {\n organisms(op /** * 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 modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n"): (typeof documents)["\n query modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n"]; +export function graphql(source: "\n query modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n id\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n"): (typeof documents)["\n query modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n id\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\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 9818f40..811b796 100644 --- a/src/gql/codegen/graphql.ts +++ b/src/gql/codegen/graphql.ts @@ -8867,7 +8867,7 @@ export type ModificationAndTargetSelectionQueryQueryVariables = Exact<{ }>; -export type ModificationAndTargetSelectionQueryQuery = { __typename?: 'Query', targetsBase: Array<{ __typename?: 'Target', name?: string | null, type: SequenceType }>, targets: Array<{ __typename?: 'Target', name?: string | null }>, modificationsBase: Array<{ __typename?: 'Modification', type_label?: string | null, type?: ModifType | null }>, modifications: Array<{ __typename?: 'Modification', type?: ModifType | null }>, organismsBase: Array<{ __typename?: 'Organism', label: string, id: number }>, organisms: Array<{ __typename?: 'Organism', id: number }> }; +export type ModificationAndTargetSelectionQueryQuery = { __typename?: 'Query', targetsBase: Array<{ __typename?: 'Target', name?: string | null, type: SequenceType }>, targets: Array<{ __typename?: 'Target', name?: string | null, id: string }>, modificationsBase: Array<{ __typename?: 'Modification', type_label?: string | null, type?: ModifType | null }>, modifications: Array<{ __typename?: 'Modification', type?: ModifType | null }>, organismsBase: Array<{ __typename?: 'Organism', label: string, id: number }>, organisms: Array<{ __typename?: 'Organism', id: number }> }; export type GuideSelectionQueryQueryVariables = Exact<{ guideSubclasses?: InputMaybe<Array<GuideClass> | GuideClass>; @@ -8926,7 +8926,7 @@ export type DatabaseStatisticsQueryQuery = { __typename?: 'Query', organismsAggr export const OrganismListQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"organismListQuery"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"options"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"3"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"shortname"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organismsAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}}]} as unknown as DocumentNode<OrganismListQueryQuery, OrganismListQueryQueryVariables>; -export const ModificationAndTargetSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"modificationAndTargetSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<ModificationAndTargetSelectionQueryQuery, ModificationAndTargetSelectionQueryQueryVariables>; +export const ModificationAndTargetSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"modificationAndTargetSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<ModificationAndTargetSelectionQueryQuery, ModificationAndTargetSelectionQueryQueryVariables>; export const GuideSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"guideSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"GuideClass"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"guidesBase"},"name":{"kind":"Name","value":"guides"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}}]}},{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guide"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<GuideSelectionQueryQuery, GuideSelectionQueryQueryVariables>; 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":"symbol_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}},{"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"host_genes"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organism"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<TableEntriesQueryQuery, TableEntriesQueryQueryVariables>; export const OrganismByIdQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"organismByIdQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"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":"graphql_type"},"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":"altnames"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"graphql_type"}},{"kind":"Field","alias":{"kind":"Name","value":"guides"},"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":"graphql_type"},"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"symbol_label"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}},{"kind":"Field","name":{"kind":"Name","value":"guidesAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"allModificationsCount"},"name":{"kind":"Name","value":"modificationsAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"nonOrphanModificationsCount"},"name":{"kind":"Name","value":"modificationsAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"guidesAggregate"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"count_GT"},"value":{"kind":"IntValue","value":"0"}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}]}}],"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"modificationsAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"allTargetsCount"},"name":{"kind":"Name","value":"targetsAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"class"}},{"kind":"Field","name":{"kind":"Name","value":"subclass"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"allGuidesCount"},"name":{"kind":"Name","value":"guidesAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"nonOrphanGuidesCount"},"name":{"kind":"Name","value":"guidesAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modificationsAggregate"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"count_GT"},"value":{"kind":"IntValue","value":"0"}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}}]} as unknown as DocumentNode<OrganismByIdQueryQuery, OrganismByIdQueryQueryVariables>; diff --git a/src/gql/queries.ts b/src/gql/queries.ts index 8fc2d33..79c8ce4 100644 --- a/src/gql/queries.ts +++ b/src/gql/queries.ts @@ -41,6 +41,7 @@ export const modificationAndTargetSelectionQuery = graphql(/* GraphQL */ ` } ) { name + id } modificationsBase: modifications { diff --git a/src/views/OrganismView.vue b/src/views/OrganismView.vue index c8c9527..5672ec0 100644 --- a/src/views/OrganismView.vue +++ b/src/views/OrganismView.vue @@ -240,7 +240,7 @@ const colorByField: { [k: string]: TailwindDefaultShadableColorNameModel } = { // })) /** - * For each field, a `LinkListItemModel` of the uniq entries of that field. + * For each field, a `LinkListItemModel` of the unique entries of that field. */ const itemsByField = computed<{ [k: string]: diff --git a/src/views/SelectionView.vue b/src/views/SelectionView.vue index 2bebd63..730aef6 100644 --- a/src/views/SelectionView.vue +++ b/src/views/SelectionView.vue @@ -55,6 +55,42 @@ export interface SelectionOptionModel { isDisabled?: boolean } +/** + * The columns to display in the table when navigating to it, depending on the + * active tab (i.e. form mode). + */ +const TABLE_COLUMNS_BY_MODE = { + modification: [ + 'modificationId', + 'modificationName', + 'modificationPosition', + 'modificationSymbol', + 'modificationType', + 'targetName', + 'organismName', + 'organismId' + ], + guide: [ + 'guideId', + 'guideName', + 'guideClass', + 'guideSubclass', + 'guideChromosomeName', + 'guideLength', + 'organismName', + 'organismId' + ], + target: [ + 'targetId', + 'targetName', + 'targetLength', + 'targetClass', + 'targetChromosomeName', + 'organismName', + 'organismId' + ] +} + /** * Component props. */ @@ -127,46 +163,12 @@ const tableFilters = computed(() => ({ })) /** - * The columns to display in the table when navigating to it, based on the - * active tab (i.e. form mode). + * The ID of the target which matches the selection if it is unique (i.e. a + * single target name & a single species is selected), `undefined` otherwise. */ -const activeModeTableColumns = computed(() => { - switch (activeTabIndex.value) { - case TabEnum.Modification: - return [ - 'modificationId', - 'modificationName', - 'modificationPosition', - 'modificationSymbol', - 'modificationType', - 'targetName', - 'organismName', - 'organismId' - ] - case TabEnum.Guide: - return [ - 'guideId', - 'guideName', - 'guideClass', - 'guideSubclass', - 'guideChromosomeName', - 'guideLength', - 'organismName', - 'organismId' - ] - case TabEnum.Target: - return [ - 'targetId', - 'targetName', - 'targetLength', - 'targetClass', - 'targetChromosomeName', - 'organismName', - 'organismId' - ] - default: - return [] - } +const onlyTargetId = ref<{ modification?: string; target?: string }>({ + modification: undefined, + target: undefined }) </script> @@ -213,6 +215,7 @@ const activeModeTableColumns = computed(() => { <TabPanel header="Modification"> <ModificationSelectionForm v-model:selection-model="selection.modification" + v-model:only-target-id="onlyTargetId.modification" /> </TabPanel> <TabPanel header="Guide"> @@ -221,6 +224,7 @@ const activeModeTableColumns = computed(() => { <TabPanel header="Target"> <TargetSelectionForm v-model:selection-model="selection.target" + v-model:only-target-id="onlyTargetId.target" /> </TabPanel> </TabView> @@ -231,7 +235,7 @@ const activeModeTableColumns = computed(() => { :to="{ name: 'table', query: { - columns: activeModeTableColumns, + columns: TABLE_COLUMNS_BY_MODE[activeMode], ...tableFilters } }" -- GitLab From 4102d0d66d6ac180086c9ef57d43d3a5d8e9b71a Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Fri, 14 Jun 2024 08:50:49 +0200 Subject: [PATCH 42/54] feat(detail-views): :sparkles: add a prop to define initially selected tab of the "Graphics" panel --- src/views/GuideView.vue | 18 ++++++++++++++++-- src/views/ModificationView.vue | 20 +++++++++++++++++--- src/views/TargetView.vue | 21 ++++++++++++++++++--- 3 files changed, 51 insertions(+), 8 deletions(-) diff --git a/src/views/GuideView.vue b/src/views/GuideView.vue index 09b4132..d1ec653 100644 --- a/src/views/GuideView.vue +++ b/src/views/GuideView.vue @@ -2,7 +2,7 @@ /** * Vue imports */ -import { computed, onMounted, toRef } from 'vue' +import { computed, onMounted, ref, toRef } from 'vue' /** * Components imports */ @@ -53,6 +53,13 @@ import { guideByIdQuery } from '@/gql/queries' import { isDefined, isInEnum } from '@/typings/typeUtils' import { getBoxColor, getModificationColor } from '@/utils/colors' +/** + * Enum to represent the tabs in the 'Graphics' panel. + */ +enum GraphicsTabEnum { + interaction = 0 +} + /** * Utility constant to get the icon component corresponding to each strand value. */ @@ -93,6 +100,8 @@ const GUIDE_LEGEND_ITEMS: LegendItemModel[] = [ const props = defineProps<{ /** The ID of the guide to display. */ guideId: string + /** The tab to display initially in the 'Graphics' panel */ + initialGraphicsPanelTab: keyof typeof GraphicsTabEnum }>() /** @@ -410,6 +419,11 @@ const ontologyLinks = computed(() => ({ ontologyIdsCleaned.value.ChEBI && `https://www.ebi.ac.uk/chebi/searchId.do?chebiId=${ontologyIdsCleaned.value.ChEBI}` })) + +/** + * The selected tab in the 'Graphics' panel. + */ +const selectedGraphicsTab = ref(GraphicsTabEnum[props.initialGraphicsPanelTab]) </script> <template> @@ -824,7 +838,7 @@ const ontologyLinks = computed(() => ({ <span :class="scope.class">Graphics</span> </template> - <TabView> + <TabView v-model:active-index="selectedGraphicsTab"> <TabPanel header="Local interaction"> <!-- v-if is to ensure we can access and map `guide.interactions` --> <InteractionBoard diff --git a/src/views/ModificationView.vue b/src/views/ModificationView.vue index 5a02682..807aeed 100644 --- a/src/views/ModificationView.vue +++ b/src/views/ModificationView.vue @@ -2,7 +2,7 @@ /** * Vue imports */ -import { computed, onMounted, toRef } from 'vue' +import { computed, onMounted, ref, toRef } from 'vue' /** * Components imports */ @@ -34,12 +34,21 @@ import { modificationByIdQuery } from '@/gql/queries' import { isDefined } from '@/typings/typeUtils' import { SequenceClass } from '@/gql/codegen/graphql' +/** + * Enum to represent the tabs in the 'Graphics' panel. + */ +enum GraphicsTabEnum { + interaction = 0 +} + /** * Component props */ const props = defineProps<{ - // The ID of the guide to display + /** The ID of the guide to display */ modificationId: string + /** The tab to display initially in the 'Graphics' panel */ + initialGraphicsPanelTab: keyof typeof GraphicsTabEnum }>() /** @@ -195,6 +204,11 @@ const linkedGuidesFieldName = computed( // SO: `http://www.sequenceontology.org/browser/current_release/term/SO:${referenceIdsCleaned.value.SO}`, // ChEBI: `https://www.ebi.ac.uk/chebi/searchId.do?chebiId=${referenceIdsCleaned.value.ChEBI}` // })) + +/** + * The selected tab in the 'Graphics' panel. + */ +const selectedGraphicsTab = ref(GraphicsTabEnum[props.initialGraphicsPanelTab]) </script> <template> @@ -387,7 +401,7 @@ const linkedGuidesFieldName = computed( <span :class="scope.class">Graphics</span> </template> - <TabView> + <TabView v-model:active-index="selectedGraphicsTab"> <TabPanel header="Local interaction"> <!-- v-if is to ensure we can access and map `modification.interactions` --> <InteractionBoard diff --git a/src/views/TargetView.vue b/src/views/TargetView.vue index bc7a8c7..f93e3dc 100644 --- a/src/views/TargetView.vue +++ b/src/views/TargetView.vue @@ -2,7 +2,7 @@ /** * Vue imports */ -import { computed, onMounted, toRef } from 'vue' +import { computed, onMounted, ref, toRef } from 'vue' /** * Components imports */ @@ -55,6 +55,14 @@ import { isDefined, isInEnum } from '@/typings/typeUtils' import { getModificationColor } from '@/utils/colors' import type { LegendItemModel } from '@/components/BaseLegendButtonOverlay.vue' +/** + * Enum to represent the tabs in the 'Graphics' panel. + */ +enum GraphicsTabEnum { + interaction = 0, + '2d-struct' +} + /** * Utility constant to get the icon component corresponding to each strand value */ @@ -91,8 +99,10 @@ const TARGET_LEGEND_ITEMS: LegendItemModel[] = [ * Component props */ const props = defineProps<{ - // The ID of the target to display + /** The ID of the target to display */ targetId: string + /** The tab to display initially in the 'Graphics' panel */ + initialGraphicsPanelTab: keyof typeof GraphicsTabEnum }>() /** @@ -400,6 +410,11 @@ const ontologyLinks = computed(() => ({ ontologyIdsCleaned.value.ChEBI && `https://www.ebi.ac.uk/chebi/searchId.do?chebiId=${ontologyIdsCleaned.value.ChEBI}` })) + +/** + * The selected tab in the 'Graphics' panel. + */ +const selectedGraphicsTab = ref(GraphicsTabEnum[props.initialGraphicsPanelTab]) </script> <template> @@ -712,7 +727,7 @@ const ontologyLinks = computed(() => ({ <span :class="scope.class">Graphics</span> </template> - <TabView :lazy="true"> + <TabView v-model:active-index="selectedGraphicsTab" :lazy="true"> <TabPanel header="Local interaction"> <!-- v-if is to ensure we can access and map `target.interactions` --> <InteractionBoard -- GitLab From 276cad534c768033dc8b168663509b03a16c5911 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Fri, 14 Jun 2024 08:52:16 +0200 Subject: [PATCH 43/54] feat(router): :sparkles: pass initial graphic tab prop to detail views from url query string --- src/router/index.ts | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/router/index.ts b/src/router/index.ts index 4e6d9fd..b4ee5e2 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -119,7 +119,10 @@ const router = createRouter({ path: 'guide', name: 'guideDetails', component: () => import('@/views/GuideView.vue'), - props: (to) => ({ guideId: to.query.id }), + props: (to) => ({ + guideId: to.query.id, + initialGraphicsPanelTab: to.query.graphicsTab + }), beforeEnter: (to) => { if (typeof to.query.id !== 'string') { router.replace({ name: 'lost' }) @@ -130,7 +133,10 @@ const router = createRouter({ path: 'modification', name: 'modificationDetails', component: () => import('@/views/ModificationView.vue'), - props: (to) => ({ modificationId: to.query.id }), + props: (to) => ({ + modificationId: to.query.id, + initialGraphicsPanelTab: to.query.graphicsTab + }), beforeEnter: (to) => { if (typeof to.query.id !== 'string') { router.replace({ name: 'lost' }) @@ -141,7 +147,10 @@ const router = createRouter({ path: 'target', name: 'targetDetails', component: () => import('@/views/TargetView.vue'), - props: (to) => ({ targetId: to.query.id }), + props: (to) => ({ + targetId: to.query.id, + initialGraphicsPanelTab: to.query.graphicsTab + }), beforeEnter: (to) => { if (typeof to.query.id !== 'string') { router.replace({ name: 'lost' }) -- GitLab From 8db4b225764910d02d4d83b17085ef386fd3a22a Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Fri, 14 Jun 2024 09:10:10 +0200 Subject: [PATCH 44/54] feat(advanced-selection): :sparkles: add links to target sequence & structure when applicable --- src/assets/icons/sequence.svg | 5 ++ src/views/ClusterView.vue | 2 +- src/views/SelectionView.vue | 124 +++++++++++++++++++++++++++++----- 3 files changed, 113 insertions(+), 18 deletions(-) create mode 100644 src/assets/icons/sequence.svg diff --git a/src/assets/icons/sequence.svg b/src/assets/icons/sequence.svg new file mode 100644 index 0000000..d978a2b --- /dev/null +++ b/src/assets/icons/sequence.svg @@ -0,0 +1,5 @@ +<svg width="1em" height="1em" viewBox="0 0 512 512"> + <path + style="fill:currentColor" + d="M60.95 93.45c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm68.02 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm68.02 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm118.02 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm68.02 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm68.02 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM60.95 224c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm68.02 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm68.02 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm118.02 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm68.02 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm68.02 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM60.95 354.55c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm68.02 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm68.02 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm118.02 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm68.02 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm68.02 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z" /> +</svg> \ No newline at end of file diff --git a/src/views/ClusterView.vue b/src/views/ClusterView.vue index 3cd95a5..67ec26b 100644 --- a/src/views/ClusterView.vue +++ b/src/views/ClusterView.vue @@ -36,7 +36,7 @@ import { clusterByIdQuery } from '@/gql/queries' * Component props */ const props = defineProps<{ - // The ID of the cluster to display + /** The ID of the cluster to display */ clusterId: string }>() diff --git a/src/views/SelectionView.vue b/src/views/SelectionView.vue index 730aef6..9d1ec63 100644 --- a/src/views/SelectionView.vue +++ b/src/views/SelectionView.vue @@ -22,6 +22,9 @@ import TabPanel from 'primevue/tabpanel' import Card from 'primevue/card' import Button from 'primevue/button' import IconFa6SolidTable from '~icons/fa6-solid/table' +import IconFa6SolidBullseye from '~icons/fa6-solid/bullseye' +import IconFa6SolidCircleNodes from '~icons/fa6-solid/circle-nodes' +import IconSnoboardSequence from '~icons/snoboard/sequence' /** * Other 3rd-party imports */ @@ -165,11 +168,24 @@ const tableFilters = computed(() => ({ /** * The ID of the target which matches the selection if it is unique (i.e. a * single target name & a single species is selected), `undefined` otherwise. + * One target ID is used for each mode able to provide one. */ -const onlyTargetId = ref<{ modification?: string; target?: string }>({ +const onlyTargetIdByMode = ref<{ modification?: string; target?: string }>({ modification: undefined, target: undefined }) + +/** + * The `onlyTargetId` (see `onlyTargetIdByMode`) corresponding to the active + * mode. + */ +const onlyTargetIdActiveMode = computed(() => + activeMode.value === 'modification' + ? onlyTargetIdByMode.value.modification + : activeMode.value === 'target' + ? onlyTargetIdByMode.value.target + : undefined +) </script> <template> @@ -215,7 +231,7 @@ const onlyTargetId = ref<{ modification?: string; target?: string }>({ <TabPanel header="Modification"> <ModificationSelectionForm v-model:selection-model="selection.modification" - v-model:only-target-id="onlyTargetId.modification" + v-model:only-target-id="onlyTargetIdByMode.modification" /> </TabPanel> <TabPanel header="Guide"> @@ -224,27 +240,101 @@ const onlyTargetId = ref<{ modification?: string; target?: string }>({ <TabPanel header="Target"> <TargetSelectionForm v-model:selection-model="selection.target" - v-model:only-target-id="onlyTargetId.target" + v-model:only-target-id="onlyTargetIdByMode.target" /> </TabPanel> </TabView> </template> <template #footer> - <RouterLink - :to="{ - name: 'table', - query: { - columns: TABLE_COLUMNS_BY_MODE[activeMode], - ...tableFilters - } - }" - > - <Button> - <icon-fa6-solid-table /> - <span class="ml-2">View in table</span> - </Button> - </RouterLink> + <div class="flex gap-4"> + <RouterLink + :to="{ + name: 'table', + query: { + columns: TABLE_COLUMNS_BY_MODE[activeMode], + ...tableFilters + } + }" + > + <Button> + <icon-fa6-solid-table /> + <span class="ml-2">View in table</span> + </Button> + </RouterLink> + + <div + v-if="activeMode === 'target'" + v-tooltip.top=" + !onlyTargetIdByMode.target && { + value: 'Select a unique target/species pair', + pt: { + text: { + style: { + textAlign: 'center', + fontStyle: 'italic' + } + } + } + } + " + > + <RouterLink + :to="{ + name: 'targetDetails', + query: { + id: onlyTargetIdByMode.target + }, + hash: '#sequence-panel' + }" + :class="{ 'pointer-events-none': !onlyTargetIdByMode.target }" + > + <Button :disabled="!onlyTargetIdByMode.target"> + <icon-snoboard-sequence /> + <span class="ml-2">View sequence</span> + </Button> + </RouterLink> + </div> + + <div + v-if="activeMode === 'target' || activeMode === 'modification'" + v-tooltip.top=" + !onlyTargetIdActiveMode && { + value: 'Select a unique target/species pair', + pt: { + text: { + style: { + textAlign: 'center', + fontStyle: 'italic' + } + } + } + } + " + > + <RouterLink + :to="{ + name: 'targetDetails', + query: { + id: onlyTargetIdActiveMode, + graphicsTab: '2d-struct' + }, + hash: '#graphics-panel' + }" + :class="{ 'pointer-events-none': !onlyTargetIdActiveMode }" + > + <Button :disabled="!onlyTargetIdActiveMode"> + <icon-fa6-solid-bullseye v-if="activeMode === 'modification'" /> + <icon-fa6-solid-circle-nodes v-else /> + <span class="ml-2"> + View + {{ activeMode === 'modification' ? 'on target' : '' }} + structure + </span> + </Button> + </RouterLink> + </div> + </div> </template> </Card> </MainLayout> -- GitLab From e6e90bbf1c4e6605771841c9ee85f2743f874048 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Fri, 14 Jun 2024 15:09:05 +0200 Subject: [PATCH 45/54] fix(home-view): :adhesive_bandage: disable links not implemented in menubar --- src/views/HomeView.vue | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index ffcb63f..17dfe80 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -254,7 +254,8 @@ const menuItems = computed<MenuItem[]>(() => [ // type: 'modification' // } }, - iconComponent: IconSnoboardModification + iconComponent: IconSnoboardModification, + disabled: true }, { key: 'conservationGuides', @@ -265,7 +266,8 @@ const menuItems = computed<MenuItem[]>(() => [ // type: 'modification' // } }, - iconComponent: IconSnoboardGuide + iconComponent: IconSnoboardGuide, + disabled: true }, { key: 'conservationTargets', @@ -276,7 +278,8 @@ const menuItems = computed<MenuItem[]>(() => [ // type: 'modification' // } }, - iconComponent: IconFa6SolidBullseye + iconComponent: IconFa6SolidBullseye, + disabled: true } ] }, @@ -290,7 +293,8 @@ const menuItems = computed<MenuItem[]>(() => [ route: { name: 'statistics' }, - iconComponent: IconFa6SolidDatabase + iconComponent: IconFa6SolidDatabase, + disabled: true }, { key: 'statisticsOrganism', -- GitLab From d258364e2583adb52a4811518be2433ffd5b3987 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Fri, 14 Jun 2024 15:42:45 +0200 Subject: [PATCH 46/54] refactor(router): :truck: rename "Statistics" view & route to "Species" --- src/views/HomeView.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index 17dfe80..66a53ae 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -304,7 +304,7 @@ const menuItems = computed<MenuItem[]>(() => [ key: `statisticsOrganism${organism.id}`, label: organism.label, route: { - name: 'statistics', + name: 'organism', query: { id: organism.id } -- GitLab From 24bee5a7a4e28076254508637bf7f7ed2b752adc Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Wed, 19 Jun 2024 10:53:08 +0200 Subject: [PATCH 47/54] fix(home-view): :adhesive_bandage: non-existing route --- src/views/HomeView.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index 66a53ae..e55b81e 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -291,7 +291,7 @@ const menuItems = computed<MenuItem[]>(() => [ key: 'statisticsDB', label: 'Database-wide', route: { - name: 'statistics' + // name: 'statistics' }, iconComponent: IconFa6SolidDatabase, disabled: true -- GitLab From 074f57a1b729b1404ce11082e77d83c456d660a7 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Wed, 31 Jul 2024 16:10:46 +0200 Subject: [PATCH 48/54] feat(home-view): :sparkles: enable link to statistics view --- src/views/HomeView.vue | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index e55b81e..8ebca0b 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -291,10 +291,9 @@ const menuItems = computed<MenuItem[]>(() => [ key: 'statisticsDB', label: 'Database-wide', route: { - // name: 'statistics' + name: 'statistics' }, - iconComponent: IconFa6SolidDatabase, - disabled: true + iconComponent: IconFa6SolidDatabase }, { key: 'statisticsOrganism', -- GitLab From 6467ca4d674f5501ff461295d554eb2af4f97730 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Thu, 1 Aug 2024 10:18:35 +0200 Subject: [PATCH 49/54] fix(utils): :adhesive_bandage: wrong nullness (?) testing --- src/typings/typeUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/typings/typeUtils.ts b/src/typings/typeUtils.ts index f74bd66..d44a190 100644 --- a/src/typings/typeUtils.ts +++ b/src/typings/typeUtils.ts @@ -47,7 +47,7 @@ export type DeepDefined<T> = T extends object * @param value The value to check. */ export const isNonNullish = <T>(value: T): value is NonNullable<T> => - typeof value != null + value != null /** * Checks if a value is defined, narrowing it. -- GitLab From ddcd7b9680ec3b64fd57e4204cbcf04ea0fb9fd8 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Thu, 1 Aug 2024 10:39:57 +0200 Subject: [PATCH 50/54] feat(home-view): :alien: get labels from API & use target unit in menu --- src/gql/codegen/gql.ts | 4 +- src/gql/codegen/graphql.ts | 6 +-- src/gql/queries.ts | 19 ++++++- src/views/HomeView.vue | 103 ++++++++++++++++++++----------------- 4 files changed, 78 insertions(+), 54 deletions(-) diff --git a/src/gql/codegen/gql.ts b/src/gql/codegen/gql.ts index d69fc0b..337040b 100644 --- a/src/gql/codegen/gql.ts +++ b/src/gql/codegen/gql.ts @@ -13,7 +13,7 @@ import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document- * Therefore it is highly recommended to use the babel or swc plugin for production. */ const documents = { - "\n query organismListQuery {\n organisms(options: { limit: 3 }) {\n id\n label\n shortname\n }\n organismsAggregate {\n count\n }\n }\n": types.OrganismListQueryDocument, + "\n query homeQuery {\n modificationTypes: modifications {\n type\n type_short_label\n }\n\n guideSubclasses: guides {\n subclass\n subclass_label\n }\n\n targetUnits: targets {\n unit\n }\n\n organisms(options: { limit: 3 }) {\n id\n label\n shortname\n }\n\n organismsAggregate {\n count\n }\n }\n": types.HomeQueryDocument, "\n query modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n id\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n": types.ModificationAndTargetSelectionQueryDocument, "\n query guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guidesBase: guides {\n subclass\n subclass_label\n }\n\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n": types.GuideSelectionQueryDocument, "\n query tableEntriesQuery {\n tableEntries {\n id\n modification {\n id\n name\n position\n symbol_label\n type\n type_short_label\n target {\n id\n name\n class\n unit\n length\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n }\n }\n }\n }\n }\n guide {\n id\n name\n class\n subclass_label\n length\n seq\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n length\n }\n }\n }\n host_genes\n }\n organism {\n id\n label\n name\n }\n }\n\n targets {\n name\n }\n\n organisms {\n label\n id\n }\n }\n": types.TableEntriesQueryDocument, @@ -42,7 +42,7 @@ export function graphql(source: string): unknown; /** * 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 organismListQuery {\n organisms(options: { limit: 3 }) {\n id\n label\n shortname\n }\n organismsAggregate {\n count\n }\n }\n"): (typeof documents)["\n query organismListQuery {\n organisms(options: { limit: 3 }) {\n id\n label\n shortname\n }\n organismsAggregate {\n count\n }\n }\n"]; +export function graphql(source: "\n query homeQuery {\n modificationTypes: modifications {\n type\n type_short_label\n }\n\n guideSubclasses: guides {\n subclass\n subclass_label\n }\n\n targetUnits: targets {\n unit\n }\n\n organisms(options: { limit: 3 }) {\n id\n label\n shortname\n }\n\n organismsAggregate {\n count\n }\n }\n"): (typeof documents)["\n query homeQuery {\n modificationTypes: modifications {\n type\n type_short_label\n }\n\n guideSubclasses: guides {\n subclass\n subclass_label\n }\n\n targetUnits: targets {\n unit\n }\n\n organisms(options: { limit: 3 }) {\n id\n label\n shortname\n }\n\n organismsAggregate {\n count\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 811b796..5820121 100644 --- a/src/gql/codegen/graphql.ts +++ b/src/gql/codegen/graphql.ts @@ -8855,10 +8855,10 @@ export type TargetsConnection = { totalCount: Scalars['Int']['output']; }; -export type OrganismListQueryQueryVariables = Exact<{ [key: string]: never; }>; +export type HomeQueryQueryVariables = Exact<{ [key: string]: never; }>; -export type OrganismListQueryQuery = { __typename?: 'Query', organisms: Array<{ __typename?: 'Organism', id: number, label: string, shortname: string }>, organismsAggregate: { __typename?: 'OrganismAggregateSelection', count: number } }; +export type HomeQueryQuery = { __typename?: 'Query', modificationTypes: Array<{ __typename?: 'Modification', type?: ModifType | null, type_short_label?: string | null }>, guideSubclasses: Array<{ __typename?: 'Guide', subclass: GuideClass, subclass_label: string }>, targetUnits: Array<{ __typename?: 'Target', unit?: string | null }>, organisms: Array<{ __typename?: 'Organism', id: number, label: string, shortname: string }>, organismsAggregate: { __typename?: 'OrganismAggregateSelection', count: number } }; export type ModificationAndTargetSelectionQueryQueryVariables = Exact<{ modificationTypes?: InputMaybe<Array<InputMaybe<ModifType>> | InputMaybe<ModifType>>; @@ -8925,7 +8925,7 @@ export type DatabaseStatisticsQueryQueryVariables = Exact<{ [key: string]: never export type DatabaseStatisticsQueryQuery = { __typename?: 'Query', organismsAggregate: { __typename?: 'OrganismAggregateSelection', count: number }, allModifications: Array<{ __typename?: 'Modification', type?: ModifType | null }>, allModificationsCount: { __typename?: 'ModificationAggregateSelection', count: number }, nonOrphanModificationsCount: { __typename?: 'ModificationAggregateSelection', count: number }, allGuides: Array<{ __typename?: 'Guide', subclass: GuideClass }>, allGuidesCount: { __typename?: 'GuideAggregateSelection', count: number }, nonOrphanGuidesCount: { __typename?: 'GuideAggregateSelection', count: number } }; -export const OrganismListQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"organismListQuery"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"options"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"3"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"shortname"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organismsAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}}]} as unknown as DocumentNode<OrganismListQueryQuery, OrganismListQueryQueryVariables>; +export const HomeQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"homeQuery"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"modificationTypes"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"guideSubclasses"},"name":{"kind":"Name","value":"guides"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"targetUnits"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"unit"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"options"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"3"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"shortname"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organismsAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}}]} as unknown as DocumentNode<HomeQueryQuery, HomeQueryQueryVariables>; export const ModificationAndTargetSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"modificationAndTargetSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<ModificationAndTargetSelectionQueryQuery, ModificationAndTargetSelectionQueryQueryVariables>; export const GuideSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"guideSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"GuideClass"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"guidesBase"},"name":{"kind":"Name","value":"guides"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}}]}},{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guide"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<GuideSelectionQueryQuery, GuideSelectionQueryQueryVariables>; 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":"symbol_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}},{"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"host_genes"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organism"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<TableEntriesQueryQuery, TableEntriesQueryQueryVariables>; diff --git a/src/gql/queries.ts b/src/gql/queries.ts index 79c8ce4..0095646 100644 --- a/src/gql/queries.ts +++ b/src/gql/queries.ts @@ -6,13 +6,28 @@ import { graphql } from './codegen' /** * Get the list of the organisms present in the database */ -export const organismListQuery = graphql(/* GraphQL */ ` - query organismListQuery { +export const homeQuery = graphql(/* GraphQL */ ` + query homeQuery { + modificationTypes: modifications { + type + type_short_label + } + + guideSubclasses: guides { + subclass + subclass_label + } + + targetUnits: targets { + unit + } + organisms(options: { limit: 3 }) { id label shortname } + organismsAggregate { count } diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index 8ebca0b..e842271 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -9,7 +9,6 @@ import { computed } from 'vue' import Image from 'primevue/image' import Menubar from 'primevue/menubar' import SearchBar from '@/components/SearchBar.vue' -import FormattedModificationType from '@/components/FormattedModificationType.vue' import BaseRenderedMarkdown from '@/components/BaseRenderedMarkdown.vue' import IconFa6SolidMagnifyingGlass from '~icons/fa6-solid/magnifying-glass' import IconFa6SolidCircleXmark from '~icons/fa6-solid/circle-xmark' @@ -34,15 +33,15 @@ import type { MenuItem } from 'primevue/menuitem' /** * Utils imports */ -import { organismListQuery } from '@/gql/queries' +import { homeQuery } from '@/gql/queries' /** * Assets imports */ import logoUrl from '@/assets/images/logo.svg' import { GuideClass, ModifType } from '@/gql/codegen/graphql' -import { formatGuideSubclass } from '@/utils/textFormatting' -import { isDefined, isInEnum } from '@/typings/typeUtils' +import { isDefined, isNonNullish } from '@/typings/typeUtils' import tailwindDefaultColors from 'tailwindcss/colors' +import { uniqWith as _uniqWith, isEqual as _isEqual } from 'lodash-es' /** * Useful columns to show to list guides in the table. @@ -80,6 +79,7 @@ const LIST_TARGETS_TABLE_COLUMNS = [ 'targetName', 'targetLength', 'targetClass', + 'targetUnit', 'targetChromosomeName', 'organismName', 'organismId' @@ -94,9 +94,35 @@ const LIST_ORGANISMS_TABLE_COLUMNS = ['organismName', 'organismId'] * Reactive urql GraphQL query object, updated with query state & response. */ const gqlQuery = useQuery({ - query: organismListQuery + query: homeQuery }) +/** + * The list of all the modification types present in the database, + * reactively updated when fetched. + */ +const modificationTypesList = computed(() => + _uniqWith(gqlQuery.data.value?.modificationTypes, _isEqual) +) + +/** + * The list of all the guide subclasses present in the database, + * reactively updated when fetched. + */ +const guideSubclassesList = computed(() => + _uniqWith(gqlQuery.data.value?.guideSubclasses, _isEqual) +) + +/** + * The list of all the target units present in the database, + * reactively updated when fetched. + */ +const targetUnitsList = computed(() => + _uniqWith(gqlQuery.data.value?.targetUnits, _isEqual) + .map((targetUnit) => targetUnit.unit) + .filter(isNonNullish) +) + /** * The list of all the organisms present in the database, * reactively updated when fetched. @@ -129,17 +155,17 @@ const menuItems = computed<MenuItem[]>(() => [ }, iconComponent: IconFa6SolidTable }, - ...Object.values(ModifType) - .filter((modificationType) => modificationType !== ModifType.Other) + ...modificationTypesList.value + .filter((modificationType) => modificationType.type !== ModifType.Other) .map((modificationType) => ({ - key: `modifications${modificationType}`, - label: modificationType, + key: `modifications${modificationType.type}`, + label: modificationType.type_short_label || '', indent: 1, route: { name: 'table', query: { columns: LIST_MODIFICATIONS_TABLE_COLUMNS, - modificationType: modificationType + modificationType: modificationType.type } } })), @@ -170,17 +196,17 @@ const menuItems = computed<MenuItem[]>(() => [ }, iconComponent: IconFa6SolidTable }, - ...Object.values(GuideClass) - .filter((guideClass) => guideClass !== GuideClass.Other) - .map((guideClass) => ({ - key: `guides${guideClass}`, - label: formatGuideSubclass(guideClass), + ...guideSubclassesList.value + .filter((guideSubclass) => guideSubclass.subclass !== GuideClass.Other) + .map((guideSubclass) => ({ + key: `guides${guideSubclass}`, + label: guideSubclass.subclass_label, indent: 1, route: { name: 'table', query: { columns: LIST_GUIDES_TABLE_COLUMNS, - guideSubclass: guideClass + guideSubclass: guideSubclass } } })), @@ -211,19 +237,18 @@ const menuItems = computed<MenuItem[]>(() => [ }, iconComponent: IconFa6SolidTable }, - // ...Object.values(UnitType) - // .filter((unitType) => unitType !== UnitType.Other) - // .map((unitType) => ({ - // label: unitType, - // indent: 1, - // route: { - // name: 'table', - // query: { - // columns: LIST_TARGETS_TABLE_COLUMNS, - // unitType: unitType - // } - // } - // })), + ...targetUnitsList.value.map((targetUnit) => ({ + key: `targets${targetUnit}`, + label: targetUnit, + indent: 1, + route: { + name: 'table', + query: { + columns: LIST_TARGETS_TABLE_COLUMNS, + targetUnit + } + } + })), { key: 'targetSelection', label: 'Advanced target selection', @@ -406,16 +431,8 @@ const menuItems = computed<MenuItem[]>(() => [ → </span> - <FormattedModificationType - v-if=" - typeof item.label === 'string' && - isInEnum(item.label, ModifType) - " - :type-code="item.label" - /> - <BaseRenderedMarkdown - v-else-if="typeof item.label === 'string'" + v-if="typeof item.label === 'string'" :stringified-markdown="item.label" /> </a> @@ -441,16 +458,8 @@ const menuItems = computed<MenuItem[]>(() => [ → </span> - <FormattedModificationType - v-if=" - typeof item.label === 'string' && - isInEnum(item.label, ModifType) - " - :type-code="item.label" - /> - <BaseRenderedMarkdown - v-else-if="typeof item.label === 'string'" + v-if="typeof item.label === 'string'" :stringified-markdown="item.label" /> -- GitLab From 8f986c4e48f90e036b18732cd752702d9b554103 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Thu, 1 Aug 2024 10:41:01 +0200 Subject: [PATCH 51/54] feat(advanced-selection): :alien: use target unit --- src/components/GuideSelectionForm.vue | 2 +- src/components/ModificationSelectionForm.vue | 2 +- src/components/TargetSelectionForm.vue | 2 +- src/gql/codegen/gql.ts | 8 ++++---- src/gql/codegen/graphql.ts | 8 ++++---- src/gql/queries.ts | 4 ++-- src/views/SelectionView.vue | 1 + 7 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/components/GuideSelectionForm.vue b/src/components/GuideSelectionForm.vue index b5dd210..061f179 100644 --- a/src/components/GuideSelectionForm.vue +++ b/src/components/GuideSelectionForm.vue @@ -125,7 +125,7 @@ const targetNameOptionsBase = computed(() => _uniqWith(gqlQuery.data.value?.targetsBase, _isEqual).map((target) => ({ label: target.name, value: target.name, - groupLabel: target.type + groupLabel: target.unit || 'Other' })) ) diff --git a/src/components/ModificationSelectionForm.vue b/src/components/ModificationSelectionForm.vue index 2b37c3a..786ea21 100644 --- a/src/components/ModificationSelectionForm.vue +++ b/src/components/ModificationSelectionForm.vue @@ -127,7 +127,7 @@ const targetNameOptionsBase = computed(() => _uniqWith(gqlQuery.data.value?.targetsBase, _isEqual).map((target) => ({ label: target.name, value: target.name, - groupLabel: target.type + groupLabel: target.unit || 'Other' })) ) diff --git a/src/components/TargetSelectionForm.vue b/src/components/TargetSelectionForm.vue index 0032610..8a7a8cb 100644 --- a/src/components/TargetSelectionForm.vue +++ b/src/components/TargetSelectionForm.vue @@ -131,7 +131,7 @@ const targetNameOptionsBase = computed(() => _uniqWith(gqlQuery.data.value?.targetsBase, _isEqual).map((target) => ({ label: target.name, value: target.name, - groupLabel: target.type + groupLabel: target.unit || 'Other' })) ) diff --git a/src/gql/codegen/gql.ts b/src/gql/codegen/gql.ts index 337040b..3a3883e 100644 --- a/src/gql/codegen/gql.ts +++ b/src/gql/codegen/gql.ts @@ -14,8 +14,8 @@ import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document- */ const documents = { "\n query homeQuery {\n modificationTypes: modifications {\n type\n type_short_label\n }\n\n guideSubclasses: guides {\n subclass\n subclass_label\n }\n\n targetUnits: targets {\n unit\n }\n\n organisms(options: { limit: 3 }) {\n id\n label\n shortname\n }\n\n organismsAggregate {\n count\n }\n }\n": types.HomeQueryDocument, - "\n query modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n id\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n": types.ModificationAndTargetSelectionQueryDocument, - "\n query guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guidesBase: guides {\n subclass\n subclass_label\n }\n\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n": types.GuideSelectionQueryDocument, + "\n query modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n unit\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n id\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n": types.ModificationAndTargetSelectionQueryDocument, + "\n query guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guidesBase: guides {\n subclass\n subclass_label\n }\n\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n unit\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n": types.GuideSelectionQueryDocument, "\n query tableEntriesQuery {\n tableEntries {\n id\n modification {\n id\n name\n position\n symbol_label\n type\n type_short_label\n target {\n id\n name\n class\n unit\n length\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n }\n }\n }\n }\n }\n guide {\n id\n name\n class\n subclass_label\n length\n seq\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n length\n }\n }\n }\n host_genes\n }\n organism {\n id\n label\n name\n }\n }\n\n targets {\n name\n }\n\n organisms {\n label\n id\n }\n }\n": types.TableEntriesQueryDocument, "\n query organismByIdQuery($id: Int) {\n organisms(where: { id: $id }) {\n id\n label\n shortname\n genomes {\n sequences(where: { graphql_type: Chromosome }) {\n id\n name\n altnames\n description\n length\n graphql_type\n guides: featuresConnection(where: { node: { graphql_type: Guide } }) {\n totalCount\n }\n }\n }\n }\n\n modifications(where: { target: { genome: { organism: { id: $id } } } }) {\n id\n name\n symbol_label\n type_short_label\n guidesAggregate {\n count\n }\n }\n\n allModificationsCount: modificationsAggregate(\n where: { target: { genome: { organism: { id: $id } } } }\n ) {\n count\n }\n\n nonOrphanModificationsCount: modificationsAggregate(\n where: {\n guidesAggregate: { count_GT: 0 }\n target: { genome: { organism: { id: $id } } }\n }\n ) {\n count\n }\n\n targets(where: { genome: { organism: { id: $id } } }) {\n id\n name\n class\n unit\n modificationsAggregate {\n count\n }\n }\n\n allTargetsCount: targetsAggregate(\n where: { genome: { organism: { id: $id } } }\n ) {\n count\n }\n\n guides(where: { genome: { organism: { id: $id } } }) {\n id\n name\n class\n subclass\n subclass_label\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n }\n node {\n id\n }\n }\n }\n modificationsAggregate {\n count\n }\n }\n\n allGuidesCount: guidesAggregate(\n where: { genome: { organism: { id: $id } } }\n ) {\n count\n }\n\n nonOrphanGuidesCount: guidesAggregate(\n where: {\n modificationsAggregate: { count_GT: 0 }\n genome: { organism: { id: $id } }\n }\n ) {\n count\n }\n }\n": types.OrganismByIdQueryDocument, "\n query modificationByIdQuery($id: ID) {\n modifications(where: { id: $id }) {\n id\n name\n type\n type_short_label\n symbol\n symbol_label\n position\n target {\n id\n name\n class\n unit\n genome {\n organism {\n id\n label\n }\n }\n }\n # chebi_id\n # so_id\n\n interactions {\n duplexes {\n primaryStrandsConnection: strandsConnection(\n where: { edge: { primary: true } }\n ) {\n edges {\n properties {\n start\n end\n primary\n }\n node {\n seq\n parentConnection {\n edges {\n properties {\n start\n end\n }\n }\n }\n }\n }\n }\n secondaryStrandsConnection: strandsConnection(\n where: { edge: { primary: false } }\n ) {\n edges {\n properties {\n start\n end\n primary\n }\n node {\n seq\n parentConnection {\n edges {\n properties {\n start\n end\n }\n }\n }\n }\n }\n }\n index\n }\n guide {\n id\n name\n subclass_label\n class\n }\n target {\n id\n name\n unit\n class\n }\n }\n }\n\n guides(where: { modifications_SOME: { id: $id } }) {\n id\n name\n class\n }\n }\n": types.ModificationByIdQueryDocument, @@ -46,11 +46,11 @@ export function graphql(source: "\n query homeQuery {\n modificationTypes: 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 modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n id\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n"): (typeof documents)["\n query modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n id\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n"]; +export function graphql(source: "\n query modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n unit\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n id\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n"): (typeof documents)["\n query modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n unit\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n id\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n"]; /** * 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 guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guidesBase: guides {\n subclass\n subclass_label\n }\n\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n"): (typeof documents)["\n query guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guidesBase: guides {\n subclass\n subclass_label\n }\n\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n type\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n"]; +export function graphql(source: "\n query guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guidesBase: guides {\n subclass\n subclass_label\n }\n\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n unit\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n"): (typeof documents)["\n query guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guidesBase: guides {\n subclass\n subclass_label\n }\n\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n unit\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\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 5820121..fcedbc4 100644 --- a/src/gql/codegen/graphql.ts +++ b/src/gql/codegen/graphql.ts @@ -8867,7 +8867,7 @@ export type ModificationAndTargetSelectionQueryQueryVariables = Exact<{ }>; -export type ModificationAndTargetSelectionQueryQuery = { __typename?: 'Query', targetsBase: Array<{ __typename?: 'Target', name?: string | null, type: SequenceType }>, targets: Array<{ __typename?: 'Target', name?: string | null, id: string }>, modificationsBase: Array<{ __typename?: 'Modification', type_label?: string | null, type?: ModifType | null }>, modifications: Array<{ __typename?: 'Modification', type?: ModifType | null }>, organismsBase: Array<{ __typename?: 'Organism', label: string, id: number }>, organisms: Array<{ __typename?: 'Organism', id: number }> }; +export type ModificationAndTargetSelectionQueryQuery = { __typename?: 'Query', targetsBase: Array<{ __typename?: 'Target', name?: string | null, unit?: string | null }>, targets: Array<{ __typename?: 'Target', name?: string | null, id: string }>, modificationsBase: Array<{ __typename?: 'Modification', type_label?: string | null, type?: ModifType | null }>, modifications: Array<{ __typename?: 'Modification', type?: ModifType | null }>, organismsBase: Array<{ __typename?: 'Organism', label: string, id: number }>, organisms: Array<{ __typename?: 'Organism', id: number }> }; export type GuideSelectionQueryQueryVariables = Exact<{ guideSubclasses?: InputMaybe<Array<GuideClass> | GuideClass>; @@ -8877,7 +8877,7 @@ export type GuideSelectionQueryQueryVariables = Exact<{ }>; -export type GuideSelectionQueryQuery = { __typename?: 'Query', guidesBase: Array<{ __typename?: 'Guide', subclass: GuideClass, subclass_label: string }>, guides: Array<{ __typename?: 'Guide', subclass: GuideClass }>, targetsBase: Array<{ __typename?: 'Target', name?: string | null, type: SequenceType }>, targets: Array<{ __typename?: 'Target', name?: string | null }>, modificationsBase: Array<{ __typename?: 'Modification', type_label?: string | null, type?: ModifType | null }>, modifications: Array<{ __typename?: 'Modification', type?: ModifType | null }>, organismsBase: Array<{ __typename?: 'Organism', label: string, id: number }>, organisms: Array<{ __typename?: 'Organism', id: number }> }; +export type GuideSelectionQueryQuery = { __typename?: 'Query', guidesBase: Array<{ __typename?: 'Guide', subclass: GuideClass, subclass_label: string }>, guides: Array<{ __typename?: 'Guide', subclass: GuideClass }>, targetsBase: Array<{ __typename?: 'Target', name?: string | null, unit?: string | null }>, targets: Array<{ __typename?: 'Target', name?: string | null }>, modificationsBase: Array<{ __typename?: 'Modification', type_label?: string | null, type?: ModifType | null }>, modifications: Array<{ __typename?: 'Modification', type?: ModifType | null }>, organismsBase: Array<{ __typename?: 'Organism', label: string, id: number }>, organisms: Array<{ __typename?: 'Organism', id: number }> }; export type TableEntriesQueryQueryVariables = Exact<{ [key: string]: never; }>; @@ -8926,8 +8926,8 @@ export type DatabaseStatisticsQueryQuery = { __typename?: 'Query', organismsAggr export const HomeQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"homeQuery"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"modificationTypes"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"guideSubclasses"},"name":{"kind":"Name","value":"guides"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"targetUnits"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"unit"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"options"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"3"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"shortname"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organismsAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}}]} as unknown as DocumentNode<HomeQueryQuery, HomeQueryQueryVariables>; -export const ModificationAndTargetSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"modificationAndTargetSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<ModificationAndTargetSelectionQueryQuery, ModificationAndTargetSelectionQueryQueryVariables>; -export const GuideSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"guideSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"GuideClass"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"guidesBase"},"name":{"kind":"Name","value":"guides"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}}]}},{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guide"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<GuideSelectionQueryQuery, GuideSelectionQueryQueryVariables>; +export const ModificationAndTargetSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"modificationAndTargetSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<ModificationAndTargetSelectionQueryQuery, ModificationAndTargetSelectionQueryQueryVariables>; +export const GuideSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"guideSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"GuideClass"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"guidesBase"},"name":{"kind":"Name","value":"guides"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}}]}},{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guide"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<GuideSelectionQueryQuery, GuideSelectionQueryQueryVariables>; 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":"symbol_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}},{"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"host_genes"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organism"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<TableEntriesQueryQuery, TableEntriesQueryQueryVariables>; export const OrganismByIdQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"organismByIdQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"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":"graphql_type"},"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":"altnames"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"graphql_type"}},{"kind":"Field","alias":{"kind":"Name","value":"guides"},"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":"graphql_type"},"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"symbol_label"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}},{"kind":"Field","name":{"kind":"Name","value":"guidesAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"allModificationsCount"},"name":{"kind":"Name","value":"modificationsAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"nonOrphanModificationsCount"},"name":{"kind":"Name","value":"modificationsAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"guidesAggregate"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"count_GT"},"value":{"kind":"IntValue","value":"0"}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}]}}],"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"modificationsAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"allTargetsCount"},"name":{"kind":"Name","value":"targetsAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"class"}},{"kind":"Field","name":{"kind":"Name","value":"subclass"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"allGuidesCount"},"name":{"kind":"Name","value":"guidesAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"nonOrphanGuidesCount"},"name":{"kind":"Name","value":"guidesAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modificationsAggregate"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"count_GT"},"value":{"kind":"IntValue","value":"0"}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}}]} as unknown as DocumentNode<OrganismByIdQueryQuery, OrganismByIdQueryQueryVariables>; 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":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}],"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":"type_short_label"}},{"kind":"Field","name":{"kind":"Name","value":"symbol"}},{"kind":"Field","name":{"kind":"Name","value":"symbol_label"}},{"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"genome"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organism"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}}]}}]}}]}},{"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":"properties"},"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":"properties"},"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":"properties"},"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":"properties"},"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":"subclass_label"}},{"kind":"Field","name":{"kind":"Name","value":"class"}}]}},{"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":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"class"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"class"}}]}}]}}]} as unknown as DocumentNode<ModificationByIdQueryQuery, ModificationByIdQueryQueryVariables>; diff --git a/src/gql/queries.ts b/src/gql/queries.ts index 0095646..2ca065d 100644 --- a/src/gql/queries.ts +++ b/src/gql/queries.ts @@ -46,7 +46,7 @@ export const modificationAndTargetSelectionQuery = graphql(/* GraphQL */ ` ) { targetsBase: targets { name - type + unit } targets( @@ -124,7 +124,7 @@ export const guideSelectionQuery = graphql(/* GraphQL */ ` targetsBase: targets { name - type + unit } targets( diff --git a/src/views/SelectionView.vue b/src/views/SelectionView.vue index 9d1ec63..8ae6d47 100644 --- a/src/views/SelectionView.vue +++ b/src/views/SelectionView.vue @@ -88,6 +88,7 @@ const TABLE_COLUMNS_BY_MODE = { 'targetName', 'targetLength', 'targetClass', + 'targetUnit', 'targetChromosomeName', 'organismName', 'organismId' -- GitLab From 7e2ebb4f0811ea1076a74e69a5a0c635cb7019ec Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Fri, 2 Aug 2024 15:28:17 +0200 Subject: [PATCH 52/54] fix(table-view): :alien: wrap `edges` properties in `properties` field --- src/views/DataTableView.vue | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/views/DataTableView.vue b/src/views/DataTableView.vue index aaaf0ba..5c5da9f 100644 --- a/src/views/DataTableView.vue +++ b/src/views/DataTableView.vue @@ -246,17 +246,17 @@ const columnGroups: ColumnGroupModel[] = [ }, { id: 'targetStart', - field: 'modification.target.chromosomeConnection.start', + field: 'modification.target.chromosomeConnection.properties.start', title: 'Start' }, { id: 'targetEnd', - field: 'modification.target.chromosomeConnection.end', + field: 'modification.target.chromosomeConnection.properties.end', title: 'End' }, { id: 'targetStrand', - field: 'modification.target.chromosomeConnection.strand', + field: 'modification.target.chromosomeConnection.properties.strand', title: 'Strand' } ] @@ -303,17 +303,17 @@ const columnGroups: ColumnGroupModel[] = [ }, { id: 'guideStart', - field: 'guide.chromosomeConnection.start', + field: 'guide.chromosomeConnection.properties.start', title: 'Start' }, { id: 'guideEnd', - field: 'guide.chromosomeConnection.end', + field: 'guide.chromosomeConnection.properties.end', title: 'End' }, { id: 'guideStrand', - field: 'guide.chromosomeConnection.strand', + field: 'guide.chromosomeConnection.properties.strand', title: 'Strand' }, { -- GitLab From 9327739a585d0b6116fdbfde7c8e0f7b59127ee8 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Fri, 2 Aug 2024 15:30:48 +0200 Subject: [PATCH 53/54] feat(table-view): :sparkles: fetch filter options for several columns modification symbol & type, target name, class & strand, and guide class, subclass & strand --- src/gql/codegen/gql.ts | 4 +- src/gql/codegen/graphql.ts | 4 +- src/gql/queries.ts | 19 +- src/views/DataTableView.vue | 378 +++++++++++++++++++++++++++++++----- 4 files changed, 353 insertions(+), 52 deletions(-) diff --git a/src/gql/codegen/gql.ts b/src/gql/codegen/gql.ts index 3a3883e..d4c891c 100644 --- a/src/gql/codegen/gql.ts +++ b/src/gql/codegen/gql.ts @@ -16,7 +16,7 @@ const documents = { "\n query homeQuery {\n modificationTypes: modifications {\n type\n type_short_label\n }\n\n guideSubclasses: guides {\n subclass\n subclass_label\n }\n\n targetUnits: targets {\n unit\n }\n\n organisms(options: { limit: 3 }) {\n id\n label\n shortname\n }\n\n organismsAggregate {\n count\n }\n }\n": types.HomeQueryDocument, "\n query modificationAndTargetSelectionQuery(\n $modificationTypes: [ModifType]\n $targetNames: [String]\n $organismIds: [Int!]\n ) {\n targetsBase: targets {\n name\n unit\n }\n\n targets(\n where: {\n modifications_SOME: { type_IN: $modificationTypes }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n id\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n }\n }\n ) {\n id\n }\n }\n": types.ModificationAndTargetSelectionQueryDocument, "\n query guideSelectionQuery(\n $guideSubclasses: [GuideClass!]\n $targetNames: [String]\n $modificationTypes: [ModifType]\n $organismIds: [Int!]\n ) {\n guidesBase: guides {\n subclass\n subclass_label\n }\n\n guides(\n where: {\n modifications_SOME: {\n target: { name_IN: $targetNames }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n subclass\n }\n\n targetsBase: targets {\n name\n unit\n }\n\n targets(\n where: {\n modifications_SOME: {\n guides_SOME: { subclass_IN: $guideSubclasses }\n type_IN: $modificationTypes\n }\n genome: { organism: { id_IN: $organismIds } }\n }\n ) {\n name\n }\n\n modificationsBase: modifications {\n type_label\n type\n }\n\n modifications(\n where: {\n target: {\n name_IN: $targetNames\n genome: { organism: { id_IN: $organismIds } }\n }\n guides_SOME: { subclass_IN: $guideSubclasses }\n }\n ) {\n type\n }\n\n organismsBase: organisms {\n label\n id\n }\n\n organisms(\n where: {\n tableEntries_SOME: {\n modification: {\n type_IN: $modificationTypes\n target: { name_IN: $targetNames }\n }\n guide: { subclass_IN: $guideSubclasses }\n }\n }\n ) {\n id\n }\n }\n": types.GuideSelectionQueryDocument, - "\n query tableEntriesQuery {\n tableEntries {\n id\n modification {\n id\n name\n position\n symbol_label\n type\n type_short_label\n target {\n id\n name\n class\n unit\n length\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n }\n }\n }\n }\n }\n guide {\n id\n name\n class\n subclass_label\n length\n seq\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n length\n }\n }\n }\n host_genes\n }\n organism {\n id\n label\n name\n }\n }\n\n targets {\n name\n }\n\n organisms {\n label\n id\n }\n }\n": types.TableEntriesQueryDocument, + "\n query tableEntriesQuery {\n tableEntries {\n id\n modification {\n id\n name\n position\n symbol_label\n type\n type_short_label\n target {\n id\n name\n class\n unit\n length\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n }\n }\n }\n }\n }\n guide {\n id\n name\n class\n subclass_label\n length\n seq\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n length\n }\n }\n }\n host_genes\n }\n organism {\n id\n label\n name\n }\n }\n\n modificationsBase: modifications {\n symbol\n symbol_label\n type\n type_label\n }\n\n targetsBase: targets {\n name\n unit\n class\n }\n\n guidesBase: guides {\n subclass\n subclass_label\n class\n }\n\n organismsBase: organisms {\n label\n id\n }\n }\n": types.TableEntriesQueryDocument, "\n query organismByIdQuery($id: Int) {\n organisms(where: { id: $id }) {\n id\n label\n shortname\n genomes {\n sequences(where: { graphql_type: Chromosome }) {\n id\n name\n altnames\n description\n length\n graphql_type\n guides: featuresConnection(where: { node: { graphql_type: Guide } }) {\n totalCount\n }\n }\n }\n }\n\n modifications(where: { target: { genome: { organism: { id: $id } } } }) {\n id\n name\n symbol_label\n type_short_label\n guidesAggregate {\n count\n }\n }\n\n allModificationsCount: modificationsAggregate(\n where: { target: { genome: { organism: { id: $id } } } }\n ) {\n count\n }\n\n nonOrphanModificationsCount: modificationsAggregate(\n where: {\n guidesAggregate: { count_GT: 0 }\n target: { genome: { organism: { id: $id } } }\n }\n ) {\n count\n }\n\n targets(where: { genome: { organism: { id: $id } } }) {\n id\n name\n class\n unit\n modificationsAggregate {\n count\n }\n }\n\n allTargetsCount: targetsAggregate(\n where: { genome: { organism: { id: $id } } }\n ) {\n count\n }\n\n guides(where: { genome: { organism: { id: $id } } }) {\n id\n name\n class\n subclass\n subclass_label\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n }\n node {\n id\n }\n }\n }\n modificationsAggregate {\n count\n }\n }\n\n allGuidesCount: guidesAggregate(\n where: { genome: { organism: { id: $id } } }\n ) {\n count\n }\n\n nonOrphanGuidesCount: guidesAggregate(\n where: {\n modificationsAggregate: { count_GT: 0 }\n genome: { organism: { id: $id } }\n }\n ) {\n count\n }\n }\n": types.OrganismByIdQueryDocument, "\n query modificationByIdQuery($id: ID) {\n modifications(where: { id: $id }) {\n id\n name\n type\n type_short_label\n symbol\n symbol_label\n position\n target {\n id\n name\n class\n unit\n genome {\n organism {\n id\n label\n }\n }\n }\n # chebi_id\n # so_id\n\n interactions {\n duplexes {\n primaryStrandsConnection: strandsConnection(\n where: { edge: { primary: true } }\n ) {\n edges {\n properties {\n start\n end\n primary\n }\n node {\n seq\n parentConnection {\n edges {\n properties {\n start\n end\n }\n }\n }\n }\n }\n }\n secondaryStrandsConnection: strandsConnection(\n where: { edge: { primary: false } }\n ) {\n edges {\n properties {\n start\n end\n primary\n }\n node {\n seq\n parentConnection {\n edges {\n properties {\n start\n end\n }\n }\n }\n }\n }\n }\n index\n }\n guide {\n id\n name\n subclass_label\n class\n }\n target {\n id\n name\n unit\n class\n }\n }\n }\n\n guides(where: { modifications_SOME: { id: $id } }) {\n id\n name\n class\n }\n }\n": types.ModificationByIdQueryDocument, "\n query guideByIdQuery($id: ID) {\n guides(where: { id: $id }) {\n id\n name\n altnames\n description\n length\n class\n subclass_label\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n length\n graphql_type\n }\n }\n }\n host_genes\n seq\n genome {\n organism {\n id\n label\n }\n }\n boxConnections: featuresConnection(\n where: { NOT: { node: { class: DuplexFragment } } }\n ) {\n edges {\n properties {\n ... on HasFeature {\n start\n end\n }\n }\n node {\n id\n annotation\n }\n }\n }\n modifications {\n id\n name\n }\n modificationsAggregate {\n count\n }\n interactions {\n duplexes {\n primaryStrandsConnection: strandsConnection(\n where: { edge: { primary: true } }\n ) {\n edges {\n properties {\n start\n end\n primary\n }\n node {\n seq\n parentConnection {\n edges {\n properties {\n start\n end\n }\n }\n }\n }\n }\n }\n secondaryStrandsConnection: strandsConnection(\n where: { edge: { primary: false } }\n ) {\n edges {\n properties {\n start\n end\n primary\n }\n node {\n seq\n parentConnection {\n edges {\n properties {\n start\n end\n }\n }\n }\n }\n }\n }\n index\n }\n modification {\n id\n name\n position\n symbol\n symbol_label\n type\n type_short_label\n }\n target {\n id\n name\n class\n unit\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\n targets(where: { modifications_SOME: { guides_SOME: { id: $id } } }) {\n id\n name\n class\n unit\n }\n }\n": types.GuideByIdQueryDocument, @@ -54,7 +54,7 @@ export function graphql(source: "\n query guideSelectionQuery(\n $guideSubcl /** * 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 tableEntriesQuery {\n tableEntries {\n id\n modification {\n id\n name\n position\n symbol_label\n type\n type_short_label\n target {\n id\n name\n class\n unit\n length\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n }\n }\n }\n }\n }\n guide {\n id\n name\n class\n subclass_label\n length\n seq\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n length\n }\n }\n }\n host_genes\n }\n organism {\n id\n label\n name\n }\n }\n\n targets {\n name\n }\n\n organisms {\n label\n id\n }\n }\n"): (typeof documents)["\n query tableEntriesQuery {\n tableEntries {\n id\n modification {\n id\n name\n position\n symbol_label\n type\n type_short_label\n target {\n id\n name\n class\n unit\n length\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n }\n }\n }\n }\n }\n guide {\n id\n name\n class\n subclass_label\n length\n seq\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n length\n }\n }\n }\n host_genes\n }\n organism {\n id\n label\n name\n }\n }\n\n targets {\n name\n }\n\n organisms {\n label\n id\n }\n }\n"]; +export function graphql(source: "\n query tableEntriesQuery {\n tableEntries {\n id\n modification {\n id\n name\n position\n symbol_label\n type\n type_short_label\n target {\n id\n name\n class\n unit\n length\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n }\n }\n }\n }\n }\n guide {\n id\n name\n class\n subclass_label\n length\n seq\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n length\n }\n }\n }\n host_genes\n }\n organism {\n id\n label\n name\n }\n }\n\n modificationsBase: modifications {\n symbol\n symbol_label\n type\n type_label\n }\n\n targetsBase: targets {\n name\n unit\n class\n }\n\n guidesBase: guides {\n subclass\n subclass_label\n class\n }\n\n organismsBase: organisms {\n label\n id\n }\n }\n"): (typeof documents)["\n query tableEntriesQuery {\n tableEntries {\n id\n modification {\n id\n name\n position\n symbol_label\n type\n type_short_label\n target {\n id\n name\n class\n unit\n length\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n }\n }\n }\n }\n }\n guide {\n id\n name\n class\n subclass_label\n length\n seq\n chromosomeConnection: parentConnection(\n where: { node: { graphql_type: Chromosome } }\n ) {\n edges {\n properties {\n start\n end\n strand\n }\n node {\n id\n name\n length\n }\n }\n }\n host_genes\n }\n organism {\n id\n label\n name\n }\n }\n\n modificationsBase: modifications {\n symbol\n symbol_label\n type\n type_label\n }\n\n targetsBase: targets {\n name\n unit\n class\n }\n\n guidesBase: guides {\n subclass\n subclass_label\n class\n }\n\n organismsBase: organisms {\n label\n id\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 fcedbc4..e1b6b3c 100644 --- a/src/gql/codegen/graphql.ts +++ b/src/gql/codegen/graphql.ts @@ -8882,7 +8882,7 @@ export type GuideSelectionQueryQuery = { __typename?: 'Query', guidesBase: Array export type TableEntriesQueryQueryVariables = Exact<{ [key: string]: never; }>; -export type TableEntriesQueryQuery = { __typename?: 'Query', tableEntries: Array<{ __typename?: 'TableEntry', id: string, modification?: { __typename?: 'Modification', id: string, name: string, position: number, symbol_label: string, type?: ModifType | null, type_short_label?: string | null, target: { __typename?: 'Target', id: string, name?: string | null, class: SequenceClass, unit?: string | null, length: number, chromosomeConnection: { __typename?: 'TargetParentConnection', edges: Array<{ __typename?: 'TargetParentRelationship', properties: { __typename?: 'HasFeature', start: number, end: number, strand?: Strand | null }, node: { __typename?: 'Chromosome', id: string, name?: string | null } | { __typename?: 'GenericSequence', id: string, name?: string | null } | { __typename?: 'Guide', id: string, name?: string | null } | { __typename?: 'Target', id: string, name?: string | null } }> } } } | null, guide?: { __typename?: 'Guide', id: string, name?: string | null, class: SequenceClass, subclass_label: string, length: number, seq?: string | null, host_genes: Array<string>, chromosomeConnection: { __typename?: 'GuideParentConnection', edges: Array<{ __typename?: 'GuideParentRelationship', properties: { __typename?: 'HasFeature', start: number, end: number, strand?: Strand | null }, node: { __typename?: 'Chromosome', id: string, name?: string | null, length: number } | { __typename?: 'GenericSequence', id: string, name?: string | null, length: number } | { __typename?: 'Guide', id: string, name?: string | null, length: number } | { __typename?: 'Target', id: string, name?: string | null, length: number } }> } } | null, organism: { __typename?: 'Organism', id: number, label: string, name: string } }>, targets: Array<{ __typename?: 'Target', name?: string | null }>, organisms: Array<{ __typename?: 'Organism', label: string, id: number }> }; +export type TableEntriesQueryQuery = { __typename?: 'Query', tableEntries: Array<{ __typename?: 'TableEntry', id: string, modification?: { __typename?: 'Modification', id: string, name: string, position: number, symbol_label: string, type?: ModifType | null, type_short_label?: string | null, target: { __typename?: 'Target', id: string, name?: string | null, class: SequenceClass, unit?: string | null, length: number, chromosomeConnection: { __typename?: 'TargetParentConnection', edges: Array<{ __typename?: 'TargetParentRelationship', properties: { __typename?: 'HasFeature', start: number, end: number, strand?: Strand | null }, node: { __typename?: 'Chromosome', id: string, name?: string | null } | { __typename?: 'GenericSequence', id: string, name?: string | null } | { __typename?: 'Guide', id: string, name?: string | null } | { __typename?: 'Target', id: string, name?: string | null } }> } } } | null, guide?: { __typename?: 'Guide', id: string, name?: string | null, class: SequenceClass, subclass_label: string, length: number, seq?: string | null, host_genes: Array<string>, chromosomeConnection: { __typename?: 'GuideParentConnection', edges: Array<{ __typename?: 'GuideParentRelationship', properties: { __typename?: 'HasFeature', start: number, end: number, strand?: Strand | null }, node: { __typename?: 'Chromosome', id: string, name?: string | null, length: number } | { __typename?: 'GenericSequence', id: string, name?: string | null, length: number } | { __typename?: 'Guide', id: string, name?: string | null, length: number } | { __typename?: 'Target', id: string, name?: string | null, length: number } }> } } | null, organism: { __typename?: 'Organism', id: number, label: string, name: string } }>, modificationsBase: Array<{ __typename?: 'Modification', symbol: string, symbol_label: string, type?: ModifType | null, type_label?: string | null }>, targetsBase: Array<{ __typename?: 'Target', name?: string | null, unit?: string | null, class: SequenceClass }>, guidesBase: Array<{ __typename?: 'Guide', subclass: GuideClass, subclass_label: string, class: SequenceClass }>, organismsBase: Array<{ __typename?: 'Organism', label: string, id: number }> }; export type OrganismByIdQueryQueryVariables = Exact<{ id?: InputMaybe<Scalars['Int']['input']>; @@ -8928,7 +8928,7 @@ export type DatabaseStatisticsQueryQuery = { __typename?: 'Query', organismsAggr export const HomeQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"homeQuery"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"modificationTypes"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"guideSubclasses"},"name":{"kind":"Name","value":"guides"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"targetUnits"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"unit"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"options"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"3"}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"shortname"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organismsAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}}]} as unknown as DocumentNode<HomeQueryQuery, HomeQueryQueryVariables>; export const ModificationAndTargetSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"modificationAndTargetSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<ModificationAndTargetSelectionQueryQuery, ModificationAndTargetSelectionQueryQueryVariables>; export const GuideSelectionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"guideSelectionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"GuideClass"}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ModifType"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","alias":{"kind":"Name","value":"guidesBase"},"name":{"kind":"Name","value":"guides"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}}]}},{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organismIds"}}}]}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"tableEntries_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modification"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"type_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"modificationTypes"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"name_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"targetNames"}}}]}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"guide"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"subclass_IN"},"value":{"kind":"Variable","name":{"kind":"Name","value":"guideSubclasses"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<GuideSelectionQueryQuery, GuideSelectionQueryQueryVariables>; -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":"symbol_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}},{"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"host_genes"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organism"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<TableEntriesQueryQuery, TableEntriesQueryQueryVariables>; +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":"symbol_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}},{"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"host_genes"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organism"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"modificationsBase"},"name":{"kind":"Name","value":"modifications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"symbol"}},{"kind":"Field","name":{"kind":"Name","value":"symbol_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"type_label"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"targetsBase"},"name":{"kind":"Name","value":"targets"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"class"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"guidesBase"},"name":{"kind":"Name","value":"guides"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subclass"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}},{"kind":"Field","name":{"kind":"Name","value":"class"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"organismsBase"},"name":{"kind":"Name","value":"organisms"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"label"}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<TableEntriesQueryQuery, TableEntriesQueryQueryVariables>; export const OrganismByIdQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"organismByIdQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organisms"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}},{"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":"graphql_type"},"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":"altnames"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"graphql_type"}},{"kind":"Field","alias":{"kind":"Name","value":"guides"},"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":"graphql_type"},"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"symbol_label"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}},{"kind":"Field","name":{"kind":"Name","value":"guidesAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"allModificationsCount"},"name":{"kind":"Name","value":"modificationsAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"nonOrphanModificationsCount"},"name":{"kind":"Name","value":"modificationsAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"guidesAggregate"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"count_GT"},"value":{"kind":"IntValue","value":"0"}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"target"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}]}}],"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"modificationsAggregate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"allTargetsCount"},"name":{"kind":"Name","value":"targetsAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"class"}},{"kind":"Field","name":{"kind":"Name","value":"subclass"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"allGuidesCount"},"name":{"kind":"Name","value":"guidesAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}},{"kind":"Field","alias":{"kind":"Name","value":"nonOrphanGuidesCount"},"name":{"kind":"Name","value":"guidesAggregate"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modificationsAggregate"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"count_GT"},"value":{"kind":"IntValue","value":"0"}}]}},{"kind":"ObjectField","name":{"kind":"Name","value":"genome"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"organism"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}}]} as unknown as DocumentNode<OrganismByIdQueryQuery, OrganismByIdQueryQueryVariables>; 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":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"modifications"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}],"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":"type_short_label"}},{"kind":"Field","name":{"kind":"Name","value":"symbol"}},{"kind":"Field","name":{"kind":"Name","value":"symbol_label"}},{"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"genome"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organism"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}}]}}]}}]}},{"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":"properties"},"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":"properties"},"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":"properties"},"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":"properties"},"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":"subclass_label"}},{"kind":"Field","name":{"kind":"Name","value":"class"}}]}},{"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":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"class"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"class"}}]}}]}}]} 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":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"guides"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"altnames"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"length"}},{"kind":"Field","name":{"kind":"Name","value":"class"}},{"kind":"Field","name":{"kind":"Name","value":"subclass_label"}},{"kind":"Field","alias":{"kind":"Name","value":"chromosomeConnection"},"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":"graphql_type"},"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":"properties"},"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":"graphql_type"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"host_genes"}},{"kind":"Field","name":{"kind":"Name","value":"seq"}},{"kind":"Field","name":{"kind":"Name","value":"genome"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organism"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"label"}}]}}]}},{"kind":"Field","alias":{"kind":"Name","value":"boxConnections"},"name":{"kind":"Name","value":"featuresConnection"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"where"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"NOT"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"node"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"class"},"value":{"kind":"EnumValue","value":"DuplexFragment"}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"edges"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"properties"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"HasFeature"}},"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":"annotation"}}]}}]}}]}},{"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":"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":"properties"},"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":"properties"},"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":"properties"},"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":"properties"},"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":"symbol"}},{"kind":"Field","name":{"kind":"Name","value":"symbol_label"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"type_short_label"}}]}},{"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":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}}]}}]}},{"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":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"modifications_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"guides_SOME"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}]}}]}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"class"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}}]}}]}}]} as unknown as DocumentNode<GuideByIdQueryQuery, GuideByIdQueryQueryVariables>; diff --git a/src/gql/queries.ts b/src/gql/queries.ts index 2ca065d..865fe31 100644 --- a/src/gql/queries.ts +++ b/src/gql/queries.ts @@ -246,11 +246,26 @@ export const tableEntriesQuery = graphql(/* GraphQL */ ` } } - targets { + modificationsBase: modifications { + symbol + symbol_label + type + type_label + } + + targetsBase: targets { name + unit + class + } + + guidesBase: guides { + subclass + subclass_label + class } - organisms { + organismsBase: organisms { label id } diff --git a/src/views/DataTableView.vue b/src/views/DataTableView.vue index 5c5da9f..4af9be1 100644 --- a/src/views/DataTableView.vue +++ b/src/views/DataTableView.vue @@ -2,7 +2,7 @@ /** * Vue imports */ -import { ref, computed, watchEffect } from 'vue' +import { ref, computed, watch } from 'vue' /** * Components imports */ @@ -18,22 +18,31 @@ import InputText from 'primevue/inputtext' import DataTable from 'primevue/datatable' import IconFa6SolidArrowDownShortWide from '~icons/fa6-solid/arrow-down-short-wide' import IconFa6SolidArrowUpShortWide from '~icons/fa6-solid/arrow-up-short-wide' +import IconFa6SolidCircleMinus from '~icons/fa6-solid/circle-minus' +import IconFa6SolidCirclePlus from '~icons/fa6-solid/circle-plus' +import IconFa6SolidCircleQuestion from '~icons/fa6-solid/circle-question' +import IconFa6SolidCircleXmark from '~icons/fa6-solid/circle-xmark' /** * Other 3rd-party imports */ -import { get as _get, uniqBy as _uniqBy, uniq as _uniq } from 'lodash-es' +import { + get as _get, + uniqBy as _uniqBy, + uniqWith as _uniqWith, + isEqual as _isEqual +} from 'lodash-es' import { FilterMatchMode as primeVueFilterMatchMode } from 'primevue/api' import { useQuery } from '@urql/vue' /** * Types imports */ import type { DataTableFilterMetaData } from 'primevue/datatable' -import { GuideClass, ModifType } from '@/gql/codegen/graphql' /** * Utils imports */ import { getModificationColor } from '@/utils/colors' import { tableEntriesQuery } from '@/gql/queries' +import { Strand } from '@/gql/codegen/graphql' /** * Representation of a column filter @@ -91,6 +100,16 @@ interface ColumnGroupModel { columns: ColumnModel[] } +/** + * Utility constant to get the icon component corresponding to each strand value. + */ +const STRAND_CODE_TO_ICON_COMPONENT = { + [Strand.Negative]: IconFa6SolidCircleMinus, + [Strand.Positive]: IconFa6SolidCirclePlus, + [Strand.Unknown]: IconFa6SolidCircleQuestion, + [Strand.NotStranded]: IconFa6SolidCircleXmark +} + /** * Component props. */ @@ -131,19 +150,153 @@ const tableEntries = computed(() => ) /** - * All target names existing in the database. + * Available options for modification symbol selection. */ -const allTargetNames = computed(() => - _uniq(gqlQuery.data.value?.targets.map((target) => target.name)) +const modificationSymbolOptionsBase = computed(() => + _uniqWith( + gqlQuery.data.value?.modificationsBase.map((modification) => ({ + label: modification.symbol_label, + value: modification.symbol + })), + _isEqual + ) ) /** - * All organisms (label & ID) existing in the database. + * Available options for modification type selection. */ -const allOrganisms = computed(() => ({ - labels: gqlQuery.data.value?.organisms.map((organism) => organism.label), - ids: gqlQuery.data.value?.organisms.map((organism) => organism.id) -})) +const modificationTypeOptionsBase = computed(() => + _uniqWith( + gqlQuery.data.value?.modificationsBase.map((modification) => ({ + label: modification.type_label, + value: modification.type + })), + _isEqual + ) +) + +/** + * Available options for target name selection. + */ +const targetNameOptionsBase = computed(() => + _uniqWith(gqlQuery.data.value?.targetsBase, _isEqual).map((target) => ({ + label: target.name, + value: target.name, + groupLabel: target.unit || 'Other' + })) +) + +/** + * Available options for target name selection, grouped. + */ +const targetNameOptionsWithDisablingGroups = computed(() => + targetNameOptionsBase.value.reduce< + { label: string; children: { label: string; value: any }[] }[] + >((targetNameOptionsWithDisablingGroups, targetNameOption) => { + // Get index of the group of the current option + const targetNameOptionGroupIndex = + targetNameOptionsWithDisablingGroups.findIndex( + (group) => group.label === targetNameOption.groupLabel + ) + // Insert option in existing group if present + // Using non-null type assertion for + // `targetNameOptionsWithDisablingGroups[targetNameOptionGroupIndex]` + // because it is checked before + return targetNameOptionGroupIndex !== -1 + ? [ + ...targetNameOptionsWithDisablingGroups.slice( + 0, + targetNameOptionGroupIndex + ), + { + label: + targetNameOptionsWithDisablingGroups[targetNameOptionGroupIndex]! + .label, + children: [ + ...targetNameOptionsWithDisablingGroups[ + targetNameOptionGroupIndex + ]!.children, + { + label: targetNameOption.label || '', + value: targetNameOption.value + } + ] + }, + ...targetNameOptionsWithDisablingGroups.slice( + targetNameOptionGroupIndex + 1 + ) + ] + : // Otherwise add the group with the option + [ + ...targetNameOptionsWithDisablingGroups, + { + label: targetNameOption.groupLabel, + children: [ + { + label: targetNameOption.label || '', + value: targetNameOption.value + } + ] + } + ] + }, []) +) + +/** + * Available options for target class selection. + */ +const targetClassOptionsBase = computed(() => + _uniqWith( + gqlQuery.data.value?.targetsBase.map((target) => ({ + label: target.class, + value: target.class + })), + _isEqual + ) +) + +/** + * Available options for guide subclass selection. + */ +const guideSubclassOptionsBase = computed(() => + _uniqWith(gqlQuery.data.value?.guidesBase, _isEqual).map((guide) => ({ + label: guide.subclass_label, + value: guide.subclass + })) +) + +/** + * Available options for guide class selection. + */ +const guideClassOptionsBase = computed(() => + _uniqWith( + gqlQuery.data.value?.guidesBase.map((guide) => ({ + label: guide.class, + value: guide.class + })), + _isEqual + ) +) + +/** + * Available options for organism name selection. + */ +const organismNameOptionsBase = computed(() => + _uniqWith(gqlQuery.data.value?.organismsBase, _isEqual).map((organism) => ({ + label: organism.label, + value: organism.label + })) +) + +/** + * Available options for organism ID selection. + */ +const organismIDOptionsBase = computed(() => + _uniqWith(gqlQuery.data.value?.organismsBase, _isEqual).map((organism) => ({ + label: organism.id, + value: organism.id + })) +) /** * Structure in which to represent the data in the table, columns will be @@ -450,14 +603,18 @@ const sortedSelectedColumnGroups = computed<ColumnGroupModel[]>(() => * of this object needs to be reactive, only those depending on `options`). */ const specificFilterConfigs = computed<{ - [columnId: string]: { columnField: string; filter: ColumnFilterModel } + [columnId: string]: { + columnField: string + grouped?: boolean + filter: ColumnFilterModel + } }>(() => ({ - modificationResult: { + modificationSymbol: { columnField: - columns.find((column) => column.id == 'modificationResult')?.field || '', + columns.find((column) => column.id == 'modificationSymbol')?.field || '', filter: { matchMode: primeVueFilterMatchMode.IN, - options: ['Am', 'Um', 'Cm', 'Gm', 'Ψ'] + options: modificationSymbolOptionsBase.value } }, modificationType: { @@ -465,7 +622,7 @@ const specificFilterConfigs = computed<{ columns.find((column) => column.id == 'modificationType')?.field || '', filter: { matchMode: primeVueFilterMatchMode.IN, - options: Object.values(ModifType) + options: modificationTypeOptionsBase.value } }, targetName: { @@ -473,7 +630,27 @@ const specificFilterConfigs = computed<{ columns.find((column) => column.id == 'targetName')?.field || '', filter: { matchMode: primeVueFilterMatchMode.IN, - options: allTargetNames.value + options: targetNameOptionsWithDisablingGroups.value + }, + grouped: true + }, + targetClass: { + columnField: + columns.find((column) => column.id == 'targetClass')?.field || '', + filter: { + matchMode: primeVueFilterMatchMode.IN, + options: targetClassOptionsBase.value + } + }, + targetStrand: { + columnField: + columns.find((column) => column.id == 'targetStrand')?.field || '', + filter: { + matchMode: primeVueFilterMatchMode.IN, + options: Object.values(Strand).map((strand) => ({ + label: strand, + value: strand + })) } }, guideSubclass: { @@ -481,7 +658,26 @@ const specificFilterConfigs = computed<{ columns.find((column) => column.id == 'guideSubclass')?.field || '', filter: { matchMode: primeVueFilterMatchMode.IN, - options: Object.values(GuideClass) + options: guideSubclassOptionsBase.value + } + }, + guideClass: { + columnField: + columns.find((column) => column.id == 'guideClass')?.field || '', + filter: { + matchMode: primeVueFilterMatchMode.IN, + options: guideClassOptionsBase.value + } + }, + guideStrand: { + columnField: + columns.find((column) => column.id == 'guideStrand')?.field || '', + filter: { + matchMode: primeVueFilterMatchMode.IN, + options: Object.values(Strand).map((strand) => ({ + label: strand, + value: strand + })) } }, organismName: { @@ -489,7 +685,7 @@ const specificFilterConfigs = computed<{ columns.find((column) => column.id == 'organismName')?.field || '', filter: { matchMode: primeVueFilterMatchMode.IN, - options: allOrganisms.value.labels + options: organismNameOptionsBase.value } }, organismId: { @@ -497,7 +693,7 @@ const specificFilterConfigs = computed<{ columns.find((column) => column.id == 'organismId')?.field || '', filter: { matchMode: primeVueFilterMatchMode.IN, - options: allOrganisms.value.ids + options: organismIDOptionsBase.value } } })) @@ -507,21 +703,25 @@ const specificFilterConfigs = computed<{ */ const filters = ref<{ [columnField: string]: DataTableFilterMetaData }>( columns.reduce((filters, column) => { + // Retrieve corresponding initial filter const columnInitialFilter = props.initialFilters?.[column.id] return { ...filters, [column.field]: { matchMode: + // Use specific filter matchMode if existent, CONTAINS by default specificFilterConfigs.value[column.id]?.filter.matchMode || primeVueFilterMatchMode.CONTAINS, - value: !columnInitialFilter - ? null - : specificFilterConfigs.value[column.id]?.filter.matchMode !== - primeVueFilterMatchMode.IN - ? columnInitialFilter - : Array.isArray(columnInitialFilter) - ? columnInitialFilter - : [columnInitialFilter] + value: + // Use (if) provided initial filter, in the format required by the match mode + !columnInitialFilter + ? null + : specificFilterConfigs.value[column.id]?.filter.matchMode !== + primeVueFilterMatchMode.IN + ? columnInitialFilter + : Array.isArray(columnInitialFilter) + ? columnInitialFilter + : [columnInitialFilter] } } }, {}) @@ -536,7 +736,7 @@ filters.value.global = { * Watcher to filter filter with specific configs values when options are * fetched. */ -watchEffect(() => { +watch(specificFilterConfigs, () => { Object.values(specificFilterConfigs.value).forEach((specificFilterConfig) => { // Don't modify filter value if not of type `IN` or if options are not ready // (fetched) yet (as an array) @@ -557,7 +757,10 @@ watchEffect(() => { // Get type of the options (i.e. type of the value of the column the filter // applies to) - const filterOptionType = typeof specificFilterOptions[0] + const filterOptionType = specificFilterConfig.grouped + ? typeof specificFilterOptions[0].children[0].value + : typeof specificFilterOptions[0].value + // Cast current filter value to options' type const castCorrespondingFilterValue = filterOptionType === 'number' @@ -568,11 +771,16 @@ watchEffect(() => { ? correspondingFilter.value.map((filterValue) => filterValue === 'true') : correspondingFilter.value - // Keep only value available in options - correspondingFilter.value = castCorrespondingFilterValue.filter( - (correspondingFilterValue) => - specificFilterConfig.filter.options?.includes(correspondingFilterValue) + // Keep from options only values in selected filter + correspondingFilter.value = ( + specificFilterConfig.grouped + ? specificFilterOptions.flat() + : specificFilterOptions ) + .filter((filterOption) => + castCorrespondingFilterValue.includes(filterOption.value) + ) + .map((filterOption) => filterOption.label) }) }) @@ -778,6 +986,7 @@ const scrollToTableTop = () => class="p-icon p-sortable-column-icon" /> </template> + <template #filter="{ filterModel, filterCallback }"> <MultiSelect v-if=" @@ -786,11 +995,44 @@ const scrollToTableTop = () => " v-model="filterModel.value" :options="specificFilterConfigs[column.id]?.filter?.options" + option-label="label" + option-value="label" + :option-group-children=" + specificFilterConfigs[column.id]?.grouped + ? 'children' + : undefined + " + :option-group-label=" + specificFilterConfigs[column.id]?.grouped + ? 'label' + : undefined + " placeholder="Chose" @change="filterCallback()" > - <template v-if="column.isMarkdown" #option="{ option }"> - <BaseRenderedMarkdown :stringified-markdown="option" /> + <template #option="{ option }"> + <span + v-if=" + column.id === 'guideStrand' || + column.id === 'targetStrand' + " + class="flex items-center gap-2" + > + <component + :is=" + STRAND_CODE_TO_ICON_COMPONENT[ + option.label as Strand || 'UNKNOWN' + ] + " + class="inline text-xl font-extrabold" + /> + {{ option.label }} + </span> + + <BaseRenderedMarkdown + v-else-if="column.isMarkdown" + :stringified-markdown="option.label" + /> </template> <template #value="{ value: selection }"> @@ -799,27 +1041,54 @@ const scrollToTableTop = () => v-for="(selected, selIndex) in specificFilterConfigs[ column.id ]?.filter?.options - ?.filter((option) => selection.includes(option)) - .slice(0, 3)" + ?.filter((option) => selection.includes(option.label)) + .slice( + 0, + column.id === 'guideStrand' || + column.id === 'targetStrand' + ? undefined + : 3 + )" :key="selIndex" > - <BaseRenderedMarkdown - v-if="column.isMarkdown" - :stringified-markdown="selected" - inline-content + <component + :is="STRAND_CODE_TO_ICON_COMPONENT[ + selected.label as Strand || 'UNKNOWN' + ] + " + v-if=" + column.id === 'guideStrand' || + column.id === 'targetStrand' + " + class="mr-2 inline text-xl font-extrabold" /> - <span v-else>{{ selected }}</span> - - <span v-if="selIndex !== selection.length - 1">, </span> + <template v-else> + <BaseRenderedMarkdown + :stringified-markdown="selected.label" + inline-content + /> + <span v-if="selIndex !== selection.length - 1" + >, + </span> + </template> </template> - <span v-if="selection.length > 3"> + <span + v-if=" + selection.length > 3 && + !( + column.id === 'guideStrand' || + column.id === 'targetStrand' + ) + " + > +{{ selection.length - 3 }}... </span> </template> </template> </MultiSelect> + <InputText v-else v-model="filterModel.value" @@ -875,6 +1144,23 @@ const scrollToTableTop = () => /> </Tag> + <span + v-else-if=" + column.id === 'guideStrand' || column.id === 'targetStrand' + " + class="flex items-center gap-2" + > + <component + :is=" + STRAND_CODE_TO_ICON_COMPONENT[ + _get(data, column.field) as Strand || 'UNKNOWN' + ] + " + class="inline text-xl font-extrabold" + /> + {{ _get(data, column.field) }} + </span> + <span v-else-if="column.isMarkdown"> <BaseRenderedMarkdown :stringified-markdown="_get(data, column.field)" -- GitLab From 3e2147b4797df1b19e4e04c884ecb46c4a061a03 Mon Sep 17 00:00:00 2001 From: Julien Touchais <5978-julien.touchais@users.noreply.forgemia.inra.fr> Date: Mon, 5 Aug 2024 14:41:39 +0200 Subject: [PATCH 54/54] fix(table-view): :construction: disable markdown fields from global search filter --- src/views/DataTableView.vue | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/views/DataTableView.vue b/src/views/DataTableView.vue index 4af9be1..1e776f9 100644 --- a/src/views/DataTableView.vue +++ b/src/views/DataTableView.vue @@ -732,6 +732,21 @@ filters.value.global = { matchMode: primeVueFilterMatchMode.CONTAINS } +/** + * The fields of the columns to include in the global search for filtering. + * Those are the columns with string type content, which are not in markdown + * format. + */ +const globalFilterColumnFields = computed(() => + columns + .filter( + (column) => + !column.isMarkdown && + typeof _get(tableEntries.value?.[0], column.field) === 'string' + ) + .map((column) => column.field) +) + /** * Watcher to filter filter with specific configs values when options are * fetched. @@ -831,12 +846,7 @@ const scrollToTableTop = () => <div class="table-wrapper"> <DataTable v-model:filters="filters" - :global-filter-fields="[ - 'guide.name', - 'modification.name', - 'modification.target.name', - 'organism.name' - ]" + :global-filter-fields="globalFilterColumnFields" :value="dedupedTableEntries" paginator :rows="20" -- GitLab