You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by tr...@apache.org on 2014/12/18 19:45:06 UTC
[10/82] [abbrv] incubator-flink git commit: Moved WebInfoServer and
WebInterfaceServer resources into resource folders of respective projects.
Jetty uses the jar as base directory.
http://git-wip-us.apache.org/repos/asf/incubator-flink/blob/76d603c0/flink-runtime/src/main/resources/web-docs-infoserver/font-awesome/scss/_variables.scss
----------------------------------------------------------------------
diff --git a/flink-runtime/src/main/resources/web-docs-infoserver/font-awesome/scss/_variables.scss b/flink-runtime/src/main/resources/web-docs-infoserver/font-awesome/scss/_variables.scss
new file mode 100755
index 0000000..2d6e076
--- /dev/null
+++ b/flink-runtime/src/main/resources/web-docs-infoserver/font-awesome/scss/_variables.scss
@@ -0,0 +1,381 @@
+// Variables
+// --------------------------
+
+$fa-font-path: "../fonts" !default;
+//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.0.3/fonts" !default; // for referencing Bootstrap CDN font files directly
+$fa-css-prefix: fa !default;
+$fa-version: "4.0.3" !default;
+$fa-border-color: #eee !default;
+$fa-inverse: #fff !default;
+$fa-li-width: (30em / 14) !default;
+
+$fa-var-glass: "\f000";
+$fa-var-music: "\f001";
+$fa-var-search: "\f002";
+$fa-var-envelope-o: "\f003";
+$fa-var-heart: "\f004";
+$fa-var-star: "\f005";
+$fa-var-star-o: "\f006";
+$fa-var-user: "\f007";
+$fa-var-film: "\f008";
+$fa-var-th-large: "\f009";
+$fa-var-th: "\f00a";
+$fa-var-th-list: "\f00b";
+$fa-var-check: "\f00c";
+$fa-var-times: "\f00d";
+$fa-var-search-plus: "\f00e";
+$fa-var-search-minus: "\f010";
+$fa-var-power-off: "\f011";
+$fa-var-signal: "\f012";
+$fa-var-cog: "\f013";
+$fa-var-trash-o: "\f014";
+$fa-var-home: "\f015";
+$fa-var-file-o: "\f016";
+$fa-var-clock-o: "\f017";
+$fa-var-road: "\f018";
+$fa-var-download: "\f019";
+$fa-var-arrow-circle-o-down: "\f01a";
+$fa-var-arrow-circle-o-up: "\f01b";
+$fa-var-inbox: "\f01c";
+$fa-var-play-circle-o: "\f01d";
+$fa-var-repeat: "\f01e";
+$fa-var-refresh: "\f021";
+$fa-var-list-alt: "\f022";
+$fa-var-lock: "\f023";
+$fa-var-flag: "\f024";
+$fa-var-headphones: "\f025";
+$fa-var-volume-off: "\f026";
+$fa-var-volume-down: "\f027";
+$fa-var-volume-up: "\f028";
+$fa-var-qrcode: "\f029";
+$fa-var-barcode: "\f02a";
+$fa-var-tag: "\f02b";
+$fa-var-tags: "\f02c";
+$fa-var-book: "\f02d";
+$fa-var-bookmark: "\f02e";
+$fa-var-print: "\f02f";
+$fa-var-camera: "\f030";
+$fa-var-font: "\f031";
+$fa-var-bold: "\f032";
+$fa-var-italic: "\f033";
+$fa-var-text-height: "\f034";
+$fa-var-text-width: "\f035";
+$fa-var-align-left: "\f036";
+$fa-var-align-center: "\f037";
+$fa-var-align-right: "\f038";
+$fa-var-align-justify: "\f039";
+$fa-var-list: "\f03a";
+$fa-var-outdent: "\f03b";
+$fa-var-indent: "\f03c";
+$fa-var-video-camera: "\f03d";
+$fa-var-picture-o: "\f03e";
+$fa-var-pencil: "\f040";
+$fa-var-map-marker: "\f041";
+$fa-var-adjust: "\f042";
+$fa-var-tint: "\f043";
+$fa-var-pencil-square-o: "\f044";
+$fa-var-share-square-o: "\f045";
+$fa-var-check-square-o: "\f046";
+$fa-var-arrows: "\f047";
+$fa-var-step-backward: "\f048";
+$fa-var-fast-backward: "\f049";
+$fa-var-backward: "\f04a";
+$fa-var-play: "\f04b";
+$fa-var-pause: "\f04c";
+$fa-var-stop: "\f04d";
+$fa-var-forward: "\f04e";
+$fa-var-fast-forward: "\f050";
+$fa-var-step-forward: "\f051";
+$fa-var-eject: "\f052";
+$fa-var-chevron-left: "\f053";
+$fa-var-chevron-right: "\f054";
+$fa-var-plus-circle: "\f055";
+$fa-var-minus-circle: "\f056";
+$fa-var-times-circle: "\f057";
+$fa-var-check-circle: "\f058";
+$fa-var-question-circle: "\f059";
+$fa-var-info-circle: "\f05a";
+$fa-var-crosshairs: "\f05b";
+$fa-var-times-circle-o: "\f05c";
+$fa-var-check-circle-o: "\f05d";
+$fa-var-ban: "\f05e";
+$fa-var-arrow-left: "\f060";
+$fa-var-arrow-right: "\f061";
+$fa-var-arrow-up: "\f062";
+$fa-var-arrow-down: "\f063";
+$fa-var-share: "\f064";
+$fa-var-expand: "\f065";
+$fa-var-compress: "\f066";
+$fa-var-plus: "\f067";
+$fa-var-minus: "\f068";
+$fa-var-asterisk: "\f069";
+$fa-var-exclamation-circle: "\f06a";
+$fa-var-gift: "\f06b";
+$fa-var-leaf: "\f06c";
+$fa-var-fire: "\f06d";
+$fa-var-eye: "\f06e";
+$fa-var-eye-slash: "\f070";
+$fa-var-exclamation-triangle: "\f071";
+$fa-var-plane: "\f072";
+$fa-var-calendar: "\f073";
+$fa-var-random: "\f074";
+$fa-var-comment: "\f075";
+$fa-var-magnet: "\f076";
+$fa-var-chevron-up: "\f077";
+$fa-var-chevron-down: "\f078";
+$fa-var-retweet: "\f079";
+$fa-var-shopping-cart: "\f07a";
+$fa-var-folder: "\f07b";
+$fa-var-folder-open: "\f07c";
+$fa-var-arrows-v: "\f07d";
+$fa-var-arrows-h: "\f07e";
+$fa-var-bar-chart-o: "\f080";
+$fa-var-twitter-square: "\f081";
+$fa-var-facebook-square: "\f082";
+$fa-var-camera-retro: "\f083";
+$fa-var-key: "\f084";
+$fa-var-cogs: "\f085";
+$fa-var-comments: "\f086";
+$fa-var-thumbs-o-up: "\f087";
+$fa-var-thumbs-o-down: "\f088";
+$fa-var-star-half: "\f089";
+$fa-var-heart-o: "\f08a";
+$fa-var-sign-out: "\f08b";
+$fa-var-linkedin-square: "\f08c";
+$fa-var-thumb-tack: "\f08d";
+$fa-var-external-link: "\f08e";
+$fa-var-sign-in: "\f090";
+$fa-var-trophy: "\f091";
+$fa-var-github-square: "\f092";
+$fa-var-upload: "\f093";
+$fa-var-lemon-o: "\f094";
+$fa-var-phone: "\f095";
+$fa-var-square-o: "\f096";
+$fa-var-bookmark-o: "\f097";
+$fa-var-phone-square: "\f098";
+$fa-var-twitter: "\f099";
+$fa-var-facebook: "\f09a";
+$fa-var-github: "\f09b";
+$fa-var-unlock: "\f09c";
+$fa-var-credit-card: "\f09d";
+$fa-var-rss: "\f09e";
+$fa-var-hdd-o: "\f0a0";
+$fa-var-bullhorn: "\f0a1";
+$fa-var-bell: "\f0f3";
+$fa-var-certificate: "\f0a3";
+$fa-var-hand-o-right: "\f0a4";
+$fa-var-hand-o-left: "\f0a5";
+$fa-var-hand-o-up: "\f0a6";
+$fa-var-hand-o-down: "\f0a7";
+$fa-var-arrow-circle-left: "\f0a8";
+$fa-var-arrow-circle-right: "\f0a9";
+$fa-var-arrow-circle-up: "\f0aa";
+$fa-var-arrow-circle-down: "\f0ab";
+$fa-var-globe: "\f0ac";
+$fa-var-wrench: "\f0ad";
+$fa-var-tasks: "\f0ae";
+$fa-var-filter: "\f0b0";
+$fa-var-briefcase: "\f0b1";
+$fa-var-arrows-alt: "\f0b2";
+$fa-var-users: "\f0c0";
+$fa-var-link: "\f0c1";
+$fa-var-cloud: "\f0c2";
+$fa-var-flask: "\f0c3";
+$fa-var-scissors: "\f0c4";
+$fa-var-files-o: "\f0c5";
+$fa-var-paperclip: "\f0c6";
+$fa-var-floppy-o: "\f0c7";
+$fa-var-square: "\f0c8";
+$fa-var-bars: "\f0c9";
+$fa-var-list-ul: "\f0ca";
+$fa-var-list-ol: "\f0cb";
+$fa-var-strikethrough: "\f0cc";
+$fa-var-underline: "\f0cd";
+$fa-var-table: "\f0ce";
+$fa-var-magic: "\f0d0";
+$fa-var-truck: "\f0d1";
+$fa-var-pinterest: "\f0d2";
+$fa-var-pinterest-square: "\f0d3";
+$fa-var-google-plus-square: "\f0d4";
+$fa-var-google-plus: "\f0d5";
+$fa-var-money: "\f0d6";
+$fa-var-caret-down: "\f0d7";
+$fa-var-caret-up: "\f0d8";
+$fa-var-caret-left: "\f0d9";
+$fa-var-caret-right: "\f0da";
+$fa-var-columns: "\f0db";
+$fa-var-sort: "\f0dc";
+$fa-var-sort-asc: "\f0dd";
+$fa-var-sort-desc: "\f0de";
+$fa-var-envelope: "\f0e0";
+$fa-var-linkedin: "\f0e1";
+$fa-var-undo: "\f0e2";
+$fa-var-gavel: "\f0e3";
+$fa-var-tachometer: "\f0e4";
+$fa-var-comment-o: "\f0e5";
+$fa-var-comments-o: "\f0e6";
+$fa-var-bolt: "\f0e7";
+$fa-var-sitemap: "\f0e8";
+$fa-var-umbrella: "\f0e9";
+$fa-var-clipboard: "\f0ea";
+$fa-var-lightbulb-o: "\f0eb";
+$fa-var-exchange: "\f0ec";
+$fa-var-cloud-download: "\f0ed";
+$fa-var-cloud-upload: "\f0ee";
+$fa-var-user-md: "\f0f0";
+$fa-var-stethoscope: "\f0f1";
+$fa-var-suitcase: "\f0f2";
+$fa-var-bell-o: "\f0a2";
+$fa-var-coffee: "\f0f4";
+$fa-var-cutlery: "\f0f5";
+$fa-var-file-text-o: "\f0f6";
+$fa-var-building-o: "\f0f7";
+$fa-var-hospital-o: "\f0f8";
+$fa-var-ambulance: "\f0f9";
+$fa-var-medkit: "\f0fa";
+$fa-var-fighter-jet: "\f0fb";
+$fa-var-beer: "\f0fc";
+$fa-var-h-square: "\f0fd";
+$fa-var-plus-square: "\f0fe";
+$fa-var-angle-double-left: "\f100";
+$fa-var-angle-double-right: "\f101";
+$fa-var-angle-double-up: "\f102";
+$fa-var-angle-double-down: "\f103";
+$fa-var-angle-left: "\f104";
+$fa-var-angle-right: "\f105";
+$fa-var-angle-up: "\f106";
+$fa-var-angle-down: "\f107";
+$fa-var-desktop: "\f108";
+$fa-var-laptop: "\f109";
+$fa-var-tablet: "\f10a";
+$fa-var-mobile: "\f10b";
+$fa-var-circle-o: "\f10c";
+$fa-var-quote-left: "\f10d";
+$fa-var-quote-right: "\f10e";
+$fa-var-spinner: "\f110";
+$fa-var-circle: "\f111";
+$fa-var-reply: "\f112";
+$fa-var-github-alt: "\f113";
+$fa-var-folder-o: "\f114";
+$fa-var-folder-open-o: "\f115";
+$fa-var-smile-o: "\f118";
+$fa-var-frown-o: "\f119";
+$fa-var-meh-o: "\f11a";
+$fa-var-gamepad: "\f11b";
+$fa-var-keyboard-o: "\f11c";
+$fa-var-flag-o: "\f11d";
+$fa-var-flag-checkered: "\f11e";
+$fa-var-terminal: "\f120";
+$fa-var-code: "\f121";
+$fa-var-reply-all: "\f122";
+$fa-var-mail-reply-all: "\f122";
+$fa-var-star-half-o: "\f123";
+$fa-var-location-arrow: "\f124";
+$fa-var-crop: "\f125";
+$fa-var-code-fork: "\f126";
+$fa-var-chain-broken: "\f127";
+$fa-var-question: "\f128";
+$fa-var-info: "\f129";
+$fa-var-exclamation: "\f12a";
+$fa-var-superscript: "\f12b";
+$fa-var-subscript: "\f12c";
+$fa-var-eraser: "\f12d";
+$fa-var-puzzle-piece: "\f12e";
+$fa-var-microphone: "\f130";
+$fa-var-microphone-slash: "\f131";
+$fa-var-shield: "\f132";
+$fa-var-calendar-o: "\f133";
+$fa-var-fire-extinguisher: "\f134";
+$fa-var-rocket: "\f135";
+$fa-var-maxcdn: "\f136";
+$fa-var-chevron-circle-left: "\f137";
+$fa-var-chevron-circle-right: "\f138";
+$fa-var-chevron-circle-up: "\f139";
+$fa-var-chevron-circle-down: "\f13a";
+$fa-var-html5: "\f13b";
+$fa-var-css3: "\f13c";
+$fa-var-anchor: "\f13d";
+$fa-var-unlock-alt: "\f13e";
+$fa-var-bullseye: "\f140";
+$fa-var-ellipsis-h: "\f141";
+$fa-var-ellipsis-v: "\f142";
+$fa-var-rss-square: "\f143";
+$fa-var-play-circle: "\f144";
+$fa-var-ticket: "\f145";
+$fa-var-minus-square: "\f146";
+$fa-var-minus-square-o: "\f147";
+$fa-var-level-up: "\f148";
+$fa-var-level-down: "\f149";
+$fa-var-check-square: "\f14a";
+$fa-var-pencil-square: "\f14b";
+$fa-var-external-link-square: "\f14c";
+$fa-var-share-square: "\f14d";
+$fa-var-compass: "\f14e";
+$fa-var-caret-square-o-down: "\f150";
+$fa-var-caret-square-o-up: "\f151";
+$fa-var-caret-square-o-right: "\f152";
+$fa-var-eur: "\f153";
+$fa-var-gbp: "\f154";
+$fa-var-usd: "\f155";
+$fa-var-inr: "\f156";
+$fa-var-jpy: "\f157";
+$fa-var-rub: "\f158";
+$fa-var-krw: "\f159";
+$fa-var-btc: "\f15a";
+$fa-var-file: "\f15b";
+$fa-var-file-text: "\f15c";
+$fa-var-sort-alpha-asc: "\f15d";
+$fa-var-sort-alpha-desc: "\f15e";
+$fa-var-sort-amount-asc: "\f160";
+$fa-var-sort-amount-desc: "\f161";
+$fa-var-sort-numeric-asc: "\f162";
+$fa-var-sort-numeric-desc: "\f163";
+$fa-var-thumbs-up: "\f164";
+$fa-var-thumbs-down: "\f165";
+$fa-var-youtube-square: "\f166";
+$fa-var-youtube: "\f167";
+$fa-var-xing: "\f168";
+$fa-var-xing-square: "\f169";
+$fa-var-youtube-play: "\f16a";
+$fa-var-dropbox: "\f16b";
+$fa-var-stack-overflow: "\f16c";
+$fa-var-instagram: "\f16d";
+$fa-var-flickr: "\f16e";
+$fa-var-adn: "\f170";
+$fa-var-bitbucket: "\f171";
+$fa-var-bitbucket-square: "\f172";
+$fa-var-tumblr: "\f173";
+$fa-var-tumblr-square: "\f174";
+$fa-var-long-arrow-down: "\f175";
+$fa-var-long-arrow-up: "\f176";
+$fa-var-long-arrow-left: "\f177";
+$fa-var-long-arrow-right: "\f178";
+$fa-var-apple: "\f179";
+$fa-var-windows: "\f17a";
+$fa-var-android: "\f17b";
+$fa-var-linux: "\f17c";
+$fa-var-dribbble: "\f17d";
+$fa-var-skype: "\f17e";
+$fa-var-foursquare: "\f180";
+$fa-var-trello: "\f181";
+$fa-var-female: "\f182";
+$fa-var-male: "\f183";
+$fa-var-gittip: "\f184";
+$fa-var-sun-o: "\f185";
+$fa-var-moon-o: "\f186";
+$fa-var-archive: "\f187";
+$fa-var-bug: "\f188";
+$fa-var-vk: "\f189";
+$fa-var-weibo: "\f18a";
+$fa-var-renren: "\f18b";
+$fa-var-pagelines: "\f18c";
+$fa-var-stack-exchange: "\f18d";
+$fa-var-arrow-circle-o-right: "\f18e";
+$fa-var-arrow-circle-o-left: "\f190";
+$fa-var-caret-square-o-left: "\f191";
+$fa-var-dot-circle-o: "\f192";
+$fa-var-wheelchair: "\f193";
+$fa-var-vimeo-square: "\f194";
+$fa-var-try: "\f195";
+$fa-var-plus-square-o: "\f196";
+
http://git-wip-us.apache.org/repos/asf/incubator-flink/blob/76d603c0/flink-runtime/src/main/resources/web-docs-infoserver/font-awesome/scss/font-awesome.scss
----------------------------------------------------------------------
diff --git a/flink-runtime/src/main/resources/web-docs-infoserver/font-awesome/scss/font-awesome.scss b/flink-runtime/src/main/resources/web-docs-infoserver/font-awesome/scss/font-awesome.scss
new file mode 100755
index 0000000..96d2f22
--- /dev/null
+++ b/flink-runtime/src/main/resources/web-docs-infoserver/font-awesome/scss/font-awesome.scss
@@ -0,0 +1,17 @@
+/*!
+ * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome
+ * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */
+
+@import "variables";
+@import "mixins";
+@import "path";
+@import "core";
+@import "larger";
+@import "fixed-width";
+@import "list";
+@import "bordered-pulled";
+@import "spinning";
+@import "rotated-flipped";
+@import "stacked";
+@import "icons";
http://git-wip-us.apache.org/repos/asf/incubator-flink/blob/76d603c0/flink-runtime/src/main/resources/web-docs-infoserver/history.html
----------------------------------------------------------------------
diff --git a/flink-runtime/src/main/resources/web-docs-infoserver/history.html b/flink-runtime/src/main/resources/web-docs-infoserver/history.html
new file mode 100644
index 0000000..57b98e8
--- /dev/null
+++ b/flink-runtime/src/main/resources/web-docs-infoserver/history.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html>
+<!--
+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.
+-->
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="description" content="">
+ <meta name="author" content="">
+
+ <title>Dashboard - Apache Flink</title>
+
+ <!-- Bootstrap core CSS -->
+ <link href="css/bootstrap.css" rel="stylesheet">
+
+ <!-- Add custom CSS here -->
+ <link href="css/sb-admin.css" rel="stylesheet">
+ <link rel="stylesheet" href="font-awesome/css/font-awesome.min.css">
+
+ <!-- Page Specific CSS -->
+ <link rel="stylesheet" type="text/css" href="css/nephelefrontend.css" />
+
+ <!-- Scripts from Bootstrap -->
+ <script src="js/jquery-2.1.0.js"></script>
+ <script src="js/bootstrap.js"></script>
+
+ <!-- Scripts from Flink -->
+ <script type="text/javascript" src="js/jquery.flot.min.js"></script>
+ <script type="text/javascript" src="js/helpers.js"></script>
+ <script type="text/javascript" src="js/jobmanagerFrontend.js"></script>
+ <script type="text/javascript" src="js/jcanvas.min.js"></script>
+
+ <!-- Load Menu -->
+ <script type="text/javascript">
+ $(document).ready(function() {
+ $.ajax({ url : "menu?get=history", type : "GET", cache: false, success : function(html) {
+ $("#side-menu").empty();
+ $("#side-menu").append(html);
+ }, dataType : "html",
+ });
+ });
+ </script>
+ </head>
+
+ <body>
+
+ <div id="wrapper">
+
+ <!-- Sidebar -->
+ <nav class='navbar navbar-inverse navbar-fixed-top' role='navigation'>
+ <!-- Brand and toggle get grouped for better mobile display -->
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <table>
+ <tr>
+ <td><img src="img/flink-logo.png" alt="Flink Logo" style="margin-left:15px; margin-top:5px; width:40px;height:40px";></td>
+ <td style="vertical-align:top"><a class="navbar-brand" href="index.html">Apache Flink</a></td>
+ </tr>
+ </table>
+ </div>
+
+ <!-- Collect the nav links, forms, and other content for toggling -->
+ <div class="collapse navbar-collapse navbar-ex1-collapse">
+ <ul id="side-menu" class="nav navbar-nav side-nav">
+ <!-- Filled via script -->
+ </ul>
+ <ul class="nav navbar-nav navbar-right navbar-user">
+ <li class="dropdown user-dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-archive"></i> Log Files<b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li><a href="logInfo"><i class="fa fa-keyboard-o"></i> Log Info</a></li>
+ <li><a href="logInfo?get=stdout"><i class="fa fa-keyboard-o"></i> Stdout</a></li>
+ </ul>
+ </li>
+ </ul>
+ </div><!-- /.navbar-collapse -->
+ </nav>
+
+ <div id="page-wrapper">
+
+ <div class="row">
+ <div class="col-lg-12">
+ <h1>History <small>Overview over recent jobs</small></h1>
+ <ol class="breadcrumb">
+ <li><a href="index.html"><i class="icon-dashboard"></i> Dashboard</a></li>
+ <li class="active"><i class="fa fa-bar-chart-o"></i> History</li>
+ </ol>
+ </div>
+ <div class="col-lg-12">
+ <div class="contentbox">
+ <h3 class="contentbox-header">
+ <span>Job History</span>
+ </h3>
+ <div class="contentbox-wrapper">
+ <ul id="jobsArchive"></ul>
+ </div>
+ </div>
+ </div>
+ </div><!-- /.row -->
+
+ </div><!-- /#page-wrapper -->
+
+ </div><!-- /#wrapper -->
+
+ </body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-flink/blob/76d603c0/flink-runtime/src/main/resources/web-docs-infoserver/index.html
----------------------------------------------------------------------
diff --git a/flink-runtime/src/main/resources/web-docs-infoserver/index.html b/flink-runtime/src/main/resources/web-docs-infoserver/index.html
new file mode 100644
index 0000000..43f4289
--- /dev/null
+++ b/flink-runtime/src/main/resources/web-docs-infoserver/index.html
@@ -0,0 +1,224 @@
+<!DOCTYPE html>
+<!--
+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.
+-->
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="description" content="">
+ <meta name="author" content="">
+
+ <title>Dashboard - Apache Flink</title>
+
+ <!-- Bootstrap core CSS -->
+ <link href="css/bootstrap.css" rel="stylesheet">
+
+ <!-- Add custom CSS here -->
+ <link href="css/sb-admin.css" rel="stylesheet">
+ <link rel="stylesheet" href="font-awesome/css/font-awesome.min.css">
+ <link rel="stylesheet" type="text/css" href="css/nephelefrontend.css" />
+
+ <!-- Scripts from Bootstrap -->
+ <script src="js/jquery-2.1.0.js"></script>
+ <script src="js/bootstrap.js"></script>
+
+ <!-- Scripts from Flink -->
+ <script type="text/javascript" src="js/jquery.flot.min.js"></script>
+ <script type="text/javascript" src="js/helpers.js"></script>
+ <script type="text/javascript" src="js/jobmanagerFrontend.js"></script>
+ <script type="text/javascript" src="js/jcanvas.min.js"></script>
+
+ <!-- Insert Version -->
+ <script type="text/javascript">
+ $(document).ready(function() {
+ $.ajax({ url : "jobsInfo?get=version", type : "GET", cache: false, success : function(json) {
+ $("#version").empty();
+ if (json.version.indexOf("SNAPSHOT") > -1) {
+ $("#version").append(" " + json.version + " - " + json.revision);
+ } else {
+ $("#version").append(" " + json.version);
+ }
+ }, dataType : "json",
+ });
+ });
+ </script>
+
+ <!-- Load Menu -->
+ <script type="text/javascript">
+ $(document).ready(function() {
+ $.ajax({ url : "menu?get=index", type : "GET", cache: false, success : function(html) {
+ $("#side-menu").empty();
+ $("#side-menu").append(html);
+ }, dataType : "html",
+ });
+ });
+ </script>
+ </head>
+
+ <body>
+
+ <div id="wrapper">
+
+ <!-- Sidebar -->
+ <nav class='navbar navbar-inverse navbar-fixed-top' role='navigation'>
+ <!-- Brand and toggle get grouped for better mobile display -->
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <table>
+ <tr>
+ <td><img src="img/flink-logo.png" alt="Flink Logo" style="margin-left:15px; margin-top:5px; width:40px;height:40px";></td>
+ <td style="vertical-align:top"><a class="navbar-brand" href="index.html">Apache Flink</a></td>
+ </tr>
+ </table>
+ </div>
+
+ <!-- Collect the nav links, forms, and other content for toggling -->
+ <div class="collapse navbar-collapse navbar-ex1-collapse">
+ <ul id="side-menu" class="nav navbar-nav side-nav">
+ <!-- Filled via script -->
+ </ul>
+ <ul class="nav navbar-nav navbar-right navbar-user">
+ <li class="dropdown user-dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-archive"></i> Log Files<b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li><a href="logInfo"><i class="fa fa-keyboard-o"></i> Log Info</a></li>
+ <li><a href="logInfo?get=stdout"><i class="fa fa-keyboard-o"></i> Stdout</a></li>
+ </ul>
+ </li>
+ </ul>
+ </div><!-- /.navbar-collapse -->
+ </nav>
+
+ <div id="page-wrapper">
+
+ <div class="row">
+ <div class="col-lg-12">
+ <h1>Apache Flink Dashboard<small id="version"></small></h1>
+ <ol class="breadcrumb">
+ <li class="active"><i class="fa fa-dashboard"></i> Dashboard</li>
+ </ol>
+ </div>
+ </div><!-- /.row -->
+
+ <div class="row">
+ <div class="col-lg-2">
+ <div class="panel panel-info">
+ <div class="panel-heading">
+ <div class="row">
+ <div class="col-xs-6">
+ <i class="fa fa-info fa-5x"></i>
+ </div>
+ <div class="col-xs-6 text-right">
+ <p class="announcement-heading"><span id="stat-taskmanagers" class="stats"></span></p>
+ <p class="announcement-text">Task Manager</p>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="col-lg-2">
+ <div class="panel panel-primary">
+ <div class="panel-heading">
+ <div class="row">
+ <div class="col-xs-6">
+ <i class="fa fa-list-ol fa-5x"></i>
+ </div>
+ <div class="col-xs-6 text-right">
+ <p class="announcement-heading"><span id="stat-slots" class="stats"></span></p>
+ <p class="announcement-text">Processing Slots</p>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="col-lg-2">
+ <div class="panel panel-success">
+ <div class="panel-heading">
+ <div class="row">
+ <div class="col-xs-6">
+ <i class="fa fa-check fa-5x"></i>
+ </div>
+ <div class="col-xs-6 text-right">
+ <p class="announcement-heading"><span id="jobs-finished" class="stats"></span></p>
+ <p class="announcement-text">Jobs Finished</p>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="col-lg-2">
+ <div class="panel panel-warning">
+ <div class="panel-heading">
+ <div class="row">
+ <div class="col-xs-6">
+ <i class="fa fa-eraser fa-5x"></i>
+ </div>
+ <div class="col-xs-6 text-right">
+ <p class="announcement-heading"><span id="jobs-canceled" class="stats"></span></p>
+ <p class="announcement-text">Jobs Canceled</p>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="col-lg-2">
+ <div class="panel panel-danger">
+ <div class="panel-heading">
+ <div class="row">
+ <div class="col-xs-6">
+ <i class="fa fa-flash fa-5x"></i>
+ </div>
+ <div class="col-xs-6 text-right">
+ <p class="announcement-heading"><span id="jobs-failed" class="stats"></span></p>
+ <p class="announcement-text">Jobs Failed</p>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="col-lg-2">
+ <!-- empty -->
+ </div>
+ </div><!-- /.row -->
+
+ <div class="row">
+ <div class="col-lg-12">
+ <div class="panel panel-primary">
+ <div class="panel-heading">
+ <h3 class="panel-title"><i class="fa fa-play"></i> Running Jobs</h3>
+ </div>
+ <div class="panel-body">
+ <p id="rJpH">There are currently no running jobs, but you can analyze your old jobs in the history.<p>
+ <div id="jobs" class="contentbox-wrapper"></div>
+ </div>
+ </div>
+ </div>
+ </div><!-- /.row -->
+
+ </div><!-- /#page-wrapper -->
+
+ </div><!-- /#wrapper -->
+ </body>
+
+</html>
http://git-wip-us.apache.org/repos/asf/incubator-flink/blob/76d603c0/flink-runtime/src/main/resources/web-docs-infoserver/js/analyzer.js
----------------------------------------------------------------------
diff --git a/flink-runtime/src/main/resources/web-docs-infoserver/js/analyzer.js b/flink-runtime/src/main/resources/web-docs-infoserver/js/analyzer.js
new file mode 100644
index 0000000..f93db1c
--- /dev/null
+++ b/flink-runtime/src/main/resources/web-docs-infoserver/js/analyzer.js
@@ -0,0 +1,306 @@
+/*
+ * 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.
+ */
+
+var jsonGlobal;
+var widthProgressbar = 120;
+
+google.load("visualization", "1");
+
+google.setOnLoadCallback(pollArchive);
+
+HTTP_GET_VARS=new Array();
+
+strGET = document.location.search.substr(1, document.location.search.length);
+
+if (strGET != '') {
+ gArr = strGET.split('&');
+ for (i = 0; i < gArr.length; ++i) {
+ v = '';
+ vArr = gArr[i].split('=');
+ if (vArr.length > 1) {
+ v = vArr[1];
+ }
+ HTTP_GET_VARS[unescape(vArr[0])] = unescape(v);
+ }
+}
+
+function GET(v) {
+ if (!HTTP_GET_VARS[v]) {
+ return 'undefined';
+ }
+ return HTTP_GET_VARS[v];
+}
+
+function pollArchive() {
+ $.ajax({
+ url : "jobsInfo?get=job&job="
+ + GET("job"), type : "GET",
+ success : function(json) {
+ jsonGlobal = json
+ // Fill Table
+ analyzeTime(json, false)
+ }, dataType : "json",
+ //complete: setTimeout(function() {poll()}, 5000),
+ //timeout: 2000
+ });
+};
+
+$(document).on("click", "#stack", function() {
+ analyzeTime(jsonGlobal, true);
+});
+
+$(document).on("click", "#flow", function() {
+ analyzeTime(jsonGlobal, false);
+});
+
+function analyzeTime(json, stacked) {
+ $.each(json, function(i, job) {
+ $("#job_timeline").html("");
+ $("#time").html(formattedTimeFromTimestamp(job.SCHEDULED));
+ $("#run").html(convertTime(job[job.status] - job.SCHEDULED));
+ $("#status").html(job.status);
+ $("#jobtitle").html(job.jobname);
+
+ //create failed table
+ if (job.status == "FAILED") {
+ failed = "";
+ $.each(job.failednodes, function(j, failednode) {
+ failed += "<li>" + failednode.node + "<br/>Error: " + failednode.message + "</li>";
+ });
+ $("#page-wrapper").append("<div class=\"panel panel-primary\"><div class=\"panel-heading\"><h3 class=\"panel-title\">Failed Nodes" +
+ "</h3></div><div id=\"failednodes\" class=\"panel-body\">" +
+ failed +
+ "</div></div>");
+
+ }
+ // create accumulators table
+ if($.isArray(job.accumulators) && job.accumulators.length > 0) {
+ accuTable = "<div class=\"table-responsive\">" +
+ "<table class=\"table table-bordered table-hover table-striped\">" +
+ "<tr><td><b>Name</b></td><td><b>Value</b></td></tr>";
+ $.each(job.accumulators, function(i, accu) {
+ accuTable += "<tr><td>"+accu.name+"</td><td>"+accu.value+"</td></tr>";
+ });
+ accuTable += "</table></div>";
+ $("#accumulators").html(accuTable);
+ }
+
+ var data = new google.visualization.DataTable();
+ data.addColumn('datetime', 'start');
+ data.addColumn('datetime', 'end');
+ data.addColumn('string', 'content');
+ if (stacked)
+ data.addColumn('string', 'group');
+ data.addColumn('string', 'className');
+ data.addColumn('string', 'groupvertexid');
+ var flotdata = [];
+
+ if (stacked)
+ data.addRows([
+ [
+ new Date(job.SCHEDULED),
+ ,
+ "SCHEDULED",
+ "9999",
+ "scheduled",
+ undefined ],
+ [
+ new Date(job[job.status]),
+ ,
+ job.status,
+ "9999",
+ "finished",
+ undefined ]
+ ]);
+ else
+ data.addRows([
+ [
+ new Date(job.SCHEDULED),
+ ,
+ "SCHEDULED",
+ "scheduled",
+ undefined ],
+ [
+ new Date(job[job.status]),
+ ,
+ job.status,
+ "finished",
+ undefined ]
+ ]);
+
+ var i = job.groupvertices.length;
+
+ $.each(job.groupvertices, function(j, groupvertex) {
+ // check for reasonable starting time
+ if (job.groupverticetimes[groupvertex.groupvertexid].STARTED < 8888888888888) {
+ if (stacked) {
+ data.addRows([
+ [
+ new Date(job.groupverticetimes[groupvertex.groupvertexid].STARTED),
+ new Date(job.groupverticetimes[groupvertex.groupvertexid].ENDED),
+ groupvertex.groupvertexname,
+ ""+ i,
+ "running",
+ groupvertex.groupvertexid
+ ]
+ ]);
+ } else
+ data.addRows([
+ [
+ new Date(job.groupverticetimes[groupvertex.groupvertexid].STARTED),
+ new Date(job.groupverticetimes[groupvertex.groupvertexid].ENDED),
+ groupvertex.groupvertexname,
+ "running",
+ groupvertex.groupvertexid
+ ]
+ ]);
+ i--;
+ }
+ });
+
+ // Instantiate our timeline object.
+ var timeline = new links.Timeline(document.getElementById('job_timeline'));
+
+ var onselect = function(event) {
+ var row = getSelectedRow(timeline);
+ if (row != undefined) {
+ if (stacked)
+ loadGroupvertex(data.getValue(row, 5));
+ else
+ loadGroupvertex(data .getValue( row, 4));
+ } else {
+ //alert("fail");
+ }
+ };
+
+ // Add event listeners
+ google.visualization.events.addListener(timeline, 'select', onselect);
+
+ // Draw our timeline with the created data and options
+ timeline.draw(data, {});
+
+ });
+}
+
+function loadGroupvertex(groupvertexid) {
+ $.ajax({
+ url : "jobsInfo?get=groupvertex&job="
+ + GET("job") + "&groupvertex="
+ + groupvertexid, type : "GET",
+ success : function(json) {
+ //jsonGlobal = json
+ // Fill Table
+ analyzeGroupvertexTime(json)
+ }, dataType : "json",
+ //complete: setTimeout(function() {poll()}, 5000),
+ //timeout: 2000
+ });
+}
+
+function analyzeGroupvertexTime(json) {
+ $("#vertices").html("");
+ var groupvertex = json.groupvertex;
+ $("#vertices").append(
+ '<h2>'+ groupvertex.groupvertexname
+ + '</h2><br /><div id="pl_'+groupvertex.groupvertexid+'"></div>');
+
+ var data = new google.visualization.DataTable();
+ data.addColumn('datetime', 'start');
+ data.addColumn('datetime', 'end');
+ data.addColumn('string', 'content');
+ data.addColumn('string', 'group');
+ data.addColumn('string', 'className');
+ var cnt = 0;
+ $.each(groupvertex.groupmembers, function(k, vertex) {
+
+ data.addRows([
+ [
+ new Date(json.verticetimes[vertex.vertexid].SCHEDULED),
+ new Date(json.verticetimes[vertex.vertexid].DEPLOYING),
+ "scheduled",
+ vertex.vertexinstancename+ "_" + cnt,
+ "scheduled"
+ ],
+ [
+ new Date(json.verticetimes[vertex.vertexid].DEPLOYING),
+ new Date(json.verticetimes[vertex.vertexid].RUNNING),
+ "deploying",
+ vertex.vertexinstancename+ "_"+ cnt,
+ "deploying"
+ ]
+ ]);
+
+ if (vertex.vertexstatus == "FINISHED")
+ data.addRows([
+ [
+ new Date(json.verticetimes[vertex.vertexid].RUNNING),
+ new Date(json.verticetimes[vertex.vertexid].FINISHED),
+ "running",
+ vertex.vertexinstancename + "_" + cnt,
+ "running"
+ ]
+ ]);
+
+ if (vertex.vertexstatus == "CANCELED")
+ data.addRows([
+ [
+ new Date(json.verticetimes[vertex.vertexid].RUNNING),
+ new Date(json.verticetimes[vertex.vertexid].CANCELING),
+ "running",
+ vertex.vertexinstancename + "_" + cnt,
+ "running" ],
+ [
+ new Date(json.verticetimes[vertex.vertexid].CANCELING),
+ new Date( json.verticetimes[vertex.vertexid].CANCELED),
+ "canceling",
+ vertex.vertexinstancename + "_" + cnt,
+ "canceling"
+ ]
+ ]);
+
+ if (vertex.vertexstatus == "FAILED")
+ data.addRows([
+ [
+ new Date(json.verticetimes[vertex.vertexid].RUNNING),
+ new Date(json.verticetimes[vertex.vertexid].FAILED),
+ "running - FAILED",
+ vertex.vertexinstancename + "_"+ cnt,
+ "failed"
+ ]
+ ]);
+ cnt++;
+ });
+
+ // Instantiate our timeline object.
+ var timeline = new links.Timeline(document.getElementById('pl_' + groupvertex.groupvertexid));
+
+ // Draw our timeline with the created data and options
+ timeline.draw(data, {});
+
+}
+
+function getSelectedRow(timeline) {
+ var row = undefined;
+ var sel = timeline.getSelection();
+ if (sel.length) {
+ if (sel[0].row != undefined) {
+ row = sel[0].row;
+ }
+ }
+ return row;
+}
\ No newline at end of file