diff --git a/src/modules/otus/components/Panel/PanelSpecimens/PanelSpecimens.vue b/src/modules/otus/components/Panel/PanelSpecimens/PanelSpecimens.vue
new file mode 100644
index 0000000..ef3be2a
--- /dev/null
+++ b/src/modules/otus/components/Panel/PanelSpecimens/PanelSpecimens.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+ In the Collection
+ [{{ inventoryDWC.length }}]
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/modules/otus/components/Panel/PanelSpecimens/SpecimenSummary.vue b/src/modules/otus/components/Panel/PanelSpecimens/SpecimenSummary.vue
new file mode 100644
index 0000000..5e4250c
--- /dev/null
+++ b/src/modules/otus/components/Panel/PanelSpecimens/SpecimenSummary.vue
@@ -0,0 +1,81 @@
+
+
+
+
+ {{ describeSpecimen(specimen) }}
+
+
+
+ -
+
+ Full Record ({{Object.keys(specimen).length}} items)
+
+
+ - {{ entry[0] }}
+ - {{ entry[1] }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/modules/otus/components/Panel/PanelSpecimens/main.js b/src/modules/otus/components/Panel/PanelSpecimens/main.js
new file mode 100644
index 0000000..78f9d7f
--- /dev/null
+++ b/src/modules/otus/components/Panel/PanelSpecimens/main.js
@@ -0,0 +1,6 @@
+import PanelSpecimens from "./PanelSpecimens.vue";
+
+export default {
+ id: 'panel:specimens',
+ component: PanelSpecimens
+}
\ No newline at end of file
diff --git a/src/modules/otus/constants/layouts/overview.js b/src/modules/otus/constants/layouts/overview.js
index 4c16868..66b3fce 100644
--- a/src/modules/otus/constants/layouts/overview.js
+++ b/src/modules/otus/constants/layouts/overview.js
@@ -7,7 +7,8 @@ export const DEFAULT_OVERVIEW_LAYOUT = {
'panel:type',
'panel:type-specimen',
'panel:nomenclature',
- 'panel:nomenclature-references'
+ 'panel:nomenclature-references',
+ 'panel:specimens'
],
[
'panel:map',
diff --git a/src/modules/otus/services/TaxonWorks.js b/src/modules/otus/services/TaxonWorks.js
index 05a4f5a..b7197c5 100644
--- a/src/modules/otus/services/TaxonWorks.js
+++ b/src/modules/otus/services/TaxonWorks.js
@@ -59,6 +59,26 @@ export default class TaxonWorks {
return makeAPIRequest.get(`/otus/${otuId}/inventory/content`, opt)
}
+ // Note that this could support multiple OTUs.
+ // The API takes a comma-separated list of OTU IDs.
+ static getCollectionObjects(otuId, opt) {
+ return makeAPIRequest.get(`/collection_objects?otu_id[]=${otuId}`, opt)
+ // See taxonworks/lib/collection_object/filter.rb Queries:CollectionObject:Filter for full list of options.
+ // However, none seems to change the result.
+ /*
+ @with_buffered_collecting_event = boolean_param(params, :with_buffered_collecting_event)
+ @with_buffered_determinations = boolean_param(params, :with_buffered_determinations)
+ @with_buffered_other_labels = boolean_param(params, :with_buffered_other_labels)
+ */
+ // return makeAPIRequest.get(`/collection_objects?otu_id[]=${otuId}&with_buffered_determination=true`, opt)
+ // return makeAPIRequest.get(`/collection_objects?otu_id[]=${otuId}&descendants=true`, opt)
+ // return makeAPIRequest.get(`/collection_objects?otu_id[]=${otuId}/dwc.json`, opt)
+ }
+
+ static getOtuInventoryDarwinCore(otuId, opt) {
+ return makeAPIRequest.get(`/otus/${otuId}/inventory/dwc.json`, opt)
+ }
+
static getCachedMap(id) {
return makeAPIRequest.get(`/cached_maps/${id}`)
}