mirror of
				https://github.com/datahub-project/datahub.git
				synced 2025-10-31 10:49:00 +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>
 | 
