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 zutil.ui.UserMessageManager;
import java.io.IOException; import java.io.IOException;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -41,28 +42,32 @@ public abstract class TraderPage implements HttpPage {
Map<String, Object> session, Map<String, String> cookie, Map<String, Object> session, Map<String, String> cookie,
Map<String, String> request) throws IOException { Map<String, String> request) throws IOException {
try { 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)); Templator navigationTemplate = new Templator(FileUtil.find(TEMPLATE_NAVIGATION));
navigationTemplate.set("rootNav", rootNav.createPagedNavInstance(header).getSubNavs()); navigationTemplate.setAll(data);
navigationTemplate.set("userNav", userNav.createPagedNavInstance(header).getSubNavs());
Templator subNavigationTemplate = null; Templator subNavigationTemplate = null;
if (showSubNav) { if (showSubNav) {
subNavigationTemplate = new Templator(FileUtil.find(TEMPLATE_SUB_NAVIGATION)); subNavigationTemplate = new Templator(FileUtil.find(TEMPLATE_SUB_NAVIGATION));
List<Navigation> breadcrumb = Navigation.getBreadcrumb(Navigation.getPagedNavigation(header)); subNavigationTemplate.setAll(data);
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());
} }
Templator main = new Templator(FileUtil.find(TEMPLATE_MAIN)); Templator main = new Templator(FileUtil.find(TEMPLATE_MAIN));
main.setAll(data);
main.set("navigation", navigationTemplate); main.set("navigation", navigationTemplate);
main.set("sub_navigation", subNavigationTemplate); main.set("sub_navigation", subNavigationTemplate);
main.set("alerts", AlertEndpoint.getInstance().generateAlerts());
main.set("content", httpRespond(session, cookie, request)); main.set("content", httpRespond(session, cookie, request));
main.set("user", "Profile");
out.print(main.compile()); out.print(main.compile());
} catch (Exception e) { } 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": [ "interfaces": [
{"se.koc.trader.api.TraderDaemon": "se.hal.page.SensorOverviewWebPage"}, {"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.SymbolConfigPage"},
{"se.koc.trader.api.TraderPage": "se.koc.trader.page.SymbolOverviewPage"} {"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> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content=""> <link rel="icon" href="img/favicon.svg">
<title>Trader</title> <title>Trader</title>
<!-- CSS --> <!-- CSS -->
<!--<link href="css/adminkit-web-ui-kit.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.min.css" rel="stylesheet">-->
<link href="css/bootstrap-icons.css" rel="stylesheet"> <link href="css/bootstrap-icons.css" rel="stylesheet">
<link href="css/bootstrap-switch.min.css" rel="stylesheet"> <link href="css/bootstrap-switch.min.css" rel="stylesheet">
<link href="css/fontawesome.min.css" rel="stylesheet"> <link href="css/fontawesome.min.css" rel="stylesheet">
@ -24,26 +24,39 @@
</head> </head>
<body> <body>
<main> <div class="wrapper">
<nav class="navbar navbar-expand-md navbar-dark sticky-top bg-dark flex-md-nowrap p-0 shadow"> {{sub_navigation}}
<div class="container-fluid">
<a class="navbar-brand px-3" href="#">
<i class="fas fa-robot"></i> Trader
</a>
{{navigation}} <div class="main">
</div> {{navigation}}
</nav>
<div class="container-fluid"> <main class="content">
<div class="row"> <div class="container-fluid">
{{sub_navigation}} <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"> <div class="col-auto ms-auto text-end mt-n1">
{{content}} <nav aria-label="breadcrumb">
</main> <ol class="breadcrumb bg-transparent p-0 mt-1 mb-0">
</div> {{#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> </div>
</main> </div>
</body> </body>
</html> </html>

View file

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

View file

@ -1,30 +1,55 @@
<!-- Sub navigation --> <!-- Sub navigation -->
<nav id="sub-navbar" class="col-md-3 col-lg-2 d-md-block bg-light sidebar collapse"> <nav id="sidebar" class="sidebar">
<ul class="list-unstyled ps-0"> <div class="sidebar-content js-simplebar">
{{#rootNav}} <a class="sidebar-brand" href="index.html">
{{^.getSubNavs().length}} <span class="align-middle">
<li class="mb-1"> <i class="fas fa-robot"></i> Trader
<button class="btn btn-toggle align-items-center rounded {{#.isActive()}}active{{/.isActive()}}"> </span>
</a>
<ul class="sidebar-nav">
{{#rootNav}}
<li class="sidebar-header">
{{.getName()}} {{.getName()}}
</button> </li>
</li> {{#.getSubNavs()}}
{{/.getSubNavs().length}} <li class="sidebar-item {{#.isActive()}}active{{/.isActive()}}">
{{#.getSubNavs().length}} {{^.getSubNavs().length}}
<li class="mb-1"> <a class="sidebar-link {{#.isActive()}}active{{/.isActive()}}" href="{{.getURL()}}">
<button class="btn btn-toggle align-items-center rounded {{#.isActive()}}active{{/.isActive()}}" data-bs-toggle="collapse" data-bs-target="#{{.getName()}}-collapse"> <span class="align-middle">{{.getName()}}</span>
{{.getName()}} </a>
</button> {{/.getSubNavs().length}}
<div class="collapse show" id="{{.getName()}}-collapse" style=""> {{#.getSubNavs().length}}
<ul class="btn-toggle-nav list-unstyled fw-normal pb-1 small"> <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()}} {{#.getSubNavs()}}
<li> <li class="sidebar-item {{#.isActive()}}active{{/.isActive()}}">
<a class="link-dark rounded" href="{{.getURL()}}">{{.getName()}}</a> <a class="sidebar-link" href="{{.getURL()}}">{{.getName()}}</a>
</li> </li>
{{/.getSubNavs()}} {{/.getSubNavs()}}
</ul> </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> </div>
</li> </div>
{{/.getSubNavs().length}} -->
{{/rootNav}} </div>
</ul> </nav>
</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"> <div class="col-md-12 d-flex">
<h1>Market Overview</h1>
</div>
<div class="card flex-fill"> <div class="card flex-fill w-100">
<div class="card-header"> <div class="card-header">
<h5 class="card-title mb-0">Open Trades</h5> <div class="card-actions float-end">
</div> <div class="dropdown show">
<div class="card-body px-4"> <a href="#" data-bs-toggle="dropdown" data-bs-display="static">
<div class="table-responsive"> <i class="align-middle" data-feather="more-horizontal"></i>
<table class="table table-striped table-sm"> </a>
<thead>
<tr> <div class="dropdown-menu dropdown-menu-end">
<th>#</th> <a class="dropdown-item" href="#">Action</a>
<th>Header</th> <a class="dropdown-item" href="#">Another action</a>
<th>Header</th> <a class="dropdown-item" href="#">Something else here</a>
<th>Header</th> </div>
<th>Header</th> </div>
</tr> </div>
</thead> <h5 class="card-title mb-0">Recent Movement</h5>
<tbody> </div>
<tr>
<td>1,001</td> <div class="card-body">
<td>random</td> <div class="table-responsive">
<td>data</td> <table class="table table-hover table-sm">
<td>placeholder</td> <thead>
<td>text</td> <tr>
</tr> <th>#</th>
</tbody> <th>Header</th>
</table> <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> </div>
</div> </div>