<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
 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 xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.org/ui"
	xmlns:c="http://java.sun.com/jsp/jstl/core"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:a4j="http://richfaces.org/a4j"
	xmlns:rich="http://richfaces.org/rich"
	xmlns:fn="http://java.sun.com/jsp/jstl/functions">

<h:head>
	<meta charset="utf-8" />
	<meta http-equiv="X-UA-Compatible" content="IE=edge" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
	<title>Jstorm UI</title>
	<link rel="stylesheet" href="assets/css/bootstrap.min.css" />
	<link rel="stylesheet" href="assets/css/bootstrap-theme.min.css" />

</h:head>

<h:body>
	<h:outputLink value="table.jsf">
		<h1>
			<h:outputText value="JStorm UI" />
			<f:param name="pageType" value="cluster" />
			<f:param name="cluster" value="#{param.cluster}" />
		</h1>
	</h:outputLink>
	<hr/>

	<div class="table-responsive">
		<c:forEach items="${tablepage.tables}" var="t">
			<h2>${t.name}</h2>
			<table class="table table-striped table-bordered">
				<tr>
					<c:forEach items="${t.headers}" var="headerName">
						<th>${headerName}</th>
					</c:forEach>
				</tr>

				<c:forEach items="${t.lines}" var="line">
					<tr>
						<c:forEach items="${t.headers}" var="headerName">
							<td><c:forEach items="${line[headerName].texts}"
									var="textData">
								${textData}<br />
								</c:forEach> <c:forEach items="${line[headerName].links}" var="link">
									<h:outputLink value="${link.url}">
										<h:outputText value="${link.text}" />
										<c:forEach items="${link.paramMap}" var="paramEntry">
											<f:param name="${paramEntry.key}" value="#{paramEntry.value}" />
										</c:forEach>
									</h:outputLink>
									<br />
								</c:forEach></td>
						</c:forEach>
					</tr>
				</c:forEach>

			</table>


		</c:forEach>
	</div>
	<div class="text-center">
	  <ul class="pagination">
		  <c:forEach items="#{windowtablepage.pages}" var="page">
		  <li class="${page.status}">
			<h:outputLink value="${page.linkData.url}">
				<h:outputText value="${page.linkData.text}" />
				<c:forEach items="${page.linkData.paramMap}" var="paramEntry">
					<f:param name="${paramEntry.key}" value="#{paramEntry.value}" />
				</c:forEach>
				<span aria-hidden="true">
				</span>
			</h:outputLink>
			</li>
		</c:forEach> 
	  </ul>

	</div>
	<pre>${tablepage.rawData}</pre>
</h:body>


</html>
