mirror of
https://github.com/datahub-project/datahub.git
synced 2025-08-09 01:35:26 +00:00
478 lines
18 KiB
HTML
478 lines
18 KiB
HTML
@(user: String, csrfToken: String)(content: Html)
|
|
@import helper._
|
|
|
|
<!DOCTYPE html>
|
|
|
|
<html>
|
|
<head>
|
|
<title>WhereHows</title>
|
|
<link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/icons/logo.png")">
|
|
<link rel="stylesheet" media="screen" href="@routes.Assets.at("vendors/jquery-ui-1.11.0/jquery-ui-custom.css")">
|
|
<link rel="stylesheet" media="screen" href="@routes.Assets.at("vendors/bootstrap/dist/css/bootstrap.min.css")">
|
|
<link rel="stylesheet" media="screen" href="@routes.Assets.at("vendors/bootstrap3-editable/css/bootstrap-editable.css")">
|
|
<link rel="stylesheet" media="screen" href="@routes.Assets.at("vendors/fancytree/src/skin-win8/ui.fancytree.css")">
|
|
<link rel="stylesheet" media="screen" href="@routes.Assets.at("vendors/json.human.js-master/css/json.human.css")">
|
|
<link rel="stylesheet" media="screen" href="@routes.Assets.at("vendors/jquery.treegrid/css/jquery.treegrid.css")">
|
|
<link rel="stylesheet" media="screen" href="@routes.Assets.at("vendors/toastr/toastr.css")">
|
|
<link rel="stylesheet" media="screen" href="@routes.Assets.at("vendors/jquery-jsonview/dist/jquery.jsonview.css")">
|
|
<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
|
|
<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/comments.css")">
|
|
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet"/>
|
|
<script src="@routes.Assets.at("vendors/jquery-2.1.4/jquery-2.1.4.min.js")" type="text/javascript"></script>
|
|
<script src="@routes.Assets.at("vendors/jquery-ui-1.11.0/jquery-ui.js")" type="text/javascript"></script>
|
|
<script src="@routes.Assets.at("vendors/bootstrap/dist/js/bootstrap.min.js")" type="text/javascript"></script>
|
|
<script src="@routes.Assets.at("vendors/bootstrap3-editable/js/bootstrap-editable.js")" type="text/javascript"></script>
|
|
<script src="@routes.Assets.at("vendors/bootstrap-validator-master/dist/validator.js")" type="text/javascript"></script>
|
|
<script src="@routes.Assets.at("vendors/jquery.splitter-1.6/jquery.splitter.js")" type="text/javascript"></script>
|
|
<script src="@routes.Assets.at("vendors/fancytree/src/jquery.fancytree.js")" type="text/javascript"></script>
|
|
<script src="@routes.Assets.at("vendors/jquery.scrollTo-1.4.14/jquery.scrollTo.min.js")" type="text/javascript"></script>
|
|
<script src="@routes.Assets.at("vendors/jquery.treegrid/js/jquery.treegrid.js")" type="text/javascript"></script>
|
|
<script src="@routes.Assets.at("vendors/json.human.js-master/src/json.human.js")" type="text/javascript"></script>
|
|
<script src="@routes.Assets.at("vendors/jquery-jsonview/dist/jquery.jsonview.js")" type="text/javascript"></script>
|
|
<script src="@routes.Assets.at("vendors/CsvToMarkdownTable-master/src/CsvToMarkdown.js")" type="text/javascript"></script>
|
|
<script src="@routes.Assets.at("vendors/marked/lib/marked.js")" type="text/javascript"></script>
|
|
<script src="@routes.Assets.at("vendors/ace/src/ace.js")" type="text/javascript"></script>
|
|
<script src="@routes.Assets.at("vendors/ace/src/theme-github.js")" type="text/javascript"></script>
|
|
<script src="@routes.Assets.at("vendors/ace/src/mode-sql.js")" type="text/javascript"></script>
|
|
<script src="@routes.Assets.at("vendors/toastr/toastr.js")" type="text/javascript"></script>
|
|
<script src="@routes.Assets.at("javascripts/storage.js")" type="text/javascript"></script>
|
|
<script src="@routes.Assets.at("javascripts/notification.js")" type="text/javascript"></script>
|
|
<script src="@routes.Assets.at("javascripts/tracking.js")" type="text/javascript"></script>
|
|
</head>
|
|
<body>
|
|
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
|
|
<div class="navbar-header">
|
|
<button type="button"
|
|
class="navbar-toggle collapsed"
|
|
aria-expanded="false"
|
|
aria-controls="navbar"
|
|
>
|
|
<span class="sr-only">Toggle navigation</span>
|
|
<span class="icon-bar"></span>
|
|
<span class="icon-bar"></span>
|
|
<span class="icon-bar"></span>
|
|
</button>
|
|
<a href="" class="navbar-brand">WhereHows</a>
|
|
</div>
|
|
<div id="mainnavbar" collapse="navCollapsed" class="navbar-collapse collapse" aria-expanded="false">
|
|
@if(user) {
|
|
<ul class="nav navbar-nav navbar-left">
|
|
<li id="datasetlink">
|
|
<a href="/#/datasets/page/1">
|
|
<span>Dataset</span>
|
|
</a>
|
|
</li>
|
|
<li id="flowlink">
|
|
<a href="/#/flows/AZKABAN.DEV.NERTZ/page/1">
|
|
<span>Flow</span>
|
|
</a>
|
|
</li>
|
|
<li id = "toolslink" class="dropdown" dropdown>
|
|
<a
|
|
class="dropdown-toggle"
|
|
data-toggle="dropdown"
|
|
role="button"
|
|
style="color : #808080"
|
|
aria-expand="false"
|
|
dropdown-toggle>
|
|
Tools
|
|
<i class="fa fa-caret-down"></i>
|
|
</a>
|
|
<ul class="dropdown-menu" role="menu">
|
|
<li>
|
|
<a href="/schemaHistory">
|
|
<span>
|
|
Schema History
|
|
</span>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<form class="navbar-form navbar-left" role="search">
|
|
<div class="input-group">
|
|
<input id="searchInput"
|
|
type="text"
|
|
class="form-control input-sm keyword-search"
|
|
placeholder="Enter Keywords..."
|
|
/>
|
|
<span class="input-group-btn">
|
|
<button id="searchBtn"
|
|
type="button"
|
|
class="btn btn-sm btn-primary"
|
|
>
|
|
<i class="fa fa-search"></i>
|
|
</button>
|
|
</span>
|
|
</div>
|
|
</form>
|
|
<div class="nav nabar-nav navbar-left">
|
|
<button
|
|
class="btn btn-link btn-sm"
|
|
data-toggle="modal"
|
|
data-target="#myModal"
|
|
title="Advanced Search"
|
|
aria-label="Advanced Search"
|
|
>
|
|
Advanced
|
|
</button>
|
|
</div>
|
|
<ul class="nav navbar-nav navbar-right">
|
|
<li class="dropdown" dropdown>
|
|
<a class="dropdown-toggle" data-toggle="dropdown" role="button"
|
|
style="color : #808080" aria-expand="false" dropdown-toggle>
|
|
<i class="fa fa-user"></i>
|
|
<span id="username">@user</span>
|
|
<i class="fa fa-caret-down"></i>
|
|
</a>
|
|
<ul class="dropdown-menu" role="menu">
|
|
<li>
|
|
<a id="settingsbtn" role="button">
|
|
<i class="fa fa-gear"></i>
|
|
Settings
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<a href="@routes.Application.logout()" title="Log out">
|
|
<i class="fa fa-sign-out"></i>
|
|
<span class="visible-xs-inline">
|
|
Logout
|
|
</span>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
} else {
|
|
<form class="navbar-form navbar-right" method="POST"
|
|
action="@routes.Application.authenticate()?csrfToken=@csrfToken">
|
|
<div class="form-group">
|
|
<input
|
|
id="username"
|
|
type="text"
|
|
placeholder="username"
|
|
name="username"
|
|
class="form-control"
|
|
/>
|
|
</div>
|
|
<div class="form-group">
|
|
<input
|
|
id="password"
|
|
type="password"
|
|
placeholder="password"
|
|
name="password"
|
|
class="form-control"
|
|
/>
|
|
</div>
|
|
<button type="submit" class="btn btn-primary">Sign In</button>
|
|
<button type="button"
|
|
class="btn btn-link"
|
|
data-toggle="modal"
|
|
data-target="#signUpModal"
|
|
title="Sign Up"
|
|
aria-label="Sign Up">
|
|
Not a Member Yet? Join Now!
|
|
</button>
|
|
</form>
|
|
}
|
|
</div>
|
|
</nav>
|
|
|
|
<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">
|
|
<div class="row">
|
|
<div class="col-md-10 rightPartialBorder">
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<div class="control-group">
|
|
<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="DWH_BIZ, DIM_STT"
|
|
title="Scope can be database schema name (DWH_AGG, DWH_DIM, DWH_FACT, DWH) or top level HDFS directory (tracking, derived, gobblin) which is used to narrow down the search range"
|
|
style="width: 100%;">
|
|
</input>
|
|
</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="ABOOK, AMS"
|
|
title="Scope can be database schema name (DWH_AGG, DWH_DIM, DWH_FACT, DWH) or top level HDFS directory (tracking, derived, gobblin) which is used to narrow down the search range"
|
|
style="width: 100%;">
|
|
</input>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-12">
|
|
<div class="control-group">
|
|
<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="DIM_MEMBER_ANET, FACT_DETAIL_PAGE_TRACKING"
|
|
style="width: 100%;">
|
|
</input>
|
|
</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="ABOOK_DATA, ABOOK_EMAILS"
|
|
style="width: 100%;">
|
|
</input>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<div class="form-group">
|
|
<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="COMPANY, DATE_SK"
|
|
style="width: 100%;">
|
|
</input>
|
|
</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="FROM_COMPANY_SK, FROM_ADDRESS"
|
|
style="width: 100%;">
|
|
</input>
|
|
</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="TOTAL_MEMBERS, ZERO_ID"
|
|
style="width: 100%;">
|
|
</input>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-12">
|
|
<div class="form-group">
|
|
<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="links to abook via....."
|
|
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 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>
|
|
|
|
<div class="modal fade" id="signUpModal" tabindex="-1" role="dialog"
|
|
aria-labelledby="signUpModalLabel" aria-hidden="true">
|
|
<div class="modal-dialog">
|
|
<form id="signUpForm" data-toggle="validator" method="POST"
|
|
action="@routes.Application.signUp()?csrfToken=@csrfToken">
|
|
<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="signUpModalLabel">Sign Up</h3>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="form-group">
|
|
<div class="row">
|
|
<div class="col-xs-11">
|
|
<input type="text" class="form-control" name="inputName"
|
|
id="inputName" style="width: 100%;" placeholder="User Name" required>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<div class="row">
|
|
<div class="col-xs-5">
|
|
<input type="text" class="form-control" name="inputFirstName"
|
|
id="inputFistName" style="width: 100%;" placeholder="First Name" required>
|
|
</div>
|
|
<div class="col-xs-5 col-xs-offset-1">
|
|
<input type="text" class="form-control" name="inputLastName"
|
|
id="inputLastName" style="width: 100%;" placeholder="Last Name" required>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<div class="row">
|
|
<div class="col-xs-11">
|
|
<input type="email" class="form-control" name="inputEmail" id="inputEmail"
|
|
style="width: 100%;" placeholder="Email"
|
|
data-error="Please input a valid email address" required>
|
|
<div class="help-block with-errors"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<div class="row">
|
|
<div class="col-xs-11">
|
|
<input type="password" data-minlength="6" class="form-control"
|
|
name="inputPassword" id="inputPassword" style="width: 100%;"
|
|
data-error="Minimum of 6 characters"
|
|
placeholder="Password minimum of 6 characters" required>
|
|
<span class="help-block with-errors"></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<div class="row">
|
|
<div class="col-xs-11">
|
|
<input type="password" class="form-control" id="inputPasswordConfirm"
|
|
style="width: 100%;" data-match="#inputPassword"
|
|
data-match-error="Password does not match"
|
|
placeholder="Confirm Password" required>
|
|
<div class="help-block with-errors"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<div class="form-group">
|
|
<button type="submit" class="btn btn-primary">Sign Up</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="mainContent">
|
|
@content
|
|
</div>
|
|
<footer class="footer navbar-fixed-bottom">
|
|
<input id="csrfToken" type="text" style="visibility: hidden;" value=@csrfToken/>
|
|
<p class="pull-right">
|
|
WhereHows 0.1.0
|
|
© LinkedIn 2015
|
|
|
|
|
<a href="https://iwww.corp.linkedin.com/wiki/cf/display/ENGS/WhereHows">Help</a> | <a href="mailto:ask_wherehows@@linkedin.com">Contact us</a>
|
|
</p>
|
|
</footer>
|
|
<div class="modal" tabindex="-1" role="dialog" aria-labelledby="settingsModal" id="settingsModal">
|
|
<div class="modal-dialog modal-lg" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h2>Settings</h2>
|
|
</div>
|
|
<div class="modal-body">
|
|
<form name="settingsForm">
|
|
<div class="form-group">
|
|
<label>Dataset Detail View Layout</label>
|
|
<select name="detailDefaultView" class="form-control">
|
|
<option value="tab">Tab</option>
|
|
<option value="accordion">Accordion</option>
|
|
</select>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">
|
|
Close
|
|
</button>
|
|
<button type="button" class="btn btn-primary" id="submitSettingsForm">
|
|
Save
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Google Analytics -->
|
|
<script type="text/javascript">
|
|
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
|
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
|
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
|
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
|
ga('create', 'UA-33256962-2', 'auto');
|
|
ga('create', 'UA-56633128-1', 'auto', {'name': 'newTracker'});
|
|
ga('send', 'pageview');
|
|
ga('newTracker.send', 'pageview');
|
|
</script>
|
|
<!-- END Google Analytics -->
|
|
</body>
|
|
</html>
|