diff --git a/backend/src/main/resources/application.yml b/backend/src/main/resources/application.yml index fc4853e5df7d611b32e14bbbd3bc9c962c6b2157..b739853b103ac85943fc4c33bf4078dd6bacfa20 100644 --- a/backend/src/main/resources/application.yml +++ b/backend/src/main/resources/application.yml @@ -42,30 +42,35 @@ faidare: name: URGI GnpIS image: https://urgi.versailles.inra.fr/files/faidare/logo/GnpIS.png # WUR EU-SOL BreeDB - - uri: WUR + - uri: https://www.eu-sol.wur.nl/ url: https://www.eu-sol.wur.nl/ name: WUR EU-SOL BreeDB image: https://urgi.versailles.inra.fr/files/faidare/logo/EU-SOL.png # VIB PIPPA - - uri: VIB + - uri: http://pippa.psb.ugent.be url: http://pippa.psb.ugent.be name: VIB PIPPA image: https://urgi.versailles.inra.fr/files/faidare/logo/VIB.png # IBET BioData - - uri: IBET + - uri: https://biodata.pt url: https://biodata.pt name: IBET BioData image: https://urgi.versailles.inra.fr/files/faidare/logo/biodata.png # NIB PISA - - uri: NIB + - uri: http://nib.si url: http://www.pisa.nib.si name: NIB PISA image: https://urgi.versailles.inra.fr/files/faidare/logo/NIB.png # CIRAD TropGENE - - uri: CIRAD + - uri: http://tropgenedb.cirad.fr url: http://tropgenedb.cirad.fr name: CIRAD TropGENE image: https://urgi.versailles.inra.fr/files/faidare/logo/CIRAD.jpg + # EVA + - uri: https://www.ebi.ac.uk/eva + url: https://www.ebi.ac.uk/eva + name: EVA + image: https://urgi.versailles.inra.fr/files/faidare/logo/EVA.png server: compression: diff --git a/frontend/angular.json b/frontend/angular.json index 7a7ac6aa69654c186f0dfa581b8af2d0f1278def..57ab99330f3e925d17cb6438721c55f5d2910f1a 100644 --- a/frontend/angular.json +++ b/frontend/angular.json @@ -41,7 +41,12 @@ "node_modules/leaflet.markercluster/dist/MarkerCluster.css", "node_modules/leaflet.markercluster/dist/MarkerCluster.Default.css" ], - "scripts": [], + "scripts": [ + "node_modules/@solgenomics/d3-pedigree-tree/build/d3-pedigree-tree.js", + "node_modules/@solgenomics/brapi-pedigree-viewer/build/PedigreeViewer.js", + "node_modules/@solgenomics/brapijs/build/BrAPI.js", + "node_modules/d3/build/d3.js" + ], "baseHref": "/faidare-dev/", "es5BrowserSupport": true }, diff --git a/frontend/package-lock.json b/frontend/package-lock.json index aa2aa4ef5adab9259bebd7a7ad229c2a0d30d961..b3f8d6a345375b5ef7e7a3c116a6d6c348508ce8 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -821,6 +821,293 @@ } } }, + "@solgenomics/brapi-pedigree-viewer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@solgenomics/brapi-pedigree-viewer/-/brapi-pedigree-viewer-2.0.0.tgz", + "integrity": "sha512-7lrd2o4D2cfE/gcX/IbccVtAtSNLORVjWniLNfT8b7x26gphrZjgybg/smvWoq76zoF6Y+M47SEXdg90o6SXBg==", + "requires": { + "@solgenomics/d3-pedigree-tree": "^1.1.1" + } + }, + "@solgenomics/brapijs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@solgenomics/brapijs/-/brapijs-1.0.1.tgz", + "integrity": "sha512-NhgL7SSchIzSGVyYIpPc7ACgl1Se9i+4RrucuCq8FGazlijFfUGvIVlBBb6JV2jgawmX5Go6K3BgQCYGRScOqA==", + "requires": { + "node-fetch": "2.0.0", + "rollup": "0.40" + } + }, + "@solgenomics/d3-pedigree-tree": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@solgenomics/d3-pedigree-tree/-/d3-pedigree-tree-1.1.1.tgz", + "integrity": "sha512-b83hDI3p9arYdDlGYW1VMIstDBuDEuVUC8QCdtR832VBOtGmjaxUrOTA624tyQC4m4okvjo03/cH4eMnjoigMQ==", + "requires": { + "d3-array": "1", + "d3-collection": "1", + "d3-scale": "1" + } + }, + "@types/d3": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-5.7.2.tgz", + "integrity": "sha512-7/wClB8ycneWGy3jdvLfXKTd5SoTg9hji7IdJ0RuO9xTY54YpJ8zlcFADcXhY1J3kCBwxp+/1jeN6a5OMwgYOw==", + "dev": true, + "requires": { + "@types/d3-array": "^1", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-collection": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-voronoi": "*", + "@types/d3-zoom": "*" + } + }, + "@types/d3-array": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-1.2.7.tgz", + "integrity": "sha512-51vHWuUyDOi+8XuwPrTw3cFqyh2Slg9y8COYkRfjCPG9TfYqY0hoNPzv/8BrcAy0FeQBzqEo/D/8Nk2caOQJnA==", + "dev": true + }, + "@types/d3-axis": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-1.0.12.tgz", + "integrity": "sha512-BZISgSD5M8TgURyNtcPAmUB9sk490CO1Thb6/gIn0WZTt3Y50IssX+2Z0vTccoqZksUDTep0b+o4ofXslvNbqg==", + "dev": true, + "requires": { + "@types/d3-selection": "*" + } + }, + "@types/d3-brush": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-1.0.10.tgz", + "integrity": "sha512-J8jREATIrfJaAfhJivqaEKPnJsRlwwrOPje+ABqZFgamADjll+q9zaDXnYyjiGPPsiJEU+Qq9jQi5rECxIOfhg==", + "dev": true, + "requires": { + "@types/d3-selection": "*" + } + }, + "@types/d3-chord": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-1.0.9.tgz", + "integrity": "sha512-UA6lI9CVW5cT5Ku/RV4hxoFn4mKySHm7HEgodtfRthAj1lt9rKZEPon58vyYfk+HIAm33DtJJgZwMXy2QgyPXw==", + "dev": true + }, + "@types/d3-collection": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-collection/-/d3-collection-1.0.8.tgz", + "integrity": "sha512-y5lGlazdc0HNO0F3UUX2DPE7OmYvd9Kcym4hXwrJcNUkDaypR5pX+apuMikl9LfTxKItJsY9KYvzBulpCKyvuQ==", + "dev": true + }, + "@types/d3-color": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-1.2.2.tgz", + "integrity": "sha512-6pBxzJ8ZP3dYEQ4YjQ+NVbQaOflfgXq/JbDiS99oLobM2o72uAST4q6yPxHv6FOTCRC/n35ktuo8pvw/S4M7sw==", + "dev": true + }, + "@types/d3-contour": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-1.3.0.tgz", + "integrity": "sha512-AUCUIjEnC5lCGBM9hS+MryRaFLIrPls4Rbv6ktqbd+TK/RXZPwOy9rtBWmGpbeXcSOYCJTUDwNJuEnmYPJRxHQ==", + "dev": true, + "requires": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "@types/d3-dispatch": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-1.0.7.tgz", + "integrity": "sha512-M+z84G7UKwK6hEPnGCSccOg8zJ3Nk2hgDQ9sCstHXgsFU0sMxlIZVKqKB5oxUDbALqQG6ucg0G9e8cmOSlishg==", + "dev": true + }, + "@types/d3-drag": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-1.2.3.tgz", + "integrity": "sha512-rWB5SPvkYVxW3sqUxHOJUZwifD0KqvKwvt1bhNqcLpW6Azsd0BJgRNcyVW8GAferaAk5r8dzeZnf9zKlg9+xMQ==", + "dev": true, + "requires": { + "@types/d3-selection": "*" + } + }, + "@types/d3-dsv": { + "version": "1.0.36", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-1.0.36.tgz", + "integrity": "sha512-jbIWQ27QJcBNMZbQv0NSQMHnBDCmxghAxePxgyiPH1XPCRkOsTBei7jcdi3fDrUCGpCV3lKrSZFSlOkhUQVClA==", + "dev": true + }, + "@types/d3-ease": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-1.0.8.tgz", + "integrity": "sha512-VRf8czVWHSJPoUWxMunzpePK02//wHDAswknU8QWzcyrQn6pqe46bHRYi2smSpw5VjsT2CG8k/QeWIdWPS3Bmg==", + "dev": true + }, + "@types/d3-fetch": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-1.1.5.tgz", + "integrity": "sha512-o9c0ItT5/Gl3wbNuVpzRnYX1t3RghzeWAjHUVLuyZJudiTxC4f/fC0ZPFWLQ2lVY8pAMmxpV8TJ6ETYCgPeI3A==", + "dev": true, + "requires": { + "@types/d3-dsv": "*" + } + }, + "@types/d3-force": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-1.2.1.tgz", + "integrity": "sha512-jqK+I36uz4kTBjyk39meed5y31Ab+tXYN/x1dn3nZEus9yOHCLc+VrcIYLc/aSQ0Y7tMPRlIhLetulME76EiiA==", + "dev": true + }, + "@types/d3-format": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-1.3.1.tgz", + "integrity": "sha512-KAWvReOKMDreaAwOjdfQMm0HjcUMlQG47GwqdVKgmm20vTd2pucj0a70c3gUSHrnsmo6H2AMrkBsZU2UhJLq8A==", + "dev": true + }, + "@types/d3-geo": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-1.11.1.tgz", + "integrity": "sha512-Ox8WWOG3igDRoep/dNsGbOiSJYdUG3ew/6z0ETvHyAtXZVBjOE0S96zSSmzgl0gqQ3RdZjn2eeJOj9oRcMZPkQ==", + "dev": true, + "requires": { + "@types/geojson": "*" + } + }, + "@types/d3-hierarchy": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-1.1.6.tgz", + "integrity": "sha512-vvSaIDf/Ov0o3KwMT+1M8+WbnnlRiGjlGD5uvk83a1mPCTd/E5x12bUJ/oP55+wUY/4Kb5kc67rVpVGJ2KUHxg==", + "dev": true + }, + "@types/d3-interpolate": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-1.3.1.tgz", + "integrity": "sha512-z8Zmi08XVwe8e62vP6wcA+CNuRhpuUU5XPEfqpG0hRypDE5BWNthQHB1UNWWDB7ojCbGaN4qBdsWp5kWxhT1IQ==", + "dev": true, + "requires": { + "@types/d3-color": "*" + } + }, + "@types/d3-path": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-1.0.8.tgz", + "integrity": "sha512-AZGHWslq/oApTAHu9+yH/Bnk63y9oFOMROtqPAtxl5uB6qm1x2lueWdVEjsjjV3Qc2+QfuzKIwIR5MvVBakfzA==", + "dev": true + }, + "@types/d3-polygon": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-1.0.7.tgz", + "integrity": "sha512-Xuw0eSjQQKs8jTiNbntWH0S+Xp+JyhqxmQ0YAQ3rDu6c3kKMFfgsaGN7Jv5u3zG6yVX/AsLP/Xs/QRjmi9g43Q==", + "dev": true + }, + "@types/d3-quadtree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-1.0.7.tgz", + "integrity": "sha512-0ajFawWicfjsaCLh6NzxOyVDYhQAmMFbsiI3MPGLInorauHFEh9/Cl6UHNf+kt/J1jfoxKY/ZJaKAoDpbvde5Q==", + "dev": true + }, + "@types/d3-random": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-1.1.2.tgz", + "integrity": "sha512-Jui+Zn28pQw/3EayPKaN4c/PqTvqNbIPjHkgIIFnxne1FdwNjfHtAIsZIBMKlquQNrrMjFzCrlF2gPs3xckqaA==", + "dev": true + }, + "@types/d3-scale": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-2.1.1.tgz", + "integrity": "sha512-kNTkbZQ+N/Ip8oX9PByXfDLoCSaZYm+VUOasbmsa6KD850/ziMdYepg/8kLg2plHzoLANdMqPoYQbvExevLUHg==", + "dev": true, + "requires": { + "@types/d3-time": "*" + } + }, + "@types/d3-scale-chromatic": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-1.3.1.tgz", + "integrity": "sha512-Ny3rLbV5tnmqgW7w/poCcef4kXP8mHPo/p8EjTS5d9OUk8MlqAeRaM8eF7Vyv7QMLiIXNE94Pa1cMLSPkXQBoQ==", + "dev": true + }, + "@types/d3-selection": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-1.4.1.tgz", + "integrity": "sha512-bv8IfFYo/xG6dxri9OwDnK3yCagYPeRIjTlrcdYJSx+FDWlCeBDepIHUpqROmhPtZ53jyna0aUajZRk0I3rXNA==", + "dev": true + }, + "@types/d3-shape": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.3.1.tgz", + "integrity": "sha512-usqdvUvPJ7AJNwpd2drOzRKs1ELie53p2m2GnPKr076/ADM579jVTJ5dPsoZ5E/CMNWk8lvPWYQSvilpp6jjwg==", + "dev": true, + "requires": { + "@types/d3-path": "*" + } + }, + "@types/d3-time": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-1.0.10.tgz", + "integrity": "sha512-aKf62rRQafDQmSiv1NylKhIMmznsjRN+MnXRXTqHoqm0U/UZzVpdrtRnSIfdiLS616OuC1soYeX1dBg2n1u8Xw==", + "dev": true + }, + "@types/d3-time-format": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-2.1.1.tgz", + "integrity": "sha512-tJSyXta8ZyJ52wDDHA96JEsvkbL6jl7wowGmuf45+fAkj5Y+SQOnz0N7/H68OWmPshPsAaWMQh+GAws44IzH3g==", + "dev": true + }, + "@types/d3-timer": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-1.0.9.tgz", + "integrity": "sha512-WvfJ3LFxBbWjqRGz9n7GJt08RrTHPJDVsIwwoCMROlqF+iDacYiAFjf9oqnq0mXpb2juA2N/qjKP+MKdal3YNQ==", + "dev": true + }, + "@types/d3-transition": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-1.1.4.tgz", + "integrity": "sha512-/vsmKVUIXEyCcIXYAlw7bnYkIs9/J/nZbptRJFKUN3FdXq/dF6j9z9xXzerkyU6TDHLrMrwx9eGwdKyTIy/j9w==", + "dev": true, + "requires": { + "@types/d3-selection": "*" + } + }, + "@types/d3-voronoi": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@types/d3-voronoi/-/d3-voronoi-1.1.9.tgz", + "integrity": "sha512-DExNQkaHd1F3dFPvGA/Aw2NGyjMln6E9QzsiqOcBgnE+VInYnFBHBBySbZQts6z6xD+5jTfKCP7M4OqMyVjdwQ==", + "dev": true + }, + "@types/d3-zoom": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-1.7.4.tgz", + "integrity": "sha512-5jnFo/itYhJeB2khO/lKe730kW/h2EbKMOvY0uNp3+7NdPm4w63DwPEMxifQZ7n902xGYK5DdU67FmToSoy4VA==", + "dev": true, + "requires": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, "@types/geojson": { "version": "7946.0.6", "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.6.tgz", @@ -1273,6 +1560,7 @@ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "dev": true, + "optional": true, "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -1802,9 +2090,9 @@ } }, "bootstrap": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.1.3.tgz", - "integrity": "sha512-rDFIzgXcof0jDyjNosjv4Sno77X4KuPeFxG2XZZv1/Kc8DRVGVADdoQyyOVDwPqL36DDmtCQbrpMCqvpPLJQ0w==" + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.3.1.tgz", + "integrity": "sha512-rXqOmH1VilAt2DyPzluTi2blhk17bO7ef+zLLPlWvG494pDxcM234pJ8wTc/6R40UWizAIIMgxjvxZg5kmsbag==" }, "brace-expansion": { "version": "1.1.11", @@ -2484,7 +2772,8 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true + "dev": true, + "optional": true }, "constants-browserify": { "version": "1.0.0", @@ -2717,6 +3006,306 @@ "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", "dev": true }, + "d3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-4.0.0.tgz", + "integrity": "sha1-PhCDua82fNlq6L99IQ3EmpB+DCs=", + "requires": { + "d3-array": "1.0.0", + "d3-axis": "1.0.0", + "d3-brush": "1.0.1", + "d3-collection": "1.0.0", + "d3-color": "1.0.0", + "d3-dispatch": "1.0.0", + "d3-drag": "1.0.0", + "d3-dsv": "1.0.0", + "d3-ease": "1.0.0", + "d3-force": "1.0.0", + "d3-format": "1.0.0", + "d3-geo": "1.0.0", + "d3-hierarchy": "1.0.0", + "d3-interpolate": "1.0.0", + "d3-path": "1.0.0", + "d3-polygon": "1.0.0", + "d3-quadtree": "1.0.0", + "d3-queue": "3.0.1", + "d3-random": "1.0.0", + "d3-request": "1.0.0", + "d3-scale": "1.0.0", + "d3-selection": "1.0.0", + "d3-shape": "1.0.0", + "d3-time": "1.0.0", + "d3-time-format": "2.0.0", + "d3-timer": "1.0.0", + "d3-transition": "1.0.0", + "d3-voronoi": "1.0.0", + "d3-zoom": "1.0.1" + }, + "dependencies": { + "d3-array": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.0.0.tgz", + "integrity": "sha1-8OVQ6JrMp/2rdMr+SR99gshwR68=" + }, + "d3-collection": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.0.tgz", + "integrity": "sha1-EZ/mM7+UazTWgrp9roooLG9phHs=" + }, + "d3-color": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.0.0.tgz", + "integrity": "sha1-6qv524d6LnltJ2RKj1uT3fn/boQ=" + }, + "d3-format": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.0.0.tgz", + "integrity": "sha1-e5jQfZkFedCEtD516y663sEvzk0=" + }, + "d3-interpolate": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.0.0.tgz", + "integrity": "sha1-6Q6pC+5YJo4IZDKQ0WBEXyZRHfo=", + "requires": { + "d3-color": "1" + } + }, + "d3-scale": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.0.tgz", + "integrity": "sha1-C0F1yjHL5l4lRCfkZi3678NzRi0=", + "requires": { + "d3-array": "1", + "d3-collection": "1", + "d3-color": "1", + "d3-format": "1", + "d3-interpolate": "1", + "d3-time": "1", + "d3-time-format": "2" + } + }, + "d3-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.0.tgz", + "integrity": "sha1-u/5eeN2zE/BywroAy7bpbh1BnH8=" + }, + "d3-time-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.0.0.tgz", + "integrity": "sha1-KVL138Qq/q4dQ8vwl+d1jpu8qH4=", + "requires": { + "d3-time": "1" + } + } + } + }, + "d3-array": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", + "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" + }, + "d3-axis": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.0.tgz", + "integrity": "sha1-sTKFex8OgCR9ZIYa1XaZ15GHpPE=" + }, + "d3-brush": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.0.1.tgz", + "integrity": "sha1-1Fev/CZxpUzBzFQp7/bEwAvQyOM=", + "requires": { + "d3-dispatch": "1", + "d3-drag": "1", + "d3-interpolate": "1", + "d3-selection": "1", + "d3-transition": "1" + } + }, + "d3-collection": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz", + "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" + }, + "d3-color": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.3.0.tgz", + "integrity": "sha512-NHODMBlj59xPAwl2BDiO2Mog6V+PrGRtBfWKqKRrs9MCqlSkIEb0Z/SfY7jW29ReHTDC/j+vwXhnZcXI3+3fbg==" + }, + "d3-dispatch": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.0.tgz", + "integrity": "sha1-fzbCFkmhDyoyRR3MqHmKBUFkSb4=" + }, + "d3-drag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.0.0.tgz", + "integrity": "sha1-NPDLYmV1T5TdH8NCpXRu22Deumw=", + "requires": { + "d3-dispatch": "1", + "d3-selection": "1" + } + }, + "d3-dsv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.0.0.tgz", + "integrity": "sha1-RRQvTYT/tiIO8JwXe2L+fyKBqBM=", + "requires": { + "rw": "1" + } + }, + "d3-ease": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.0.tgz", + "integrity": "sha1-AZgbM/MMpug7XgO3hnNF8EV9eaU=" + }, + "d3-force": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.0.0.tgz", + "integrity": "sha1-XxlaoSahnIPwQcsUjmr2WuVF0vo=", + "requires": { + "d3-collection": "1", + "d3-dispatch": "1", + "d3-quadtree": "1", + "d3-timer": "1" + } + }, + "d3-format": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.3.2.tgz", + "integrity": "sha512-Z18Dprj96ExragQ0DeGi+SYPQ7pPfRMtUXtsg/ChVIKNBCzjO8XYJvRTC1usblx52lqge56V5ect+frYTQc8WQ==" + }, + "d3-geo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.0.0.tgz", + "integrity": "sha1-fETXS707yKxPH9Geil8fytwkND4=", + "requires": { + "d3-array": "1" + } + }, + "d3-hierarchy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.0.0.tgz", + "integrity": "sha1-Fei6Kax1DAYFcwWm7FVBAmPH/Qo=" + }, + "d3-interpolate": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.3.2.tgz", + "integrity": "sha512-NlNKGopqaz9qM1PXh9gBF1KSCVh+jSFErrSlD/4hybwoNX/gt1d8CDbDW+3i+5UOHhjC6s6nMvRxcuoMVNgL2w==", + "requires": { + "d3-color": "1" + } + }, + "d3-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.0.tgz", + "integrity": "sha1-MKjO5g6Ngh9lf9wkgQdVvvkmnnY=" + }, + "d3-polygon": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.0.tgz", + "integrity": "sha1-WAeVhddaBKLy6yYLw35mMhn9MUQ=" + }, + "d3-quadtree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.0.tgz", + "integrity": "sha1-Q8BokdeyUyZlbjj+wWxGnllvFH4=" + }, + "d3-queue": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-queue/-/d3-queue-3.0.1.tgz", + "integrity": "sha1-ozGNA4lejxoxOzpeRiaO+fMRfWc=" + }, + "d3-random": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.0.0.tgz", + "integrity": "sha1-5cvTjx2oQh1Sa/a7NDgZRq5PtAk=" + }, + "d3-request": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-request/-/d3-request-1.0.0.tgz", + "integrity": "sha1-q7K7yGw4aQTfMY0wAImFeYbq7d8=", + "requires": { + "d3-collection": "1", + "d3-dispatch": "1", + "d3-dsv": "1", + "xmlhttprequest": "1" + } + }, + "d3-scale": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.7.tgz", + "integrity": "sha512-KvU92czp2/qse5tUfGms6Kjig0AhHOwkzXG0+PqIJB3ke0WUv088AHMZI0OssO9NCkXt4RP8yju9rpH8aGB7Lw==", + "requires": { + "d3-array": "^1.2.0", + "d3-collection": "1", + "d3-color": "1", + "d3-format": "1", + "d3-interpolate": "1", + "d3-time": "1", + "d3-time-format": "2" + } + }, + "d3-selection": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.0.0.tgz", + "integrity": "sha1-MHpYLzGf4VeesKYOZt2rdGYIXBI=" + }, + "d3-shape": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.0.0.tgz", + "integrity": "sha1-zKMySHV55Fc1TIg4oKKDvmOEWbo=", + "requires": { + "d3-path": "1" + } + }, + "d3-time": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.0.11.tgz", + "integrity": "sha512-Z3wpvhPLW4vEScGeIMUckDW7+3hWKOQfAWg/U7PlWBnQmeKQ00gCUsTtWSYulrKNA7ta8hJ+xXc6MHrMuITwEw==" + }, + "d3-time-format": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.1.3.tgz", + "integrity": "sha512-6k0a2rZryzGm5Ihx+aFMuO1GgelgIz+7HhB4PH4OEndD5q2zGn1mDfRdNrulspOfR6JXkb2sThhDK41CSK85QA==", + "requires": { + "d3-time": "1" + } + }, + "d3-timer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.0.tgz", + "integrity": "sha1-p3/GnSSP4fbbrWEQhoroW2bhODk=" + }, + "d3-transition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.0.0.tgz", + "integrity": "sha1-pPUPJ3uwhJNgOjD7kEUZ8+3UzSM=", + "requires": { + "d3-color": "1", + "d3-dispatch": "1", + "d3-ease": "1", + "d3-interpolate": "1", + "d3-selection": "1", + "d3-timer": "1" + } + }, + "d3-voronoi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.0.0.tgz", + "integrity": "sha1-EYoC12Xi4wTLJCeYkC0H0aJn+Cc=" + }, + "d3-zoom": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.0.1.tgz", + "integrity": "sha1-mbS2XVZ8ckLLjSi2FTpJhONP1Xc=", + "requires": { + "d3-dispatch": "1", + "d3-drag": "1", + "d3-interpolate": "1", + "d3-selection": "1", + "d3-transition": "1" + } + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -2886,7 +3475,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true + "dev": true, + "optional": true }, "depd": { "version": "1.1.2", @@ -3853,7 +4443,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -3874,12 +4465,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3894,17 +4487,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -4021,7 +4617,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -4033,6 +4630,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -4047,6 +4645,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -4054,12 +4653,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -4078,6 +4679,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -4158,7 +4760,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -4170,6 +4773,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -4255,7 +4859,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -4291,6 +4896,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -4310,6 +4916,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -4353,20 +4960,23 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", "dev": true, + "optional": true, "requires": { "graceful-fs": "^4.1.2", "inherits": "~2.0.0", @@ -4379,6 +4989,7 @@ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, + "optional": true, "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -4416,7 +5027,8 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true + "dev": true, + "optional": true }, "get-stream": { "version": "3.0.0", @@ -4528,12 +5140,12 @@ "dev": true }, "handlebars": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.0.tgz", - "integrity": "sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.2.tgz", + "integrity": "sha512-29Zxv/cynYB7mkT1rVWQnV7mGX6v7H/miQ6dbEpYTKq5eJBN7PsRB+ViYJlcT6JINTSu4dVB9kOqEun78h6Exg==", "dev": true, "requires": { - "async": "^2.5.0", + "neo-async": "^2.6.0", "optimist": "^0.6.1", "source-map": "^0.6.1", "uglify-js": "^3.1.4" @@ -4605,7 +5217,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true + "dev": true, + "optional": true }, "has-value": { "version": "1.0.0", @@ -4786,15 +5399,24 @@ "dev": true }, "https-proxy-agent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", - "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", "dev": true, "requires": { - "agent-base": "^4.1.0", + "agent-base": "^4.3.0", "debug": "^3.1.0" }, "dependencies": { + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, "debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", @@ -4805,9 +5427,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -5325,7 +5947,8 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true + "dev": true, + "optional": true }, "is-windows": { "version": "1.0.2", @@ -5604,9 +6227,9 @@ "dev": true }, "jquery": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", - "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==" + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", + "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==" }, "js-base64": { "version": "2.5.1", @@ -5622,9 +6245,9 @@ "dev": true }, "js-yaml": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", - "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -5876,6 +6499,21 @@ "source-map-support": "^0.5.5" } }, + "katex": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.11.1.tgz", + "integrity": "sha512-5oANDICCTX0NqYIyAiFCCwjQ7ERu3DQG2JFHLbYOf+fXaMoH8eg/zOq5WSYJsKMi/QebW+Eh3gSM+oss1H/bww==", + "requires": { + "commander": "^2.19.0" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + } + } + }, "killable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", @@ -5968,6 +6606,7 @@ "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, + "optional": true, "requires": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", @@ -5980,7 +6619,8 @@ "version": "2.3.0", "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "dev": true, + "optional": true } } }, @@ -6012,9 +6652,9 @@ } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, "lodash.assign": { @@ -6037,9 +6677,9 @@ "dev": true }, "lodash.mergewith": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", - "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", "dev": true, "optional": true }, @@ -6255,7 +6895,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true + "dev": true, + "optional": true }, "map-visit": { "version": "1.0.0", @@ -6267,9 +6908,9 @@ } }, "marked": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.6.2.tgz", - "integrity": "sha512-LqxwVH3P/rqKX4EKGz7+c2G9r98WeM/SW34ybhgNGhUQNKtf1GmmSkJ6cDGJ/t6tiyae49qRkpyTw2B9HOrgUA==" + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", + "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==" }, "md5.js": { "version": "1.3.5", @@ -6483,9 +7124,9 @@ } }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, "requires": { "for-in": "^1.0.2", @@ -6629,12 +7270,13 @@ "integrity": "sha512-Zorpd5I6KmvTtiYwcjymzCaortznMZr5CRB737XaNheITTUb2rVLUoEBk1dwQE3b/Cp5sByuS85fzwJRvjEXKQ==" }, "ngx-markdown": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-8.0.2.tgz", - "integrity": "sha512-dLF205/JrSI7pOIgsrikhf9KYF6yiP797FuHGjVEw51KhHfuhCoR+3pl7Ky2vxuQBJjmkNGbgH75+Qy2SAnFEg==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-8.2.1.tgz", + "integrity": "sha512-59LG8rEoOwDsZyyJckp+QDnW/c5wMaRpNkb6TWktlBVTfQKyAYHr6BuSskVbZ4y8nsj54UQg0CDFLBOfUiqOwA==", "requires": { - "@types/marked": "^0.6.0", - "marked": "^0.6.0", + "@types/marked": "^0.6.5", + "katex": "^0.11.1", + "marked": "^0.7.0", "prismjs": "^1.16.0", "tslib": "^1.9.0" } @@ -6662,6 +7304,11 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-fetch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.0.0.tgz", + "integrity": "sha1-mCu6Q+zU8pIqKcwYamu7C7c/y6Y=" + }, "node-fetch-npm": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz", @@ -6919,6 +7566,7 @@ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, + "optional": true, "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -7579,9 +8227,9 @@ "dev": true }, "prismjs": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.16.0.tgz", - "integrity": "sha512-OA4MKxjFZHSvZcisLGe14THYsug/nF6O1f0pAJc0KN0wTyAcLqmsbE+lTGKSpyh+9pEW57+k6pg2AfYR+coyHA==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.17.1.tgz", + "integrity": "sha512-PrEDJAFdUGbOP6xK/UsfkC5ghJsPJviKgnQOoxaDbBjwc8op68Quupwt1DeAFoG8GImPhiKXAvvsH7wDSLsu1Q==", "requires": { "clipboard": "^2.0.0" } @@ -7933,6 +8581,7 @@ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, + "optional": true, "requires": { "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", @@ -7944,6 +8593,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, + "optional": true, "requires": { "graceful-fs": "^4.1.2", "pify": "^2.0.0", @@ -7954,7 +8604,8 @@ "version": "2.3.0", "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "dev": true, + "optional": true } } }, @@ -7963,6 +8614,7 @@ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, + "optional": true, "requires": { "find-up": "^1.0.0", "read-pkg": "^1.0.0" @@ -7973,6 +8625,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, + "optional": true, "requires": { "path-exists": "^2.0.0", "pinkie-promise": "^2.0.0" @@ -7983,6 +8636,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, + "optional": true, "requires": { "pinkie-promise": "^2.0.0" } @@ -8253,6 +8907,29 @@ "inherits": "^2.0.1" } }, + "rollup": { + "version": "0.40.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.40.2.tgz", + "integrity": "sha1-tZyDdzMvgovjiYMZLzNp5QL55Es=", + "requires": { + "source-map-support": "^0.4.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "requires": { + "source-map": "^0.5.6" + } + } + } + }, "run-async": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", @@ -8271,6 +8948,11 @@ "aproba": "^1.1.1" } }, + "rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" + }, "rxjs": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", @@ -8513,9 +9195,9 @@ "dev": true }, "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -9263,6 +9945,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, + "optional": true, "requires": { "is-utf8": "^0.2.0" } @@ -9365,14 +10048,14 @@ "dev": true }, "tar": { - "version": "2.2.1", - "resolved": "http://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", "dev": true, "optional": true, "requires": { "block-stream": "*", - "fstream": "^1.0.2", + "fstream": "^1.0.12", "inherits": "2" } }, @@ -9686,6 +10369,13 @@ "requires": { "jquery": "3.3.1", "jstree": "3.3.5" + }, + "dependencies": { + "jquery": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", + "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==" + } } }, "tree-kill": { @@ -9865,38 +10555,15 @@ "dev": true }, "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "set-value": "^2.0.1" } }, "unique-filename": { @@ -10625,6 +11292,7 @@ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "dev": true, + "optional": true, "requires": { "string-width": "^1.0.2 || 2" } @@ -10701,6 +11369,11 @@ "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=", "dev": true }, + "xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" + }, "xmlhttprequest-ssl": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", diff --git a/frontend/package.json b/frontend/package.json index e4dc6e1e794f5866c8912d4277d045a432733841..a8954a6294e15911c9ddc8a6ef068a67336d3f13 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -22,18 +22,22 @@ "@angular/platform-browser-dynamic": "7.2.7", "@angular/router": "7.2.7", "@ng-bootstrap/ng-bootstrap": "4.0.0", + "@solgenomics/brapi-pedigree-viewer": "2.0.0", + "@solgenomics/brapijs": "1.0.1", + "@solgenomics/d3-pedigree-tree": "1.1.1", "@types/leaflet": "1.2.14", "@types/leaflet.markercluster": "1.0.3", "angular-coordinates": "1.0.0", "angular-mocks": "1.7.8", - "bootstrap": "4.1.3", + "bootstrap": "4.3.1", "core-js": "2.5.7", + "d3": "4.0.0", "font-awesome": "4.7.0", "leaflet": "1.3.4", "leaflet.markercluster": "1.4.1", "moment": "2.24.0", "ng-mocks": "7.6.0", - "ngx-markdown": "8.0.2", + "ngx-markdown": "8.2.1", "ngx-moment": "3.3.0", "popper.js": "1.14.6", "rxjs": "6.4.0", @@ -46,6 +50,7 @@ "@angular/cli": "7.3.4", "@angular/compiler-cli": "7.2.7", "@angular/language-service": "7.2.7", + "@types/d3": "5.7.2", "@types/jasmine": "2.8.12", "@types/jasminewd2": "2.0.6", "@types/node": "8.9.5", diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts index 92d8652856c0b612140b1b328391a9809364862c..002c2359059888a8f62bef36fc5f1ee059419114 100644 --- a/frontend/src/app/app.module.ts +++ b/frontend/src/app/app.module.ts @@ -26,6 +26,7 @@ import { MomentModule } from 'ngx-moment'; import { XrefsComponent } from './xrefs/xrefs.component'; import { CoordinatesModule } from 'angular-coordinates'; import { CardGenericDocumentComponent } from './card-generic-document/card-generic-document.component'; +import { GenealogicTreeComponent } from './genealogic-tree/genealogic-tree.component'; import { MarkdownModule, MarkedOptions, MarkedRenderer } from 'ngx-markdown'; import { MarkdownPageComponent } from './markdown-page/markdown-page.component'; @@ -50,7 +51,9 @@ import { MarkdownPageComponent } from './markdown-page/markdown-page.component'; CardTableComponent, XrefsComponent, CardGenericDocumentComponent, - MarkdownPageComponent + MarkdownPageComponent, + CardGenericDocumentComponent, + GenealogicTreeComponent ], imports: [ BrowserModule, diff --git a/frontend/src/app/genealogic-tree/genealogic-tree.component.html b/frontend/src/app/genealogic-tree/genealogic-tree.component.html new file mode 100644 index 0000000000000000000000000000000000000000..39881214467740c9a16afd8eee7fd81684a23265 --- /dev/null +++ b/frontend/src/app/genealogic-tree/genealogic-tree.component.html @@ -0,0 +1,4 @@ + +<div id="pdgv-wrap"> + +</div> diff --git a/frontend/src/app/genealogic-tree/genealogic-tree.component.scss b/frontend/src/app/genealogic-tree/genealogic-tree.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/frontend/src/app/genealogic-tree/genealogic-tree.component.spec.ts b/frontend/src/app/genealogic-tree/genealogic-tree.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..a3191a1e03e8dbfb30beae73786cec574d48c375 --- /dev/null +++ b/frontend/src/app/genealogic-tree/genealogic-tree.component.spec.ts @@ -0,0 +1,50 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { + GenealogicTreeComponent, + GenealogicTreeFactory +} from './genealogic-tree.component'; +import { CropOntologyWidgetFactory } from '../form/trait-ontology-widget/trait-ontology-widget.component'; + +describe('GenealogicTreeComponent', () => { + let component: GenealogicTreeComponent; + let fixture: ComponentFixture<GenealogicTreeComponent>; + // TODO create complete GenealogicTreeobject + const fakeGenealogicTree = {}; + + /*beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [GenealogicTreeComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(GenealogicTreeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + });*/ + + const fakeFactory: GenealogicTreeFactory = { + initialize() { + return fakeGenealogicTree; + } + }; + + beforeEach(() => TestBed.configureTestingModule({ + declarations: [GenealogicTreeComponent], + providers: [ + { provide: GenealogicTreeComponent, useValue: fakeFactory } + ] + + })); + + + it('should create', () => { + const fixture = TestBed.createComponent(GenealogicTreeComponent); + const component = fixture.componentInstance; + fixture.detectChanges(); + expect(component).toBeTruthy(); + }); +}); + diff --git a/frontend/src/app/genealogic-tree/genealogic-tree.component.ts b/frontend/src/app/genealogic-tree/genealogic-tree.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..fc565385cebc5b0c06b8b81d35ffce3587ada89d --- /dev/null +++ b/frontend/src/app/genealogic-tree/genealogic-tree.component.ts @@ -0,0 +1,45 @@ +import { Component, Input, OnInit } from '@angular/core'; +import BrAPI from '@solgenomics/brapijs'; +import PedigreeViewer from '@solgenomics/brapi-pedigree-viewer'; +import GenealogicTree from '@solgenomics/brapi-pedigree-viewer/build/PedigreeViewer.js' + +export class GenealogicTreeFactory { + + initialize(...args): GenealogicTree { + return new GenealogicTree(...args); + } +} + +@Component({ + selector: 'faidare-genealogic-tree', + templateUrl: './genealogic-tree.component.html', + styleUrls: ['./genealogic-tree.component.scss'] +}) +export class GenealogicTreeComponent implements OnInit { + + @Input() germplasmId: String; + + ngOnInit() { + + const pdg = PedigreeViewer( + /*REQUIRED Server: BrAPI.js handle for target endpoint*/ + BrAPI('http://localhost:4200/faidare-dev/brapi/v1'), + // this.brapiService, + /*OPTIONAL a function which returns a link to a germplasm information page,*/ + function (germplasmId) { + return 'http://localhost:4200/faidare-dev/germplasm?id=' + germplasmId; + } + ); + if (pdg != null) { + pdg.newTree( + // REQUIRED root germplasmDbId of germplasm which should be displayed on start (highlighted in pink) + this.germplasmId + ); + + pdg.drawViewer( + // REQUIRED selector for the parent node of the new viewer SVG element. + 'div#pdgv-wrap' + ); + } + } +} diff --git a/frontend/src/app/germplasm-card/germplasm-card.component.html b/frontend/src/app/germplasm-card/germplasm-card.component.html index 7d8b923ba0bd5b70106433f86055f778fe10f5a3..24397f9953915d995f48db4b41f1741d3ad33591 100644 --- a/frontend/src/app/germplasm-card/germplasm-card.component.html +++ b/frontend/src/app/germplasm-card/germplasm-card.component.html @@ -574,6 +574,16 @@ <ng-template> <div class="card-body card-section-body"> + <div class="row row-sep"> + <div class="col"> + <faidare-genealogic-tree [germplasmId]="germplasmGnpis.germplasmDbId"></faidare-genealogic-tree> + <figcaption class="figure-caption text-center" style="color: #0f6fa1;"> + Zoom in and drag to see the whole tree. + Clic on nodes to extend tree. + </figcaption> + </div> + </div> + <faidare-card-row label="Crossing plan" [test]="germplasmPedigree && germplasmPedigree.crossingPlan"> @@ -665,13 +675,18 @@ </ng-template> </faidare-card-row> + </ng-container> + </div> </div> + + </ng-template> </faidare-card-section> + <!--Section for the information about the population, collection and panel of the germplasm--> <faidare-card-section header="Population" @@ -768,6 +783,8 @@ </faidare-card-section> <!-- XRefs part --> - <faidare-xrefs [xrefId]="germplasmGnpis.germplasmPUI"></faidare-xrefs> + <!--<faidare-xrefs [xrefId]="germplasmGnpis.germplasmPUI"></faidare-xrefs>--> + + </ng-container> diff --git a/frontend/src/app/germplasm-card/germplasm-card.component.spec.ts b/frontend/src/app/germplasm-card/germplasm-card.component.spec.ts index 04735dd58837edcf96893a5e715e28fa7161b3fe..ce8cf6763ca0cf838e49bce157fcbb1725f4c651 100644 --- a/frontend/src/app/germplasm-card/germplasm-card.component.spec.ts +++ b/frontend/src/app/germplasm-card/germplasm-card.component.spec.ts @@ -17,10 +17,10 @@ import { MapComponent } from '../map/map.component'; import { BrapiGermplasmAttributes, BrapiGermplasmPedigree, BrapiResult, BrapiSibling } from '../models/brapi.model'; import { Donor, Germplasm, GermplasmInstitute, GermplasmSet, Institute, Site } from '../models/gnpis.model'; import { DataDiscoverySource } from '../models/data-discovery.model'; -import { MockComponent } from 'ng-mocks'; +import { MockComponent, MockComponents } from 'ng-mocks'; import { XrefsComponent } from '../xrefs/xrefs.component'; import { CardGenericDocumentComponent } from '../card-generic-document/card-generic-document.component'; - +import { GenealogicTreeComponent } from '../genealogic-tree/genealogic-tree.component'; describe('GermplasmCardComponent', () => { @@ -225,16 +225,16 @@ describe('GermplasmCardComponent', () => { TestBed.configureTestingModule({ imports: [RouterTestingModule, NgbPopoverModule, MomentModule], declarations: [ - GermplasmCardComponent, LoadingSpinnerComponent, MockComponent(XrefsComponent), CardSectionComponent, + GermplasmCardComponent, LoadingSpinnerComponent, MockComponents(XrefsComponent), CardSectionComponent, CardRowComponent, LoadingSpinnerComponent, CardTableComponent, - MapComponent, MockComponent(CardGenericDocumentComponent) + MapComponent, MockComponents(CardGenericDocumentComponent), MockComponents(GenealogicTreeComponent) ], providers: [ { provide: BrapiService, useValue: brapiService }, { provide: GnpisService, useValue: gnpisService }, { provide: ActivatedRoute, useValue: activatedRouteParams }, ] - }); + }).compileComponents(); })); it('should fetch germplasm information', async(() => { @@ -242,7 +242,7 @@ describe('GermplasmCardComponent', () => { const component = tester.componentInstance; tester.detectChanges(); - component.loaded.then(() => { + component.loaded.then(async(() => { expect(component.germplasmGnpis).toBeTruthy(); tester.detectChanges(); expect(tester.title).toContainText('Germplasm: test'); @@ -253,7 +253,7 @@ describe('GermplasmCardComponent', () => { expect(tester.cardHeader[4]).toContainText('Donor'); expect(tester.cardHeader[5]).toContainText('Distributor'); expect(tester.cardHeader[6]).toContainText('Evaluation Data'); - }); + })); })); }) diff --git a/frontend/src/index.html b/frontend/src/index.html index de174438eef6b693ddff3f9eeb7d06c846f1dedb..8f36d9c4884ff9f18934ed1d090ba0728180ae62 100644 --- a/frontend/src/index.html +++ b/frontend/src/index.html @@ -9,6 +9,6 @@ <link rel="icon" type="image/x-icon" href="assets/favicon.ico"> </head> <body> - <faidare-root></faidare-root> + <faidare-root></faidare-root> </body> </html> diff --git a/frontend/src/styles.scss b/frontend/src/styles.scss index a86efa94111eb75fb5fb8f8beaa1e2dcb28b1a0d..b3f6dabcaccb231a8b9e983ad4b947241193ec21 100644 --- a/frontend/src/styles.scss +++ b/frontend/src/styles.scss @@ -68,6 +68,17 @@ $fa-font-path: '~font-awesome/fonts'; margin-top: 75px; } +svg.pedigreeViewer{ + width: 100%; + height: 400px; + +} + +svg{ + +} + + h1{ border-bottom: solid; font-weight: bold; diff --git a/frontend/src/types/@solgenomics/index.d.ts b/frontend/src/types/@solgenomics/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..f9988238aec4274d69475e44bad4f31916aca95d --- /dev/null +++ b/frontend/src/types/@solgenomics/index.d.ts @@ -0,0 +1,2 @@ +declare module '@solgenomics/brapijs'; +declare module '@solgenomics/brapi-pedigree-viewer';