Files
impala/www/common-header.tmpl
Surya Hebbar e419964250 IMPALA-13615: Support row grouping of instances based on fragment names
In the "Fragment Instances" page of a query, even though it is possible
to sort the rows based on the fragment's name, it is difficult to
distinguish between fragments and their instances.

With row grouping based on fragment's name, it becomes easier to
distinguish one fragment's instance from the other.

The lexographical sorting of instances can still be done based on
different columns, which splits the fragment's group and orders the rows
lexicographically only based on the column's values.

Row grouping has been implemented using the "RowGroup" extension
for datatables - https://datatables.net/extensions/rowgroup/.

Datatable libraries and its extensions have been added under the
directory - "www/datatables".

The datatable library's license has been updated according to
version 1.13.2, which was previously not updated.

The related row grouping extension's license has also been included.

Change-Id: If2b7ed6e2a6d605553242a7db4dbeaa7fcae4606
Reviewed-on: http://gerrit.cloudera.org:8080/22226
Reviewed-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
Tested-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
2025-05-22 05:42:18 +00:00

94 lines
3.2 KiB
Cheetah

<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
{{! Common header template with navbar which starts a container div for content (closed by
common-footer.tmpl) }}
<!DOCTYPE html>
<html>
<head><title>Apache Impala</title>
<script src='{{ __common__.host-url }}/www/jquery/jquery-3.5.1.min.js'></script>
<script src='{{ __common__.host-url }}/www/bootstrap/js/bootstrap-4.3.1.min.js'></script>
<script src='{{ __common__.host-url }}/www/scripts/common_util.js'></script>
<link rel="stylesheet" type="text/css" href="{{ __common__.host-url }}/www/datatables/DataTables-1.13.2/datatables.min.css"/>
<script type="text/javascript" src="{{ __common__.host-url }}/www/datatables/DataTables-1.13.2/datatables.min.js"></script>
<link href='{{ __common__.host-url }}/www/bootstrap/css/bootstrap-4.3.1.min.css' rel='stylesheet' media='screen'>
<link rel='icon' href='{{ __common__.host-url }}/www/favicon.ico'>
<style>
@media (min-width: 1300px) {
#nav-options {
width: 1280px;
}
}
body {
font-size: 14px;
}
pre {
padding: 10px;
font-size: 12px;
border: 1px solid #ccc;
}
/* Avoid unsightly padding around code element */
pre.code {
padding: 0;
}
</style>
</head>
<body>
<header class="navbar navbar-default navbar-expand bg-light navbar-static-top" id="top" role="banner">
<div id="nav-options" class="container">
<div class="navbar-header">
<a class='navbar-brand' href='{{ __common__.host-url }}/' id='root-link'>{{ __common__.process-name }}</a>
</div>
<nav class="collapse navbar-collapse bs-navbar-collapse" role="navigation">
<ul class="nav navbar-nav">
{{#__common__.navbar}}
<li class="navbar-item"><a class="nav-link" href="{{ __common__.host-url }}{{link}}">{{title}}</a></li>
{{/__common__.navbar}}
</ul>
</nav>
</div>
</header>
<div class='container-fluid' style='width:90%'>
{{#error}}
<div class="alert alert-danger">
<strong>Error:</strong>
{{.}}
</div>
{{/error}}
<script>
// For Apache Knox compatibility, all urls that are accessed by javascript should have
// their path wrapped with this.
function make_url(path) {
const root_link = document.getElementById('root-link');
const s = root_link.href.split("?");
url = s[0] + path;
if (s.length > 1) {
if (path.includes("?")) {
url += "&"
} else {
url += "?";
}
url += s[1];
}
return url;
}
</script>