virool-pivot
Version:
A web-based exploratory visualization UI for Druid.io
68 lines (63 loc) • 3.1 kB
text/typescript
export interface ViewOptions {
version: string;
title: string;
config?: any;
}
function favicon(options: ViewOptions): string {
const { version, title } = options;
return `
<link rel="apple-touch-icon" sizes="57x57" href="favicon/apple-touch-icon-57x57.png?v=${version}">
<link rel="apple-touch-icon" sizes="60x60" href="favicon/apple-touch-icon-60x60.png?v=${version}">
<link rel="apple-touch-icon" sizes="72x72" href="favicon/apple-touch-icon-72x72.png?v=${version}">
<link rel="apple-touch-icon" sizes="76x76" href="favicon/apple-touch-icon-76x76.png?v=${version}">
<link rel="apple-touch-icon" sizes="114x114" href="favicon/apple-touch-icon-114x114.png?v=${version}">
<link rel="apple-touch-icon" sizes="120x120" href="favicon/apple-touch-icon-120x120.png?v=${version}">
<link rel="apple-touch-icon" sizes="144x144" href="favicon/apple-touch-icon-144x144.png?v=${version}">
<link rel="apple-touch-icon" sizes="152x152" href="favicon/apple-touch-icon-152x152.png?v=${version}">
<link rel="apple-touch-icon" sizes="180x180" href="favicon/apple-touch-icon-180x180.png?v=${version}">
<link rel="icon" type="image/png" href="favicon/favicon-32x32.png?v=${version}" sizes="32x32">
<link rel="icon" type="image/png" href="favicon/android-chrome-192x192.png?v=${version}" sizes="192x192">
<link rel="icon" type="image/png" href="favicon/favicon-96x96.png?v=${version}" sizes="96x96">
<link rel="icon" type="image/png" href="favicon/favicon-16x16.png?v=${version}" sizes="16x16">
<link rel="manifest" href="favicon/manifest.json?v=${version}">
<link rel="mask-icon" href="favicon/safari-pinned-tab.svg?v=${version}" color="#5bbad5">
<link rel="shortcut icon" href="favicon/favicon.ico?v=${version}">
<meta name="apple-mobile-web-app-title" content="${title}">
<meta name="application-name" content="${title}">
<meta name="msapplication-TileColor" content="#0093E2">
<meta name="msapplication-TileImage" content="favicon/mstile-144x144.png?v=${version}">
<meta name="msapplication-config" content="favicon/browserconfig.xml?v=${version}">
<meta name="theme-color" content="#ffffff">
`;
}
export function layout(options: ViewOptions, content: string): string {
return `
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="description" content="Data Explorer">
<meta name="author" content="Imply">
<meta name="google" value="notranslate">
${favicon(options)}
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1">
<title>${options.title}</title>
</head>
<body>
${content}
</body>
</html>
`;
}
export function pivotLayout(options: ViewOptions): string {
const { version, config } = options;
return layout(options, `<div class="app-container"></div>
<script>var __CONFIG__ = ${JSON.stringify(config)};</script>
<script charset="UTF-8" src="pivot.js?v=${version}"></script>`
);
}
export function errorLayout(options: ViewOptions, message: string, error: any = {}): string {
return layout(options, `<h1>{{message}}</h1>
<h2>{{error.status}}</h2>
<pre>{{error.stack}}</pre>`
);
}