Moved to new theme

This commit is contained in:
Ziver Koc 2021-04-13 23:33:35 +02:00
parent d94f48fd06
commit b7e35731c8
8 changed files with 215 additions and 113 deletions

View file

@ -11,6 +11,7 @@ import zutil.ui.Navigation;
import zutil.ui.UserMessageManager;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -41,28 +42,32 @@ public abstract class TraderPage implements HttpPage {
Map<String, Object> session, Map<String, String> cookie,
Map<String, String> request) throws IOException {
try {
// Prepare common template data
Map<String,Object> data = new HashMap<>();
data.put("rootNav", rootNav.createPagedNavInstance(header).getSubNavs());
data.put("userNav", userNav.createPagedNavInstance(header).getSubNavs());
data.put("breadcrumb", Navigation.getBreadcrumb(Navigation.getPagedNavigation(header)));
data.put("page", Navigation.getPagedNavigation(header));
data.put("alerts", AlertEndpoint.getInstance().generateAlerts());
data.put("user", "Profile");
// Create templates
Templator navigationTemplate = new Templator(FileUtil.find(TEMPLATE_NAVIGATION));
navigationTemplate.set("rootNav", rootNav.createPagedNavInstance(header).getSubNavs());
navigationTemplate.set("userNav", userNav.createPagedNavInstance(header).getSubNavs());
navigationTemplate.setAll(data);
Templator subNavigationTemplate = null;
if (showSubNav) {
subNavigationTemplate = new Templator(FileUtil.find(TEMPLATE_SUB_NAVIGATION));
List<Navigation> breadcrumb = Navigation.getBreadcrumb(Navigation.getPagedNavigation(header));
subNavigationTemplate.set("rootNav", rootNav.createPagedNavInstance(header).getSubNavs());
subNavigationTemplate.set("userNav", userNav.createPagedNavInstance(header).getSubNavs());
if (!breadcrumb.isEmpty())
subNavigationTemplate.set("sub_navigation", breadcrumb.get(1).createPagedNavInstance(header).getSubNavs());
subNavigationTemplate.setAll(data);
}
Templator main = new Templator(FileUtil.find(TEMPLATE_MAIN));
main.setAll(data);
main.set("navigation", navigationTemplate);
main.set("sub_navigation", subNavigationTemplate);
main.set("alerts", AlertEndpoint.getInstance().generateAlerts());
main.set("content", httpRespond(session, cookie, request));
main.set("user", "Profile");
out.print(main.compile());
} catch (Exception e) {

View file

@ -0,0 +1,45 @@
package se.koc.trader.page;
import se.koc.trader.TraderContext;
import se.koc.trader.api.TraderPage;
import se.koc.trader.struct.Symbol;
import zutil.ObjectUtil;
import zutil.db.DBConnection;
import zutil.io.file.FileUtil;
import zutil.log.LogUtil;
import zutil.parser.Templator;
import java.util.Map;
import java.util.logging.Logger;
import static zutil.ui.UserMessageManager.*;
public class ExchangeConfigPage extends TraderPage {
private static final Logger logger = LogUtil.getLogger();
private static final String TEMPLATE = TraderContext.RESOURCE_WEB_ROOT + "/exchange_config.tmpl";
public ExchangeConfigPage() {
super("exchange_config");
super.getRootNav().createSubNav("Settings").createSubNav(this.getId(), "Exchange Settings").setWeight(100);
}
@Override
public Templator httpRespond(
Map<String, Object> session,
Map<String, String> cookie,
Map<String, String> request)
throws Exception{
DBConnection db = TraderContext.getDB();
// Output
Templator tmpl = new Templator(FileUtil.find(TEMPLATE));
tmpl.set("exchanges", Symbol.getSymbols(db));
return tmpl;
}
}

View file

@ -5,6 +5,7 @@
"interfaces": [
{"se.koc.trader.api.TraderDaemon": "se.hal.page.SensorOverviewWebPage"},
{"se.koc.trader.api.TraderPage": "se.koc.trader.page.ExchangeConfigPage"},
{"se.koc.trader.api.TraderPage": "se.koc.trader.page.SymbolConfigPage"},
{"se.koc.trader.api.TraderPage": "se.koc.trader.page.SymbolOverviewPage"}
]

View file

@ -0,0 +1,3 @@
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="robot" class="svg-inline--fa fa-robot fa-w-20" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512">
<path style="color: white;" fill="currentColor" d="M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"></path>
</svg>

After

Width:  |  Height:  |  Size: 754 B

View file

@ -3,12 +3,12 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<link rel="icon" href="img/favicon.svg">
<title>Trader</title>
<!-- CSS -->
<!--<link href="css/adminkit-web-ui-kit.min.css" rel="stylesheet">-->
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/adminkit-web-ui-kit.min.css" rel="stylesheet">
<!--<link href="css/bootstrap.min.css" rel="stylesheet">-->
<link href="css/bootstrap-icons.css" rel="stylesheet">
<link href="css/bootstrap-switch.min.css" rel="stylesheet">
<link href="css/fontawesome.min.css" rel="stylesheet">
@ -24,26 +24,39 @@
</head>
<body>
<main>
<nav class="navbar navbar-expand-md navbar-dark sticky-top bg-dark flex-md-nowrap p-0 shadow">
<div class="container-fluid">
<a class="navbar-brand px-3" href="#">
<i class="fas fa-robot"></i> Trader
</a>
<div class="wrapper">
{{sub_navigation}}
{{navigation}}
</div>
</nav>
<div class="main">
{{navigation}}
<div class="container-fluid">
<div class="row">
{{sub_navigation}}
<main class="content">
<div class="container-fluid">
<div class="row mb-2 mb-xl-3">
<div class="col-auto d-none d-sm-block">
<h3><strong>{{page.getName()}}</strong></h3>
</div>
<main class="col-md-9 ms-sm-auto col-lg-10 px-md-4">
{{content}}
</main>
</div>
<div class="col-auto ms-auto text-end mt-n1">
<nav aria-label="breadcrumb">
<ol class="breadcrumb bg-transparent p-0 mt-1 mb-0">
{{#breadcrumb}}
<li class="breadcrumb-item {{#.isActive()}}active{{/.isActive()}}">
<a {{#.getURL()}}href="{{.getURL()}}"{{/.getURL()}}>
{{#.getName()}}{{.getName()}}{{/.getName()}}
</a>
</li>
{{/breadcrumb}}
</ol>
</nav>
</div>
</div>
<div class="row">
{{content}}
</div>
</main>
</div>
</main>
</div>
</body>
</html>

View file

@ -1,31 +1,29 @@
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarsExample04">
<span class="navbar-toggler-icon"></span>
</button>
<nav class="navbar navbar-expand navbar-light navbar-bg">
<a class="sidebar-toggle d-flex">
<i class="hamburger align-self-center"></i>
</a>
<div class="collapse navbar-collapse">
<ul class="navbar-nav me-auto mb-2 mb-md-0">
</ul>
<div class="navbar-collapse collapse">
<ul class="navbar-nav navbar-align">
<li class="nav-item dropdown">
<a class="nav-icon dropdown-toggle d-inline-block d-sm-none" href="#" data-bs-toggle="dropdown">
<i class="align-middle" data-feather="settings"></i>
</a>
<!-- User navigation -->
<ul class="navbar-nav navbar-right">
<li class="nav-item dropdown">
<a class="nav-item dropdown-toggle" href="#" data-bs-toggle="dropdown">
<i class="bi bi-person"></i>
<strong>{{user}}</strong>
</a>
<ul class="dropdown-menu">
<li>
<div align="center">
<img src="{{user.getAvatarUrl()}}" />
</div>
</li>
<li class="divider"></li>
{{#userNav}}
<li>
<a class="dropdown-item" href="{{.getURL()}}">{{.getName()}}</a>
</li>
{{/userNav}}
</ul>
</li>
</ul>
</div>
<a class="nav-link dropdown-toggle d-none d-sm-inline-block" href="#" data-bs-toggle="dropdown">
<i class="bi bi-person"></i>
<span class="text-dark">{{user}}</span>
</a>
<div class="dropdown-menu dropdown-menu-end">
<a class="dropdown-item" href="pages-profile.html">
<i class="bi bi-sliders"></i> Profile
</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">
<i class="bi bi-question-circle"></i> About
</a>
</div>
</li>
</ul>
</div>
</nav>

View file

@ -1,30 +1,55 @@
<!-- Sub navigation -->
<nav id="sub-navbar" class="col-md-3 col-lg-2 d-md-block bg-light sidebar collapse">
<ul class="list-unstyled ps-0">
{{#rootNav}}
{{^.getSubNavs().length}}
<li class="mb-1">
<button class="btn btn-toggle align-items-center rounded {{#.isActive()}}active{{/.isActive()}}">
<nav id="sidebar" class="sidebar">
<div class="sidebar-content js-simplebar">
<a class="sidebar-brand" href="index.html">
<span class="align-middle">
<i class="fas fa-robot"></i> Trader
</span>
</a>
<ul class="sidebar-nav">
{{#rootNav}}
<li class="sidebar-header">
{{.getName()}}
</button>
</li>
{{/.getSubNavs().length}}
{{#.getSubNavs().length}}
<li class="mb-1">
<button class="btn btn-toggle align-items-center rounded {{#.isActive()}}active{{/.isActive()}}" data-bs-toggle="collapse" data-bs-target="#{{.getName()}}-collapse">
{{.getName()}}
</button>
<div class="collapse show" id="{{.getName()}}-collapse" style="">
<ul class="btn-toggle-nav list-unstyled fw-normal pb-1 small">
</li>
{{#.getSubNavs()}}
<li class="sidebar-item {{#.isActive()}}active{{/.isActive()}}">
{{^.getSubNavs().length}}
<a class="sidebar-link {{#.isActive()}}active{{/.isActive()}}" href="{{.getURL()}}">
<span class="align-middle">{{.getName()}}</span>
</a>
{{/.getSubNavs().length}}
{{#.getSubNavs().length}}
<a class="sidebar-link" data-bs-target="#dashboards" data-bs-toggle="collapse">
<i class="align-middle"></i>
<span class="align-middle">{{.getName()}}</span>
</a>
<ul class="sidebar-dropdown list-unstyled collapse show" data-bs-parent="#sidebar">
{{#.getSubNavs()}}
<li>
<a class="link-dark rounded" href="{{.getURL()}}">{{.getName()}}</a>
<li class="sidebar-item {{#.isActive()}}active{{/.isActive()}}">
<a class="sidebar-link" href="{{.getURL()}}">{{.getName()}}</a>
</li>
{{/.getSubNavs()}}
</ul>
{{/.getSubNavs().length}}
</li>
{{/.getSubNavs()}}
{{/rootNav}}
</ul>
<!--
<div class="sidebar-cta">
<div class="sidebar-cta-content">
<strong class="d-inline-block mb-2">Weekly Sales Report</strong>
<div class="mb-3 text-sm">
Your weekly sales report is ready for download!
</div>
<div class="d-grid">
<a href="https://adminkit.io/" class="btn btn-outline-primary" target="_blank">Download</a>
</div>
</div>
</li>
{{/.getSubNavs().length}}
{{/rootNav}}
</ul>
</div>
-->
</div>
</nav>

View file

@ -1,34 +1,46 @@
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
<h1>Market Overview</h1>
</div>
<div class="col-md-12 d-flex">
<div class="card flex-fill">
<div class="card-header">
<h5 class="card-title mb-0">Open Trades</h5>
</div>
<div class="card-body px-4">
<div class="table-responsive">
<table class="table table-striped table-sm">
<thead>
<tr>
<th>#</th>
<th>Header</th>
<th>Header</th>
<th>Header</th>
<th>Header</th>
</tr>
</thead>
<tbody>
<tr>
<td>1,001</td>
<td>random</td>
<td>data</td>
<td>placeholder</td>
<td>text</td>
</tr>
</tbody>
</table>
<div class="card flex-fill w-100">
<div class="card-header">
<div class="card-actions float-end">
<div class="dropdown show">
<a href="#" data-bs-toggle="dropdown" data-bs-display="static">
<i class="align-middle" data-feather="more-horizontal"></i>
</a>
<div class="dropdown-menu dropdown-menu-end">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</div>
</div>
<h5 class="card-title mb-0">Recent Movement</h5>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover table-sm">
<thead>
<tr>
<th>#</th>
<th>Header</th>
<th>Header</th>
<th>Header</th>
<th>Header</th>
</tr>
</thead>
<tbody>
<tr>
<td>1,001</td>
<td>random</td>
<td>data</td>
<td>placeholder</td>
<td>text</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>