From c72996382e29797978d736c81b87cc06da0ba903 Mon Sep 17 00:00:00 2001 From: jlpereira Date: Tue, 6 Jun 2023 16:19:17 -0300 Subject: [PATCH] Add status panel --- .../PanelNomenclature/PanelNomenclature.vue | 23 ++------ .../PanelNomenclature/PanelReferenceRow.vue | 4 +- .../Panel/PanelStats/PanelStats.vue | 53 +++++++++++++++++++ src/modules/otus/constants/overviewLayout.js | 4 +- src/modules/otus/services/TaxonWorks.js | 4 ++ src/modules/otus/store/actions/index.js | 1 + src/modules/otus/store/actions/loadCatalog.js | 25 +++++++++ src/modules/otus/store/store.js | 18 ++++--- 8 files changed, 103 insertions(+), 29 deletions(-) create mode 100644 src/modules/otus/components/Panel/PanelStats/PanelStats.vue create mode 100644 src/modules/otus/store/actions/loadCatalog.js diff --git a/src/modules/otus/components/Panel/PanelNomenclature/PanelNomenclature.vue b/src/modules/otus/components/Panel/PanelNomenclature/PanelNomenclature.vue index 89a6e80..8c3b367 100644 --- a/src/modules/otus/components/Panel/PanelNomenclature/PanelNomenclature.vue +++ b/src/modules/otus/components/Panel/PanelNomenclature/PanelNomenclature.vue @@ -1,13 +1,13 @@ diff --git a/src/modules/otus/components/Panel/PanelNomenclature/PanelReferenceRow.vue b/src/modules/otus/components/Panel/PanelNomenclature/PanelReferenceRow.vue index a44d2a0..f7ab61e 100644 --- a/src/modules/otus/components/Panel/PanelNomenclature/PanelReferenceRow.vue +++ b/src/modules/otus/components/Panel/PanelNomenclature/PanelReferenceRow.vue @@ -2,8 +2,8 @@
  • diff --git a/src/modules/otus/components/Panel/PanelStats/PanelStats.vue b/src/modules/otus/components/Panel/PanelStats/PanelStats.vue new file mode 100644 index 0000000..6e2921e --- /dev/null +++ b/src/modules/otus/components/Panel/PanelStats/PanelStats.vue @@ -0,0 +1,53 @@ + + + diff --git a/src/modules/otus/constants/overviewLayout.js b/src/modules/otus/constants/overviewLayout.js index cf6e74b..49dc2fd 100644 --- a/src/modules/otus/constants/overviewLayout.js +++ b/src/modules/otus/constants/overviewLayout.js @@ -6,6 +6,7 @@ import PanelNomenclature from '../components/Panel/PanelNomenclature/PanelNomenc import PanelMap from '../components/Panel/PanelMap/PanelMap.vue' import PanelDescendants from '../components/Panel/PanelDescendants/Descendants.vue' import PanelContent from '../components/Panel/PanelContent/PanelContent.vue' +import PanelStats from '../components/Panel/PanelStats/PanelStats.vue' export const overviewLayout = { left: [ @@ -24,6 +25,7 @@ export const overviewLayout = { right: [ { component: PanelMap }, { component: PanelDescendants }, - { component: PanelContent } + { component: PanelContent }, + { component: PanelStats } ] } diff --git a/src/modules/otus/services/TaxonWorks.js b/src/modules/otus/services/TaxonWorks.js index 5a1aaca..f0cb21e 100644 --- a/src/modules/otus/services/TaxonWorks.js +++ b/src/modules/otus/services/TaxonWorks.js @@ -55,6 +55,10 @@ export default class TaxonWorks { return makeAPIRequest.get(`/otus/${otuId}/inventory/distribution.geojson`) } + static getCachedMap(cachedId) { + return makeAPIRequest.get(`/cached_maps/${cachedId}`) + } + static getOtuContent(otuId) { return makeAPIRequest.get(`/otus/${otuId}/inventory/content`, { extend: ['depiction'] diff --git a/src/modules/otus/store/actions/index.js b/src/modules/otus/store/actions/index.js index a6a10e4..29a98ab 100644 --- a/src/modules/otus/store/actions/index.js +++ b/src/modules/otus/store/actions/index.js @@ -1 +1,2 @@ +export * from './loadCatalog' export * from './loadDistribution' diff --git a/src/modules/otus/store/actions/loadCatalog.js b/src/modules/otus/store/actions/loadCatalog.js new file mode 100644 index 0000000..db851b9 --- /dev/null +++ b/src/modules/otus/store/actions/loadCatalog.js @@ -0,0 +1,25 @@ +import TaxonWorks from '../../services/TaxonWorks' + +function parseStats(obj) { + return Object.entries(obj) + .filter(([_, count]) => count) + .map((item) => item.join(': ')) + .join('; ') +} + +export const actionLoadCatalog = { + async loadCatalog(taxonId) { + const { data } = await TaxonWorks.getTaxonNameCitations(taxonId) + + this.catalog = { + ...data, + stats: { + taxa: parseStats(data.stats.taxa), + names: parseStats(data.stats.names) + }, + sources: data.sources.map(({ cached, url }) => + cached.replace(url, `${url}`) + ) + } + } +} diff --git a/src/modules/otus/store/store.js b/src/modules/otus/store/store.js index 033ad33..b3fdb93 100644 --- a/src/modules/otus/store/store.js +++ b/src/modules/otus/store/store.js @@ -1,6 +1,6 @@ import { defineStore } from 'pinia' import TaxonWorks from '../services/TaxonWorks' -import { actionLoadDistribution } from './actions' +import { actionLoadDistribution, actionLoadCatalog } from './actions' export const useOtuStore = defineStore('otuStore', { state: () => { @@ -12,6 +12,11 @@ export const useOtuStore = defineStore('otuStore', { geojson: null, errorMessage: null, currentShapeTypes: [] + }, + catalog: { + sources: [], + stats: {}, + timeline: [] } } }, @@ -28,11 +33,9 @@ export const useOtuStore = defineStore('otuStore', { }, async loadInit(otuId) { - const otu = (await TaxonWorks.getOtu(otuId)).data - const taxon = (await TaxonWorks.summary(otu.taxon_name_id)).data - - this.otu = otu - this.taxon = taxon + await this.loadOtu(otuId) + await this.loadTaxon(this.otu.taxon_name_id) + await this.loadCatalog(this.otu.taxon_name_id) }, async loadImages(otuId) { @@ -44,6 +47,7 @@ export const useOtuStore = defineStore('otuStore', { this.images = (await TaxonWorks.getOtuImages(otuId, params)).data }, - ...actionLoadDistribution + ...actionLoadDistribution, + ...actionLoadCatalog } })