Skip to content

Commit cb65584

Browse files
committed
Show related datasets on dataset page as a new tab.
1 parent cf302df commit cb65584

File tree

4 files changed

+47
-2
lines changed

4 files changed

+47
-2
lines changed

app/controllers/Datasets.scala

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -632,11 +632,16 @@ class Datasets @Inject() (
632632
// increment view count for dataset
633633
val view_data = datasets.incrementViews(id, user)
634634

635+
// related datasets
636+
val relatedThings = relations.findRelationships(dataset.id.stringify, ResourceType.dataset, ResourceType.dataset)
637+
val relatedDatasets = for(r <- relatedThings) yield NodeDataset(datasets.get(UUID(r.target.id)).get, r.rdfType)
638+
639+
635640
// view_data is passed as tuple in dataset case only, because template is at limit of 22 parameters
636641
Ok(views.html.dataset(dataset, commentsByDataset, filteredPreviewers.toList, m,
637642
decodedCollectionsInside.toList, sensors, Some(decodedSpaces_canRemove), toPublish, curPubObjects,
638643
currentSpace, limit, showDownload, accessData, canAddDatasetToCollection,
639-
stagingAreaDefined, view_data, extractionGroups))
644+
stagingAreaDefined, view_data, extractionGroups, relatedDatasets))
640645
}
641646
case None => {
642647
Logger.error("Error getting dataset" + id)

app/models/Relation.scala

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package models
22

3+
import java.net.URL
4+
35
/**
46
* Track relations between two arbitrary resources.
57
*/
@@ -10,10 +12,21 @@ case class Relation (
1012
rdfType: Option[String] = None // rdfType: Option[URI]
1113
)
1214

15+
/**
16+
* Source or sink node of a relationship.
17+
*
18+
* @param id a string so that it could be both a local UIUD as well as an external URL
19+
* @param resourceType internal resource type (dataset, file, etc.)
20+
*/
1321
case class Node (
1422
id: String,
1523
resourceType: ResourceType.Value
1624
)
1725

26+
case class NodeDataset(dataset: Dataset, rdfType: Option[String])
27+
28+
case class NodeFile(file: File, rdfType: Option[String])
29+
30+
case class NodeURL(url: URL, rdfType: Option[String])
1831

1932

app/views/dataset.scala.html

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
canAddDatasetToCollection: Boolean,
1515
stagingAreaDefined: Boolean,
1616
view: (Int, java.util.Date),
17-
extractionsStatus: Map[String, ExtractionGroup]
17+
extractionsStatus: Map[String, ExtractionGroup],
18+
relatedDataset: List[NodeDataset]
1819
)(implicit flash: play.api.mvc.Flash, user: Option[models.User], request: RequestHeader)
1920

2021
@import api.Permission
@@ -272,6 +273,9 @@ <h4 class="modal-title" id="folder-modal-label"> @Messages("create.header", "Fo
272273
<li role="presentation"><a href="#tab-extractions" role="tab" data-toggle="tab">Extractions </a></li>
273274
<li role="presentation"><a href="#tab-visua" role="tab" data-toggle="tab">Visualizations</a></li>
274275
<li role="presentation"><a href="#tab-comments" role="tab" data-toggle="tab">Comments (@comments.size)</a></li>
276+
@if(relatedDataset.size > 0) {
277+
<li role="relation"><a href="#tab-relations" role="tab" data-toggle="tab">Related</a></li>
278+
}
275279
</ul>
276280
<div class="tab-content">
277281
<div role="tabpanel" class="tab-pane fade in active" id="tab-files">
@@ -311,6 +315,11 @@ <h4 class="modal-title" id="folder-modal-label"> @Messages("create.header", "Fo
311315
<div role="tabpanel" class="tab-pane fade" id="tab-visua">
312316
@datasets.previews(dataset, previewers)
313317
</div>
318+
@if(relatedDataset.size > 0) {
319+
<div role="tabpanel" class="tab-pane fade" id="tab-relations">
320+
@relations.list(relatedDataset)
321+
</div>
322+
}
314323
<div class="row bottom-padding">
315324
<div class="col-md-12">
316325
</div>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
@(relatedDatasets: List[NodeDataset])
2+
3+
<table class="table table-condensed">
4+
<thead>
5+
<th>Relationship Type</th>
6+
<th>Target Dataset</th>
7+
</thead>
8+
<tbody>
9+
@for(rd <- relatedDatasets) {
10+
<tr>
11+
<td>@rd.rdfType.getOrElse("Generic relation")</td>
12+
<td><a href="@routes.Datasets.dataset(rd.dataset.id)">@rd.dataset.name</a></td></tr>
13+
}
14+
</tbody>
15+
</table>
16+
17+
18+

0 commit comments

Comments
 (0)