mirror of
https://github.com/datahub-project/datahub.git
synced 2025-10-19 12:53:28 +00:00
DSS-5869 Adds search and advanced search feature routes, templates
This commit is contained in:
parent
5d8b00b3cd
commit
1de7833d89
5
wherehows-web/app/routes/advsearch.js
Normal file
5
wherehows-web/app/routes/advsearch.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import Ember from 'ember';
|
||||||
|
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
|
||||||
|
|
||||||
|
export default Ember.Route.extend(AuthenticatedRouteMixin, {
|
||||||
|
})
|
64
wherehows-web/app/routes/search.js
Normal file
64
wherehows-web/app/routes/search.js
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
import Ember from 'ember';
|
||||||
|
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
|
||||||
|
|
||||||
|
export default Ember.Route.extend(AuthenticatedRouteMixin, {
|
||||||
|
queryParams: {
|
||||||
|
category: {
|
||||||
|
refreshModel: true
|
||||||
|
},
|
||||||
|
keywords: {
|
||||||
|
refreshModel: true
|
||||||
|
},
|
||||||
|
source: {
|
||||||
|
refreshModel: true
|
||||||
|
},
|
||||||
|
page: {
|
||||||
|
refreshModel: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
model: function (params) {
|
||||||
|
this.controller.set('loading', true);
|
||||||
|
var q;
|
||||||
|
if (params) {
|
||||||
|
q = params;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
q = convertQueryStringToObject();
|
||||||
|
}
|
||||||
|
|
||||||
|
var keyword = atob(q.keywords);
|
||||||
|
var url = 'api/v1/search' + '?page=' + params.page + "&keyword=" + keyword;
|
||||||
|
if (q.category) {
|
||||||
|
url += ("&category=" + q.category.toLowerCase());
|
||||||
|
currentTab = q.category.toProperCase();
|
||||||
|
updateActiveTab();
|
||||||
|
}
|
||||||
|
if (q.source) {
|
||||||
|
url += '&source=' + q.source;
|
||||||
|
}
|
||||||
|
$.get(url, data => {
|
||||||
|
if (data && data.status == "ok") {
|
||||||
|
var result = data.result;
|
||||||
|
var keywords = result.keywords;
|
||||||
|
window.g_currentCategory = result.category;
|
||||||
|
updateSearchCategories(result.category);
|
||||||
|
for (var index = 0; index < result.data.length; index++) {
|
||||||
|
var schema = result.data[index].schema;
|
||||||
|
if (schema) {
|
||||||
|
result.data[index].originalSchema = schema;
|
||||||
|
highlightResults(result.data, index, keyword);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.controller.set('model', result);
|
||||||
|
this.controller.set('keyword', keyword);
|
||||||
|
this.controller.set('isMetric', false);
|
||||||
|
if (result.data.length > 0) {
|
||||||
|
this.controller.set('showNoResult', false);
|
||||||
|
} else {
|
||||||
|
this.controller.set('showNoResult', true);
|
||||||
|
}
|
||||||
|
this.controller.set('loading', false)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
109
wherehows-web/app/templates/advsearch.hbs
Normal file
109
wherehows-web/app/templates/advsearch.hbs
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
<div id="pagedSearchResults">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12">
|
||||||
|
{{#if model.count}}
|
||||||
|
<div class="search-pagination">
|
||||||
|
<ul class="pager">
|
||||||
|
{{#unless first}}
|
||||||
|
<li class="previous">
|
||||||
|
{{#link-to 'advsearch' (query-params page=previousPage)}}
|
||||||
|
← Prev
|
||||||
|
{{/link-to}}
|
||||||
|
</li>
|
||||||
|
{{/unless}}
|
||||||
|
<li>
|
||||||
|
{{ model.count }} results - page {{ model.page }} of {{ model.totalPages }}
|
||||||
|
</li>
|
||||||
|
{{#unless last}}
|
||||||
|
<li class="next">
|
||||||
|
{{#link-to 'advsearch' (query-params page=nextPage)}}
|
||||||
|
Next →
|
||||||
|
{{/link-to}}
|
||||||
|
</li>
|
||||||
|
{{/unless}}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{#if loading}}
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12 text-center">
|
||||||
|
<i
|
||||||
|
class="fa fa-spinner spinning fa-4x"
|
||||||
|
></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{#if model.count}}
|
||||||
|
{{#if model.isFlowJob}}
|
||||||
|
<table id="searchresults" class="search-results searchtable">
|
||||||
|
<tbody>
|
||||||
|
{{#each model.data as |flowJob|}}
|
||||||
|
<tr class="result">
|
||||||
|
<td class="col-xs-12">
|
||||||
|
<div class="dataset-info">
|
||||||
|
<i class="fa fa-random"></i>
|
||||||
|
<a href="{{flowJob.link}}">
|
||||||
|
{{flowJob.displayName}}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<p>
|
||||||
|
{{{ flowJob.path }}}
|
||||||
|
</p>
|
||||||
|
<p>source: {{{ flowJob.appCode }}}</p>
|
||||||
|
<div class="schematext" style="margin-top:5px;margin-bottom: 10px;">
|
||||||
|
{{{ flowJob.schema }}}
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{{/each}}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
{{else}}
|
||||||
|
<table id="searchresults" class="search-results searchtable">
|
||||||
|
<tbody>
|
||||||
|
{{#each model.data as |dataset|}}
|
||||||
|
<tr class="result">
|
||||||
|
<td class="col-xs-12">
|
||||||
|
<div class="dataset-info">
|
||||||
|
{{#if model.isMetrics}}
|
||||||
|
<i class="fa fa-plus-square-o"></i>
|
||||||
|
{{#link-to 'metric' dataset.id}}
|
||||||
|
{{{dataset.name}}}
|
||||||
|
{{/link-to}}
|
||||||
|
{{else}}
|
||||||
|
<i class="fa fa-database"></i>
|
||||||
|
{{#link-to 'dataset' dataset.id}}
|
||||||
|
{{{dataset.name}}}
|
||||||
|
{{/link-to}}
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
<p>{{{ dataset.urn }}}</p>
|
||||||
|
{{#if model.isMetrics}}
|
||||||
|
{{#if dataset.source}}
|
||||||
|
<p>source: {{{ dataset.source }}}</p>
|
||||||
|
{{else}}
|
||||||
|
<p>source: Metric</p>
|
||||||
|
{{/if}}
|
||||||
|
{{else}}
|
||||||
|
<p>source: {{{ dataset.source }}}</p>
|
||||||
|
{{/if}}
|
||||||
|
<div class="schematext" style="margin-top:5px;margin-bottom: 10px;">
|
||||||
|
{{{ dataset.schema }}}
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{{/each}}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
{{/if}}
|
||||||
|
{{else}}
|
||||||
|
{{#if showNoResult}}
|
||||||
|
<h4>No items found</h4>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-12">
|
||||||
|
{{outlet}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
413
wherehows-web/app/templates/navbar-advsearch.hbs
Normal file
413
wherehows-web/app/templates/navbar-advsearch.hbs
Normal file
@ -0,0 +1,413 @@
|
|||||||
|
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-lg">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
|
<span aria-hidden="true">×</span>
|
||||||
|
</button>
|
||||||
|
<h3 class="modal-title" id="myModalLabel">Advanced Search</h3>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body advSearch">
|
||||||
|
<ul id="advsearchtabs" class="nav nav-tabs">
|
||||||
|
<li id="datasetAdvSearchLink"><a data-toggle="tab" href="#datasetAdvTab">Datasets</a></li>
|
||||||
|
<li><a data-toggle="tab" href="#metricAdvtab">Metrics</a></li>
|
||||||
|
<li><a data-toggle="tab" href="#flowAdvtab">Flows</a></li>
|
||||||
|
</ul>
|
||||||
|
<div class="tab-content">
|
||||||
|
<div id="datasetAdvTab" class="tab-pane">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-10 rightPartialBorder">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="control-group col-md-12">
|
||||||
|
<label class="control-label">Scope</label>
|
||||||
|
<div class="controls">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
In
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input
|
||||||
|
id="scopeInInput"
|
||||||
|
class="scopeInput"
|
||||||
|
placeholder="<db_name>, <top_level_dir>"
|
||||||
|
title="Scope can be database schema name or top level HDFS directory which is used to narrow down the search range"
|
||||||
|
style="width: 100%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
Not In
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input
|
||||||
|
id="scopeNotInInput"
|
||||||
|
class="scopeInput"
|
||||||
|
placeholder="<db_name_to_exclude>"
|
||||||
|
title="Scope can be database schema name or top level HDFS directory which is used to narrow down the search range"
|
||||||
|
style="width: 100%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="control-group col-md-12">
|
||||||
|
<label class="control-label">Table</label>
|
||||||
|
<div class="controls">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
In
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input
|
||||||
|
id="tableInInput"
|
||||||
|
class="tableInput"
|
||||||
|
placeholder="<table_name>, <view_name>"
|
||||||
|
style="width: 100%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
Not In
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input
|
||||||
|
id="tableNotInInput"
|
||||||
|
class="tableInput"
|
||||||
|
placeholder="<table_name_to_exclude>"
|
||||||
|
style="width: 100%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="form-group col-md-12">
|
||||||
|
<label class="control-label">Fields</label>
|
||||||
|
<div class="controls">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
Contains Any
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input
|
||||||
|
id="fieldAnyInput"
|
||||||
|
class="fieldInput"
|
||||||
|
placeholder="<partial_field_name>"
|
||||||
|
style="width: 100%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
Contains All
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input
|
||||||
|
id="fieldAllInput"
|
||||||
|
class="fieldInput"
|
||||||
|
placeholder="<field_name_1>, <field_name_2>"
|
||||||
|
style="width: 100%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
Doesn't Contain
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input
|
||||||
|
id="fieldNotInInput"
|
||||||
|
class="fieldInput"
|
||||||
|
placeholder="<field_name_to_exclude>"
|
||||||
|
style="width: 100%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="form-group col-md-12">
|
||||||
|
<label class="control-label">Comments</label>
|
||||||
|
<div class="controls">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
Contains
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input
|
||||||
|
id="commentsInput"
|
||||||
|
type="text"
|
||||||
|
placeholder="<phrase_in_comment>"
|
||||||
|
class="col-md-4 form-control"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="advSearchSource" class="col-md-2">
|
||||||
|
<h4>Sources</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="metricAdvtab" class="tab-pane">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12 rightPartialBorder">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="control-group col-md-12">
|
||||||
|
<label class="control-label">Dashboard Name</label>
|
||||||
|
<div class="controls">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
In
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input
|
||||||
|
id="dashInInput"
|
||||||
|
class="dashInput"
|
||||||
|
placeholder="<dashboard1>, <dashboard2>"
|
||||||
|
title="Dashboard Name"
|
||||||
|
style="width: 100%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
Not In
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input
|
||||||
|
id="dashNotInInput"
|
||||||
|
class="dashInput"
|
||||||
|
placeholder="<dashboard_to_exclude>"
|
||||||
|
title="Dashboard Name"
|
||||||
|
style="width: 100%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="control-group col-md-12">
|
||||||
|
<label class="control-label">Metric Group</label>
|
||||||
|
<div class="controls">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
In
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input
|
||||||
|
id="groupInInput"
|
||||||
|
class="groupInput"
|
||||||
|
placeholder="<group1>, <group2>"
|
||||||
|
title="Metric Group"
|
||||||
|
style="width: 100%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
Not In
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input
|
||||||
|
id="groupNotInInput"
|
||||||
|
class="groupInput"
|
||||||
|
placeholder="<group_to_exclude>"
|
||||||
|
title="Metric Group"
|
||||||
|
style="width: 100%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="control-group col-md-12">
|
||||||
|
<label class="control-label">Metric Category</label>
|
||||||
|
<div class="controls">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
In
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input
|
||||||
|
id="categoryInInput"
|
||||||
|
class="categoryInput"
|
||||||
|
placeholder="<category1>, <category2>"
|
||||||
|
title="Metric Category"
|
||||||
|
style="width: 100%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
Not In
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input
|
||||||
|
id="categoryNotInInput"
|
||||||
|
class="categoryInput"
|
||||||
|
placeholder="<category_to_exclude>"
|
||||||
|
title="Metric Category"
|
||||||
|
style="width: 100%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="control-group col-md-12">
|
||||||
|
<label class="control-label">Metric Name</label>
|
||||||
|
<div class="controls">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
In
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input
|
||||||
|
id="metricnameInInput"
|
||||||
|
class="metricnameInput"
|
||||||
|
placeholder="<metric1>, <metric2>"
|
||||||
|
title="Metric"
|
||||||
|
style="width: 100%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
Not In
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input
|
||||||
|
id="metricnameNotInInput"
|
||||||
|
class="metricnameInput"
|
||||||
|
placeholder="<metric_to_exclude>"
|
||||||
|
title="Metric"
|
||||||
|
style="width: 100%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="flowAdvtab" class="tab-pane">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12 rightPartialBorder">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="control-group col-md-12">
|
||||||
|
<label class="control-label">Cluster</label>
|
||||||
|
<div class="controls">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
In
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input
|
||||||
|
id="appcodeInInput"
|
||||||
|
class="appcodeInput"
|
||||||
|
placeholder="<cluster1>, <cluster2>"
|
||||||
|
title="Cluster"
|
||||||
|
style="width: 100%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
Not In
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input
|
||||||
|
id="appcodeNotInInput"
|
||||||
|
class="appcodeInput"
|
||||||
|
placeholder="<cluster_to_exclude>"
|
||||||
|
title="Cluster"
|
||||||
|
style="width: 100%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="control-group col-md-12">
|
||||||
|
<label class="control-label">Flow Name</label>
|
||||||
|
<div class="controls">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
In
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input
|
||||||
|
id="flowInInput"
|
||||||
|
class="flowInput"
|
||||||
|
placeholder="<flow_name1>, <flow_name2>"
|
||||||
|
style="width: 100%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
Not In
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input
|
||||||
|
id="flowNotInInput"
|
||||||
|
class="flowInput"
|
||||||
|
placeholder="<flow_name_to_exclude>"
|
||||||
|
style="width: 100%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="control-group col-md-12">
|
||||||
|
<label class="control-label">Job Name</label>
|
||||||
|
<div class="controls">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
In
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input
|
||||||
|
id="jobInInput"
|
||||||
|
class="jobInput"
|
||||||
|
placeholder="<job_name1>, <job_name2>"
|
||||||
|
style="width: 100%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-3 text-right">
|
||||||
|
Not In
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-9">
|
||||||
|
<input
|
||||||
|
id="jobNotInInput"
|
||||||
|
class="jobInput"
|
||||||
|
placeholder="<job_name_to_exclude>"
|
||||||
|
style="width: 100%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button"
|
||||||
|
id="advSearchBtn"
|
||||||
|
data-dismiss="modal"
|
||||||
|
class="btn btn-primary">
|
||||||
|
Search
|
||||||
|
</button>
|
||||||
|
<button type="button" id="advSearchResetBtn" class="btn btn-default">Reset</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
188
wherehows-web/app/templates/search.hbs
Normal file
188
wherehows-web/app/templates/search.hbs
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
<div class="btn-group" role="group">
|
||||||
|
<p style="display:inline;float:left;margin-right:5px;margin-top:6px;"><b>Filter By:</b></p>
|
||||||
|
<div class="btn-group" role="group">
|
||||||
|
<button type="button"
|
||||||
|
class="btn dropdown-toggle {{if isDatasets 'btn-primary'}} {{unless isDatasets 'btn-default'}}"
|
||||||
|
data-toggle="dropdown"
|
||||||
|
aria-expanded="false">
|
||||||
|
{{datasetTitle}}
|
||||||
|
<span class="caret"></span>
|
||||||
|
</button>
|
||||||
|
<ul class="dropdown-menu" role="menu">
|
||||||
|
<li>
|
||||||
|
{{#link-to 'search' (query-params category="Datasets" source="all" page=1)}}
|
||||||
|
All
|
||||||
|
{{/link-to}}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
{{#link-to 'search' (query-params category="Datasets" source="HDFS" page=1)}}
|
||||||
|
HDFS
|
||||||
|
{{/link-to}}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
{{#link-to 'search' (query-params category="Datasets" source="Oracle" page=1)}}
|
||||||
|
Oracle
|
||||||
|
{{/link-to}}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
{{#link-to 'search' (query-params category="Datasets" source="Teradata" page=1)}}
|
||||||
|
Teradata
|
||||||
|
{{/link-to}}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
{{#link-to 'search' (query-params category="Datasets" source="Espresso" page=1)}}
|
||||||
|
Espresso
|
||||||
|
{{/link-to}}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
{{#link-to 'search' (query-params category="Datasets" source="Salesforce" page=1)}}
|
||||||
|
Salesforce
|
||||||
|
{{/link-to}}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
{{#link-to 'search' (query-params category="Datasets" source="Kafka" page=1)}}
|
||||||
|
Kafka
|
||||||
|
{{/link-to}}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
{{#link-to 'search' (query-params category="Datasets" source="Pinot" page=1)}}
|
||||||
|
Pinot
|
||||||
|
{{/link-to}}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
{{#link-to 'search' (query-params category="Datasets" source="Hive" page=1)}}
|
||||||
|
Hive
|
||||||
|
{{/link-to}}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
{{#link-to 'search' (query-params category="Datasets" source="External" page=1)}}
|
||||||
|
External
|
||||||
|
{{/link-to}}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<button type="button"
|
||||||
|
class="btn {{if isComments 'btn-primary'}} {{unless isComments 'btn-default'}}"
|
||||||
|
{{action 'switchSearchToComments' keyword}}>
|
||||||
|
Comments
|
||||||
|
</button>
|
||||||
|
<button type="button"
|
||||||
|
class="btn {{if isMetrics 'btn-primary'}} {{unless isMetrics 'btn-default'}}"
|
||||||
|
{{action 'switchSearchToMetric' keyword}}>
|
||||||
|
Metrics
|
||||||
|
</button>
|
||||||
|
<button type="button"
|
||||||
|
class="btn {{if isFlows 'btn-primary'}} {{unless isFlows 'btn-default'}}"
|
||||||
|
{{action 'switchSearchToFlow' keyword}}>
|
||||||
|
Flows
|
||||||
|
</button>
|
||||||
|
<button type="button"
|
||||||
|
class="btn {{if isJobs 'btn-primary'}} {{unless isJobs 'btn-default'}}"
|
||||||
|
{{action 'switchSearchToJob' keyword}}>
|
||||||
|
Jobs
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="pagedSearchResults">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12">
|
||||||
|
{{#if model.count}}
|
||||||
|
<div class="search-pagination">
|
||||||
|
<ul class="pager">
|
||||||
|
{{#unless first}}
|
||||||
|
<li class="previous">
|
||||||
|
{{#link-to 'search' (query-params categroy=category source=source page=previousPage)}}
|
||||||
|
← Prev
|
||||||
|
{{/link-to}}
|
||||||
|
</li>
|
||||||
|
{{/unless}}
|
||||||
|
<li>
|
||||||
|
{{ model.count }} results - page {{ model.page }} of {{ model.totalPages }}
|
||||||
|
</li>
|
||||||
|
{{#unless last}}
|
||||||
|
<li class="next">
|
||||||
|
{{#link-to 'search' (query-params categroy=category source=source page=nextPage)}}
|
||||||
|
Next →
|
||||||
|
{{/link-to}}
|
||||||
|
</li>
|
||||||
|
{{/unless}}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{#if loading}}
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12 text-center">
|
||||||
|
<i class="fa fa-spinner spinning fa-4x"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{#if model.count}}
|
||||||
|
{{#if model.isFlowJob}}
|
||||||
|
<table id="searchresults" class="search-results searchtable">
|
||||||
|
<tbody>
|
||||||
|
{{#each model.data as |flowJob|}}
|
||||||
|
<tr class="result">
|
||||||
|
<td class="col-xs-12">
|
||||||
|
<div class="dataset-info">
|
||||||
|
<i class="fa fa-random"></i>
|
||||||
|
<a href="{{flowJob.link}}">
|
||||||
|
{{flowJob.displayName}}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<p>{{ flowJob.path }}</p>
|
||||||
|
<p>source: {{ flowJob.appCode }}</p>
|
||||||
|
<div class="schematext" style="margin-top:5px;margin-bottom: 10px;">
|
||||||
|
{{ flowJob.schema }}
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{{/each}}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
{{else}}
|
||||||
|
<table id="searchresults" class="search-results searchtable">
|
||||||
|
<tbody>
|
||||||
|
{{#each model.data as |dataset|}}
|
||||||
|
<tr class="result">
|
||||||
|
<td class="col-xs-12">
|
||||||
|
<div class="dataset-info">
|
||||||
|
{{#if model.isMetrics}}
|
||||||
|
<i class="fa fa-plus-square-o"></i>
|
||||||
|
{{#link-to 'metrics.metric' dataset.id}}
|
||||||
|
{{{dataset.name}}}
|
||||||
|
{{/link-to}}
|
||||||
|
{{else}}
|
||||||
|
<i class="fa fa-database"></i>
|
||||||
|
{{#link-to 'dataset' dataset.id}}
|
||||||
|
{{{dataset.name}}}
|
||||||
|
{{/link-to}}
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
<p>
|
||||||
|
{{{ dataset.urn }}}
|
||||||
|
</p>
|
||||||
|
{{#if dataset.source}}
|
||||||
|
<p>source: {{{ dataset.source }}}</p>
|
||||||
|
{{else}}
|
||||||
|
<p>source: Metric</p>
|
||||||
|
{{/if}}
|
||||||
|
<div class="schematext" style="margin-top:5px;margin-bottom: 10px;">
|
||||||
|
{{{ dataset.schema }}}
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{{/each}}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
{{/if}}
|
||||||
|
{{else}}
|
||||||
|
{{#if showNoResult}}
|
||||||
|
<h4>No items found</h4>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-12">
|
||||||
|
{{outlet}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
Loading…
x
Reference in New Issue
Block a user