mirror of
https://github.com/datahub-project/datahub.git
synced 2025-08-19 06:38:04 +00:00
implemented the referred by feature for dataset detail
This commit is contained in:
parent
ff599a88f5
commit
0264ad3e3d
@ -761,6 +761,16 @@ public class Dataset extends Controller
|
||||
return ok(result);
|
||||
}
|
||||
|
||||
public static Result getReferenceViews(Long datasetId)
|
||||
{
|
||||
ObjectNode result = Json.newObject();
|
||||
List<DatasetDependency> references = new ArrayList<DatasetDependency>();
|
||||
DatasetsDAO.getDatasetReferences(datasetId, 1, 0, references);
|
||||
result.put("status", "ok");
|
||||
result.put("references", Json.toJson(references));
|
||||
return ok(result);
|
||||
}
|
||||
|
||||
public static Result getDatasetListNodes()
|
||||
{
|
||||
ObjectNode result = Json.newObject();
|
||||
|
@ -322,6 +322,11 @@ public class DatasetsDAO extends AbstractMySQLOpenSourceDAO
|
||||
"mapped_object_type, mapped_object_sub_type, mapped_object_name " +
|
||||
"FROM cfg_object_name_map WHERE object_dataset_id = ?";
|
||||
|
||||
private final static String GET_DATASET_REFERENCES = "SELECT object_type, object_sub_type, " +
|
||||
"object_name, object_dataset_id, map_phrase, is_identical_map, mapped_object_dataset_id, " +
|
||||
"mapped_object_type, mapped_object_sub_type, mapped_object_name " +
|
||||
"FROM cfg_object_name_map WHERE mapped_object_dataset_id = ?";
|
||||
|
||||
private final static String GET_DATASET_LISTVIEW_TOP_LEVEL_NODES = "SELECT DISTINCT " +
|
||||
"SUBSTRING_INDEX(urn, ':///', 1) as name, 0 as id, " +
|
||||
"concat(SUBSTRING_INDEX(urn, ':///', 1), ':///') as urn FROM dict_dataset order by 1";
|
||||
@ -1792,6 +1797,52 @@ public class DatasetsDAO extends AbstractMySQLOpenSourceDAO
|
||||
}
|
||||
}
|
||||
|
||||
public static void getDatasetReferences(
|
||||
Long datasetId,
|
||||
int level,
|
||||
int parent,
|
||||
List<DatasetDependency> references)
|
||||
{
|
||||
if (references == null)
|
||||
{
|
||||
references = new ArrayList<DatasetDependency>();
|
||||
}
|
||||
|
||||
List<Map<String, Object>> rows = null;
|
||||
rows = getJdbcTemplate().queryForList(
|
||||
GET_DATASET_REFERENCES,
|
||||
datasetId);
|
||||
|
||||
if (rows != null)
|
||||
{
|
||||
for (Map row : rows) {
|
||||
DatasetDependency dd = new DatasetDependency();
|
||||
dd.datasetId = (Long) row.get("object_dataset_id");
|
||||
dd.objectName = (String) row.get("object_name");
|
||||
dd.objectType = (String) row.get("object_type");
|
||||
dd.objectSubType = (String) row.get("object_sub_type");
|
||||
if (dd.datasetId != null && dd.datasetId > 0)
|
||||
{
|
||||
dd.isValidDataset = true;
|
||||
dd.datasetLink = "#/datasets/" + Long.toString(dd.datasetId);
|
||||
}
|
||||
else
|
||||
{
|
||||
dd.isValidDataset = false;
|
||||
}
|
||||
dd.level = level;
|
||||
dd.sortId = references.size() + 1;
|
||||
dd.treeGridClass = "treegrid-" + Integer.toString(dd.sortId);
|
||||
if (parent != 0)
|
||||
{
|
||||
dd.treeGridClass += " treegrid-parent-" + Integer.toString(parent);
|
||||
}
|
||||
references.add(dd);
|
||||
getDatasetReferences(dd.datasetId, level + 1, dd.sortId, references);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static List<DatasetListViewNode> getDatasetListViewNodes(String urn) {
|
||||
|
||||
List<DatasetListViewNode> nodes = new ArrayList<DatasetListViewNode>();
|
||||
|
@ -458,7 +458,7 @@
|
||||
<table id="depends-table" class="columntreegrid tree table table-bordered dataset-detail-table">
|
||||
<thead>
|
||||
<tr class="results-header">
|
||||
<th class="span2">Dataset</th>
|
||||
<th class="span2">Depends on</th>
|
||||
<th class="span1">Object Type</th>
|
||||
<th class="span1">Object Sub Type</th>
|
||||
<th class="span2">Level</th>
|
||||
@ -483,8 +483,36 @@
|
||||
{{/each}}
|
||||
</tbody>
|
||||
</table>
|
||||
{{else}}
|
||||
<p>Depends view is not available</p>
|
||||
{{/if}}
|
||||
{{#if hasReferences}}
|
||||
<table id="references-table" class="columntreegrid tree table table-bordered dataset-detail-table">
|
||||
<thead>
|
||||
<tr class="results-header">
|
||||
<th class="span2">Referred By</th>
|
||||
<th class="span1">Object Type</th>
|
||||
<th class="span1">Object Sub Type</th>
|
||||
<th class="span2">Level</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{#each reference in references}}
|
||||
<tr {{bind-attr class="reference.treeGridClass"}}>
|
||||
<td>
|
||||
{{#if reference.isValidDataset}}
|
||||
<a {{bind-attr href=reference.datasetLink}}>
|
||||
{{reference.objectName}}
|
||||
</a>
|
||||
{{else}}
|
||||
{{reference.objectName}}
|
||||
{{/if}}
|
||||
</td>
|
||||
<td>{{reference.objectType}}</td>
|
||||
<td>{{reference.objectSubType}}</td>
|
||||
<td>{{reference.level}}</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
</table>
|
||||
{{/if}}
|
||||
</script>
|
||||
|
||||
@ -844,9 +872,9 @@
|
||||
</li>
|
||||
<li id="depends">
|
||||
<a data-toggle="tab"
|
||||
title="Depend On"
|
||||
title="Relations"
|
||||
href="#dependtab">
|
||||
Depend On
|
||||
Relations
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
@ -982,7 +1010,7 @@
|
||||
<h4 class="panel-title">
|
||||
<a class="collapsed" data-toggle="collapse" data-parent="#accordion"
|
||||
href="#dependsview" aria-expanded="false" aria-controls="sampleData">
|
||||
Depends On
|
||||
Relations
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
|
@ -65,6 +65,8 @@ GET /api/v1/datasets/:id/columns controllers.api.v1.Dataset.getDatase
|
||||
|
||||
GET /api/v1/datasets/:id/depends controllers.api.v1.Dataset.getDependViews(id:Long)
|
||||
|
||||
GET /api/v1/datasets/:id/references controllers.api.v1.Dataset.getReferenceViews(id:Long)
|
||||
|
||||
GET /api/v1/datasets/:id/properties controllers.api.v1.Dataset.getDatasetPropertiesByID(id:Int)
|
||||
|
||||
GET /api/v1/datasets/:id/sample controllers.api.v1.Dataset.getDatasetSampleDataByID(id:Int)
|
||||
|
@ -8,6 +8,11 @@ function initializeDependsTreeGrid()
|
||||
$('#depends-table').treegrid();
|
||||
}
|
||||
|
||||
function initializeReferencesTreeGrid()
|
||||
{
|
||||
$('#references-table').treegrid();
|
||||
}
|
||||
|
||||
function formatValue(key, value){
|
||||
switch(key) {
|
||||
case 'modification_time':
|
||||
@ -456,6 +461,23 @@ App.DatasetRoute = Ember.Route.extend({
|
||||
}
|
||||
});
|
||||
|
||||
var datasetReferencesUrl = 'api/v1/datasets/' + id + "/references";
|
||||
$.get(datasetReferencesUrl, function(data) {
|
||||
if (data && data.status == "ok")
|
||||
{
|
||||
if (data.references && (data.references.length > 0))
|
||||
{
|
||||
controller.set("hasReferences", true);
|
||||
controller.set("references", data.references);
|
||||
setTimeout(initializeReferencesTreeGrid, 500);
|
||||
}
|
||||
else
|
||||
{
|
||||
controller.set("hasReferences", false);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var ownershipUrl = 'api/v1/datasets/' + id + "/owners";
|
||||
$.get(ownershipUrl, function(data) {
|
||||
if (data && data.status == "ok")
|
||||
|
@ -117,6 +117,12 @@ public class ControllersTest {
|
||||
JsonNode versionNode = Json.parse(contentAsString(result));
|
||||
assertThat(versionNode.isContainerNode());
|
||||
assertThat(versionNode.get("status").asText()).isEqualTo("ok");
|
||||
|
||||
result = controllers.api.v1.Dataset.getReferenceViews(datasetId);
|
||||
assertThat(status(result)).isEqualTo(OK);
|
||||
JsonNode versionNode = Json.parse(contentAsString(result));
|
||||
assertThat(versionNode.isContainerNode());
|
||||
assertThat(versionNode.get("status").asText()).isEqualTo("ok");
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user