chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
<!doctype html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Embedding a Bokeh Server With {{ framework }}</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div>
|
||||
This Bokeh app below served by a Bokeh server that has been embedded
|
||||
in another web app framework. For more information see the section
|
||||
<a target="_blank"
|
||||
href="https://bokeh.pydata.org/en/latest/docs/user_guide/server.html#embedding-bokeh-server-as-a-library">
|
||||
Embedding Bokeh Server as a Library</a>
|
||||
in the User's Guide.
|
||||
</div>
|
||||
{{ script|safe }}
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,2 @@
|
||||
{% block footer %}
|
||||
{% end %}
|
||||
@@ -0,0 +1,12 @@
|
||||
{% block header %}
|
||||
<div id="navbar" class="navbar navbar-default ace-save-state">
|
||||
<div class="navbar-container ace-save-state" id="navbar-container">
|
||||
<div class="navbar-header pull-left">
|
||||
<a href="/stock/" class="navbar-brand">
|
||||
<small><i class="fa fa-leaf"></i>开源Python全栈股票系统,数据抓取、统计分析、报表展示 版本:{{ pythonStockVersion }}</small>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div><!-- /.navbar-container -->
|
||||
</div>
|
||||
{% end %}
|
||||
@@ -0,0 +1,64 @@
|
||||
{% block left_menu %}
|
||||
<div id="sidebar" class="sidebar responsive ace-save-state">
|
||||
<script type="text/javascript">
|
||||
try{ace.settings.loadState('sidebar')}catch(e){}
|
||||
</script>
|
||||
|
||||
<ul class="nav nav-list">
|
||||
<li class="">
|
||||
<a href="/">
|
||||
<i class="menu-icon fa fa-tachometer"></i>
|
||||
<span class="menu-text"> Dashboard </span>
|
||||
</a>
|
||||
<b class="arrow"></b>
|
||||
</li>
|
||||
|
||||
<li class="active open">
|
||||
<!--<a href="#" class="dropdown-toggle">-->
|
||||
<!--<i class="menu-icon fa fa-desktop"></i>-->
|
||||
<!--<span class="menu-text">-->
|
||||
<!--股票原始数据-->
|
||||
<!--</span>-->
|
||||
<!--<b class="arrow fa fa-angle-down"></b>-->
|
||||
<!--</a>-->
|
||||
<!--<b class="arrow"></b>-->
|
||||
<li class="submenu">
|
||||
<li class="open" style="display:none;">
|
||||
{% set loopType = "" %}
|
||||
{% for leftMenuTmp in leftMenu.leftMenuList %}
|
||||
|
||||
{% if leftMenuTmp.type != loopType %}
|
||||
</li>
|
||||
<li class="open">
|
||||
{% set loopType = leftMenuTmp.type %}
|
||||
<a href="#" class="dropdown-toggle">
|
||||
<i class="menu-icon fa fa-pencil-square-o"></i>
|
||||
{{ leftMenuTmp.type }}
|
||||
<b class="arrow fa fa-angle-down"></b>
|
||||
</a>
|
||||
<b class="arrow"></b>
|
||||
|
||||
{% end %}
|
||||
|
||||
<ul class="submenu">
|
||||
<li>
|
||||
<a href="{{ leftMenuTmp.url }}">
|
||||
<i class="menu-icon fa fa-caret-right"></i>
|
||||
{{ leftMenuTmp.name }}
|
||||
</a>
|
||||
<b class="arrow"></b>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
{% end %}
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
</ul><!-- /.nav-list -->
|
||||
|
||||
<div class="sidebar-toggle sidebar-collapse" id="sidebar-collapse">
|
||||
<i id="sidebar-toggle-icon" class="ace-icon fa fa-angle-double-left ace-save-state" data-icon1="ace-icon fa fa-angle-double-left" data-icon2="ace-icon fa fa-angle-double-right"></i>
|
||||
</div>
|
||||
</div>
|
||||
{% end %}
|
||||
@@ -0,0 +1,71 @@
|
||||
{% block meta %}
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
|
||||
<!-- bootstrap & fontawesome -->
|
||||
<link rel="stylesheet" href="/static/css/bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="/static/font-awesome/4.5.0/css/font-awesome.min.css" />
|
||||
<!-- ace styles -->
|
||||
<link rel="stylesheet" href="/static/css/ace.min.css" class="ace-main-stylesheet" id="main-ace-style" />
|
||||
<!-- basic scripts -->
|
||||
<script src="/static/js/jquery-2.1.4.min.js"></script>
|
||||
<script src="/static/js/ace-extra.min.js"></script>
|
||||
<script src="/static/js/bootstrap.min.js"></script>
|
||||
|
||||
<!-- page specific plugin scripts -->
|
||||
<script src="/static/js/jquery.dataTables.min.js"></script>
|
||||
<script src="/static/js/jquery.dataTables.bootstrap.min.js"></script>
|
||||
<script src="/static/js/dataTables.buttons.min.js"></script>
|
||||
<script src="/static/js/dataTables.select.min.js"></script>
|
||||
<!-- ace scripts -->
|
||||
<script src="/static/js/moment.min.js"></script>
|
||||
<script src="/static/js/bootstrap-datepicker.min.js"></script>
|
||||
<script src="/static/js/bootstrap-datetimepicker.min.js"></script>
|
||||
<script src="/static/js/bootstrap-datepicker.zh-CN.js"></script>
|
||||
|
||||
<link rel="stylesheet" href="/static/css/bootstrap-datepicker3.min.css" />
|
||||
<link rel="stylesheet" href="/static/css/bootstrap-datetimepicker.min.css" />
|
||||
|
||||
<script src="/static/js/ace-elements.min.js"></script>
|
||||
<script src="/static/js/ace.min.js"></script>
|
||||
<script src="/static/js/jquery-ui.custom.min.js"></script>
|
||||
<script src="/static/js/bootbox.js"></script>
|
||||
|
||||
<script src="/static/js/buttons.colVis.min.js"></script>
|
||||
<script src="/static/js/buttons.print.min.js"></script>
|
||||
<script src="/static/js/buttons.html5.min.js"></script>
|
||||
|
||||
|
||||
<script type='text/javascript'>
|
||||
jQuery(function($) {
|
||||
//初始化窗口。
|
||||
$('.modal.aside').ace_aside();
|
||||
$('#aside-inside-modal').addClass('aside').ace_aside({container: ""});
|
||||
$(document).one('ajaxloadstart.page', function(e) {
|
||||
$('.modal.aside').remove();
|
||||
$(window).off('.aside')
|
||||
});
|
||||
})
|
||||
$.extend({
|
||||
getUrlVars: function(){
|
||||
var vars = [], hash;
|
||||
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
|
||||
for(var i = 0; i < hashes.length; i++)
|
||||
{
|
||||
hash = hashes[i].split('=');
|
||||
vars.push(hash[0]);
|
||||
vars[hash[0]] = hash[1];
|
||||
}
|
||||
return vars;
|
||||
},
|
||||
getUrlVar: function(name){
|
||||
return $.getUrlVars()[name];
|
||||
}
|
||||
});
|
||||
jQuery(function($) {
|
||||
$('[data-rel=tooltip]').tooltip();
|
||||
$('[data-rel=popover]').popover({html:true});
|
||||
});
|
||||
</script>
|
||||
<style>
|
||||
#dynamic-table_filter {display: none;}
|
||||
</style>
|
||||
{% end %}
|
||||
@@ -0,0 +1,157 @@
|
||||
{% extends "layout/default.html" %}
|
||||
|
||||
|
||||
{% block main_content %}
|
||||
|
||||
<h3 class="header smaller lighter blue">{{ stockWeb.name }}</h3>
|
||||
<div class="table-header">{{ stockWeb.name }}</div>
|
||||
|
||||
<div class="row"> </div>
|
||||
<div class="row">
|
||||
{% for index,element in enumerate(stockWeb.columns) %}
|
||||
<div class="col-md-4" id="filter_col{{ index+1 }}" data-column="{{ index }}">
|
||||
{{ stockWeb.column_names[index] }}
|
||||
<!-- Column - {{ stockWeb.column_names[index] }} - {{ element }} -->
|
||||
<input type="text" class="column_filter input-group-sm form-control" id="col{{ index }}_filter">
|
||||
</div>
|
||||
{% end %}
|
||||
</div>
|
||||
|
||||
<table cellpadding="3" cellspacing="0" border="0" style="width: 67%; margin: 0 auto 2em auto;">
|
||||
<tbody>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- div.table-responsive -->
|
||||
<!-- div.dataTables_borderWrap -->
|
||||
<div>
|
||||
<div class="pull-right tableTools-container"></div>
|
||||
<table id="dynamic-table" class="table table-striped table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
{% for column_name in stockWeb.column_names %}
|
||||
<th>{{ column_name }}</th>
|
||||
{% end %}
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- inline scripts related to this page -->
|
||||
<script type="text/javascript">
|
||||
|
||||
jQuery(function($) {
|
||||
editor = new $.fn.dataTable.Editor( {
|
||||
i18n: {
|
||||
create: {
|
||||
button: "新建",
|
||||
title: "创建新数据",
|
||||
submit: "保存"
|
||||
},
|
||||
edit: {
|
||||
button: "修改",
|
||||
title: "修改数据",
|
||||
submit: "保存"
|
||||
},
|
||||
remove: {
|
||||
button: "删除",
|
||||
title: "删除数据",
|
||||
submit: "删除",
|
||||
confirm: {
|
||||
_: "确定删除 %d 条数据?",
|
||||
1: "确定删除 1 条数据?"
|
||||
}
|
||||
},
|
||||
error: {
|
||||
system: "发生了一系统错误,(更多信息)"
|
||||
},
|
||||
datetime: {
|
||||
previous: '前一月',
|
||||
next: '下一月',
|
||||
months: [ '1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月' ],
|
||||
weekdays: [ '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六' ]
|
||||
}
|
||||
},
|
||||
ajax: "/data/editor/save?table_name={{ stockWeb.table_name }}",
|
||||
table: "#dynamic-table",
|
||||
fields: [
|
||||
{% for index,element in enumerate(stockWeb.columns) %}
|
||||
{
|
||||
label: "{{ stockWeb.column_names[index] }}:",
|
||||
name: "{{ element }}"
|
||||
{% if element == "date" %} ,type: "datetime" {% end %}
|
||||
},{% end %}
|
||||
]
|
||||
} );
|
||||
|
||||
var nameParam = $.getUrlVar('table_name');
|
||||
//console.log(nameParam);
|
||||
var myTable = $('#dynamic-table').DataTable( {
|
||||
"dom": "Bfrtip",
|
||||
"bFilter": true,
|
||||
"ordering": true,
|
||||
"processing": true,
|
||||
"serverSide": true,
|
||||
"lengthMenu": [[20, 30, 50, 100,1000, -1], [20, 30, 50, 100,1000, "All"]],
|
||||
"language": {
|
||||
"url": "/static/js/datatables.Chinese.json"
|
||||
},
|
||||
"ajax": "/api/v1/api_data?type=editor&name="+nameParam,
|
||||
"columns": [
|
||||
{
|
||||
"data": "",
|
||||
"defaultContent": "",
|
||||
"className": 'select-checkbox',
|
||||
"orderable": true
|
||||
},
|
||||
{% for column in stockWeb.columns %}
|
||||
{ "data": "{{ column }}" },
|
||||
{% end %}
|
||||
],
|
||||
select: {
|
||||
style: 'os',
|
||||
selector: 'td:first-child'
|
||||
},
|
||||
buttons: [
|
||||
{ extend: "create", editor: editor, text: '新增' },
|
||||
{ extend: "edit", editor: editor, text: '编辑' },
|
||||
{ extend: "remove", editor: editor, text: '删除' }
|
||||
]
|
||||
} );
|
||||
|
||||
$('input.column_filter').on( 'keyup click', function () {
|
||||
var i = $(this).parents('div').attr('data-column') ;
|
||||
//console.log(i,"val:",$(this).val());
|
||||
myTable.column(i).search(
|
||||
$(this).val()
|
||||
).draw();
|
||||
});
|
||||
|
||||
$.fn.dataTable.Buttons.defaults.dom.container.className = 'dt-buttons btn-overlap btn-group btn-overlap';
|
||||
|
||||
new $.fn.dataTable.Buttons( myTable, {
|
||||
buttons: [
|
||||
{
|
||||
"extend": "copy",
|
||||
"text": "<i class='fa fa-copy bigger-110 pink'></i> <span class='hidden'>Copy to clipboard</span>",
|
||||
"className": "btn btn-white btn-primary btn-bold"
|
||||
},
|
||||
{
|
||||
"extend": "csv",
|
||||
"text": "<i class='fa fa-database bigger-110 orange'></i> <span class='hidden'>Export to CSV</span>",
|
||||
"className": "btn btn-white btn-primary btn-bold"
|
||||
},
|
||||
{
|
||||
"extend": "print",
|
||||
"text": "<i class='fa fa-print bigger-110 grey'></i> <span class='hidden'>Print</span>",
|
||||
"className": "btn btn-white btn-primary btn-bold",
|
||||
autoPrint: false,
|
||||
message: 'This print was produced using the Print button for DataTables'
|
||||
}
|
||||
]
|
||||
} );
|
||||
myTable.buttons().container().appendTo( $('.tableTools-container') );
|
||||
})
|
||||
</script>
|
||||
{% end %}
|
||||
@@ -0,0 +1,56 @@
|
||||
{% extends "layout/default.html" %}
|
||||
|
||||
|
||||
{% block main_content %}
|
||||
|
||||
<h3 class="header smaller lighter blue">开源Python全栈股票系统,数据抓取、统计分析、报表展示。</h3>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="pull-left tableTools-container">
|
||||
<h3>基础库版本</h3>
|
||||
<p>1,pandas使用【 {{ pandasVersion }} 】版本, <a href="https://www.pypandas.cn/docs/" target="_blank">中文文档</a> </p>
|
||||
<p>2,numpy使用【 {{ numpyVersion }} 】版本, <a href="https://www.numpy.org.cn/user/" target="_blank">中文文档</a></p>
|
||||
<p>3,akshare使用【 {{ akshareVersion }} 】版本, <a href="https://www.akshare.xyz/" target="_blank">中文文档</a></p>
|
||||
<p>4,bokeh使用【 {{ bokehVersion }} 】版本, <a href="http://docs.bokeh.org/en/latest/" target="_blank">官方文档</a></p>
|
||||
<p>5,stockstats使用【 {{ stockstatsVersion }} 】版本, <a href="https://github.com/jealous/stockstats/" target="_blank">官方文档</a></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="pull-left tableTools-container">
|
||||
<h3>相关资料信息</h3>
|
||||
<p>1,github项目地址。<a href="https://github.com/pythonstock/stock" target="_blank">pythonstock</a></p>
|
||||
<p>2,博客地址。<a href="https://blog.csdn.net/freewebsys/category_9285317.html" target="_blank">博客地址</a></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="pull-left tableTools-container">
|
||||
<h3>2021年9月20日更新,发布2.0版本</h3>
|
||||
<p>1,修复bokeh的版本升级问题,可以显示趋势数据了。</p>
|
||||
<p>2,使用 stock_zh_ah_name 做每日数据。</p>
|
||||
<p>3,AkShare 升级到 1.1.9 版本。</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="pull-left tableTools-container">
|
||||
<h3>2021年8月31日更新job服务</h3>
|
||||
<p>1,过滤包括:600,6006,601,000,001,002,且不包括ST的股票数据。。</p>
|
||||
<p>2,使用 stock_zh_ah_name 做每日数据。</p>
|
||||
<p>3,AkShare 升级到 1.0.80 版本。</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="pull-left tableTools-container">
|
||||
<h3>2021年6月3日使用 AkShare 做数据抓取服务</h3>
|
||||
<p>1,使用 stock_zh_a_spot 做实时行情数据。</p>
|
||||
<p>2,使用 stock_zh_a_daily 做历史数据统计。</p>
|
||||
<p>3,升级基础镜像使用python3.7,AkShare 的 0.9.65 版本。</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% end %}
|
||||
@@ -0,0 +1,6 @@
|
||||
{% extends "../common/meta.html" %}
|
||||
{% extends "../common/header.html" %}
|
||||
{% extends "../common/footer.html" %}
|
||||
{% extends "../common/left_menu.html" %}
|
||||
|
||||
{% extends "main.html" %}
|
||||
@@ -0,0 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
<meta charset="utf-8" />
|
||||
<title>股票系统</title>
|
||||
{% block meta %}{% end %}
|
||||
</head>
|
||||
|
||||
<body class="no-skin">
|
||||
<div class="main-content">
|
||||
<div class="main-content-inner">
|
||||
<div class="page-content">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
{% block main_content %}{% end %}
|
||||
</div>
|
||||
</div><!-- /.row -->
|
||||
</div><!-- /.page-content -->
|
||||
</div>
|
||||
</div><!-- /.main-content -->
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,3 @@
|
||||
{% extends "../common/meta.html" %}
|
||||
|
||||
{% extends "indicators-main.html" %}
|
||||
@@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
<meta charset="utf-8" />
|
||||
<title>股票系统 {{ pythonStockVersion }}</title>
|
||||
{% block meta %}{% end %}
|
||||
</head>
|
||||
|
||||
<body class="no-skin">
|
||||
|
||||
{% block header %}{% end %}
|
||||
|
||||
<div class="main-container ace-save-state" id="main-container">
|
||||
<script type="text/javascript">
|
||||
try{ace.settings.loadState('main-container')}catch(e){}
|
||||
</script>
|
||||
|
||||
{% block left_menu %}{% end %}
|
||||
|
||||
<div class="main-content">
|
||||
<div class="main-content-inner">
|
||||
<div class="page-content">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
{% block main_content %}{% end %}
|
||||
</div>
|
||||
</div><!-- /.row -->
|
||||
</div><!-- /.page-content -->
|
||||
</div>
|
||||
</div><!-- /.main-content -->
|
||||
|
||||
<a href="#" id="btn-scroll-up" class="btn-scroll-up btn btn-sm btn-inverse">
|
||||
<i class="ace-icon fa fa-angle-double-up icon-only bigger-110"></i>
|
||||
</a>
|
||||
</div><!-- /.main-container -->
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,5 @@
|
||||
{% extends "../common/meta.html" %}
|
||||
{% extends "../common/header.html" %}
|
||||
{% extends "../common/footer.html" %}
|
||||
|
||||
{% extends "single_main.html" %}
|
||||
@@ -0,0 +1,29 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
<meta charset="utf-8" />
|
||||
{% block meta %}{% end %}
|
||||
</head>
|
||||
|
||||
<body class="no-skin">
|
||||
|
||||
<div class="main-container ace-save-state" id="main-container">
|
||||
<div class="main-content">
|
||||
<div class="main-content-inner">
|
||||
<div class="page-content">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
{% block main_content %}{% end %}
|
||||
</div>
|
||||
</div><!-- /.row -->
|
||||
</div><!-- /.page-content -->
|
||||
</div>
|
||||
</div><!-- /.main-content -->
|
||||
|
||||
<a href="#" id="btn-scroll-up" class="btn-scroll-up btn btn-sm btn-inverse">
|
||||
<i class="ace-icon fa fa-angle-double-up icon-only bigger-110"></i>
|
||||
</a>
|
||||
</div><!-- /.main-container -->
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,80 @@
|
||||
{% extends "layout/single_default.html" %}
|
||||
|
||||
|
||||
{% block main_content %}
|
||||
|
||||
|
||||
<h3 class="header smaller lighter blue">手写图片识别演示</h3>
|
||||
|
||||
<div class="row clearfix">
|
||||
<div class="col-md-6 column">
|
||||
<canvas id="the_stage" width="280" height="280">your browser don't support canvas!</canvas>
|
||||
<div>
|
||||
<button type="button" class="btn btn-default butt" onclick="clearCanvas()"><strong>删除</strong></button>
|
||||
<button type="button" class="btn btn-default butt" id="recognize" onclick="processImg()"><strong>识别</strong></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 column">
|
||||
<h3>result:</h3>
|
||||
<h2 id="rec_result"></h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3 class="header smaller lighter blue">测试图片识别演示</h3>
|
||||
<div class="row clearfix" style="width:400px;">
|
||||
{% for image in image_array %}
|
||||
<div class="col-md-2" style="margin-top: 15px;">
|
||||
<img src="{{ image }}" alt="" width="50" class="minst_img" height="50" style="1px solid #e1e4e5;cursor: pointer;">
|
||||
</div>
|
||||
{% end %}
|
||||
</div>
|
||||
<div class="col-md-6 column">
|
||||
<h3>结果:</h3>
|
||||
<h2 id="prediction_text">"-1"</h2>
|
||||
</div>
|
||||
<!-- inline scripts related to this page -->
|
||||
<script src="/static/js/mnist-draw.js"></script>
|
||||
<style>
|
||||
#the_stage {
|
||||
border: 1px solid #999;
|
||||
border-radius: 4px;
|
||||
box-shadow: -10px 10px 5px #888888;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
jQuery(function($) {
|
||||
$("#recognize").click(
|
||||
//提交数据
|
||||
function () {
|
||||
$("#rec_result").html("connecting...");
|
||||
var scribbler = document.getElementById ("the_stage");
|
||||
var imageData = scribbler.toDataURL('image/png');
|
||||
var dataTemp = imageData.substr(22);
|
||||
|
||||
var sendPackage = {"id": "1", "txt": dataTemp};
|
||||
$.post("/minst_serving/prediction2", sendPackage, function(msg){
|
||||
$("#rec_result").html(msg);
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
$(".minst_img").click(
|
||||
//提交数据
|
||||
function () {
|
||||
img_url = $(this).attr("src")
|
||||
console.log("here",);
|
||||
//
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: "/minst_serving/prediction",
|
||||
data: "img_url="+img_url,
|
||||
success: function(msg){
|
||||
console.log( "prediction : " + msg );
|
||||
$("#prediction_text").html(msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
</script>
|
||||
{% end %}
|
||||
@@ -0,0 +1,12 @@
|
||||
{% extends "layout/default.html" %}
|
||||
|
||||
|
||||
{% block main_content %}
|
||||
|
||||
<h3 class="header smaller lighter blue">欢迎使用股票系统。</h3>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="pull-right tableTools-container"></div>
|
||||
<img src="/stock/chart/image1" />
|
||||
</div>
|
||||
{% end %}
|
||||
@@ -0,0 +1,32 @@
|
||||
{% extends "layout/indicators.html" %}
|
||||
|
||||
|
||||
{% block main_content %}
|
||||
|
||||
<!-- 增加 bokeh 样式。-->
|
||||
<link rel="stylesheet" href="/static/css/bokeh.min.css" type="text/css"/>
|
||||
<link rel="stylesheet" href="/static/css/bokeh-widgets.min.css" type="text/css"/>
|
||||
<link rel="stylesheet" href="/static/css/bokeh-tables.min.css" type="text/css"/>
|
||||
|
||||
<script type="text/javascript" src="/static/js/bokeh.min.js"></script>
|
||||
<script type="text/javascript" src="/static/js/bokeh-widgets.min.js"></script>
|
||||
<script type="text/javascript" src="/static/js/bokeh-tables.min.js"></script>
|
||||
<script type="text/javascript" src="/static/js/bokeh-api.min.js"></script>
|
||||
<script type="text/javascript" src="/static/js/bokeh-gl.min.js"></script>
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
Bokeh.set_log_level("info");
|
||||
</script>
|
||||
|
||||
{% for index,element in enumerate(comp_list) %}
|
||||
<h4 class="header smaller lighter blue">{{ element["title"] }}</h4>
|
||||
<div class="row">{{ element["desc"] }}</div>
|
||||
<div class="row" id="_col_{{ index+1 }}" data-column="{{ index }}">
|
||||
{% raw element["div"] %}
|
||||
{% raw element["script"] %}
|
||||
</div>
|
||||
{% end %}
|
||||
|
||||
{% end %}
|
||||
@@ -0,0 +1,175 @@
|
||||
{% extends "layout/default.html" %}
|
||||
|
||||
|
||||
{% block main_content %}
|
||||
|
||||
<h3 class="header smaller lighter blue">{{ stockWeb.name }}</h3>
|
||||
<div class="table-header">{{ stockWeb.name }}</div>
|
||||
|
||||
<div class="row"> </div>
|
||||
<div class="row">
|
||||
{% for index,element in enumerate(stockWeb.columns) %}
|
||||
{% if index < 15 %}
|
||||
{% if element != 'eastmoney_url' %}
|
||||
<div class="col-md-4" id="filter_col{{ index+1 }}" data-column="{{ index }}">
|
||||
{{ stockWeb.column_names[index] }}
|
||||
<!-- Column - {{ stockWeb.column_names[index] }} - {{ element }} -->
|
||||
|
||||
<input type="text" class="column_filter input-group-sm form-control {% if element == 'date' %}date-picker{% end %}"
|
||||
{% if element == 'date' %} value="{{ date_now }}" {% end %}
|
||||
id="col{{ index }}_filter">
|
||||
</div>
|
||||
{% end %}
|
||||
{% end %}{% end %}
|
||||
</div>
|
||||
|
||||
<table cellpadding="3" cellspacing="0" border="0" style="width: 67%; margin: 0 auto 2em auto;">
|
||||
<tbody>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- div.table-responsive -->
|
||||
<!-- div.dataTables_borderWrap -->
|
||||
<div>
|
||||
<div class="pull-right tableTools-container"></div>
|
||||
<table id="dynamic-table" class="table table-striped table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>{% for column_name in stockWeb.column_names %}
|
||||
<th>{{ column_name }}</th>
|
||||
{% end %}
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- 定义一个窗口的Div 东方财富股票数据页面 -->
|
||||
<div id="dfcf-window-modal" class="modal fade">
|
||||
<div class="modal-dialog" style="width:1095px;">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h3 class="smaller lighter blue no-margin">东方财富分析</h3>
|
||||
</div>
|
||||
<div class="modal-body" id="dfcf-iframe-body" >
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 定义一个窗口的Div 指标分析数据页面 -->
|
||||
<div id="indicators-window-modal" class="modal fade">
|
||||
<div class="modal-dialog" style="width:1050px;">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h3 class="smaller lighter blue no-margin">股票数据详细指标分析</h3>
|
||||
</div>
|
||||
<div class="modal-body" id="indicators-window-body" >
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- inline scripts related to this page -->
|
||||
<script type="text/javascript">
|
||||
|
||||
//每次动态加载 指标分析窗口
|
||||
function showIndicatorsWindow(code) {
|
||||
var baseUrl = '/api/v1/data/indicators?code='+code; // 没有跨域问题,直接加载
|
||||
$('#indicators-window-body').html( "<h5>数据加载中...请稍候.</h5>" );
|
||||
$('#indicators-window-body').context = $("#indicators-window-body").load(baseUrl);
|
||||
$('#indicators-window-modal').modal('show');
|
||||
}
|
||||
|
||||
//每次动态加载 东方财富窗口
|
||||
function showDFCFWindow(code) {
|
||||
|
||||
var iframe = document.createElement('iframe')
|
||||
// var baseUrl = 'https://emweb.eastmoney.com/PC_HSF10/ShareholderResearch/Index?type=soft&code='+code;
|
||||
var baseUrl = 'https://emweb.eastmoney.com/PC_HSF10/OperationsRequired/Index?type=soft&code='+code;
|
||||
iframe.src = baseUrl;
|
||||
iframe.width = '1060px';
|
||||
iframe.height = '700px';
|
||||
iframe.frameborder = '0';
|
||||
$('#dfcf-iframe-body').empty(); // 先清空数据
|
||||
document.getElementById("dfcf-iframe-body").appendChild(iframe)
|
||||
$('#dfcf-window-modal').modal('show');
|
||||
}
|
||||
|
||||
jQuery(function($) {
|
||||
|
||||
|
||||
$( ".date-picker" ).datepicker({
|
||||
language: 'zh-CN', //设置语言
|
||||
format:"yyyymmdd",
|
||||
showOtherMonths: true,
|
||||
selectOtherMonths: false,
|
||||
autoclose: true,
|
||||
todayHighlight: true,
|
||||
onSelect: function(selected,evnt) {
|
||||
console.log(selected);
|
||||
}
|
||||
}).on('changeDate', function(ev){
|
||||
$('input.column_filter').click();//触发搜索
|
||||
});
|
||||
|
||||
|
||||
var nameParam = $.getUrlVar('table_name');
|
||||
//console.log(nameParam);
|
||||
var myTable = $('#dynamic-table').DataTable( {
|
||||
"select": true,
|
||||
"bFilter": true,
|
||||
"ordering": true,
|
||||
"processing": true,
|
||||
"serverSide": true,
|
||||
"lengthMenu": [[20, 30, 50, 100,1000, -1], [20, 30, 50, 100,1000, "All"]],
|
||||
"language": {
|
||||
"url": "/static/js/datatables.Chinese.json"
|
||||
},
|
||||
"ajax": "/api/v1/api_data?name="+nameParam,
|
||||
"columns": [
|
||||
{% for column in stockWeb.columns %}
|
||||
{ "data": "{{ column }}" },
|
||||
{% end %}
|
||||
]
|
||||
} );
|
||||
|
||||
$('input.column_filter').on( 'keyup click', function () {
|
||||
var i = $(this).parents('div').attr('data-column') ;
|
||||
//console.log(i,"val:",$(this).val());
|
||||
myTable.column(i).search(
|
||||
$(this).val()
|
||||
).draw();
|
||||
});
|
||||
|
||||
$('input.column_filter').click();//第一次点击执行,读取时间信息。
|
||||
|
||||
$.fn.dataTable.Buttons.defaults.dom.container.className = 'dt-buttons btn-overlap btn-group btn-overlap';
|
||||
|
||||
new $.fn.dataTable.Buttons( myTable, {
|
||||
buttons: [
|
||||
{
|
||||
"extend": "copy",
|
||||
"text": "<i class='fa fa-copy bigger-110 pink'></i> <span class='hidden'>Copy to clipboard</span>",
|
||||
"className": "btn btn-white btn-primary btn-bold"
|
||||
},
|
||||
{
|
||||
"extend": "csv",
|
||||
"text": "<i class='fa fa-database bigger-110 orange'></i> <span class='hidden'>Export to CSV</span>",
|
||||
"className": "btn btn-white btn-primary btn-bold"
|
||||
},
|
||||
{
|
||||
"extend": "print",
|
||||
"text": "<i class='fa fa-print bigger-110 grey'></i> <span class='hidden'>Print</span>",
|
||||
"className": "btn btn-white btn-primary btn-bold",
|
||||
autoPrint: false,
|
||||
message: 'This print was produced using the Print button for DataTables'
|
||||
}
|
||||
]
|
||||
} );
|
||||
myTable.buttons().container().appendTo( $('.tableTools-container') );
|
||||
|
||||
})
|
||||
</script>
|
||||
{% end %}
|
||||
@@ -0,0 +1,52 @@
|
||||
{% extends "layout/default.html" %}
|
||||
|
||||
|
||||
{% block main_content %}
|
||||
|
||||
<h3 class="header smaller lighter blue">欢迎使用股票系统。</h3>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="pull-right tableTools-container"></div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-1">
|
||||
<button onclick="showDFCFWindow('SZ000001');" role="button" class="btn btn-sm btn-primary" data-toggle="modal">
|
||||
<i class="ace-icon fa fa-plus"></i>
|
||||
测试弹窗东方财富窗口
|
||||
</button>
|
||||
</div><!-- /.col -->
|
||||
|
||||
<!--<iframe src="https://emweb.eastmoney.com/PC_HSF10/ShareholderResearch/Index?type=soft&code=SZ000001" width="700px" height="700px"></iframe>-->
|
||||
|
||||
<!-- 定义一个窗口的Div 东方财富股票数据页面 -->
|
||||
<div id="dfcf-window-modal" class="modal fade">
|
||||
<div class="modal-dialog" style="width:1010px;">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h3 class="smaller lighter blue no-margin">东方财富分析</h3>
|
||||
</div>
|
||||
<div class="modal-body" id="dfcf-iframe-body" >
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
//每次动态加载 东方财富窗口
|
||||
function showDFCFWindow(code) {
|
||||
|
||||
var iframe = document.createElement('iframe')
|
||||
var baseUrl = 'https://emweb.eastmoney.com/PC_HSF10/ShareholderResearch/Index?type=soft&code='+code;
|
||||
// var baseUrl = 'https://emweb.eastmoney.com/PC_HSF10/OperationsRequired/Index?type=soft&code=';
|
||||
iframe.src = baseUrl;
|
||||
iframe.width = '980px';
|
||||
iframe.height = '700px';
|
||||
iframe.frameborder = '0';
|
||||
$('#iframe-body').empty(); // 先清空数据
|
||||
document.getElementById("dfcf-iframe-body").appendChild(iframe)
|
||||
$('#dfcf-window-modal').modal('show');
|
||||
}
|
||||
</script>
|
||||
|
||||
{% end %}
|
||||
@@ -0,0 +1,44 @@
|
||||
{% extends "layout/default.html" %}
|
||||
|
||||
|
||||
{% block main_content %}
|
||||
|
||||
<h3 class="header smaller lighter blue">欢迎使用股票系统。</h3>
|
||||
|
||||
<div class="clearfix">
|
||||
<div class="pull-right tableTools-container"></div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-1">
|
||||
<button onclick="showIndicatorsWindow('000001');" role="button" class="btn btn-sm btn-primary" data-toggle="modal">
|
||||
<i class="ace-icon fa fa-plus"></i>
|
||||
测试弹窗指标分析窗口
|
||||
</button>
|
||||
</div><!-- /.col -->
|
||||
|
||||
<!--<iframe src="https://emweb.eastmoney.com/PC_HSF10/ShareholderResearch/Index?type=soft&code=SZ000001" width="700px" height="700px"></iframe>-->
|
||||
|
||||
<!-- 定义一个窗口的Div 指标分析数据页面 -->
|
||||
<div id="indicators-window-modal" class="modal fade">
|
||||
<div class="modal-dialog" style="width:1050px;">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||
<h3 class="smaller lighter blue no-margin">股票数据详细指标分析</h3>
|
||||
</div>
|
||||
<div class="modal-body" id="indicators-window-body" >
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
//每次动态加载 指标分析窗口
|
||||
function showIndicatorsWindow(code) {
|
||||
var baseUrl = '/data/indicators?code='+code; // 没有跨域问题,直接加载
|
||||
$('#indicators-window-body').context = $("#indicators-window-body").load(baseUrl);
|
||||
$('#indicators-window-modal').modal('show');
|
||||
}
|
||||
</script>
|
||||
|
||||
{% end %}
|
||||
Reference in New Issue
Block a user