first commit
This commit is contained in:
@@ -0,0 +1,198 @@
|
||||
// 日期选择
|
||||
// By Ziyue(http://www.web-v.com/)
|
||||
var months = new Array("一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月");
|
||||
var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
|
||||
var days = new Array("日","一", "二", "三", "四", "五", "六");
|
||||
var today;
|
||||
|
||||
document.writeln("<div id='Calendar' style='position:absolute; z-index:1; visibility: hidden; filter:\"progid:DXImageTransform.Microsoft.Shadow(direction=135,color=#999999,strength=3)\"'></div>");
|
||||
|
||||
function getDays(month, year)
|
||||
{
|
||||
//下面的这段代码是判断当前是否是闰年的
|
||||
if (1 == month)
|
||||
return ((0 == year % 4) && (0 != (year % 100))) || (0 == year % 400) ? 29 : 28;
|
||||
else
|
||||
return daysInMonth[month];
|
||||
}
|
||||
|
||||
function getToday()
|
||||
{
|
||||
//得到今天的年,月,日
|
||||
this.now = new Date();
|
||||
this.year = this.now.getFullYear();
|
||||
this.month = this.now.getMonth();
|
||||
this.day = this.now.getDate();
|
||||
}
|
||||
|
||||
function getStringDay(str)
|
||||
{
|
||||
//得到输入框的年,月,日
|
||||
var str=str.split("-")
|
||||
|
||||
this.now = new Date(parseFloat(str[0]),parseFloat(str[1])-1,parseFloat(str[2]));
|
||||
this.year = this.now.getFullYear();
|
||||
this.month = this.now.getMonth();
|
||||
this.day = this.now.getDate();
|
||||
}
|
||||
|
||||
function newCalendar() {
|
||||
//var parseYear = parseInt(document.all.Year.options[document.all.Year.selectedIndex].value);
|
||||
var parseYear = parseInt(document.getElementById('Year').options[document.getElementById('Year').selectedIndex].value);
|
||||
//var newCal = new Date(parseYear, document.all.Month.selectedIndex, 1);
|
||||
var newCal = new Date(parseYear, document.getElementById('Month').selectedIndex, 1);
|
||||
var day = -1;
|
||||
var startDay = newCal.getDay();
|
||||
var daily = 0;
|
||||
|
||||
if ((today.year == newCal.getFullYear()) &&(today.month == newCal.getMonth()))
|
||||
day = today.day;
|
||||
|
||||
var tableCal = document.getElementById('calendar');
|
||||
var intDaysInMonth =getDays(newCal.getMonth(), newCal.getFullYear());
|
||||
|
||||
for (var intWeek = 1; intWeek < tableCal.rows.length;intWeek++)
|
||||
for (var intDay = 0;intDay < tableCal.rows[intWeek].cells.length;intDay++)
|
||||
{
|
||||
var cell = tableCal.rows[intWeek].cells[intDay];
|
||||
if ((intDay == startDay) && (0 == daily))
|
||||
daily = 1;
|
||||
|
||||
if(day==daily) //今天,调用今天的Class
|
||||
{
|
||||
cell.style.background='#6699CC';
|
||||
cell.style.color='#FFFFFF';
|
||||
//cell.style.fontWeight='bold';
|
||||
}
|
||||
else if(intDay==6) //周六
|
||||
cell.style.color='green';
|
||||
else if (intDay==0) //周日
|
||||
cell.style.color='red';
|
||||
|
||||
if ((daily > 0) && (daily <= intDaysInMonth))
|
||||
{
|
||||
cell.innerText = daily;
|
||||
daily++;
|
||||
}
|
||||
else
|
||||
cell.innerText = "";
|
||||
}
|
||||
}
|
||||
|
||||
function GetDate(InputBox)
|
||||
{
|
||||
var sDate;
|
||||
//这段代码处理鼠标点击的情况
|
||||
if (event.srcElement.tagName == "TD")
|
||||
if (event.srcElement.innerText != "")
|
||||
{
|
||||
sDate = document.getElementById('Year').value + "-" + document.getElementById('Month').value + "-" + event.srcElement.innerText;
|
||||
//eval("document.all."+InputBox).value=sDate;
|
||||
document.getElementById(InputBox).value=sDate;
|
||||
HiddenCalendar();
|
||||
}
|
||||
}
|
||||
|
||||
function HiddenCalendar()
|
||||
{
|
||||
//关闭选择窗口
|
||||
document.getElementById('Calendar').style.visibility='hidden';
|
||||
}
|
||||
|
||||
function ShowCalendar(InputBox)
|
||||
{
|
||||
var x,y,intLoop,intWeeks,intDays;
|
||||
var DivContent;
|
||||
var year,month,day;
|
||||
//var o=eval("document.getElementById("+InputBox+")");
|
||||
o=document.getElementById(InputBox);
|
||||
var thisyear; //真正的今年年份
|
||||
|
||||
thisyear=new getToday();
|
||||
thisyear=thisyear.year;
|
||||
|
||||
today = o.value;
|
||||
if(isDate(today))
|
||||
today = new getStringDay(today);
|
||||
else
|
||||
today = new getToday();
|
||||
|
||||
//显示的位置
|
||||
x=o.offsetLeft;
|
||||
y=o.offsetTop;
|
||||
while(o=o.offsetParent)
|
||||
{
|
||||
x+=o.offsetLeft;
|
||||
y+=o.offsetTop;
|
||||
}
|
||||
//document.all.Calendar.style.left=x+2;
|
||||
//document.all.Calendar.style.top=y+20;
|
||||
//document.all.Calendar.style.visibility="visible";
|
||||
document.getElementById('Calendar').style.left=x+2;
|
||||
document.getElementById('Calendar').style.top=y+20;
|
||||
document.getElementById('Calendar').style.visibility="visible";
|
||||
|
||||
//下面开始输出日历表格(border-color:#9DBAF7)
|
||||
DivContent="<table border='0' cellspacing='0' style='border:1px solid #0066FF; background-color:#EDF2FC'>";
|
||||
DivContent+="<tr>";
|
||||
DivContent+="<td style='border-bottom:1px solid #0066FF; background-color:#C7D8FA'>";
|
||||
|
||||
//年
|
||||
DivContent+="<select name='Year' id='Year' onChange='newCalendar()' style='font-family:Verdana; font-size:12px'>";
|
||||
for (intLoop = thisyear - 10; intLoop < (thisyear + 3); intLoop++)
|
||||
DivContent+="<option value= " + intLoop + " " + (today.year == intLoop ? "Selected" : "") + ">" + intLoop + "</option>";
|
||||
DivContent+="</select>";
|
||||
|
||||
//月
|
||||
DivContent+="<select name='Month' id='Month' onChange='newCalendar()' style='font-family:Verdana; font-size:12px'>";
|
||||
for (intLoop = 0; intLoop < months.length; intLoop++)
|
||||
DivContent+="<option value= " + (intLoop + 1) + " " + (today.month == intLoop ? "Selected" : "") + ">" + months[intLoop] + "</option>";
|
||||
DivContent+="</select>";
|
||||
|
||||
DivContent+="</td>";
|
||||
|
||||
DivContent+="<td style='border-bottom:1px solid #0066FF; background-color:#C7D8FA; font-weight:bold; font-family:Wingdings 2,Wingdings,Webdings; font-size:16px; padding-top:2px; color:#4477FF; cursor:hand' align='center' title='关闭' onClick='javascript:HiddenCalendar()'>S</td>";
|
||||
DivContent+="</tr>";
|
||||
|
||||
DivContent+="<tr><td align='center' colspan='2'>";
|
||||
DivContent+="<table id='calendar' border='0' width='100%'>";
|
||||
|
||||
//星期
|
||||
DivContent+="<tr>";
|
||||
for (intLoop = 0; intLoop < days.length; intLoop++)
|
||||
DivContent+="<td align='center' style='font-size:12px'>" + days[intLoop] + "</td>";
|
||||
DivContent+="</tr>";
|
||||
|
||||
//天
|
||||
for (intWeeks = 0; intWeeks < 6; intWeeks++)
|
||||
{
|
||||
DivContent+="<tr>";
|
||||
for (intDays = 0; intDays < days.length; intDays++)
|
||||
DivContent+="<td onClick='GetDate(\"" + InputBox + "\")' style='cursor:hand; border-right:1px solid #BBBBBB; border-bottom:1px solid #BBBBBB; color:#215DC6; font-family:Verdana; font-size:12px' align='center'></td>";
|
||||
DivContent+="</tr>";
|
||||
}
|
||||
DivContent+="</table></td></tr></table>";
|
||||
|
||||
//document.all.Calendar.innerHTML=DivContent;
|
||||
document.getElementById('Calendar').innerHTML=DivContent;
|
||||
newCalendar();
|
||||
}
|
||||
|
||||
function isDate(dateStr)
|
||||
{
|
||||
var datePat = /^(\d{4})(\-)(\d{1,2})(\-)(\d{1,2})$/;
|
||||
var matchArray = dateStr.match(datePat);
|
||||
if (matchArray == null) return false;
|
||||
var month = matchArray[3];
|
||||
var day = matchArray[5];
|
||||
var year = matchArray[1];
|
||||
if (month < 1 || month > 12) return false;
|
||||
if (day < 1 || day > 31) return false;
|
||||
if ((month==4 || month==6 || month==9 || month==11) && day==31) return false;
|
||||
if (month == 2)
|
||||
{
|
||||
var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
|
||||
if (day > 29 || (day==29 && !isleap)) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -0,0 +1,119 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
</head>
|
||||
<?php
|
||||
ini_set('error_reporting', E_ALL);
|
||||
|
||||
$mysqli = new mysqli('localhost','root','nancysimon','myquant');
|
||||
|
||||
$ts_code = '000001.SH';
|
||||
$day_st = '20190101';
|
||||
$day_end = '20190701';
|
||||
$where = " and trade_date>'".$day_st."'";
|
||||
if($day_end) $where .= " and trade_date <'".$day_end."'";
|
||||
$date_range = "and trade_date";
|
||||
$sql= <<<EOF
|
||||
select trade_date, close from index_hist_pro where ts_code = '$ts_code' $where order by trade_date asc
|
||||
EOF;
|
||||
#echo $sql;
|
||||
$result = $mysqli->query($sql);
|
||||
|
||||
$tDate=array('交易日');
|
||||
$idx=array('上证指数');
|
||||
|
||||
if($result && $result->num_rows>0) {
|
||||
#$data = $result->fetch_all();
|
||||
while($row=$result->fetch_assoc()){
|
||||
array_push($tDate,$row['trade_date']);
|
||||
array_push($idx,$row['close']);
|
||||
}
|
||||
}
|
||||
#Free result and close connection.
|
||||
$result->free();
|
||||
$mysqli->close();
|
||||
?>
|
||||
<body style="height: 100%; margin: 0">
|
||||
<!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
|
||||
<div id="container" style="height: 400px;width: 600px"></div>
|
||||
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/echarts.min.js"></script>
|
||||
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts-gl/echarts-gl.min.js"></script>
|
||||
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts-stat/ecStat.min.js"></script>
|
||||
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/extension/dataTool.min.js"></script>
|
||||
<script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/simplex.js"></script>
|
||||
<script type="text/javascript">
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom);
|
||||
var app = {};
|
||||
option = null;
|
||||
option = {
|
||||
title: {
|
||||
text: '折线图堆叠'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:['邮件营销','联盟广告','视频广告','直接访问','搜索引擎']
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: ['周一','周二','周三','周四','周五','周六','周日']
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name:'邮件营销',
|
||||
type:'line',
|
||||
stack: '总量',
|
||||
data:[120, 132, 101, 134, 90, 230, 210]
|
||||
},
|
||||
{
|
||||
name:'联盟广告',
|
||||
type:'line',
|
||||
stack: '总量',
|
||||
data:[220, 182, 191, 234, 290, 330, 310]
|
||||
},
|
||||
{
|
||||
name:'视频广告',
|
||||
type:'line',
|
||||
stack: '总量',
|
||||
data:[150, 232, 201, 154, 190, 330, 410]
|
||||
},
|
||||
{
|
||||
name:'直接访问',
|
||||
type:'line',
|
||||
stack: '总量',
|
||||
data:[320, 332, 301, 334, 390, 330, 320]
|
||||
},
|
||||
{
|
||||
name:'搜索引擎',
|
||||
type:'line',
|
||||
stack: '总量',
|
||||
data:[820, 932, 901, 934, 1290, 1330, 1320]
|
||||
}
|
||||
]
|
||||
};
|
||||
;
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,93 @@
|
||||
<!DOCTYPE html>
|
||||
<html style="height: 100%">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<?php
|
||||
ini_set('error_reporting', E_ALL);
|
||||
include_once "inc/getData.inc.php";
|
||||
$day_st='20180101';
|
||||
$day_end=date('Ymd');
|
||||
$data=getIndexData('000001.SH',$day_st,$day_end);
|
||||
$data1=getIndexData('399001.SZ',$day_st,$day_end);
|
||||
$legend=array('上证综指','深证成指');
|
||||
?>
|
||||
<body style="height: 100%; margin: 0">
|
||||
<div id="container" style="height: 400px;width: 1000px"></div>
|
||||
<script type="text/javascript" src="../js/echarts.min.js"></script>
|
||||
<script type="text/javascript" src="../js/echarts-gl.min.js"></script>
|
||||
<script type="text/javascript" src="../js/ecStat.min.js"></script>
|
||||
<script type="text/javascript" src="../js/dataTool.min.js"></script>
|
||||
<script type="text/javascript" src="../js/simplex.js"></script>
|
||||
<script type="text/javascript" src="../js/grey.js"></script>
|
||||
<script type="text/javascript">
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom,'grey');
|
||||
var app = {};
|
||||
option = null;
|
||||
legend = <?php echo json_encode($legend);?>;
|
||||
option = {
|
||||
title: {
|
||||
text: '历史数据折线图',
|
||||
subtext:"双轴显示",
|
||||
textAlign:'center',
|
||||
left:'50%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:legend,
|
||||
right:'20'
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
//type: 'time',
|
||||
boundaryGap: false,
|
||||
data: <?php echo json_encode($data['tDate']); ?>
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:legend[0], //图列
|
||||
show:true
|
||||
},
|
||||
{
|
||||
type:'value',
|
||||
name:legend[1], //图例
|
||||
//scale:true, //true 不强制包含0刻度
|
||||
boundaryGap:false,
|
||||
show:true
|
||||
}],
|
||||
series: [
|
||||
{
|
||||
name:legend[0],
|
||||
type:'line',
|
||||
yAxisIndex:0,
|
||||
data:<?php echo json_encode($data['idx']); ?>
|
||||
},
|
||||
{
|
||||
name:legend[1],
|
||||
type:'line',
|
||||
yAxisIndex:1,
|
||||
data:<?php echo json_encode($data1['idx']); ?>
|
||||
}
|
||||
]
|
||||
};
|
||||
;
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by Simon
|
||||
* For stock index compare and draw in echart
|
||||
* Date: 2019/5/26
|
||||
*
|
||||
**/
|
||||
#set dispay_errors to adjust when coding
|
||||
ini_set('display_errors',1);
|
||||
?>
|
||||
<form name ="myform" id="myform" method="post">
|
||||
|
||||
<input type="hidden" name="x" id= "x" value='<?php //echo json_encode=($l_x)?>' />
|
||||
</form>
|
||||
<script src='../lib/echarts.min.js'></script>
|
||||
<script src='js/itrend.basic.js'
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
ini_set("display_errors","On");
|
||||
ini_set('error_reporting', 'E_ALL & ~E_NOTICE');
|
||||
include_once("getBasic.inc.php");
|
||||
$link = mysqli_connect('localhost', 'root', 'nancysimon', 'myquant');
|
||||
|
||||
if (!$link) {
|
||||
die('Connect Error (' . mysqli_connect_errno() . ') '
|
||||
. mysqli_connect_error());
|
||||
}
|
||||
|
||||
echo 'Success... ' . mysqli_get_host_info($link) . "\n";
|
||||
|
||||
mysqli_close($link);
|
||||
log_pv();
|
||||
?>
|
||||
@@ -0,0 +1,107 @@
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">股票代码:</label>
|
||||
<div class="layui-input-block" id="ccc">
|
||||
<input type="text" name="stockcode" value="{$data.stockcode}" autocomplete="off" class="layui-input" id="kw" onKeyup="getContent(this);">
|
||||
<div id="append"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">股票名称:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="stockname" value="{$data.stockname}" autocomplete="off" class="layui-input" id="codename">
|
||||
<input type="hidden" name="" value="" class="layui-input" id="hiddenname">
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
$(document).keydown(function(e){
|
||||
e = e || window.event;
|
||||
var keycode = e.which ? e.which : e.keyCode;
|
||||
if(keycode == 38){
|
||||
if(jQuery.trim($("#append").html())==""){
|
||||
return;
|
||||
}
|
||||
movePrev();
|
||||
}else if(keycode == 40){
|
||||
if(jQuery.trim($("#append").html())==""){
|
||||
return;
|
||||
}
|
||||
$("#kw").blur();
|
||||
if($(".item").hasClass("addbg")){
|
||||
moveNext();
|
||||
}else{
|
||||
$(".item").removeClass('addbg').eq(0).addClass('addbg');
|
||||
}
|
||||
|
||||
}else if(keycode == 13){
|
||||
dojob();
|
||||
}
|
||||
});
|
||||
|
||||
var movePrev = function(){
|
||||
$("#kw").blur();
|
||||
var index = $(".addbg").prevAll().length;
|
||||
if(index == 0){
|
||||
$(".item").removeClass('addbg').eq($(".item").length-1).addClass('addbg');
|
||||
}else{
|
||||
$(".item").removeClass('addbg').eq(index-1).addClass('addbg');
|
||||
}
|
||||
}
|
||||
|
||||
var moveNext = function(){
|
||||
var index = $(".addbg").prevAll().length;
|
||||
if(index == $(".item").length-1){
|
||||
$(".item").removeClass('addbg').eq(0).addClass('addbg');
|
||||
}else{
|
||||
$(".item").removeClass('addbg').eq(index+1).addClass('addbg');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var dojob = function(){
|
||||
$("#kw").blur();
|
||||
var value = $(".addbg").text();
|
||||
$("#kw").val(value);
|
||||
$("#append").hide().html("");
|
||||
}
|
||||
});
|
||||
function getContent(obj){
|
||||
var kw = jQuery.trim($(obj).val());
|
||||
if(kw == ""){
|
||||
$("#append").hide().html("");
|
||||
return false;
|
||||
}
|
||||
$.ajax({
|
||||
url:"{:U('question/stock')}",
|
||||
data:{"key":kw},
|
||||
dataType:"json",
|
||||
type:"POST",
|
||||
success:function(data){
|
||||
var html = "";
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
if (data[i][0].indexOf(kw) >= 0) {
|
||||
html = html + "<div namelist="+data[i][4]+" codelist="+data[i][0]+" class='item' onmouseenter='getFocus(this)' onClick='getCon(this);'>"+data[i][0]+"--"+data[i][4]+"</div>"
|
||||
}
|
||||
}
|
||||
if(html != ""){
|
||||
$("#append").show().html(html);
|
||||
}else{
|
||||
$("#append").hide().html("");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
function getFocus(obj){
|
||||
$(".item").removeClass("addbg");
|
||||
$(obj).addClass("addbg");
|
||||
}
|
||||
function getCon(obj){
|
||||
var value = $(obj).attr('codelist')
|
||||
var name = $(obj).attr('namelist');
|
||||
console.log(name)
|
||||
$("#kw").val(value);
|
||||
$("#codename").val(name);
|
||||
$("#append").hide().html("");
|
||||
}
|
||||
</script>
|
||||
Vendored
+22
@@ -0,0 +1,22 @@
|
||||
{
|
||||
// 使用 IntelliSense 了解相关属性。
|
||||
// 悬停以查看现有属性的描述。
|
||||
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Listen for XDebug",
|
||||
"type": "php",
|
||||
"request": "launch",
|
||||
"port": 9000
|
||||
},
|
||||
{
|
||||
"name": "Launch currently open script",
|
||||
"type": "php",
|
||||
"request": "launch",
|
||||
"program": "${file}",
|
||||
"cwd": "${fileDirname}",
|
||||
"port": 9000
|
||||
}
|
||||
]
|
||||
}
|
||||
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"python.linting.flake8Enabled": true,
|
||||
"python.formatting.provider": "yapf",
|
||||
"python.linting.flake8Args": ["--max-line-length=248"],
|
||||
"python.linting.pylintEnabled": false
|
||||
}
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "doorcome",
|
||||
"host": "doorcome.cn",
|
||||
"protocol": "sftp",
|
||||
"port": 5005,
|
||||
"username": "simon",
|
||||
"remotePath": "/var/www/html/echart",
|
||||
"uploadOnSave": true,
|
||||
"useTempFile": false,
|
||||
"openSsh": false
|
||||
}
|
||||
+124
@@ -0,0 +1,124 @@
|
||||
<?php
|
||||
include_once "inc/getBasic.inc.php";
|
||||
include_once "inc/getData.inc.php";
|
||||
include_once "html/headChart.php"; //required after $ts_code and $ts_name,maybe doesn't matter
|
||||
$ts_code=$_REQUEST['code'];
|
||||
#echo $ts_code;
|
||||
$item=$_REQUEST['item'];
|
||||
$day_st=($_REQUEST['s']=='')?'20120101':$_REQUEST['s'];
|
||||
$day_end=($_REQUEST['e']=='')?date('Ymd'):$_REQUEST['e'];
|
||||
if($item == 'total_mv' or $item=='circ_mv') $unit='-万亿';
|
||||
else $unit = ''; # Without a unit on PE
|
||||
#var_dump($lx);
|
||||
$data=getIndexData(codetocode($ts_code),$day_st,$day_end);
|
||||
$data2 = getBasicExtData($ts_code,$item,$day_st,$day_end);
|
||||
#var_dump($data2);
|
||||
$ts_name = codeToName($ts_code);
|
||||
if($item=='total_mv_all') $item_name = '总市值';
|
||||
elseif($item=='circ_mv_all') $item_name = '流通市值';
|
||||
else $item_name=$item;
|
||||
$legend=array($ts_name,'深证成指',$item_name);
|
||||
#$value=json_encode($data['data']);
|
||||
$subtext_ext = "Max: ".$data2['data_max'];
|
||||
$subtext_ext .= ", Min: ".$data2['data_min'];
|
||||
$subtext_ext .= ", Average: ".$data2['data_avg'];
|
||||
$subtext_ext .= ", Recent: ".$data2['data_last'];
|
||||
$unit='-万亿';
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom,'dark');
|
||||
var app = {};
|
||||
option = null;
|
||||
legend = <?php echo json_encode($legend);?>;
|
||||
unit ='<?php echo $unit; ?>';
|
||||
var subtxt = '<?php echo $subtext_ext; ?>';
|
||||
option = {
|
||||
title: {
|
||||
text: legend[0]+' V.S '+legend[2],
|
||||
subtext: subtxt,
|
||||
textAlign:'center',
|
||||
left:'50%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:legend,
|
||||
right:'20'
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
//type: 'category',
|
||||
type: 'time',
|
||||
boundaryGap: false
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:legend[0], //图列
|
||||
show:true
|
||||
},
|
||||
{
|
||||
type:'value',
|
||||
name:legend[2]+unit, //图例
|
||||
//scale:true,
|
||||
boundaryGap:false,
|
||||
show:true,
|
||||
splitLine:{
|
||||
show:false, //Y2 坐标刻度横线
|
||||
},
|
||||
}
|
||||
],
|
||||
dataZoom: [{
|
||||
type: 'inside', //or slider
|
||||
start: 0,
|
||||
end: 100
|
||||
}, {
|
||||
start: 0,
|
||||
end: 100,
|
||||
handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
|
||||
handleSize: '80%',
|
||||
handleStyle: {
|
||||
color: '#fff',
|
||||
shadowBlur: 3,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.6)',
|
||||
shadowOffsetX: 2,
|
||||
shadowOffsetY: 2
|
||||
}
|
||||
}],
|
||||
series: [
|
||||
{
|
||||
name:legend[0],
|
||||
type:'line',
|
||||
yAxisIndex:0,
|
||||
symbol:'none',
|
||||
data:<?php echo json_encode($data['data']); ?>
|
||||
},
|
||||
{
|
||||
name:legend[2],
|
||||
type:'line',
|
||||
yAxisIndex:1,
|
||||
symbol:'none', //数据圆点
|
||||
smooth:false,
|
||||
data:<?php echo json_encode($data2['data']); ?>
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
#查询个股价格对应PE_TTM, PB, PS的长期趋势数据
|
||||
include_once "inc/getBasic.inc.php" ;
|
||||
include_once "inc/getData.inc.php";
|
||||
include_once "html/headChart.php"; //required after $ts_code and $ts_name,maybe doesn't matter
|
||||
$ts_code=ts_code_conv($_REQUEST['ts_code']);
|
||||
$day_st=($_REQUEST['s']=='')?'20120101':$_REQUEST['s'];
|
||||
$day_end=($_REQUEST['e']=='')?date('Ymd'):$_REQUEST['e'];
|
||||
$item = ($_REQUEST['item']=='')?'pe_ttm':$_REQUEST['item'];
|
||||
$unit = ''; # Without a unit on PE
|
||||
$data = getStockHist($ts_code,$day_st,$day_end);
|
||||
$data2 = getBasicData($ts_code,$day_st,$day_end,$item);
|
||||
|
||||
#var_dump($data2['data']);
|
||||
$subtext_ext = "Max: ".$data2['data_max'];
|
||||
$subtext_ext .= ", Min: ".$data2['data_min'];
|
||||
$subtext_ext .= ", Average: ".$data2['data_avg'];
|
||||
$subtext_ext .= ", Recent: ".$data2['data_last'];
|
||||
$ts_name = tscodeToName($ts_code);
|
||||
$legend=array('不复权股价','深证成指',strtoupper($item));
|
||||
#$value=json_encode($data['data']);
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
var data1 = <?php echo json_encode($data['data']); ?>;
|
||||
var data2 =<?php echo json_encode($data2['data']); ?>;
|
||||
var legend = <?php echo json_encode($legend);?>;
|
||||
var unit ='<?php echo $unit; ?>';
|
||||
var headtxt = '<?php echo $ts_name.'('.$ts_code.')'; ?>';
|
||||
var subtxt = '<?php echo $subtext_ext; ?>';
|
||||
</script>
|
||||
<script type="text/javascript" src="js/chartFore.js?ver=3.14"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
#查询个股价格对应机构持仓的数量
|
||||
include_once "inc/getBasic.inc.php";
|
||||
include_once "inc/getData.inc.php";
|
||||
|
||||
$ts_code=ts_code_conv($_REQUEST['ts_code']);
|
||||
$ts_name = tscodeToName($ts_code);
|
||||
include_once "html/headChart.php"; //required after $ts_code and $ts_name
|
||||
|
||||
$day_st=($_REQUEST['s']=='')?'2012-01-01':$_REQUEST['s'];
|
||||
$day_end=($_REQUEST['e']=='')?date('Y-m-d'):$_REQUEST['e'];
|
||||
#item: f9:持股数 f10:持股额 f11:占总股本比例 f12:占流通股比例
|
||||
$item = ($_REQUEST['item']=='')?'f9':$_REQUEST['item'];
|
||||
|
||||
switch($item){
|
||||
case 'f9':
|
||||
case 'F9':
|
||||
$unit = ' - 万股';
|
||||
$item_name = "持股数";
|
||||
break;
|
||||
case 'f10':
|
||||
case 'F10':
|
||||
$unit = ' - 万元';
|
||||
$item_name = "持股金额";
|
||||
break;
|
||||
case 'f11':
|
||||
case 'F11':
|
||||
$unit = ' - %';
|
||||
$item_name = "总股本股比例";
|
||||
break;
|
||||
case 'f12':
|
||||
case 'F12':
|
||||
$unit = ' - %';
|
||||
$item_name = "流通股比例";
|
||||
break;
|
||||
default:
|
||||
$unit = '';
|
||||
}
|
||||
$data = getStockHist($ts_code,$day_st,$day_end);
|
||||
$lx = ''; //define null var avoid error
|
||||
$data2 = getIhDataByStock($ts_code,$item,$lx,$day_st,$day_end);
|
||||
|
||||
#var_dump($data2['data']);
|
||||
$subtext_ext = "Max: ".$data2['data_max'];
|
||||
$subtext_ext .= ", Min: ".$data2['data_min'];
|
||||
$subtext_ext .= ", Average: ".$data2['data_avg'];
|
||||
$subtext_ext .= ", Recent: ".$data2['data_last'];
|
||||
|
||||
$legend=array('不复权股价','深证成指',$item_name);
|
||||
#$value=json_encode($data['data']);
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
var data1 = <?php echo json_encode($data['data']); ?>;
|
||||
var data2 =<?php echo json_encode($data2['data']); ?>;
|
||||
var legend = <?php echo json_encode($legend);?>;
|
||||
var unit ='<?php echo $unit; ?>';
|
||||
var headtxt = '<?php echo $ts_name.'('.$ts_code.')'; ?>';
|
||||
var subtxt = '<?php echo $subtext_ext; ?>';
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" src="js/chartSix.js?ver=3.141"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
$mysqli = new mysqli('localhost','root','nancysimon','myquant');
|
||||
include_once dirname(__FILE__) . "/inc/getBasic.inc.php";
|
||||
include_once dirname(__FILE__) . "/inc/getData.inc.php";
|
||||
include_once dirname(__FILE__) . "/inc/tradeRec.inc.php";
|
||||
include_once __DIR__ . "/html/headChart.php";
|
||||
$ts_code= ts_code_conv($_REQUEST['ts_code']);
|
||||
$day_st = ($_REQUEST['s']=='')?'20180101':reformDate($_REQUEST['s']);
|
||||
$day_end= ($_REQUEST['e']=='')?date('Ymd'):reformDate($_REQUEST['e']);
|
||||
|
||||
$unit = '股'; # Without a unit on PE
|
||||
$data = getStockHist($ts_code,date("Ymd",strtotime($day_st)),date("Ymd",strtotime($day_end)));
|
||||
//$data2 = getBasicData($ts_code,$day_st,$day_end,$item);
|
||||
if($_REQUEST['t_vendor']=='方正证券') {$flg3 = '买入'; $flg4 = '卖出';}
|
||||
elseif($_REQUEST['t_vendor']=='长江证券') {$flg3 = '证券买入'; $flg4 = '证券卖出';}
|
||||
$trdData = trade_rec($ts_code, $day_st, $day_end,'');
|
||||
$data3 = recDataSort($trdData,$flg3);
|
||||
$data4 = recDataSort($trdData,$flg4);
|
||||
$data3Avg = avePrice($data3['tvol'],$data3['tprice']);
|
||||
$data4Avg = avePrice($data4['tvol'],$data4['tprice']);
|
||||
|
||||
$subtext_ext = " {$flg3}均价: {$data3Avg['avePrice']}, 量{$data3Avg['ttlVol']}股 ";
|
||||
$subtext_ext .= "-- {$flg4}均价: {$data4Avg['avePrice']}, 量{$data4Avg['ttlVol']}股 ";
|
||||
|
||||
$ts_name = tscodeToName($ts_code);
|
||||
$legend = array('不复权股价','交易买入','交易卖出','买入量','卖出量');
|
||||
if($_REQUEST['adj']) $legend[0]='复权股价';
|
||||
?>
|
||||
<form name="form1" id="form1" method="post">
|
||||
<input type="hidden" name="adj" id="adj" value="<?=$_REQUEST['adj'] ?>">
|
||||
<input type="hidden" name="ts_code" id="ts_code" value="<?=$ts_code ?>">
|
||||
<input type="hidden" name="s" id="s" value="<?=$day_st ?>">
|
||||
<input type="hidden" name="e" id="e" value="<?=$day_end ?>">
|
||||
|
||||
</form>
|
||||
<script type="text/javascript">
|
||||
var legend = <?php echo json_encode($legend);?>;
|
||||
var unit ='<?=$unit ?>';
|
||||
var headtxt = '<?php echo $ts_name.'('.$ts_code.')'; ?>';
|
||||
var subtxt = '<?=$subtext_ext ?>';
|
||||
var data1 = <?php echo json_encode($data['data']); ?>;
|
||||
var data2 = <?php echo json_encode($data3['data']); ?>;
|
||||
var data3 = <?php echo json_encode($data4['data']); ?>;
|
||||
var data4 = <?php echo json_encode($data3['data2']); ?>;
|
||||
var data5 = <?php echo json_encode($data4['data2']); ?>;
|
||||
|
||||
console.log(data1[0]['value'][0]);
|
||||
console.log(data1[0]['value'][1]);
|
||||
</script>
|
||||
<script type="text/javascript" src="js/adj.ajax.js?verion=3.14"></script>
|
||||
<script>
|
||||
console.log(data1[0]['value'][0]);
|
||||
console.log(data1[0]['value'][1]);
|
||||
</script>
|
||||
<script type="text/javascript" src="js/chartStDetail.js?version=3.16"></script>
|
||||
</body>
|
||||
</html>
|
||||
+115
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
include_once "inc/getData.inc.php";
|
||||
include_once "html/headChart.php"; //required after $ts_code and $ts_name,maybe doesn't matter
|
||||
$day_st=$_REQUEST['s']?$_REQUEST['s']:'2006-01-01';
|
||||
$day_end=$_REQUEST['e']?$_REQUEST['e']:date('Y-m-d');
|
||||
#$day_st_='2006-01-01';
|
||||
#$day_end_=date('Y-m-d');
|
||||
$lx=isset($lx)?$lx:$_REQUEST['lx'];
|
||||
$share =$_REQUEST['share'];
|
||||
$share = ($share)?$share:'ShareHDNum';
|
||||
if($share=='ShareHDNum') $unit = '(亿股)';
|
||||
elseif($share=='vPosition') $unit = '(亿元)';
|
||||
elseif($share=='VSRatio') $unit = '(元)';
|
||||
#var_dump($lx);
|
||||
$data=getIndexData('000001.SH',$day_st,$day_end);
|
||||
#$data1=getIndexData('399001.SZ',$day_st,$day_end);
|
||||
$data2=getIhData($lx,$share,$day_st,$day_end);
|
||||
$legend=array('上证综指','深证成指',lxDefine($lx));
|
||||
#$value=json_encode($data['data']);
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom,'dark');
|
||||
var app = {};
|
||||
option = null;
|
||||
legend = <?php echo json_encode($legend);?>;
|
||||
unit ='<?php echo $unit; ?>';
|
||||
option = {
|
||||
title: {
|
||||
text: legend[0]+' V.S '+legend[2],
|
||||
//subtext:"双轴显示",
|
||||
textAlign:'center',
|
||||
left:'50%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:legend,
|
||||
right:'20'
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
//type: 'category',
|
||||
type: 'time',
|
||||
boundaryGap: false
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:legend[0], //图列
|
||||
show:true
|
||||
},
|
||||
{
|
||||
type:'value',
|
||||
name:legend[2]+unit, //图例
|
||||
//scale:true,
|
||||
boundaryGap:false,
|
||||
show:true,
|
||||
splitLine:{
|
||||
show:false, //Y2 坐标刻度横线
|
||||
},
|
||||
}
|
||||
],
|
||||
dataZoom: [{
|
||||
type: 'slider', //or slider
|
||||
start: 0,
|
||||
end: 100
|
||||
}, {
|
||||
start: 0,
|
||||
end: 100,
|
||||
handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
|
||||
handleSize: '80%',
|
||||
handleStyle: {
|
||||
color: '#fff',
|
||||
shadowBlur: 3,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.6)',
|
||||
shadowOffsetX: 2,
|
||||
shadowOffsetY: 2
|
||||
}
|
||||
}],
|
||||
series: [
|
||||
{
|
||||
name:legend[0],
|
||||
type:'line',
|
||||
yAxisIndex:0,
|
||||
symbol:'none',
|
||||
data:<?php echo json_encode($data['data']); ?>
|
||||
},
|
||||
{
|
||||
name:legend[2],
|
||||
type:'line',
|
||||
yAxisIndex:1,
|
||||
//symbol:'none',
|
||||
smooth:false,
|
||||
data:<?php echo json_encode($data2['data']); ?>
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
/**
|
||||
* Basic Information Display
|
||||
*
|
||||
* Basic Information and Display as Format HTML Tables.
|
||||
* @package Display
|
||||
* @author Simon <simon.youngest@gmail.com>
|
||||
* @date 2011-3-28
|
||||
* @version 0.1
|
||||
*/
|
||||
class basic_info{
|
||||
|
||||
public $columns; //Number of Column
|
||||
public $rows; //Number of rows
|
||||
public $content; //Content to display,2-D
|
||||
|
||||
/* Array with items<$itemNum; If need add No at 0, use function: array_unshift*/
|
||||
public $titles;
|
||||
/* Main title of Basic Information as: lot information */
|
||||
public $main_title;
|
||||
|
||||
public $num_flag; //Is first column is No? Set 1 if yes.
|
||||
public $aligns; //Align method for each column;
|
||||
public $width;
|
||||
public $display;
|
||||
//Get Formated Display of Content
|
||||
function get_Content_Display(){
|
||||
global $tableTop,$interval;
|
||||
if($this->content[0]==NULL) {
|
||||
$this->display="<p align='center'><font size='3' color='red'><i><b>Query result is null</b></i></font></p>";
|
||||
return;
|
||||
}
|
||||
/* Get number of rows if not defined */
|
||||
if($this->rows == NULL) $this->rows=count($this->content[0]);
|
||||
|
||||
$this->display="<table width='".$this->width."' align='center' >\n";
|
||||
|
||||
/* Main title display */
|
||||
if(strlen($this->main_title)>0) {
|
||||
$this->display.="<tr><td colspan='5' align='center' style='font-size:14px;padding:5px;'><h3>";
|
||||
$this->display.=$this->main_title;
|
||||
$this->display.="</h3></td></tr>\n";
|
||||
}
|
||||
|
||||
/* Get Row number of HTML */
|
||||
$html_row=ceil(count($this->content[0])/2);
|
||||
//display data
|
||||
for($i=0;$i<$html_row;$i++){
|
||||
$j=$i+1;
|
||||
$this->display.="<tr >\n";
|
||||
$this->display.="<td bgcolor='".$tableTop."' width='18%' style='font-size:14px;padding:5px;'>\n";
|
||||
$this->display.=$this->content[0][2*$i];
|
||||
$this->display.="</td><td bgcolor='".$interval."' width='31%' style='font-size:14px;padding:5px;'>\n";
|
||||
$this->display.=$this->content[1][2*$i];
|
||||
$this->display.="</td>\n";
|
||||
$this->display.="<td > </td>\n";
|
||||
$this->display.="<td bgcolor='".$tableTop."' width='18%' style='font-size:14px;padding:5px;'>\n";
|
||||
$this->display.=$this->content[0][2*$i+1];
|
||||
$this->display.="</td><td bgcolor='".$interval."' width='31%' style='font-size:14px;padding:5px;'>\n";
|
||||
$this->display.=$this->content[1][2*$i+1];
|
||||
$this->display.="</td>\n";
|
||||
$this->display.="</tr>\n";
|
||||
}
|
||||
$this->display.="</table>";
|
||||
}
|
||||
|
||||
function display(){
|
||||
echo $this->display;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"require": {
|
||||
"monolog/monolog": "2.0.*",
|
||||
"phpoffice/phpspreadsheet": "^1.18",
|
||||
"ext-json": "*",
|
||||
"ext-mysqli": "*",
|
||||
"ext-curl": "*"
|
||||
}
|
||||
}
|
||||
Generated
+981
@@ -0,0 +1,981 @@
|
||||
{
|
||||
"_readme": [
|
||||
"This file locks the dependencies of your project to a known state",
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "d292afeef339b8706e16baf682993aa0",
|
||||
"packages": [
|
||||
{
|
||||
"name": "ezyang/htmlpurifier",
|
||||
"version": "v4.13.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/ezyang/htmlpurifier.git",
|
||||
"reference": "08e27c97e4c6ed02f37c5b2b20488046c8d90d75"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/08e27c97e4c6ed02f37c5b2b20488046c8d90d75",
|
||||
"reference": "08e27c97e4c6ed02f37c5b2b20488046c8d90d75",
|
||||
"shasum": "",
|
||||
"mirrors": [
|
||||
{
|
||||
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
|
||||
"preferred": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"simpletest/simpletest": "dev-master#72de02a7b80c6bb8864ef9bf66d41d2f58f826bd"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"HTMLPurifier": "library/"
|
||||
},
|
||||
"files": [
|
||||
"library/HTMLPurifier.composer.php"
|
||||
],
|
||||
"exclude-from-classmap": [
|
||||
"/library/HTMLPurifier/Language/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"LGPL-2.1-or-later"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Edward Z. Yang",
|
||||
"email": "admin@htmlpurifier.org",
|
||||
"homepage": "http://ezyang.com"
|
||||
}
|
||||
],
|
||||
"description": "Standards compliant HTML filter written in PHP",
|
||||
"homepage": "http://htmlpurifier.org/",
|
||||
"keywords": [
|
||||
"html"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/ezyang/htmlpurifier/issues",
|
||||
"source": "https://github.com/ezyang/htmlpurifier/tree/master"
|
||||
},
|
||||
"time": "2020-06-29T00:56:53+00:00"
|
||||
},
|
||||
{
|
||||
"name": "maennchen/zipstream-php",
|
||||
"version": "2.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/maennchen/ZipStream-PHP.git",
|
||||
"reference": "c4c5803cc1f93df3d2448478ef79394a5981cc58"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/c4c5803cc1f93df3d2448478ef79394a5981cc58",
|
||||
"reference": "c4c5803cc1f93df3d2448478ef79394a5981cc58",
|
||||
"shasum": "",
|
||||
"mirrors": [
|
||||
{
|
||||
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
|
||||
"preferred": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"require": {
|
||||
"myclabs/php-enum": "^1.5",
|
||||
"php": ">= 7.1",
|
||||
"psr/http-message": "^1.0",
|
||||
"symfony/polyfill-mbstring": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-zip": "*",
|
||||
"guzzlehttp/guzzle": ">= 6.3",
|
||||
"mikey179/vfsstream": "^1.6",
|
||||
"phpunit/phpunit": ">= 7.5"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"ZipStream\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Paul Duncan",
|
||||
"email": "pabs@pablotron.org"
|
||||
},
|
||||
{
|
||||
"name": "Jonatan Männchen",
|
||||
"email": "jonatan@maennchen.ch"
|
||||
},
|
||||
{
|
||||
"name": "Jesse Donat",
|
||||
"email": "donatj@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "András Kolesár",
|
||||
"email": "kolesar@kolesar.hu"
|
||||
}
|
||||
],
|
||||
"description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.",
|
||||
"keywords": [
|
||||
"stream",
|
||||
"zip"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/maennchen/ZipStream-PHP/issues",
|
||||
"source": "https://github.com/maennchen/ZipStream-PHP/tree/master"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://opencollective.com/zipstream",
|
||||
"type": "open_collective"
|
||||
}
|
||||
],
|
||||
"time": "2020-05-30T13:11:16+00:00"
|
||||
},
|
||||
{
|
||||
"name": "markbaker/complex",
|
||||
"version": "2.0.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/MarkBaker/PHPComplex.git",
|
||||
"reference": "6f724d7e04606fd8adaa4e3bb381c3e9db09c946"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/6f724d7e04606fd8adaa4e3bb381c3e9db09c946",
|
||||
"reference": "6f724d7e04606fd8adaa4e3bb381c3e9db09c946",
|
||||
"shasum": "",
|
||||
"mirrors": [
|
||||
{
|
||||
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
|
||||
"preferred": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.2 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
|
||||
"phpcompatibility/php-compatibility": "^9.0",
|
||||
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.3",
|
||||
"squizlabs/php_codesniffer": "^3.4"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Complex\\": "classes/src/"
|
||||
},
|
||||
"files": [
|
||||
"classes/src/functions/abs.php",
|
||||
"classes/src/functions/acos.php",
|
||||
"classes/src/functions/acosh.php",
|
||||
"classes/src/functions/acot.php",
|
||||
"classes/src/functions/acoth.php",
|
||||
"classes/src/functions/acsc.php",
|
||||
"classes/src/functions/acsch.php",
|
||||
"classes/src/functions/argument.php",
|
||||
"classes/src/functions/asec.php",
|
||||
"classes/src/functions/asech.php",
|
||||
"classes/src/functions/asin.php",
|
||||
"classes/src/functions/asinh.php",
|
||||
"classes/src/functions/atan.php",
|
||||
"classes/src/functions/atanh.php",
|
||||
"classes/src/functions/conjugate.php",
|
||||
"classes/src/functions/cos.php",
|
||||
"classes/src/functions/cosh.php",
|
||||
"classes/src/functions/cot.php",
|
||||
"classes/src/functions/coth.php",
|
||||
"classes/src/functions/csc.php",
|
||||
"classes/src/functions/csch.php",
|
||||
"classes/src/functions/exp.php",
|
||||
"classes/src/functions/inverse.php",
|
||||
"classes/src/functions/ln.php",
|
||||
"classes/src/functions/log2.php",
|
||||
"classes/src/functions/log10.php",
|
||||
"classes/src/functions/negative.php",
|
||||
"classes/src/functions/pow.php",
|
||||
"classes/src/functions/rho.php",
|
||||
"classes/src/functions/sec.php",
|
||||
"classes/src/functions/sech.php",
|
||||
"classes/src/functions/sin.php",
|
||||
"classes/src/functions/sinh.php",
|
||||
"classes/src/functions/sqrt.php",
|
||||
"classes/src/functions/tan.php",
|
||||
"classes/src/functions/tanh.php",
|
||||
"classes/src/functions/theta.php",
|
||||
"classes/src/operations/add.php",
|
||||
"classes/src/operations/subtract.php",
|
||||
"classes/src/operations/multiply.php",
|
||||
"classes/src/operations/divideby.php",
|
||||
"classes/src/operations/divideinto.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Mark Baker",
|
||||
"email": "mark@lange.demon.co.uk"
|
||||
}
|
||||
],
|
||||
"description": "PHP Class for working with complex numbers",
|
||||
"homepage": "https://github.com/MarkBaker/PHPComplex",
|
||||
"keywords": [
|
||||
"complex",
|
||||
"mathematics"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/MarkBaker/PHPComplex/issues",
|
||||
"source": "https://github.com/MarkBaker/PHPComplex/tree/2.0.3"
|
||||
},
|
||||
"time": "2021-06-02T09:44:11+00:00"
|
||||
},
|
||||
{
|
||||
"name": "markbaker/matrix",
|
||||
"version": "2.1.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/MarkBaker/PHPMatrix.git",
|
||||
"reference": "174395a901b5ba0925f1d790fa91bab531074b61"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/174395a901b5ba0925f1d790fa91bab531074b61",
|
||||
"reference": "174395a901b5ba0925f1d790fa91bab531074b61",
|
||||
"shasum": "",
|
||||
"mirrors": [
|
||||
{
|
||||
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
|
||||
"preferred": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.1 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
|
||||
"phpcompatibility/php-compatibility": "^9.0",
|
||||
"phpdocumentor/phpdocumentor": "2.*",
|
||||
"phploc/phploc": "^4.0",
|
||||
"phpmd/phpmd": "2.*",
|
||||
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.3",
|
||||
"sebastian/phpcpd": "^4.0",
|
||||
"squizlabs/php_codesniffer": "^3.4"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Matrix\\": "classes/src/"
|
||||
},
|
||||
"files": [
|
||||
"classes/src/Functions/adjoint.php",
|
||||
"classes/src/Functions/antidiagonal.php",
|
||||
"classes/src/Functions/cofactors.php",
|
||||
"classes/src/Functions/determinant.php",
|
||||
"classes/src/Functions/diagonal.php",
|
||||
"classes/src/Functions/identity.php",
|
||||
"classes/src/Functions/inverse.php",
|
||||
"classes/src/Functions/minors.php",
|
||||
"classes/src/Functions/trace.php",
|
||||
"classes/src/Functions/transpose.php",
|
||||
"classes/src/Operations/add.php",
|
||||
"classes/src/Operations/directsum.php",
|
||||
"classes/src/Operations/subtract.php",
|
||||
"classes/src/Operations/multiply.php",
|
||||
"classes/src/Operations/divideby.php",
|
||||
"classes/src/Operations/divideinto.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Mark Baker",
|
||||
"email": "mark@demon-angel.eu"
|
||||
}
|
||||
],
|
||||
"description": "PHP Class for working with matrices",
|
||||
"homepage": "https://github.com/MarkBaker/PHPMatrix",
|
||||
"keywords": [
|
||||
"mathematics",
|
||||
"matrix",
|
||||
"vector"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/MarkBaker/PHPMatrix/issues",
|
||||
"source": "https://github.com/MarkBaker/PHPMatrix/tree/2.1.3"
|
||||
},
|
||||
"time": "2021-05-25T15:42:17+00:00"
|
||||
},
|
||||
{
|
||||
"name": "monolog/monolog",
|
||||
"version": "2.0.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Seldaek/monolog.git",
|
||||
"reference": "c861fcba2ca29404dc9e617eedd9eff4616986b8"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/c861fcba2ca29404dc9e617eedd9eff4616986b8",
|
||||
"reference": "c861fcba2ca29404dc9e617eedd9eff4616986b8",
|
||||
"shasum": "",
|
||||
"mirrors": [
|
||||
{
|
||||
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
|
||||
"preferred": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.2",
|
||||
"psr/log": "^1.0.1"
|
||||
},
|
||||
"provide": {
|
||||
"psr/log-implementation": "1.0.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"aws/aws-sdk-php": "^2.4.9 || ^3.0",
|
||||
"doctrine/couchdb": "~1.0@dev",
|
||||
"elasticsearch/elasticsearch": "^6.0",
|
||||
"graylog2/gelf-php": "^1.4.2",
|
||||
"jakub-onderka/php-parallel-lint": "^0.9",
|
||||
"php-amqplib/php-amqplib": "~2.4",
|
||||
"php-console/php-console": "^3.1.3",
|
||||
"phpspec/prophecy": "^1.6.1",
|
||||
"phpunit/phpunit": "^8.3",
|
||||
"predis/predis": "^1.1",
|
||||
"rollbar/rollbar": "^1.3",
|
||||
"ruflin/elastica": ">=0.90 <3.0",
|
||||
"swiftmailer/swiftmailer": "^5.3|^6.0"
|
||||
},
|
||||
"suggest": {
|
||||
"aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
|
||||
"doctrine/couchdb": "Allow sending log messages to a CouchDB server",
|
||||
"elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client",
|
||||
"ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
|
||||
"ext-mbstring": "Allow to work properly with unicode symbols",
|
||||
"ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)",
|
||||
"graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
|
||||
"mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
|
||||
"php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
|
||||
"php-console/php-console": "Allow sending log messages to Google Chrome",
|
||||
"rollbar/rollbar": "Allow sending log messages to Rollbar",
|
||||
"ruflin/elastica": "Allow sending log messages to an Elastic Search server"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Monolog\\": "src/Monolog"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Jordi Boggiano",
|
||||
"email": "j.boggiano@seld.be",
|
||||
"homepage": "http://seld.be"
|
||||
}
|
||||
],
|
||||
"description": "Sends your logs to files, sockets, inboxes, databases and various web services",
|
||||
"homepage": "http://github.com/Seldaek/monolog",
|
||||
"keywords": [
|
||||
"log",
|
||||
"logging",
|
||||
"psr-3"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/Seldaek/monolog/issues",
|
||||
"source": "https://github.com/Seldaek/monolog/tree/2.0.2"
|
||||
},
|
||||
"time": "2019-12-20T14:22:59+00:00"
|
||||
},
|
||||
{
|
||||
"name": "myclabs/php-enum",
|
||||
"version": "1.8.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/myclabs/php-enum.git",
|
||||
"reference": "b942d263c641ddb5190929ff840c68f78713e937"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/myclabs/php-enum/zipball/b942d263c641ddb5190929ff840c68f78713e937",
|
||||
"reference": "b942d263c641ddb5190929ff840c68f78713e937",
|
||||
"shasum": "",
|
||||
"mirrors": [
|
||||
{
|
||||
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
|
||||
"preferred": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"require": {
|
||||
"ext-json": "*",
|
||||
"php": "^7.3 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^9.5",
|
||||
"squizlabs/php_codesniffer": "1.*",
|
||||
"vimeo/psalm": "^4.6.2"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"MyCLabs\\Enum\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "PHP Enum contributors",
|
||||
"homepage": "https://github.com/myclabs/php-enum/graphs/contributors"
|
||||
}
|
||||
],
|
||||
"description": "PHP Enum implementation",
|
||||
"homepage": "http://github.com/myclabs/php-enum",
|
||||
"keywords": [
|
||||
"enum"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/myclabs/php-enum/issues",
|
||||
"source": "https://github.com/myclabs/php-enum/tree/1.8.3"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/mnapoli",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/myclabs/php-enum",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2021-07-05T08:18:36+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpoffice/phpspreadsheet",
|
||||
"version": "1.18.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/PHPOffice/PhpSpreadsheet.git",
|
||||
"reference": "418cd304e8e6b417ea79c3b29126a25dc4b1170c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/418cd304e8e6b417ea79c3b29126a25dc4b1170c",
|
||||
"reference": "418cd304e8e6b417ea79c3b29126a25dc4b1170c",
|
||||
"shasum": "",
|
||||
"mirrors": [
|
||||
{
|
||||
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
|
||||
"preferred": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"require": {
|
||||
"ext-ctype": "*",
|
||||
"ext-dom": "*",
|
||||
"ext-fileinfo": "*",
|
||||
"ext-gd": "*",
|
||||
"ext-iconv": "*",
|
||||
"ext-libxml": "*",
|
||||
"ext-mbstring": "*",
|
||||
"ext-simplexml": "*",
|
||||
"ext-xml": "*",
|
||||
"ext-xmlreader": "*",
|
||||
"ext-xmlwriter": "*",
|
||||
"ext-zip": "*",
|
||||
"ext-zlib": "*",
|
||||
"ezyang/htmlpurifier": "^4.13",
|
||||
"maennchen/zipstream-php": "^2.1",
|
||||
"markbaker/complex": "^2.0",
|
||||
"markbaker/matrix": "^2.0",
|
||||
"php": "^7.2 || ^8.0",
|
||||
"psr/http-client": "^1.0",
|
||||
"psr/http-factory": "^1.0",
|
||||
"psr/simple-cache": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"dealerdirect/phpcodesniffer-composer-installer": "dev-master",
|
||||
"dompdf/dompdf": "^1.0",
|
||||
"friendsofphp/php-cs-fixer": "^2.18",
|
||||
"jpgraph/jpgraph": "^4.0",
|
||||
"mpdf/mpdf": "^8.0",
|
||||
"phpcompatibility/php-compatibility": "^9.3",
|
||||
"phpstan/phpstan": "^0.12.82",
|
||||
"phpstan/phpstan-phpunit": "^0.12.18",
|
||||
"phpunit/phpunit": "^8.5",
|
||||
"squizlabs/php_codesniffer": "^3.5",
|
||||
"tecnickcom/tcpdf": "^6.3"
|
||||
},
|
||||
"suggest": {
|
||||
"dompdf/dompdf": "Option for rendering PDF with PDF Writer (doesn't yet support PHP8)",
|
||||
"jpgraph/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers",
|
||||
"mpdf/mpdf": "Option for rendering PDF with PDF Writer",
|
||||
"tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer (doesn't yet support PHP8)"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Maarten Balliauw",
|
||||
"homepage": "https://blog.maartenballiauw.be"
|
||||
},
|
||||
{
|
||||
"name": "Mark Baker",
|
||||
"homepage": "https://markbakeruk.net"
|
||||
},
|
||||
{
|
||||
"name": "Franck Lefevre",
|
||||
"homepage": "https://rootslabs.net"
|
||||
},
|
||||
{
|
||||
"name": "Erik Tilt"
|
||||
},
|
||||
{
|
||||
"name": "Adrien Crivelli"
|
||||
}
|
||||
],
|
||||
"description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine",
|
||||
"homepage": "https://github.com/PHPOffice/PhpSpreadsheet",
|
||||
"keywords": [
|
||||
"OpenXML",
|
||||
"excel",
|
||||
"gnumeric",
|
||||
"ods",
|
||||
"php",
|
||||
"spreadsheet",
|
||||
"xls",
|
||||
"xlsx"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues",
|
||||
"source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.18.0"
|
||||
},
|
||||
"time": "2021-05-31T18:21:15+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/http-client",
|
||||
"version": "1.0.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/http-client.git",
|
||||
"reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
|
||||
"reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
|
||||
"shasum": "",
|
||||
"mirrors": [
|
||||
{
|
||||
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
|
||||
"preferred": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.0 || ^8.0",
|
||||
"psr/http-message": "^1.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Psr\\Http\\Client\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "PHP-FIG",
|
||||
"homepage": "http://www.php-fig.org/"
|
||||
}
|
||||
],
|
||||
"description": "Common interface for HTTP clients",
|
||||
"homepage": "https://github.com/php-fig/http-client",
|
||||
"keywords": [
|
||||
"http",
|
||||
"http-client",
|
||||
"psr",
|
||||
"psr-18"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/php-fig/http-client/tree/master"
|
||||
},
|
||||
"time": "2020-06-29T06:28:15+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/http-factory",
|
||||
"version": "1.0.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/http-factory.git",
|
||||
"reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
|
||||
"reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
|
||||
"shasum": "",
|
||||
"mirrors": [
|
||||
{
|
||||
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
|
||||
"preferred": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.0.0",
|
||||
"psr/http-message": "^1.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Psr\\Http\\Message\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "PHP-FIG",
|
||||
"homepage": "http://www.php-fig.org/"
|
||||
}
|
||||
],
|
||||
"description": "Common interfaces for PSR-7 HTTP message factories",
|
||||
"keywords": [
|
||||
"factory",
|
||||
"http",
|
||||
"message",
|
||||
"psr",
|
||||
"psr-17",
|
||||
"psr-7",
|
||||
"request",
|
||||
"response"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/php-fig/http-factory/tree/master"
|
||||
},
|
||||
"time": "2019-04-30T12:38:16+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/http-message",
|
||||
"version": "1.0.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/http-message.git",
|
||||
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
|
||||
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
|
||||
"shasum": "",
|
||||
"mirrors": [
|
||||
{
|
||||
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
|
||||
"preferred": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Psr\\Http\\Message\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "PHP-FIG",
|
||||
"homepage": "http://www.php-fig.org/"
|
||||
}
|
||||
],
|
||||
"description": "Common interface for HTTP messages",
|
||||
"homepage": "https://github.com/php-fig/http-message",
|
||||
"keywords": [
|
||||
"http",
|
||||
"http-message",
|
||||
"psr",
|
||||
"psr-7",
|
||||
"request",
|
||||
"response"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/php-fig/http-message/tree/master"
|
||||
},
|
||||
"time": "2016-08-06T14:39:51+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/log",
|
||||
"version": "1.1.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/log.git",
|
||||
"reference": "d49695b909c3b7628b6289db5479a1c204601f11"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
|
||||
"reference": "d49695b909c3b7628b6289db5479a1c204601f11",
|
||||
"shasum": "",
|
||||
"mirrors": [
|
||||
{
|
||||
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
|
||||
"preferred": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.1.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Psr\\Log\\": "Psr/Log/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "PHP-FIG",
|
||||
"homepage": "https://www.php-fig.org/"
|
||||
}
|
||||
],
|
||||
"description": "Common interface for logging libraries",
|
||||
"homepage": "https://github.com/php-fig/log",
|
||||
"keywords": [
|
||||
"log",
|
||||
"psr",
|
||||
"psr-3"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/php-fig/log/tree/1.1.4"
|
||||
},
|
||||
"time": "2021-05-03T11:20:27+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/simple-cache",
|
||||
"version": "1.0.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/simple-cache.git",
|
||||
"reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
|
||||
"reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
|
||||
"shasum": "",
|
||||
"mirrors": [
|
||||
{
|
||||
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
|
||||
"preferred": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Psr\\SimpleCache\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "PHP-FIG",
|
||||
"homepage": "http://www.php-fig.org/"
|
||||
}
|
||||
],
|
||||
"description": "Common interfaces for simple caching",
|
||||
"keywords": [
|
||||
"cache",
|
||||
"caching",
|
||||
"psr",
|
||||
"psr-16",
|
||||
"simple-cache"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/php-fig/simple-cache/tree/master"
|
||||
},
|
||||
"time": "2017-10-23T01:57:42+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-mbstring",
|
||||
"version": "v1.23.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
||||
"reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6",
|
||||
"reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6",
|
||||
"shasum": "",
|
||||
"mirrors": [
|
||||
{
|
||||
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
|
||||
"preferred": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-mbstring": "For best performance"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "1.23-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/polyfill",
|
||||
"url": "https://github.com/symfony/polyfill"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Polyfill\\Mbstring\\": ""
|
||||
},
|
||||
"files": [
|
||||
"bootstrap.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Nicolas Grekas",
|
||||
"email": "p@tchwork.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony polyfill for the Mbstring extension",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"compatibility",
|
||||
"mbstring",
|
||||
"polyfill",
|
||||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2021-05-27T12:26:48+00:00"
|
||||
}
|
||||
],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": [],
|
||||
"prefer-stable": false,
|
||||
"prefer-lowest": false,
|
||||
"platform": [],
|
||||
"platform-dev": [],
|
||||
"plugin-api-version": "2.1.0"
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
.div_parent{
|
||||
min-height: 200px;
|
||||
background: #ffffff;
|
||||
width: 900px;
|
||||
position:relative;
|
||||
text-align:center;
|
||||
margin:0 auto;
|
||||
}
|
||||
|
||||
.div_cell{
|
||||
background: #fff;
|
||||
width:180px;
|
||||
height:30px;
|
||||
margin: 0 auto;
|
||||
text-align: left;
|
||||
float: left;
|
||||
position: relative;
|
||||
left:50px;
|
||||
}
|
||||
.div_block{
|
||||
background: #fff;
|
||||
width:280px;
|
||||
height:30px;
|
||||
text-align: left;
|
||||
margin: 0 auto;
|
||||
left:50px;
|
||||
}
|
||||
A:link {
|
||||
FONT-SIZE: 16px;
|
||||
COLOR: #333333;
|
||||
TEXT-DECORATION: none
|
||||
}
|
||||
|
||||
A:visited {
|
||||
FONT-SIZE: 16px;
|
||||
COLOR: #333333;
|
||||
TEXT-DECORATION: none
|
||||
}
|
||||
|
||||
A:hover {
|
||||
FONT-SIZE: 16px;
|
||||
COLOR: #043B9C;
|
||||
TEXT-DECORATION: underline
|
||||
}
|
||||
@@ -0,0 +1,150 @@
|
||||
<?php
|
||||
require_once "inc/functions.inc.php";
|
||||
$_REQUEST['t_start']=$_REQUEST['t_start']?$_REQUEST['t_start']:'2023-08-15';
|
||||
$_REQUEST['t_end']=$_REQUEST['t_end']?$_REQUEST['t_end']:date('Y-m-d');
|
||||
$_REQUEST['district']=$_REQUEST['district']?$_REQUEST['district']:'合计';
|
||||
$subTitle=($_REQUEST['district']=='合计')?'宁波地区':$_REQUEST['district'];
|
||||
$title="二手房每日新增挂牌量({$subTitle})";
|
||||
|
||||
|
||||
$urlAppend = "t=esfListDaily&t_start={$_REQUEST['t_start']}&t_end={$_REQUEST['t_end']}";
|
||||
$urlAppend .= "&district={$_REQUEST['district']}";
|
||||
$url = 'https://echart.doorcome.cn/inc/ajax.inc.php?'.$urlAppend;
|
||||
include_once "html/head.php";
|
||||
?>
|
||||
|
||||
<form name="main" id="main" method="get"> <div style="width:100%;text-align:center">
|
||||
区域:
|
||||
<?php districtList(); ?>
|
||||
开始时间: <input type='date' name='t_start' id='t_start' width='30px' >
|
||||
结束时间: <input type='date' name='t_end' id='t_end' width='30px' >
|
||||
<input type='submit' value="给我查!">
|
||||
<div > </div>
|
||||
<script>
|
||||
$("#district").val('<?=$_REQUEST['district']?>');
|
||||
$("#t_start").val('<?=$_REQUEST['t_start']?>');
|
||||
$("#t_end").val('<?=$_REQUEST['t_end']?>');
|
||||
</script>
|
||||
</div> </form>
|
||||
<div > </div>
|
||||
<div id="container" style="margin:0 auto;height: 400px;width: 1000px"></div>
|
||||
<div > </div>
|
||||
<div style="margin:0 auto;width: 1000px ">
|
||||
<span style="color:grey">
|
||||
* 数据来源:<a href='https://www.cnnbfdc.com/' target='_blank'>宁波市房产交易服务信息网</a><br />
|
||||
* 更新时间: 每天下午5:30</span></div>
|
||||
<script type="text/javascript">
|
||||
var dataSel1=['td','price'];
|
||||
var dataSel2=['td','qty'];
|
||||
var data1;
|
||||
var data2;
|
||||
var legend =['挂牌均价','挂牌数量'];
|
||||
var headtxt = '<?=$title?>';
|
||||
$.ajax(
|
||||
{
|
||||
type:'GET',
|
||||
url:'<?=$url?>',
|
||||
dataType:'json',
|
||||
success:function(data){
|
||||
console.log(data)
|
||||
data1 = getRows(data.datas,dataSel1);
|
||||
data2 = getRows(data.datas,dataSel2);
|
||||
console.log(data1);
|
||||
console.log(data2);
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom,'dark');
|
||||
var app = {};
|
||||
option = null;
|
||||
|
||||
option = {
|
||||
title: {
|
||||
//text: legend[0]+' V.S '+legend[2],
|
||||
text: headtxt,
|
||||
//subtext: subtxt,
|
||||
textAlign:'center',
|
||||
left:'50%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:legend,
|
||||
right:'20'
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
//type: 'category',
|
||||
type: 'time',
|
||||
boundaryGap: false
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:legend[0], //图列
|
||||
show:true
|
||||
},
|
||||
{
|
||||
type: 'value',
|
||||
name:legend[1], //图列
|
||||
show:true,
|
||||
boundaryGap:false,
|
||||
splitLine:{
|
||||
show:false, //Y2 坐标刻度横线
|
||||
},
|
||||
}
|
||||
],
|
||||
dataZoom: [{
|
||||
type: 'inside', //or slider
|
||||
start: 0,
|
||||
end: 100
|
||||
}, {
|
||||
start: 0,
|
||||
end: 100,
|
||||
handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
|
||||
handleSize: '80%',
|
||||
handleStyle: {
|
||||
color: '#fff',
|
||||
shadowBlur: 3,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.6)',
|
||||
shadowOffsetX: 2,
|
||||
shadowOffsetY: 2
|
||||
}
|
||||
}],
|
||||
series: [
|
||||
{
|
||||
name:legend[0],
|
||||
type:'line',
|
||||
yAxisIndex:0,
|
||||
symbol:'none',
|
||||
data:data1,
|
||||
itemStyle:{normal:{label:{show:true}}}, //显示数字
|
||||
},
|
||||
{
|
||||
name:legend[1],
|
||||
type:'bar',
|
||||
yAxisIndex:1,
|
||||
symbol:'none',
|
||||
data:data2,
|
||||
itemStyle:{normal:{label:{show:true}}}, //显示数字
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
</script>
|
||||
<?php include_once "html/footer.php"; ?>
|
||||
|
||||
@@ -0,0 +1,290 @@
|
||||
<?php
|
||||
require_once "inc/functions.inc.php";
|
||||
$_REQUEST['t_start']=$_REQUEST['t_start']?$_REQUEST['t_start']:'2023-08-15';
|
||||
$_REQUEST['t_end']=$_REQUEST['t_end']?$_REQUEST['t_end']:date('Y-m-d');
|
||||
$_REQUEST['district']=$_REQUEST['district']?$_REQUEST['district']:'合计';
|
||||
$subTitle=($_REQUEST['district']=='合计')?'宁波地区':$_REQUEST['district'];
|
||||
$title="新房V.S二手房每日成交量({$subTitle})";
|
||||
$title1="新房每日成交量({$subTitle})";
|
||||
$title2="二手房每日成交量({$subTitle})";
|
||||
|
||||
|
||||
$urlAppend = "t=newTBD&t_start={$_REQUEST['t_start']}&t_end={$_REQUEST['t_end']}";
|
||||
$urlAppend .= "&district={$_REQUEST['district']}";
|
||||
$url = 'https://echart.doorcome.cn/inc/ajax.inc.php?'.$urlAppend;
|
||||
|
||||
$urlAppend2 = "t=esfTBD&t_start={$_REQUEST['t_start']}&t_end={$_REQUEST['t_end']}";
|
||||
$urlAppend2 .= "&district={$_REQUEST['district']}";
|
||||
$url2 = 'https://echart.doorcome.cn/inc/ajax.inc.php?'.$urlAppend2;
|
||||
include_once "html/head.php";
|
||||
?>
|
||||
|
||||
<form name="main" id="main" method="get"> <div style="width:100%;text-align:center">
|
||||
区域:
|
||||
<?php districtList(); ?>
|
||||
开始时间: <input type='date' name='t_start' id='t_start' width='30px' >
|
||||
结束时间: <input type='date' name='t_end' id='t_end' width='30px' >
|
||||
<input type='submit' value="给我查!">
|
||||
<div > </div>
|
||||
<script>
|
||||
$("#district").val('<?=$_REQUEST['district']?>');
|
||||
$("#t_start").val('<?=$_REQUEST['t_start']?>');
|
||||
$("#t_end").val('<?=$_REQUEST['t_end']?>');
|
||||
</script>
|
||||
</div> </form>
|
||||
<div > </div>
|
||||
<div id="container" style="margin:0 auto;height: 400px;width: 1000px"></div>
|
||||
<div > </div>
|
||||
<div id="container2" style="margin:0 auto;height: 400px;width: 1000px"></div>
|
||||
<div > </div>
|
||||
<div style="margin:0 auto;width: 1000px ">
|
||||
<span style="color:grey">
|
||||
* 数据来源:<a href='https://www.cnnbfdc.com/' target='_blank'>宁波市房产交易服务信息网</a><br />
|
||||
* 更新时间: 每天下午5:30</span></div>
|
||||
<script type="text/javascript">
|
||||
var dataSel1=['td','area'];
|
||||
var dataSel2=['td','qty'];
|
||||
var data1;
|
||||
var data2;
|
||||
var data3;
|
||||
var legend =['成交面积','成交套数','可售套数'];
|
||||
var headtxt = '<?=$title1?>';
|
||||
$.ajax(
|
||||
{
|
||||
type:'GET',
|
||||
url:'<?=$url?>',
|
||||
dataType:'json',
|
||||
success:function(data){
|
||||
console.log(data)
|
||||
data1 = getRows(data.datas,dataSel1); //成交面积
|
||||
data2 = getRows(data.datas,dataSel2); //成交套数
|
||||
data3 = getRows(data.dataExt,dataSel2); //存量套数
|
||||
//console.log(data1);
|
||||
//console.log(data2);
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom,'dark');
|
||||
var app = {};
|
||||
option = null;
|
||||
|
||||
option = {
|
||||
title: {
|
||||
//text: legend[0]+' V.S '+legend[2],
|
||||
text: headtxt,
|
||||
//subtext: subtxt,
|
||||
textAlign:'center',
|
||||
left:'50%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:legend,
|
||||
right:'20'
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
//type: 'category',
|
||||
type: 'time',
|
||||
boundaryGap: false
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:legend[2], //图列
|
||||
show:true
|
||||
},
|
||||
{
|
||||
type: 'value',
|
||||
name:legend[1], //图列
|
||||
show:true,
|
||||
boundaryGap:false,
|
||||
splitLine:{
|
||||
show:false, //Y2 坐标刻度横线
|
||||
},
|
||||
}
|
||||
],
|
||||
dataZoom: [{
|
||||
type: 'inside', //or slider
|
||||
start: 0,
|
||||
end: 100
|
||||
}, {
|
||||
start: 0,
|
||||
end: 100,
|
||||
handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
|
||||
handleSize: '80%',
|
||||
handleStyle: {
|
||||
color: '#fff',
|
||||
shadowBlur: 3,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.6)',
|
||||
shadowOffsetX: 2,
|
||||
shadowOffsetY: 2
|
||||
}
|
||||
}],
|
||||
series: [
|
||||
/*
|
||||
{
|
||||
name:legend[0],
|
||||
type:'line',
|
||||
yAxisIndex:0,
|
||||
symbol:'none',
|
||||
data:data1,
|
||||
itemStyle:{normal:{label:{show:true}}}, //显示数字
|
||||
},*/
|
||||
{
|
||||
name:legend[2],
|
||||
type:'line',
|
||||
yAxisIndex:0,
|
||||
symbol:'none',
|
||||
data:data3,
|
||||
itemStyle:
|
||||
{normal:
|
||||
{label:
|
||||
{
|
||||
show:false, //显示数字
|
||||
position:'top'
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
name:legend[1],
|
||||
type:'bar',
|
||||
yAxisIndex:1,
|
||||
symbol:'none',
|
||||
data:data2,
|
||||
itemStyle:{normal:{label:{show:true}}}, //显示数字
|
||||
},
|
||||
|
||||
]
|
||||
};
|
||||
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
//二手房
|
||||
var dataSel3=['td','area'];
|
||||
var dataSel4=['td','qty'];
|
||||
var data3;
|
||||
var data4;
|
||||
var legend2 =['成交面积','成交套数'];
|
||||
var headtxt2 = '<?=$title2?>';
|
||||
$.ajax(
|
||||
{
|
||||
type:'GET',
|
||||
url:'<?=$url2?>',
|
||||
dataType:'json',
|
||||
success:function(data2){
|
||||
console.log(data2)
|
||||
data3 = getRows(data2.dataTrade,dataSel3);
|
||||
data4 = getRows(data2.dataTrade,dataSel4);
|
||||
//console.log(data3);
|
||||
//console.log(data4);
|
||||
var dom = document.getElementById("container2");
|
||||
var myChart = echarts.init(dom,'dark');
|
||||
var app = {};
|
||||
option = null;
|
||||
|
||||
option = {
|
||||
title: {
|
||||
//text: legend[0]+' V.S '+legend[2],
|
||||
text: headtxt2,
|
||||
//subtext: subtxt,
|
||||
textAlign:'center',
|
||||
left:'50%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:legend2,
|
||||
right:'20'
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
//type: 'category',
|
||||
type: 'time',
|
||||
boundaryGap: false
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:legend2[0], //图列
|
||||
show:true
|
||||
},
|
||||
{
|
||||
type: 'value',
|
||||
name:legend2[1], //图列
|
||||
show:true,
|
||||
boundaryGap:false,
|
||||
splitLine:{
|
||||
show:false, //Y2 坐标刻度横线
|
||||
},
|
||||
}
|
||||
],
|
||||
dataZoom: [{
|
||||
type: 'inside', //or slider
|
||||
start: 0,
|
||||
end: 100
|
||||
}, {
|
||||
start: 0,
|
||||
end: 100,
|
||||
handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
|
||||
handleSize: '80%',
|
||||
handleStyle: {
|
||||
color: '#fff',
|
||||
shadowBlur: 3,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.6)',
|
||||
shadowOffsetX: 2,
|
||||
shadowOffsetY: 2
|
||||
}
|
||||
}],
|
||||
series: [
|
||||
{
|
||||
name:legend2[0],
|
||||
type:'line',
|
||||
yAxisIndex:0,
|
||||
symbol:'none',
|
||||
data:data3,
|
||||
itemStyle:{normal:{label:{show:true}}}, //显示数字
|
||||
},
|
||||
{
|
||||
name:legend2[1],
|
||||
type:'bar',
|
||||
yAxisIndex:1,
|
||||
symbol:'none',
|
||||
data:data4,
|
||||
itemStyle:{normal:{label:{show:true}}}, //显示数字
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
</script>
|
||||
<?php include_once "html/footer.php"; ?>
|
||||
|
||||
@@ -0,0 +1,164 @@
|
||||
<?php
|
||||
require_once "inc/functions.inc.php";
|
||||
$_REQUEST['t_start']=$_REQUEST['t_start']?$_REQUEST['t_start']:'2023-08-15';
|
||||
$_REQUEST['t_end']=$_REQUEST['t_end']?$_REQUEST['t_end']:date('Y-m-d');
|
||||
$_REQUEST['district']=$_REQUEST['district']?$_REQUEST['district']:'合计';
|
||||
$subTitle=($_REQUEST['district']=='合计')?'宁波地区':$_REQUEST['district'];
|
||||
$title="二手房每日成交量({$subTitle})";
|
||||
|
||||
|
||||
$urlAppend = "t=esfTBD&t_start={$_REQUEST['t_start']}&t_end={$_REQUEST['t_end']}";
|
||||
$urlAppend .= "&district={$_REQUEST['district']}";
|
||||
$url = 'https://echart.doorcome.cn/inc/ajax.inc.php?'.$urlAppend;
|
||||
include_once "html/head.php";
|
||||
?>
|
||||
|
||||
<form name="main" id="main" method="get"> <div style="width:100%;text-align:center">
|
||||
区域:
|
||||
<?php districtList(); ?>
|
||||
开始时间: <input type='date' name='t_start' id='t_start' width='30px' >
|
||||
结束时间: <input type='date' name='t_end' id='t_end' width='30px' >
|
||||
<input type='submit' value="给我查!">
|
||||
<div > </div>
|
||||
<script>
|
||||
$("#district").val('<?=$_REQUEST['district']?>');
|
||||
$("#t_start").val('<?=$_REQUEST['t_start']?>');
|
||||
$("#t_end").val('<?=$_REQUEST['t_end']?>');
|
||||
</script>
|
||||
</div> </form>
|
||||
<div > </div>
|
||||
<div id="container" style="margin:0 auto;height: 400px;width: 1000px"></div>
|
||||
<div > </div>
|
||||
<div style="margin:0 auto;width: 1000px ">
|
||||
<span style="color:grey">
|
||||
* 数据来源:<a href='https://www.cnnbfdc.com/' target='_blank'>宁波市房产交易服务信息网</a><br />
|
||||
* 更新时间: 每天下午5:30</span></div>
|
||||
<script type="text/javascript">
|
||||
var dataSel1=['td','qty'];
|
||||
var dataSel2=['td','area'];
|
||||
var data1;
|
||||
var data2;
|
||||
var legend =['成交套数','成交面积','挂牌套数'];
|
||||
var headtxt = '<?=$title?>';
|
||||
$.ajax(
|
||||
{
|
||||
type:'GET',
|
||||
url:'<?=$url?>',
|
||||
dataType:'json',
|
||||
success:function(data){
|
||||
console.log(data)
|
||||
data1 = getRows(data.dataList,dataSel1);
|
||||
data2 = getRows(data.dataTrade,dataSel2);
|
||||
data3 = getRows(data.dataTrade,dataSel1);
|
||||
//console.log(data1);
|
||||
//console.log(data2);
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom,'dark');
|
||||
var app = {};
|
||||
option = null;
|
||||
|
||||
option = {
|
||||
title: {
|
||||
//text: legend[0]+' V.S '+legend[2],
|
||||
text: headtxt,
|
||||
//subtext: subtxt,
|
||||
textAlign:'center',
|
||||
left:'50%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:legend,
|
||||
right:'20'
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
//type: 'category',
|
||||
type: 'time',
|
||||
boundaryGap: false
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:legend[2], //图列
|
||||
show:true
|
||||
},
|
||||
{
|
||||
type: 'value',
|
||||
name:legend[0], //图列
|
||||
show:true
|
||||
},
|
||||
{
|
||||
type: 'value',
|
||||
name:legend[1], //图列
|
||||
show:true,
|
||||
boundaryGap:false,
|
||||
splitLine:{
|
||||
show:false, //Y2 坐标刻度横线
|
||||
},
|
||||
}
|
||||
],
|
||||
dataZoom: [{
|
||||
type: 'inside', //or slider
|
||||
start: 0,
|
||||
end: 100
|
||||
}, {
|
||||
start: 0,
|
||||
end: 100,
|
||||
handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
|
||||
handleSize: '80%',
|
||||
handleStyle: {
|
||||
color: '#fff',
|
||||
shadowBlur: 3,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.6)',
|
||||
shadowOffsetX: 2,
|
||||
shadowOffsetY: 2
|
||||
}
|
||||
}],
|
||||
series: [
|
||||
{
|
||||
name:legend[2],
|
||||
type:'bar',
|
||||
yAxisIndex:0,
|
||||
symbol:'none',
|
||||
data:data1,
|
||||
itemStyle:{normal:{label:{show:true}}}, //显示数字
|
||||
},
|
||||
{
|
||||
name:legend[0],
|
||||
type:'bar',
|
||||
yAxisIndex:0,
|
||||
symbol:'none',
|
||||
data:data3,
|
||||
itemStyle:{normal:{label:{show:true}}}, //显示数字
|
||||
},
|
||||
{
|
||||
name:legend[1],
|
||||
type:'line',
|
||||
yAxisIndex:1,
|
||||
symbol:'none',
|
||||
data:data2,
|
||||
itemStyle:{normal:{label:{show:true}}}, //显示数字
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
</script>
|
||||
<?php include_once "html/footer.php"; ?>
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
include_once "inc/getBasic.inc.php";
|
||||
include_once "inc/getData.inc.php";
|
||||
include_once "inc/postJson.inc.php";
|
||||
$_REQUEST['ts_code']=$_REQUEST['ts_code']?$_REQUEST['ts_code']:'000001';
|
||||
$_REQUEST['tp']=$_REQUEST['tp']?$_REQUEST['tp']:'ratio';
|
||||
$_REQUEST['t_start']=$_REQUEST['t_start']?$_REQUEST['t_start']:'2015-06-01';
|
||||
$_REQUEST['t_end']=$_REQUEST['t_end']?$_REQUEST['t_end']:date('Y-m-d');
|
||||
$ts_name = tscodeToName(ts_code_conv($_REQUEST['ts_code']));
|
||||
$title="股指VS北向资金持股";
|
||||
|
||||
$unit = '';
|
||||
$data = getStockHist(ts_code_conv($_REQUEST['ts_code']),$_REQUEST['t_start'],$_REQUEST['t_end']);
|
||||
$getData = getHKHoldByCode();
|
||||
$data2 = hkHoldReform($getData,$_REQUEST['tp']);
|
||||
#var_dump($data2['data']);
|
||||
$subtext_ext = "Max: ".$data2['data_max'];
|
||||
$subtext_ext .= ", Min: ".$data2['data_min'];
|
||||
$subtext_ext .= ", Average: ".$data2['data_avg'];
|
||||
$subtext_ext .= ", Recent: ".$data2['data_last'];
|
||||
|
||||
$legend=array('不复权股价',hkholdConv($_REQUEST['tp']));
|
||||
include_once "html/head.php";
|
||||
?>
|
||||
|
||||
<form name="main" id="main" method="get">
|
||||
<div style="width:100%;text-align:center">
|
||||
股票代码: <input type='text' name='ts_code' id='ts_code' width="30px" value='<?=$_REQUEST['ts_code']?>' >
|
||||
数据选择:
|
||||
<select name="tp" id="tp">
|
||||
<option value="ratio">持股比例(%)</option>
|
||||
<option value="vol">持股数(万)</option>
|
||||
</select>
|
||||
|
||||
<script>
|
||||
$("#tp").val('<?=$_REQUEST['tp']?>');
|
||||
</script>
|
||||
开始时间: <input type='date' name='t_start' id='t_start' width='30px' value='<?=$_REQUEST['t_start']?>' >
|
||||
结束时间: <input type='date' name='t_end' id='t_end' width='30px' value='<?=$_REQUEST['t_end']?>' >
|
||||
<input type='submit' value="给我查!">
|
||||
<div > </div>
|
||||
|
||||
</div> </form>
|
||||
<div > </div>
|
||||
<div id="container" style="margin:0 auto;height: 400px;width: 1000px"></div>
|
||||
<script type="text/javascript">
|
||||
var data1 = <?php echo json_encode($data['data']); ?>;
|
||||
var data2 =<?php echo json_encode($data2['data']); ?>;
|
||||
var legend = <?php echo json_encode($legend);?>;
|
||||
var unit ='<?php if($unit) echo '-'.$unit; ?>';
|
||||
var headtxt = '<?php echo $ts_name.'('.$_REQUEST['ts_code'].')'; ?>';
|
||||
var subtxt = '<?php echo $subtext_ext; ?>';
|
||||
</script>
|
||||
<script type="text/javascript" src="js/hkhold.js?version=3.14"></script>
|
||||
<?php include_once "html/footer.php"; ?>
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
<div id='footer'>
|
||||
<p> </p>
|
||||
<hr style='text-align: center;width: 980px;border-width: 0;background-color: gray;height: 1px;' id='foot_hr' >
|
||||
|
||||
<div style='text-align: center'>Powered by Simon Young <span style="font-family: Arial; font-size: x-small; "> © </span>2019-<?=date('Y')?>
|
||||
All Right Reserved <a href="mailto:simon.youngest@gmail.com" title='simon.youngest@gmail.com'>E-mail</a>.
|
||||
</div>
|
||||
<div style='text-align: center'>
|
||||
<span style="color: grey; font-size: x-small; ">
|
||||
<a href="https://beian.miit.gov.cn" target="_blank">浙ICP备18056264号-1</a>
|
||||
</span>
|
||||
</div>
|
||||
<div> </div>
|
||||
<div> </div>
|
||||
<div> </div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
ini_set("display_errors", "1");
|
||||
function log_pv(){
|
||||
#echo "start log";
|
||||
$mysqli = new mysqli('localhost','root','nancysimon','myquant');
|
||||
$vpage = addslashes($_SERVER['PHP_SELF']);
|
||||
$ua = addslashes($_SERVER['HTTP_USER_AGENT']);
|
||||
$ip = $_SERVER['REMOTE_ADDR'];
|
||||
$qs = addslashes($_SERVER['QUERY_STRING']);
|
||||
$vtime = date("Y-m-d H:i:s");
|
||||
|
||||
$sql="insert into pv_log(vpage,querystring,remoteip,ua,vtime)
|
||||
values ('".$vpage."','".$qs."','".$ip."', '".$ua."','".$vtime."')";
|
||||
|
||||
$mysqli->query($sql);
|
||||
$mysqli->close();
|
||||
}
|
||||
log_pv();
|
||||
?>
|
||||
@@ -0,0 +1,17 @@
|
||||
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
|
||||
<html>
|
||||
<?php global $title; ?>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<script type="text/javascript" src="lib/jquery.min.js?version=3.6.0"></script>
|
||||
<script type="text/javascript" src="/lib/echarts/5.4.2/echarts.js"></script>
|
||||
<script type="text/javascript" src="/lib/DataTables-2/datatables.min.js"></script>
|
||||
<script type="text/javascript" src="/js/pubfunc.js?version=0.1"></script>
|
||||
<link href="css/style.css?version=2000002" rel="stylesheet" type="text/css">
|
||||
<link href="/lib/DataTables-2/datatables.min.css" rel="stylesheet" type="text/css">
|
||||
<title><?=$title?></title>
|
||||
</head>
|
||||
<body>
|
||||
<div > </div>
|
||||
<div style="text-align: center"><h2> <?=$title?> </h2></div>
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php ini_set("display_errors","1"); ?>
|
||||
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
|
||||
<html style="height: 100%">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<title></title>
|
||||
<script type="text/javascript" src="lib/jquery.min.js?version=3.6.0"></script>
|
||||
<script type="text/javascript" src="/lib/echarts/5.4.2/echarts.js"></script>
|
||||
</head>
|
||||
<body style="height: 100%; margin: 0">
|
||||
<div id="container" style="height: 400px;width: 1000px"></div>
|
||||
@@ -0,0 +1,185 @@
|
||||
<?php
|
||||
ini_set("display_errors","1");
|
||||
$mysqli = new mysqli('localhost','root','nancysimon','myquant');
|
||||
|
||||
//ajax: get stock list for select
|
||||
if($_REQUEST['t']=='stockList'){
|
||||
if($_REQUEST['t_vendor']=='方正证券'){
|
||||
$sql= <<< EOF
|
||||
select distinct(ts_code) ts_code,ts_name from trade_record
|
||||
where tprice>0 and (ts_code not like '7%' and ts_code not like '1%') and length(trade_id)=5 order by ts_code
|
||||
EOF;
|
||||
}elseif($_REQUEST['t_vendor']=='长江证券'){
|
||||
//length(0+ts_name)!=length(ts_name) 判断ts_name 不能为纯数字
|
||||
$sql= <<< EOF
|
||||
select distinct(ts_code) ts_code,ts_name from trade_record_cj
|
||||
where tprice>0 and ts_code not like '7%' and length(0+ts_name)!=length(ts_name) order by ts_code
|
||||
EOF;
|
||||
}
|
||||
$result = $mysqli->query($sql);
|
||||
$data = $result->fetch_all(MYSQLI_ASSOC);
|
||||
echo json_encode(array(
|
||||
"status" => "1",
|
||||
'stocks'=> $data,
|
||||
"company"=>$_REQUEST['t_vendor'],
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX get finance Data from getFianceData class
|
||||
*/
|
||||
if($_REQUEST['t']=='financeData'){
|
||||
include_once __DIR__."/getFinanceData.class.php";
|
||||
include_once __DIR__."/getBasic.inc.php";
|
||||
$years=yearList($_REQUEST['yst'],$_REQUEST['yed']);
|
||||
|
||||
$fina = new getFinance();
|
||||
$fina->ts_code=$_REQUEST['ts_code'];
|
||||
$dataAll=array();
|
||||
foreach($years as $year){
|
||||
$fina->finDate=$year;
|
||||
$dataAll[] =$fina->getFinanceData();
|
||||
}
|
||||
|
||||
for($i=0;$i<count($dataAll);$i++){
|
||||
$n=0;
|
||||
foreach ($dataAll[$i] as $key=>$val){
|
||||
$n++;
|
||||
if(strlen($n)<2) $n='0'.$n;
|
||||
if($key=='ts_code') {
|
||||
$key=$n.'.股票代码';
|
||||
$val=tscodeToName($val);
|
||||
$n--;
|
||||
continue; //不显示股票代码
|
||||
}elseif($key=='period') {
|
||||
$key=$n.'.报告期';
|
||||
$val=yearToname($val);
|
||||
$n--;
|
||||
continue; //不显示报告期
|
||||
}else $key=$n.'.'.$key;
|
||||
if($i==0) $data[$n][]=$key; //首列加
|
||||
$data[$n][]=$val;
|
||||
}
|
||||
}
|
||||
|
||||
//strip key from array $data
|
||||
//dataTable must NOT have any key of json
|
||||
$data=array_values($data);
|
||||
echo json_encode(array("data"=>$data));
|
||||
}
|
||||
|
||||
/*
|
||||
*esfTBD: 二手房Trade By Day
|
||||
*/
|
||||
if($_REQUEST['t']=='esfTBD'){
|
||||
$dataTrade=esfTradeDaily();
|
||||
$dataList=esfListDaily();
|
||||
echo json_encode(array(
|
||||
"status" => "1",
|
||||
'dataTrade'=> $dataTrade,
|
||||
'dataList'=>$dataList
|
||||
));
|
||||
}
|
||||
|
||||
/*
|
||||
*esfListDaily: 二手房每日挂牌数量
|
||||
*/
|
||||
if($_REQUEST['t']=='esfListDaily'){
|
||||
$data=esfListDaily();
|
||||
|
||||
echo json_encode(array(
|
||||
"status" => "1",
|
||||
'datas'=> $data
|
||||
));
|
||||
}
|
||||
function esfTradeDaily(){
|
||||
global $mysqli;
|
||||
|
||||
$sql= <<<EOF
|
||||
SELECT
|
||||
distinct(ej.uuid) uid ,
|
||||
date_format(tdate,'%Y-%m-%d') td,
|
||||
eje.val district,
|
||||
eje1.val qty,
|
||||
eje2.val area
|
||||
FROM
|
||||
`estate_json` ej
|
||||
left join estate_json_ext eje on ej.uuid=eje.uuid and eje.val='{$_REQUEST['district']}'
|
||||
left join estate_json_ext eje1 on eje1.id=eje.id+3
|
||||
left join estate_json_ext eje2 on eje2.id=eje.id+4
|
||||
where ej.data_type='5' and (ej.tdate>='{$_REQUEST['t_start']}' and ej.tdate<='{$_REQUEST['t_end']}')
|
||||
EOF;
|
||||
|
||||
$result = $mysqli->query($sql);
|
||||
$data = $result->fetch_all(MYSQLI_ASSOC);
|
||||
return $data;
|
||||
}
|
||||
|
||||
function esfListDaily(){
|
||||
global $mysqli;
|
||||
|
||||
$sql= <<<EOF
|
||||
SELECT
|
||||
distinct(ej.uuid) uid ,
|
||||
date_format(tdate,'%Y-%m-%d') td,
|
||||
eje.val district,
|
||||
eje1.val qty,
|
||||
eje2.val price
|
||||
FROM
|
||||
`estate_json` ej
|
||||
left join estate_json_ext eje on ej.uuid=eje.uuid and eje.val='{$_REQUEST['district']}'
|
||||
left join estate_json_ext eje1 on eje1.id=eje.id+3
|
||||
left join estate_json_ext eje2 on eje2.id=eje.id+5
|
||||
where ej.data_type='8' and (ej.tdate>='{$_REQUEST['t_start']}' and ej.tdate<='{$_REQUEST['t_end']}')
|
||||
EOF;
|
||||
|
||||
$result = $mysqli->query($sql);
|
||||
$data = $result->fetch_all(MYSQLI_ASSOC);
|
||||
return $data;
|
||||
}
|
||||
|
||||
/*
|
||||
*newTBD: 新房Trade By Day
|
||||
*/
|
||||
if($_REQUEST['t']=='newTBD'){
|
||||
|
||||
$sql= <<<EOF
|
||||
SELECT
|
||||
distinct(ej.uuid) uid ,
|
||||
date_format(tdate,'%Y-%m-%d') td,
|
||||
eje.val district,
|
||||
eje1.val qty,
|
||||
eje2.val area
|
||||
FROM
|
||||
`estate_json` ej
|
||||
left join estate_json_ext eje on ej.uuid=eje.uuid and eje.val='{$_REQUEST['district']}'
|
||||
left join estate_json_ext eje1 on eje1.id=eje.id+3
|
||||
left join estate_json_ext eje2 on eje2.id=eje.id+4
|
||||
where ej.data_type='1' and (ej.tdate>='{$_REQUEST['t_start']}' and ej.tdate<='{$_REQUEST['t_end']}')
|
||||
EOF;
|
||||
|
||||
$result = $mysqli->query($sql);
|
||||
$data = $result->fetch_all(MYSQLI_ASSOC);
|
||||
|
||||
$sql= <<<EOF
|
||||
SELECT
|
||||
distinct(ej.uuid) uid ,
|
||||
date_format(tdate,'%Y-%m-%d') td,
|
||||
eje.val district,
|
||||
eje1.val area,
|
||||
eje2.val qty
|
||||
FROM
|
||||
`estate_json` ej
|
||||
left join estate_json_ext eje on ej.uuid=eje.uuid and eje.val='{$_REQUEST['district']}'
|
||||
left join estate_json_ext eje1 on eje1.id=eje.id+3
|
||||
left join estate_json_ext eje2 on eje2.id=eje.id+4
|
||||
where ej.data_type='4' and (ej.tdate>='{$_REQUEST['t_start']}' and ej.tdate<='{$_REQUEST['t_end']}')
|
||||
EOF;
|
||||
$result = $mysqli->query($sql);
|
||||
$data2 = $result->fetch_all(MYSQLI_ASSOC);
|
||||
echo json_encode(array(
|
||||
"status" => "1",
|
||||
'datas'=> $data,
|
||||
'dataExt'=> $data2
|
||||
));
|
||||
}
|
||||
@@ -0,0 +1,150 @@
|
||||
<?php
|
||||
require_once "vendor/autoload.php";
|
||||
use PhpOffice\PhpSpreadsheet\Reader\Csv;
|
||||
|
||||
/**
|
||||
* Read an excel file and return an array of excel cell data.
|
||||
* @param $file: excel file to read.
|
||||
* @return array
|
||||
*/
|
||||
function readMyExcel($file): array
|
||||
{
|
||||
//$inputFileName = dirname(__FILE__) . '/xls/fz20180501-20190101.xls';
|
||||
//$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($file);
|
||||
$reader = new Csv();
|
||||
$reader->setInputEncoding("CP936");
|
||||
//$reader->setCodepage("CP936");
|
||||
$excel = $reader->load($file);
|
||||
return $excel->getActiveSheet()->toArray(null,true,true,false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Upload excel data to mysql table trade_record
|
||||
* @param $data: array which get from excel file.
|
||||
* @param $company: 证券公司名
|
||||
* @return array: msg
|
||||
*/
|
||||
function dbOp($data,$company)
|
||||
{
|
||||
$mysqli = new mysqli('localhost', 'root', 'nancysimon', 'myquant');
|
||||
$maxrow = count($data);
|
||||
$maxcol = count($data[0]);
|
||||
$msg = array();
|
||||
for ($row = 0; $row < $maxrow; $row++) {
|
||||
if ($row == 0) {
|
||||
//检查文件与证券公司是否匹配
|
||||
if(($data[$row][4]=='买卖标志' and $company=='方正证券') or ($data[$row][4]=='操作' and $company=='长江证券'))
|
||||
continue; //skip 1st row;
|
||||
else{
|
||||
echo json_encode(array(
|
||||
"status" => "-1",
|
||||
"row1"=> $data[$row],
|
||||
'company'=> $company,
|
||||
"msg" => "文件格式不正确或与证券公司不匹配,请重试!",
|
||||
));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//处理时间字段, 方正证券格式: hhmmss需要特别处理, 长江证券时间格式正常: hh:mm:ss
|
||||
$tm = $data[$row][1]; //format $time
|
||||
if ($tm == 0) $data[$row][1] = '00:00:00';
|
||||
elseif($company=='方正证券') $data[$row][1] = substr($tm, 0, -4) . ':' . substr($tm, -4, 2) . ':' . substr($tm, -2);
|
||||
|
||||
//处理长江证券的改动:去掉item 9,15,重置键名
|
||||
if($company=='长江证券'){
|
||||
unset($data[$row][9]);
|
||||
unset($data[$row][15]);
|
||||
$data[$row]=array_values($data[$row]);
|
||||
$maxcol = count($data[$row]); //重置 maxcol
|
||||
}
|
||||
/**
|
||||
* addslashes处理
|
||||
* 方正证券14 其他费用,15:备注(需要处理)
|
||||
* 长江证券14备注(需要处理),15:交易市场
|
||||
*/
|
||||
$data[$row][14] = addslashes($data[$row][14]); // add slash avoid sql clash
|
||||
$data[$row][15] = addslashes($data[$row][15]); // add slash avoid sql clash
|
||||
|
||||
// duplicate check for each row
|
||||
if (recordDupCheck($data[$row], $mysqli,$company)) {
|
||||
$msg[] = addslashes("Row <span style='color:#ff0000'> $row </span> exist. Skip!<br />");
|
||||
continue;
|
||||
}
|
||||
//else var_dump($data[$row]);
|
||||
|
||||
$values = ''; //initial $values;
|
||||
for ($col = 0; $col < $maxcol; $col++) {
|
||||
$values .= "'" . $data[$row][$col] . "',";
|
||||
}
|
||||
|
||||
$values = rtrim($values, ','); //如果需要,此行去除末尾逗号(,)
|
||||
if($company=='方正证券') {
|
||||
$sql = <<<EOF
|
||||
insert into
|
||||
trade_record(
|
||||
`tdate`,`ttime`, `ts_code`, `ts_name`, `flg`, `tprice`, `tvol`,
|
||||
`trade_id`, `entrust_id`, `holder_code`, `tamount`, `commission`,
|
||||
`tax1`, `tax2`, `tax3`, `note`, `t_vendor`)
|
||||
values(
|
||||
$values,
|
||||
'$company'
|
||||
)
|
||||
EOF;
|
||||
}elseif($company=='长江证券'){
|
||||
$sql = <<< EOF
|
||||
insert into
|
||||
trade_record_cj(
|
||||
`tdate`, `ttime`, `ts_code`, `ts_name`, `flg`, `tvol`, `tprice`,
|
||||
`tamount`, `entrust_id`, `trade_id`, `tax1`, `tax2`, `tax3`,
|
||||
`ttl_amount`, `note`, `trade_mkt`, `uaccount`, `t_vendor`)
|
||||
values(
|
||||
$values,
|
||||
'$company'
|
||||
)
|
||||
EOF;
|
||||
}
|
||||
$mysqli->query($sql) or die("Data upload failure: " . $sql);
|
||||
unset($values); //release $values;
|
||||
$msg[] = addslashes("Row <span style='color:#ff0000'> $row </span> uploaded.<br />");
|
||||
}
|
||||
$msg[] = addslashes("All data uploaded!<p />");
|
||||
$mysqli->close();
|
||||
return $msg;
|
||||
}
|
||||
/**
|
||||
* Duplicate check of each row by given $row
|
||||
* @param $row: data of 1 row
|
||||
* @param $mysqli: mysqli handle
|
||||
* @return bool return true if record exist
|
||||
*/
|
||||
function recordDupCheck($row,$mysqli,$company): bool
|
||||
{
|
||||
if($company=='方正证券') {
|
||||
$sql = <<< EOF
|
||||
select *
|
||||
from trade_record
|
||||
where
|
||||
tdate = '$row[0]'
|
||||
and ttime = '$row[1]'
|
||||
and ts_code = '$row[2]'
|
||||
and note = '$row[15]'
|
||||
EOF;
|
||||
}elseif($company=='长江证券') {
|
||||
$sql = <<< EOF
|
||||
select *
|
||||
from trade_record_cj
|
||||
where
|
||||
tdate = '$row[0]'
|
||||
and ttime = '$row[1]'
|
||||
and ts_code = '$row[2]'
|
||||
and note = '$row[14]'
|
||||
EOF;
|
||||
}
|
||||
|
||||
$result=$mysqli->query($sql) or die($sql."<br />\n");
|
||||
$r = $result->num_rows;
|
||||
$result->free();
|
||||
if($r > 0) return true;
|
||||
else return false;
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,314 @@
|
||||
<?php
|
||||
/**
|
||||
* 获取PE_TTM,PB,PS等历史数据
|
||||
* @param $ts_code ts code
|
||||
* @param $day_st start date
|
||||
* @param $day_end end date
|
||||
* @param $item: PE_TTM, PB,PS
|
||||
* @return array
|
||||
*/
|
||||
function getBasicData($ts_code,$day_st,$day_end,$item){
|
||||
$day_st=date('Ymd',strtotime($day_st));
|
||||
|
||||
$mysqli = new mysqli('localhost','root','nancysimon','myquant');
|
||||
$where = " and trade_date>'".$day_st."'";
|
||||
if($day_end) {
|
||||
$day_end=date('Ymd',strtotime($day_end));
|
||||
$where .= " and trade_date <'".$day_end."'";
|
||||
}
|
||||
$sql= <<<EOF
|
||||
select trade_date, $item as pe_ttm from stock_his_basic_pro where ts_code = '$ts_code' $where order by trade_date asc
|
||||
EOF;
|
||||
#echo $sql;
|
||||
$result = $mysqli->query($sql);
|
||||
|
||||
$tDate=$idx=$data=$data_clean=array(); # $data_clean is an array without null
|
||||
|
||||
if($result && $result->num_rows>0) {
|
||||
#$data = $result->fetch_all();
|
||||
while($row=$result->fetch_assoc()){
|
||||
$trade_date=substr($row['trade_date'],0,4).'-'.substr($row['trade_date'],4,2).'-'.substr($row['trade_date'],6,2);
|
||||
#$trade_date1=strtotime($row['trade_date']);
|
||||
array_push($tDate,$trade_date);
|
||||
array_push($idx,$row['pe_ttm']);
|
||||
$data_tmp = array("value"=>array($trade_date,$row['pe_ttm']));
|
||||
array_push($data,$data_tmp);
|
||||
if($data_tmp['value'][1]>0) array_push($data_clean,$data_tmp['value'][1]);
|
||||
}
|
||||
}
|
||||
$data_last= round($data_clean[count($data_clean)-1],2);
|
||||
$data_max= round(max($data_clean),2);
|
||||
$data_min= round(min($data_clean),2);
|
||||
if(count($data_clean)>0) $data_avg= round(array_sum($data_clean)/count($data_clean),2);
|
||||
else $data_avg=null;
|
||||
#Free result and close connection.
|
||||
$result->free();
|
||||
$mysqli->close();
|
||||
return array('tDate'=>$tDate,'idx'=>$idx,'data'=>$data,'data_max'=>$data_max,'data_min'=>$data_min,'data_avg'=>$data_avg,'data_last'=>$data_last);
|
||||
}
|
||||
|
||||
|
||||
|
||||
function ts_code_conv($ts_code){
|
||||
$tmp = explode('.',$ts_code);
|
||||
switch($tmp[1]){
|
||||
case 'SZ':
|
||||
return $ts_code;
|
||||
case 'SH':
|
||||
return $ts_code;
|
||||
case 'sz':
|
||||
return strtoupper($ts_code);
|
||||
case 'sh':
|
||||
return strtoupper($ts_code);
|
||||
default:
|
||||
if(substr($tmp[0],0,2)=='60') return $tmp[0].'.SH';
|
||||
elseif(substr($tmp[0],0,2)=='30') return $tmp[0].'.SZ';
|
||||
elseif(substr($tmp[0],0,2)=='00') return $tmp[0].'.SZ';
|
||||
else return $ts_code;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function getStockHist($ts_code,$day_st,$day_end){
|
||||
$mysqli = new mysqli('localhost','root','nancysimon','myquant');
|
||||
$where = " and trade_date>='".$day_st."'";
|
||||
if($day_end) $where .= " and trade_date <='".$day_end."'";
|
||||
$sql= <<<EOF
|
||||
select trade_date, close from stock_his_pro where ts_code = '$ts_code' $where order by trade_date asc
|
||||
EOF;
|
||||
//echo $sql;
|
||||
$result = $mysqli->query($sql);
|
||||
|
||||
$tDate=$idx=$data=array();
|
||||
|
||||
if($result && $result->num_rows>0) {
|
||||
#$data = $result->fetch_all();
|
||||
while($row = $result->fetch_assoc()){
|
||||
//$trade_date=substr($row['trade_date'],0,4).'-'.substr($row['trade_date'],4,2).'-'.substr($row['trade_date'],6,2);
|
||||
//$trade_date1=strtotime($row['trade_date']);
|
||||
array_push($tDate,$row['trade_date']);
|
||||
array_push($idx,$row['close']);
|
||||
array_push($data,array("value"=>array($row['trade_date'],$row['close'])));
|
||||
}
|
||||
}
|
||||
#Free result and close connection.
|
||||
$result->free();
|
||||
$mysqli->close();
|
||||
return array('tDate'=>$tDate,'idx'=>$idx,'data'=>$data);
|
||||
}
|
||||
|
||||
function tscodeToName($ts_code){
|
||||
$mysqli = new mysqli('localhost','root','nancysimon','myquant');
|
||||
|
||||
$sql= "select name from stock_all_pro where ts_code='{$ts_code}'";
|
||||
$result = $mysqli->query($sql);
|
||||
if($result && $result->num_rows >0) $row = $result->fetch_assoc();
|
||||
$result->free();
|
||||
$mysqli->close();
|
||||
return $row['name'];
|
||||
}
|
||||
|
||||
function getBasicExtData($ts_code,$item,$day_st,$day_end){
|
||||
$mysqli = new mysqli('localhost','root','nancysimon','myquant');
|
||||
$where = " and trade_date>'".$day_st."' ";
|
||||
if($item=='total_mv_all' or $item=='circ_mv_all') {
|
||||
$where .= "and vol/10000/10000 > 1";
|
||||
$ts_code='all';
|
||||
$item=substr($item,0,-4);
|
||||
}
|
||||
if($day_end) $where .= " and trade_date <'".$day_end."'";
|
||||
$sql= <<<EOF
|
||||
select * from stock_basic_ext where code = '$ts_code' and item='$item' $where order by trade_date asc
|
||||
EOF;
|
||||
//echo $sql;
|
||||
$result = $mysqli->query($sql);
|
||||
|
||||
$tDate=$idx=$data=array();
|
||||
|
||||
if($result && $result->num_rows>0) {
|
||||
#$data = $result->fetch_all();
|
||||
while($row=$result->fetch_assoc()){
|
||||
if($item=='total_mv' or $item=='circ_mv') {
|
||||
$row['vol']=$row['vol']/10000/10000; #单位:亿
|
||||
}
|
||||
$trade_date=substr($row['trade_date'],0,4).'-'.substr($row['trade_date'],4,2).'-'.substr($row['trade_date'],6,2);
|
||||
#$trade_date=substr($row['trade_date'],0,4).'-'.substr($row['trade_date'],4,2).'-'.substr($row['trade_date'],6,2);
|
||||
$trade_date=substr($row['trade_date'],0,10);
|
||||
array_push($tDate,$trade_date);
|
||||
array_push($idx,$row['vol']);
|
||||
array_push($data,array("value"=>array($trade_date,round($row['vol'],2))));
|
||||
}
|
||||
}
|
||||
#Free result and close connection.
|
||||
$result->free();
|
||||
$mysqli->close();
|
||||
$data_last= round($idx[count($idx)-1],2);
|
||||
$data_max= round(max($idx),2);
|
||||
$data_min= round(min($idx),2);
|
||||
if(count($idx)>0) $data_avg= round(array_sum($idx)/count($idx),2);
|
||||
return array('tDate'=>$tDate,'idx'=>$idx,'data'=>$data,'data_max'=>$data_max,'data_min'=>$data_min,'data_avg'=>$data_avg,'data_last'=>$data_last);
|
||||
}
|
||||
/*
|
||||
f2: date
|
||||
f9: share num
|
||||
f10: share money
|
||||
f11: share ratio 流动比例
|
||||
f12: share ratio 总股本比例
|
||||
*/
|
||||
/*
|
||||
function temporary disabled.
|
||||
TODO: delete if useless confirm.
|
||||
function getStockIhHist($ts_code,$day_st,$day_end,$item){
|
||||
|
||||
$ts_code = ts_code_conv($ts_code);
|
||||
$mysqli = new mysqli('localhost','root','nancysimon','myquant');
|
||||
|
||||
$where = " and f2>'".$day_st."'";
|
||||
if($day_end) $where .= " and f2<'".$day_end."'"; // F2: date
|
||||
$sql = <<<EOF
|
||||
select f2, sum(f9) f9,round(sum(f10),2) sumf10,round(sum(f11),2) sumf11 from ih_by_ts_code
|
||||
where f0 = '$ts_code' $where group by f2 order by f2 asc
|
||||
EOF;
|
||||
//EOF必须在行首,且后面不能有空格
|
||||
$result = $mysqli->query($sql);
|
||||
|
||||
$tDate=$idx=$data=array();
|
||||
|
||||
if($result && $result->num_rows>0) {
|
||||
#$data = $result->fetch_all();
|
||||
while($row=$result->fetch_assoc()){
|
||||
array_push($tDate,$row['f2']);
|
||||
array_push($idx,$row['vol']); //$item can choose f9,f10,f11,f12
|
||||
array_push($data,array("value"=>array($trade_date,$row['vol'])));
|
||||
}
|
||||
}
|
||||
#Free result and close connection.
|
||||
$result->free();
|
||||
$mysqli->close();
|
||||
return array('tDate'=>$tDate,'idx'=>$idx,'data'=>$data);
|
||||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param $date : given a date (yyyy-mm-dd)
|
||||
* @param $gap : days +/- n(int)
|
||||
* @return false|string
|
||||
*/
|
||||
function dateGap($date,$gap){
|
||||
$str="$date $gap day";
|
||||
return date('Y-m-d',strtotime($str));//日期天数相加函数
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $email: default null
|
||||
* @return bool true
|
||||
*/
|
||||
function tradeStocksList($email=null){
|
||||
global $mysqli;
|
||||
if($_REQUEST['t_vendor']=='方正证券'){
|
||||
$sql= <<< EOF
|
||||
select distinct(ts_code) ts_code,ts_name from trade_record
|
||||
where tprice>0 and (ts_code not like '7%' and ts_code not like '1%') and length(trade_id)=5 order by ts_code
|
||||
EOF;
|
||||
}elseif($_REQUEST['t_vendor']=='长江证券'){
|
||||
//length(0+ts_name)!=length(ts_name) 判断ts_name 不能为纯数字
|
||||
$sql= <<< EOF
|
||||
select distinct(ts_code) ts_code,ts_name from trade_record_cj
|
||||
where tprice>0 and ts_code not like '7%' and length(0+ts_name)!=length(ts_name) order by ts_code
|
||||
EOF;
|
||||
}
|
||||
$result = $mysqli->query($sql);
|
||||
$data = $result->fetch_all(MYSQLI_ASSOC);
|
||||
$option='';
|
||||
foreach ( $data as $item){
|
||||
$option .= "<option label='{$item['ts_name']}' value='{$item['ts_code']}'></option>\n";
|
||||
}
|
||||
$html = <<< EOF
|
||||
<input id="ts_code" name= "ts_code" list="codeList" autocomplete="off"/>
|
||||
<datalist id="codeList">
|
||||
$option
|
||||
</datalist>
|
||||
<script>
|
||||
$("#ts_code").val('{$_REQUEST['ts_code']}');
|
||||
</script>
|
||||
|
||||
EOF;
|
||||
echo $html;
|
||||
return true;
|
||||
}
|
||||
|
||||
function vendorList($id='t_vendor'){
|
||||
$html = <<<EOF
|
||||
<select id="{$id}" name= "{$id}" autocomplete="off" >
|
||||
<option value="方正证券">方正证券</option>
|
||||
<option value="长江证券">长江证券</option>
|
||||
</select>
|
||||
<script>
|
||||
$("#{$id}").val('{$_REQUEST[$id]}');
|
||||
</script>
|
||||
EOF;
|
||||
echo $html;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据年份区间,获取财报日期清单
|
||||
* @param $yst
|
||||
* @param $yed
|
||||
*/
|
||||
function yearList($yst,$yed){
|
||||
$n = $yed-$yst+1;
|
||||
$thisYear=date('Y'); //yyyy,eg.2022
|
||||
$thisMonDay=date('md'); //mmdd,eg.0331
|
||||
$years=array();
|
||||
for($i=0;$i<$n;$i++){
|
||||
if(($yst+$i)<($thisYear-1) ) $years[]=($yst+$i)."1231"; //前年及以前
|
||||
|
||||
//去年
|
||||
if(($yst+$i)==($thisYear-1)and $thisMonDay<='0430') $years[]=($yst+$i)."0930";
|
||||
if(($yst+$i)==($thisYear-1)and $thisMonDay >'0430') $years[]=($yst+$i)."1231";
|
||||
//今年
|
||||
if(($yst+$i)==$thisYear){
|
||||
switch ($thisMonDay){
|
||||
case $thisMonDay<='0430':
|
||||
//一季报未公布do nothing
|
||||
break;
|
||||
case $thisMonDay>'0430' && $thisMonDay<= '0831':
|
||||
//公布一季报
|
||||
$years[]=($yst+$i)."0331";
|
||||
break;
|
||||
case $thisMonDay>'0831' && $thisMonDay<= '1031':
|
||||
//公布一季报
|
||||
$years[]=($yst+$i)."0630";
|
||||
break;
|
||||
case $thisMonDay>'1031':
|
||||
//公布一季报
|
||||
$years[]=($yst+$i)."0930";
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $years;
|
||||
}
|
||||
|
||||
/**
|
||||
* $year 20201231 转为2020年报
|
||||
* @param $year
|
||||
*/
|
||||
function yearToname($year){
|
||||
switch (substr($year,4,4)){
|
||||
case '1231':
|
||||
return substr($year,0,4).'年报';
|
||||
case '0930':
|
||||
return substr($year,0,4).'三季';
|
||||
case '0630':
|
||||
return substr($year,0,4).'半年';
|
||||
case '0331':
|
||||
return substr($year,0,4).'一季';
|
||||
default:
|
||||
return substr($year,4,4);
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,252 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
上证指数:000001.SH
|
||||
深证成指:399001.SZ
|
||||
中小板指: 399005.SZ
|
||||
创业板指:399006.SZ
|
||||
*/
|
||||
function getIndexData($ts_code,$day_st,$day_end){
|
||||
$mysqli = new mysqli('localhost','root','nancysimon','myquant');
|
||||
|
||||
#$ts_code = '000001.SH';
|
||||
#$day_st = '20000101';
|
||||
#$day_end = '20190701';
|
||||
$where = " and trade_date>='".$day_st."'";
|
||||
if($day_end) $where .= " and trade_date <='".$day_end."'";
|
||||
$sql= <<<EOF
|
||||
select trade_date, close from index_hist_pro where ts_code = '$ts_code' $where order by trade_date asc
|
||||
EOF;
|
||||
#echo $sql;
|
||||
$result = $mysqli->query($sql);
|
||||
|
||||
$tDate=$idx=$data=array();
|
||||
|
||||
if($result && $result->num_rows>0) {
|
||||
#$data = $result->fetch_all();
|
||||
while($row=$result->fetch_assoc()){
|
||||
$trade_date=substr($row['trade_date'],0,4).'-'.substr($row['trade_date'],4,2).'-'.substr($row['trade_date'],6,2);
|
||||
$trade_date1=strtotime($row['trade_date']);
|
||||
array_push($tDate,$trade_date);
|
||||
array_push($idx,$row['close']);
|
||||
array_push($data,array("value"=>array($trade_date,round($row['close'],2))));
|
||||
}
|
||||
}
|
||||
#Free result and close connection.
|
||||
|
||||
$result->free();
|
||||
$mysqli->close();
|
||||
return array('tDate'=>$tDate,'idx'=>$idx,'data'=>$data);
|
||||
}
|
||||
/*
|
||||
#LX: 序号 1-6,分别代表基金,QFII, 社保,券商,保险,信托
|
||||
#share: vposition 市值 f10, sahreHDnum 股数 f9
|
||||
*/
|
||||
function getIhData($lx,$share,$day_st,$day_end){
|
||||
$mysqli = new mysqli('localhost','root','nancysimon','myquant');
|
||||
/*
|
||||
$where = " and rdate>='".$day_st."'";
|
||||
if($day_end) $where .= " and rdate<='".$day_end."'";
|
||||
if($share=='ShareHDNum' or $share=='vPosition') $shareSel='sum('.$share.')/100000000';
|
||||
elseif($share=='VSRatio') $shareSel='vPosition/ShareHDNum';
|
||||
$sql= <<<EOF
|
||||
select rdate,$shareSel as ttl from ih_data where lx='$lx' $where group by rdate order by rdate
|
||||
EOF;
|
||||
*/
|
||||
$where = " and ih_date>='".$day_st."'";
|
||||
if($day_end) $where .= " and ih_date<='".$day_end."'";
|
||||
if($share=='ShareHDNum' ) $shareSel="sum(f9)/100000000"; //持股数
|
||||
elseif($share=='vPosition') $shareSel="sum(f10)/100000000"; //持股额
|
||||
elseif($share=='VSRatio') $shareSel='f10/f9'; //每股价格
|
||||
$sql= <<<EOF
|
||||
select ih_date,$shareSel as ttl from ih_by_ts_code_ext where tp='$lx' $where group by ih_date order by ih_date
|
||||
EOF;
|
||||
$result = $mysqli->query($sql);
|
||||
//echo $sql;
|
||||
$tDate=$idx=$data=array();
|
||||
|
||||
if($result && $result->num_rows>0) {
|
||||
#$data = $result->fetch_all();
|
||||
while($row=$result->fetch_assoc()){
|
||||
array_push($tDate,$row['ih_date']);
|
||||
array_push($idx,$row['ttl']);
|
||||
array_push($data,array("value"=>array($row['ih_date'],$row['ttl'])));
|
||||
}
|
||||
}
|
||||
#Free result and close connection.
|
||||
$result->free();
|
||||
$mysqli->close();
|
||||
return array('tDate'=>$tDate,'idx'=>$idx,'data'=>$data);
|
||||
}
|
||||
|
||||
function lxDefine($lx){
|
||||
switch($lx){
|
||||
case 1: return "公募基金";
|
||||
case 2: return "QFII";
|
||||
case 3: return "社保基金";
|
||||
case 4: return "券商持仓";
|
||||
case 5: return "保险持仓";
|
||||
case 6: return "信托持仓";
|
||||
}
|
||||
}
|
||||
/*
|
||||
上证指数:000001.SH
|
||||
深证成指:399001.SZ
|
||||
中小板指: 399005.SZ
|
||||
创业板指:399006.SZ
|
||||
*/
|
||||
function codetocode($code){
|
||||
switch($code){
|
||||
case 'sh':
|
||||
return '000001.SH';
|
||||
case 'sz':
|
||||
return '399001.SZ';
|
||||
case 'zx':
|
||||
return '399005.SZ';
|
||||
case 'cy':
|
||||
return '399006.SZ';
|
||||
case 'all':
|
||||
return '000002.SH';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $code
|
||||
* @return string|void
|
||||
*/
|
||||
function codeToName($code){
|
||||
switch($code){
|
||||
case 'sh':
|
||||
return '上证';
|
||||
case 'sz':
|
||||
return '深证';
|
||||
case 'zx':
|
||||
return '中小板';
|
||||
case 'cy':
|
||||
return '创业板';
|
||||
case 'all':
|
||||
return 'A股';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 名称 类型 描述
|
||||
trade_date str 交易日期
|
||||
ggt_ss float 港股通(上海)
|
||||
ggt_sz float 港股通(深圳)
|
||||
hgt float 沪股通(百万元)
|
||||
sgt float 深股通(百万元)
|
||||
north_money float 北向资金(百万元)
|
||||
south_money float 南向资金(百万元)
|
||||
* @param $code
|
||||
* @return false|string
|
||||
*/
|
||||
function hsgtConv($code){
|
||||
switch ($code){
|
||||
case 'ggt_ss':
|
||||
return '港股通(上海)';
|
||||
case 'ggt_sz':
|
||||
return '港股通(深圳)';
|
||||
case 'hgt':
|
||||
return '沪股通';
|
||||
case 'sgt':
|
||||
return '深股通';
|
||||
case 'north_money':
|
||||
return '北向资金';
|
||||
case 'south_money':
|
||||
return '南向资金';
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function hkholdConv($code){
|
||||
switch ($code){
|
||||
case 'ratio':
|
||||
return '持股比例(%)';
|
||||
case 'vol':
|
||||
return '持股数(万)';
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
#item: f9:持股数 f10:持股额 f11:占总股本比例 f12:占流通股比例
|
||||
#LX: tp字段: 序号 1-6,分别代表基金,QFII, 社保,券商,保险,信托
|
||||
*/
|
||||
function getIhDataByStock($ts_code,$item,$lx,$day_st,$day_end){
|
||||
$mysqli = new mysqli('localhost','root','nancysimon','myquant');
|
||||
$where = " and ih_date>'".$day_st."'";
|
||||
if($day_end) $where .= " and ih_date<'".$day_end."'";
|
||||
if($lx) $where .= " and tp='".$lx."'";
|
||||
switch(strtoupper($item)){
|
||||
case 'F9':
|
||||
$item_sel = 'sum('.$item.')/10000'; #单位万股
|
||||
break;
|
||||
case 'F10':
|
||||
$item_sel = 'sum('.$item.')/10000'; #单位万元
|
||||
break;
|
||||
case 'F11':
|
||||
case 'F12':
|
||||
$item_sel = 'sum('.$item.')'; #单位%
|
||||
break;
|
||||
}
|
||||
$sql= <<<EOF
|
||||
select ts_code,ih_date,$item_sel as ttl from ih_by_ts_code_ext where ts_code='$ts_code' $where group by ih_date order by ih_date asc
|
||||
EOF;
|
||||
$result = $mysqli->query($sql);
|
||||
#echo $sql;
|
||||
$tDate=$idx=$data=array();
|
||||
|
||||
if($result && $result->num_rows>0) {
|
||||
#$data = $result->fetch_all();
|
||||
while($row=$result->fetch_assoc()){
|
||||
array_push($tDate,$row['ih_date']);
|
||||
array_push($idx,$row['ttl']);
|
||||
array_push($data,array("value"=>array($row['ih_date'],$row['ttl'])));
|
||||
}
|
||||
}
|
||||
$data_last= round($idx[count($idx)-1],1);
|
||||
$data_max= round(max($idx),1);
|
||||
$data_min= round(min($idx),1);
|
||||
if(count($idx)>0) $data_avg= round(array_sum($idx)/count($idx),1);
|
||||
else $data_avg=null;
|
||||
#Free result and close connection.
|
||||
$result->free();
|
||||
$mysqli->close();
|
||||
return array('tDate'=>$tDate,'idx'=>$idx,'data'=>$data,'data_max'=>$data_max,'data_min'=>$data_min,'data_avg'=>$data_avg,'data_last'=>$data_last);
|
||||
}
|
||||
|
||||
function getMoneyFlowData($itm, $day_st,$day_end, $stacked){
|
||||
$mysqli = new mysqli('localhost','root','nancysimon','myquant');
|
||||
|
||||
if($stacked==1) $tb = 'moneyflow_hsgt_pro_ext';
|
||||
else $tb = 'moneyflow_hsgt_pro';
|
||||
$where = " trade_date>='".$day_st."'";
|
||||
if($day_end) $where .= " and trade_date <='".$day_end."'";
|
||||
$sql= <<<EOF
|
||||
select trade_date, $itm as itm from $tb where $where order by trade_date asc
|
||||
EOF;
|
||||
#echo $sql;
|
||||
$result = $mysqli->query($sql);
|
||||
|
||||
$tDate=$data=array();
|
||||
|
||||
if($result && $result->num_rows>0) {
|
||||
while($row=$result->fetch_assoc()){
|
||||
$trade_date=date('Y-m-d',strtotime($row['trade_date']));
|
||||
array_push($tDate,$row['itm']/100);
|
||||
array_push($data,array("value"=>array($trade_date,round($row['itm']/100,2))));
|
||||
}
|
||||
}
|
||||
#Free result and close connection.
|
||||
$result->free();
|
||||
$mysqli->close();
|
||||
$data_last= round($tDate[count($tDate)-1],2);
|
||||
$data_max= round(max($tDate),2);
|
||||
$data_min= round(min($tDate),2);
|
||||
if(count($tDate)>0) $data_avg= round(array_sum($tDate)/count($tDate),2);
|
||||
return array('tDate'=>$tDate,'data'=>$data,'data_max'=>$data_max,'data_min'=>$data_min,'data_avg'=>$data_avg,'data_last'=>$data_last);
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
function getEstateData($city='宁波',$fDate,$toDate){
|
||||
$mysqli = new mysqli('localhost','root','nancysimon','myquant');
|
||||
$sql=<<<EOF
|
||||
SELECT city, listdate,sum(nums) as num FROM `estate_listing`
|
||||
where listdate>='$fDate' and listdate<='$toDate' and city='$city' group by listdate
|
||||
EOF;
|
||||
$result = $mysqli->query($sql);
|
||||
$data=array();
|
||||
if($result && $result->num_rows>0) {
|
||||
while($row = $result->fetch_assoc()){
|
||||
array_push($data,array("value"=>array($row['listdate'],$row['num'])));
|
||||
}
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,324 @@
|
||||
<?php
|
||||
include_once __DIR__."/getData.inc.php"; //类外调用方法
|
||||
include_once __DIR__."/getBasic.inc.php"; //类外调用方法
|
||||
class getFinance
|
||||
{
|
||||
private $url = "http://api.waditu.com";
|
||||
private $token = '1bc28452ba375da19320cda845ae6307578964cb3ae473d0dc702aea';
|
||||
public $ts_code = '002273.SZ'; //set ts_code default
|
||||
public $httpjsonStr; //json string send to http_post_json
|
||||
public $finDate;
|
||||
public $preFinDate;
|
||||
public $param = array();
|
||||
|
||||
private $unitFactor = 100000000; //单位因子,除以后单位亿
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->param['token'] = $this->token;
|
||||
}
|
||||
/**
|
||||
* PHP发送Json对象数据
|
||||
*
|
||||
* @param $url 请求url
|
||||
* @param $jsonStr 发送的json字符串,来自$param转换
|
||||
* @return array
|
||||
*/
|
||||
function http_post_json()
|
||||
{
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_POST, 1);
|
||||
curl_setopt($ch, CURLOPT_URL, $this->url);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $this->httpjsonStr);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
||||
'Content-Type: application/json; charset=utf-8',
|
||||
'Content-Length: ' . strlen($this->httpjsonStr)
|
||||
)
|
||||
);
|
||||
$response = curl_exec($ch);
|
||||
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||
curl_close($ch);
|
||||
|
||||
return array($httpCode, $response);
|
||||
}
|
||||
/**
|
||||
* @param $ts_code
|
||||
* @param $finDate 财报日期 如一季报日期:20220331
|
||||
*/
|
||||
function getFinanceData()
|
||||
{
|
||||
$this->ts_code = ts_code_conv($this->ts_code);
|
||||
$balance = $this->getBalance();
|
||||
$pre_balance = $this->getPreBalance();
|
||||
$income = $this->getIncome();
|
||||
$cash = $this->getCashflow();
|
||||
|
||||
$data = array();
|
||||
$data['ts_code'] = $this->ts_code;
|
||||
$data['period'] = $this->finDate;
|
||||
$data['--运营数据--'] = ''; //空行
|
||||
$data['现金额-亿'] = $cash['c_cash_equ_end_period'][0] / $this->unitFactor;
|
||||
$data['现金占比率'] = $cash['c_cash_equ_end_period'][0] / $balance['total_assets'][0];
|
||||
$data['存货-亿'] = $balance['inventories'][0] / $this->unitFactor;
|
||||
$data['存货占比率'] = $balance['inventories'][0] / $balance['total_assets'][0];
|
||||
|
||||
#应收账票
|
||||
$tmp = 0;
|
||||
if ($balance['accounts_receiv'][0]) $tmp += $balance['accounts_receiv'][0];
|
||||
if ($balance['notes_receiv'][0]) $tmp += $balance['notes_receiv'][0];
|
||||
$data['应收账票-亿'] = $tmp / $this->unitFactor;
|
||||
$data['应收账票占比率'] = $tmp / $balance['total_assets'][0];
|
||||
|
||||
#预付款
|
||||
$tmp = 0;
|
||||
if ($balance['prepayment'][0]) $tmp += $balance['prepayment'][0];
|
||||
$data['预付款-亿'] = $tmp / $this->unitFactor;
|
||||
#预付占比
|
||||
$data['预付款占比率'] = $tmp / $balance['total_assets'][0];
|
||||
|
||||
#运营占比
|
||||
$tmp = 0;
|
||||
if ($cash['c_cash_equ_end_period'][0]) $tmp += $cash['c_cash_equ_end_period'][0];
|
||||
if ($balance['inventories'][0]) $tmp += $balance['inventories'][0];
|
||||
if ($balance['accounts_receiv'][0]) $tmp += $balance['accounts_receiv'][0];
|
||||
if ($balance['notes_receiv'][0]) $tmp += $balance['notes_receiv'][0];
|
||||
if ($balance['prepayment'][0]) $tmp += $balance['prepayment'][0];
|
||||
$data['运营占比率'] = $tmp / $balance['total_assets'][0];
|
||||
|
||||
|
||||
$data['--资产分布--'] = ''; //空行
|
||||
|
||||
if ($balance['fix_assets'][0]) $tmp = $balance['fix_assets'][0] / $this->unitFactor;
|
||||
else $tmp = "";
|
||||
$data['固定资产-亿'] = $tmp;
|
||||
if ($balance['fix_assets'][0]) $tmp = $balance['fix_assets'][0] / $balance['total_assets'][0];
|
||||
else $tmp = "";
|
||||
$data['固定资产占比率'] = $tmp;
|
||||
$data['无形资产-亿'] = $balance['intan_assets'][0] / $this->unitFactor;
|
||||
$data['无形资产占率'] = $balance['intan_assets'][0] / $balance['total_assets'][0];
|
||||
|
||||
$tmp = 0;
|
||||
if ($balance['lt_eqt_invest'][0]) $tmp = $balance['lt_eqt_invest'][0];
|
||||
$data['股权投资-亿'] = $tmp / $this->unitFactor;
|
||||
$data['股权投资占比率'] = $tmp / $balance['total_assets'][0];
|
||||
|
||||
$tmp = 0;
|
||||
if ($balance['fix_assets'][0]) $tmp += $balance['fix_assets'][0];
|
||||
if ($balance['intan_assets'][0]) $tmp += $balance['intan_assets'][0];
|
||||
if ($balance['lt_eqt_invest'][0]) $tmp += $balance['lt_eqt_invest'][0];
|
||||
$data['投资占比率'] = $tmp / $balance['total_assets'][0];
|
||||
|
||||
$data['--负债分布--'] = ''; //空行
|
||||
$tmp = 0;
|
||||
if ($balance['acct_payable'][0]) $tmp += $balance['acct_payable'][0];
|
||||
if ($balance['notes_payable'][0]) $tmp += $balance['notes_payable'][0];
|
||||
if ($balance['adv_receipts'][0]) $tmp += $balance['adv_receipts'][0];
|
||||
#tmp = balance['acct_payable'][0]+balance['notes_payable'][0]+balance['adv_receipts'][0]
|
||||
$data['经营负债-亿'] = $tmp / $this->unitFactor;
|
||||
$data['经营负债占比率'] = $tmp / $balance['total_assets'][0];
|
||||
$tmp = 0;
|
||||
if ($balance['st_borr'][0]) $tmp += $balance['st_borr'][0];
|
||||
if ($balance['lt_borr'][0]) $tmp += $balance['lt_borr'][0];
|
||||
if ($balance['bond_payable'][0]) $tmp += $balance['bond_payable'][0];
|
||||
$data['金融负债-亿'] = $tmp / $this->unitFactor;
|
||||
$data['金融负债占比率'] = $tmp / $balance['total_assets'][0];
|
||||
$zcfz = ($balance['total_cur_liab'][0] + $balance['total_ncl'][0]) / $balance['total_assets'][0];
|
||||
$data['资产负债率'] = $zcfz;
|
||||
|
||||
$data['--运营能力--'] = ''; //空行
|
||||
|
||||
$totalDays=$this->getTotalDays();
|
||||
@$days_1 = $totalDays / ($income['oper_cost'][0] / (($pre_balance['inventories'][0] + $balance['inventories'][0]) / 2));
|
||||
if(is_nan($days_1)) $days_1=0; //solve division by zero warning
|
||||
//echo "\$days_1:".$days_1;
|
||||
$data['存货周转天数'] = $days_1;
|
||||
if(!$pre_balance['accounts_receiv'][0]) $days_2 = 0;
|
||||
elseif(!$balance['accounts_receiv'][0]) $days_2 = 0;
|
||||
else $days_2 = $totalDays/($income['revenue'][0]/(($pre_balance['accounts_receiv'][0]+$balance['accounts_receiv'][0])/2));
|
||||
$data['应收周转天数'] = $days_2;
|
||||
$data['营业周期'] = $days_1+$days_2;
|
||||
|
||||
$data['--管理费分布--'] = ''; //空行
|
||||
|
||||
$tmp = ($income['revenue'][0]-$income['oper_cost'][0])/$income['revenue'][0];
|
||||
$data['毛利额'] = ($income['revenue'][0]-$income['oper_cost'][0])/$this->unitFactor;;
|
||||
$data['毛利率'] = $tmp;
|
||||
$data['营业税金率'] = $income['biz_tax_surchg'][0]/$income['revenue'][0];
|
||||
$data['销售费用率'] = $income['sell_exp'][0]/$income['revenue'][0];
|
||||
$data['研发费用率'] = $income['rd_exp'][0]/$income['revenue'][0];
|
||||
$data['管理费用率'] = $income['admin_exp'][0]/$income['revenue'][0];
|
||||
$data['净利润'] = $income['n_income'][0]/$this->unitFactor;
|
||||
$data['净利润率'] = $income['n_income'][0]/$income['revenue'][0];
|
||||
|
||||
$data['--权益及回报率--'] = ''; //空行
|
||||
$data['总资产-亿'] = $balance['total_assets'][0]/$this->unitFactor;
|
||||
$data['销售收入-亿'] =$income['revenue'][0]/$this->unitFactor;
|
||||
$data['总资产周转率'] = $income['revenue'][0]/$balance['total_assets'][0];
|
||||
$zchb = $income['n_income'][0]/$balance['total_assets'][0];
|
||||
$data['总资产回报率']=$zchb;
|
||||
$data['权益乘数']=1/(1-$zcfz);
|
||||
$data['净资产回报率']=$zchb*(1/(1-$zcfz));
|
||||
foreach ($data as $key=>$val){
|
||||
if(is_numeric($val)) {
|
||||
if(mb_substr($key,-1,1)=='率') $rt[$key]= round($val*100,2).'%'; //最后一个字为率,则去百分比%
|
||||
else $rt[$key]= round($val,2);
|
||||
}
|
||||
else $rt[$key]=$val;
|
||||
|
||||
}
|
||||
return $rt;
|
||||
}
|
||||
function getFinanceJson()
|
||||
{
|
||||
$d = $this->getFinanceData();
|
||||
return json_encode($d);
|
||||
}
|
||||
function getBalance()
|
||||
{
|
||||
$this->param['api_name']='balancesheet';
|
||||
|
||||
## 资产负债表
|
||||
$fields = 'ts_code';
|
||||
$fields .= ',end_date'; #=$finDate
|
||||
$fields .= ',total_assets'; #总资产
|
||||
|
||||
$fields .= ',fix_assets'; #固定资产
|
||||
$fields .= ',intan_assets'; #无形资产
|
||||
$fields .= ',lt_eqt_invest'; #长期股权投资
|
||||
|
||||
$fields .= ',inventories'; #存货
|
||||
$fields .= ',accounts_receiv'; #应收账款
|
||||
$fields .= ',notes_receiv'; #应收票据
|
||||
$fields .= ',prepayment'; #预付款
|
||||
|
||||
$fields .= ',acct_payable'; #应付账款
|
||||
$fields .= ',notes_payable'; #应付票据
|
||||
$fields .= ',adv_receipts'; #预收款
|
||||
$fields .= ',st_borr'; #短期借款
|
||||
$fields .= ',lt_borr'; #长期借款
|
||||
$fields .= ',bond_payable'; #应付债券
|
||||
$fields .= ',total_cur_liab'; #流动负债合计
|
||||
$fields .= ',total_ncl'; #非流动负债合计
|
||||
|
||||
$this->param['params'] = array('ts_code' => ts_code_conv($this->ts_code),
|
||||
'period'=>$this->finDate);
|
||||
$this->param['fields']=$fields;
|
||||
$this->httpjsonStr=json_encode($this->param);
|
||||
list($returnCode, $returnContent) = $this->http_post_json();
|
||||
|
||||
$arr = json_decode($returnContent,true);
|
||||
return $this->mergeArr($arr['data']);
|
||||
}
|
||||
|
||||
/**
|
||||
* #期初的日期: 上一年的年底的数据
|
||||
* @return mixed
|
||||
*/
|
||||
function getPreBalance()
|
||||
{
|
||||
$this->param['api_name']='balancesheet';
|
||||
$this->preFinDate=(substr($this->finDate,0,4)-1).'1231'; //上一年的年底日期;
|
||||
## 资产负债表
|
||||
$fields = 'ts_code';
|
||||
$fields .= ',end_date'; #=$finDate
|
||||
$fields .= ',inventories'; #存货
|
||||
$fields .= ',accounts_receiv'; #应收账款
|
||||
$fields .= ',notes_receiv'; #应收票据
|
||||
|
||||
$this->param['params'] = array('ts_code' => ts_code_conv($this->ts_code),
|
||||
'period'=>$this->preFinDate);
|
||||
$this->param['fields']=$fields;
|
||||
|
||||
$this->httpjsonStr=json_encode($this->param);
|
||||
|
||||
list($returnCode, $returnContent) = $this->http_post_json();
|
||||
$arr = json_decode($returnContent,true);
|
||||
return $this->mergeArr($arr['data']);
|
||||
}
|
||||
|
||||
function getIncome()
|
||||
{
|
||||
$this->param['api_name']='income';
|
||||
|
||||
#利润表
|
||||
#销售毛利率=(营业收入-营业成本)/营业收入 注意非总收入和总成本
|
||||
$fields = 'ts_code';
|
||||
$fields .= ',end_date'; #=period
|
||||
$fields .= ',revenue'; #营业收入
|
||||
$fields .= ',oper_cost'; #营业成本
|
||||
$fields .= ',biz_tax_surchg'; #营业税金及附加
|
||||
$fields .= ',sell_exp'; #销售费用
|
||||
$fields .= ',fin_exp'; #财务费用
|
||||
$fields .= ',admin_exp'; #管理费用
|
||||
$fields .= ',n_income'; #净利润
|
||||
$fields .= ',rd_exp'; #研发费用
|
||||
|
||||
$this->param['params'] = array('ts_code' => ts_code_conv($this->ts_code),
|
||||
'period'=>$this->finDate);
|
||||
$this->param['fields']=$fields;
|
||||
$this->httpjsonStr=json_encode($this->param);
|
||||
list($returnCode, $returnContent) = $this->http_post_json();
|
||||
$arr = json_decode($returnContent,true);
|
||||
return $this->mergeArr($arr['data']);
|
||||
}
|
||||
|
||||
function getCashflow()
|
||||
{
|
||||
$this->param['api_name']='cashflow';
|
||||
|
||||
#现金流量表
|
||||
$fields = 'ts_code';
|
||||
$fields .= ',end_date'; #=period
|
||||
$fields .= ',c_cash_equ_end_period';#期末现金及现金等价物余额
|
||||
$fields .= ',end_bal_cash'; #现金的期末余额
|
||||
|
||||
$this->param['params'] = array('ts_code' => ts_code_conv($this->ts_code),
|
||||
'period'=>$this->finDate);
|
||||
$this->param['fields']=$fields;
|
||||
$this->httpjsonStr=json_encode($this->param);
|
||||
list($returnCode, $returnContent) = $this->http_post_json();
|
||||
|
||||
//echo $returnContent;
|
||||
$arr = json_decode($returnContent,true);
|
||||
return $this->mergeArr($arr['data']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Array ( [fields] => Array ( [0] => ts_code [1] => end_date [2] => notes_receiv [3] => accounts_receiv [4] => inventories )
|
||||
* [items] => Array ( [0] => Array ( [0] => 002223.SZ [1] => 20201231 [2] => [3] => 546811497.99 [4] => 968427866.64 )
|
||||
* [1] => Array ( [0] => 002223.SZ [1] => 20201231 [2] => [3] => 546811497.99 [4] => 968427866.64 ) )
|
||||
* transfor to:
|
||||
* Array (ts_code=>array([0]=>002273.SZ [1]=>002273.SZ) notes_receiv=>array([0]=>546811497.99 [1]=>546811497.99)... )
|
||||
* @param $data
|
||||
*/
|
||||
function mergeArr($data)
|
||||
{
|
||||
$rt = array();
|
||||
for($i=0;$i<count($data['fields']);$i++){
|
||||
for($j=0;$j<count($data['items']);$j++)
|
||||
$rt[$data['fields'][$i]][]=$data['items'][$j][$i];
|
||||
}
|
||||
return $rt;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据当前财报日期,获取营业周期的基本天数
|
||||
* 天数按会计算法?90/180/270/360
|
||||
*/
|
||||
function getTotalDays(){
|
||||
if($this->finDate) $dateCut=substr($this->finDate,4,4);
|
||||
switch ($dateCut){
|
||||
case '0331':
|
||||
return 90;
|
||||
case '0630':
|
||||
return 180;
|
||||
case '0930':
|
||||
return 270;
|
||||
case '1231':
|
||||
return 360;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,111 @@
|
||||
<?php
|
||||
ob_start();
|
||||
include_once "../include/config.inc.php"; //Include config file;
|
||||
$db = new ora();
|
||||
$title="计划设置";
|
||||
include_once "head.php"; //include head file
|
||||
echo $hr;
|
||||
|
||||
$t = 1; //initial type to 1;
|
||||
if($_REQUEST['doSubmit']) bom_op($_REQUEST['t']); //operate when submit
|
||||
if($_REQUEST['bomid'] and !$_REQUEST['doSubmit']) {
|
||||
$bom = bom_data_by_id();
|
||||
$_REQUEST["bom"] = $bom['BOMNAME'];
|
||||
$_REQUEST["bomid"] = $bom['BOMID'];
|
||||
$_REQUEST["bomnote"] = $bom['FNOTE'];
|
||||
$_REQUEST["flowid"] = $bom['FLOWID'];
|
||||
$_REQUEST["ver"] = $bom['VER'];
|
||||
$t = 0;
|
||||
}
|
||||
?>
|
||||
<link rel="stylesheet" href="../lib/layui/css/layui.min.css">
|
||||
|
||||
<div id="mainContent">
|
||||
<h2><?php echo $title; ?></h2>
|
||||
<form name="formhead" id="formhead" method="post" enctype="multipart/form-data" >
|
||||
<div class="layui-inline">
|
||||
<input type="file" id="file" name="file" class="layui-btn">
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<button type="button" class="layui-btn" id="btnUpload">
|
||||
<i class="layui-icon"></i>EXCEL上传验证
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
<form name="form2" id="form2" method="post" >
|
||||
<div class="stay_center" id="fblock" style="display: none">
|
||||
<div style="margin-top:10px;" id="ftext" class="layui-col-md12"></div>
|
||||
<input type="hidden" name="fpath" id="fpath" value="">
|
||||
<div class="layui-inline">
|
||||
<input type="button" id="btnExcel" value="处理上传文件" class="layui-btn">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
$("#btnUpload").click(function () {
|
||||
console.log("Upload button clicked!");
|
||||
var formData = new FormData($('#formhead')[0]);
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: "http://192.168.10.21/cimv2/cim/bom/upload.php", //上传文件的请求路径必须是绝对路劲
|
||||
data: formData,
|
||||
cache: false,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
}).success(function (data) {
|
||||
afterUpload(data);
|
||||
}).error(function () {
|
||||
alert("上传失败");
|
||||
});
|
||||
});
|
||||
});
|
||||
function afterUpload(data){
|
||||
var arr = $.parseJSON(data);
|
||||
if(arr['status']!=1) {
|
||||
alert(arr.msg);
|
||||
return false;
|
||||
}
|
||||
$("#file").val(''); //set input(file) to null
|
||||
$("#fblock").css("display","block");
|
||||
$("#ftext").html("文件上传成功!点击下面按钮开始执行<br />"+arr['fpath']+"<br />");
|
||||
$("#fpath").val(arr['fpath']);
|
||||
}
|
||||
$(function () {
|
||||
$("#btnExcel").click(function () {
|
||||
console.log("Process excel button clicked!");
|
||||
$("#btnExcel").attr("disabled",true);
|
||||
console.log("Button disabled!");
|
||||
var formData = new FormData($('#form2')[0]);
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: "http://192.168.10.21/cimv2/cim/bom/excel.php", //上传文件的请求路径必须是绝对路劲
|
||||
data: formData,
|
||||
cache: false,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
}).success(function (data) {
|
||||
excelProcess(data);
|
||||
$("#btnExcel").attr("disabled",false);
|
||||
console.log("Button enabled!");
|
||||
console.log("Done everything!");
|
||||
}).error(function () {
|
||||
alert("处理失败");
|
||||
});
|
||||
});
|
||||
});
|
||||
function excelProcess(data){
|
||||
console.log("Excel data upload successful!");
|
||||
console.log(data);
|
||||
var arr = $.parseJSON(data);
|
||||
var htmlmsg;
|
||||
for(i = 0;i < arr.msg.length;i++) htmlmsg += arr['msg'][i];
|
||||
console.log("htmlmsg proceed!");
|
||||
$("#ftext").html(htmlmsg);
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
<?php
|
||||
include_once "foot.php";
|
||||
?>
|
||||
@@ -0,0 +1,265 @@
|
||||
<?php
|
||||
/**
|
||||
* PHP发送Json对象数据
|
||||
*
|
||||
* @param $url 请求url
|
||||
* @param $jsonStr 发送的json字符串
|
||||
* @return array
|
||||
*/
|
||||
function http_post_json($url, $jsonStr)
|
||||
{
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_POST, 1);
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
||||
'Content-Type: application/json; charset=utf-8',
|
||||
'Content-Length: ' . strlen($jsonStr)
|
||||
)
|
||||
);
|
||||
$response = curl_exec($ch);
|
||||
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||
curl_close($ch);
|
||||
|
||||
return array($httpCode, $response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取复权因子
|
||||
* @return array
|
||||
*/
|
||||
function getAdj(){
|
||||
$url = "http://api.waditu.com";
|
||||
$param['api_name']='adj_factor';
|
||||
$param['token']='1bc28452ba375da19320cda845ae6307578964cb3ae473d0dc702aea';
|
||||
$param['params'] = array('ts_code' => ts_code_conv($_REQUEST['ts_code']),
|
||||
'start_date'=>str_replace('-','',$_REQUEST['t_start']),
|
||||
'end_date'=>str_replace('-','',$_REQUEST['t_end'])
|
||||
);
|
||||
$param['fields'] ="";
|
||||
$jsonStr=json_encode($param);
|
||||
list($returnCode, $returnContent) = http_post_json($url, $jsonStr);
|
||||
$arr = json_decode($returnContent,true);
|
||||
$items = $arr['data']['items'];
|
||||
$lastAdj=$items[0][2];
|
||||
foreach ($items as $t){
|
||||
list($ts_code,$date,$adj)=$t;
|
||||
$rt[$date]=$adj/$lastAdj;
|
||||
}
|
||||
return $rt;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取个股融资融券余额信息
|
||||
* @return mixed
|
||||
*/
|
||||
function getMarginByCode(){
|
||||
$url = "http://api.waditu.com";
|
||||
$param['api_name']='margin_detail';
|
||||
$param['token']='1bc28452ba375da19320cda845ae6307578964cb3ae473d0dc702aea';
|
||||
$param['params'] = array('ts_code' => ts_code_conv($_REQUEST['ts_code']),
|
||||
'start_date'=>str_replace('-','',$_REQUEST['t_start']),
|
||||
'end_date'=>str_replace('-','',$_REQUEST['t_end'])
|
||||
);
|
||||
$param['fields'] ="";
|
||||
$jsonStr=json_encode($param);
|
||||
list($returnCode, $returnContent) = http_post_json($url, $jsonStr);
|
||||
$arr = json_decode($returnContent,true);
|
||||
return $arr['data'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $exchange SSE OR SZSE, set null for all
|
||||
* @return mixed
|
||||
*/
|
||||
function getMarginAll($exchange){
|
||||
|
||||
$url = "http://api.waditu.com";
|
||||
$param['api_name']='margin_detail';
|
||||
$param['token']='1bc28452ba375da19320cda845ae6307578964cb3ae473d0dc702aea';
|
||||
$param['params'] = array(
|
||||
'start_date'=>str_replace('-','',$_REQUEST['t_start']),
|
||||
'end_date'=>str_replace('-','',$_REQUEST['t_end']),
|
||||
'exchange_id'=>$exchange
|
||||
);
|
||||
$param['fields'] ="";
|
||||
$jsonStr=json_encode($param);
|
||||
list($returnCode, $returnContent) = http_post_json($url, $jsonStr);
|
||||
$arr = json_decode($returnContent,true);
|
||||
return $arr['data'];
|
||||
}
|
||||
|
||||
/**
|
||||
* 沪深港通资金流向
|
||||
* @return mixed
|
||||
*/
|
||||
function getMoneyFlowHSGT(){
|
||||
$url = "http://api.waditu.com";
|
||||
$param['api_name']='moneyflow_hsgt';
|
||||
$param['token']='1bc28452ba375da19320cda845ae6307578964cb3ae473d0dc702aea';
|
||||
$param['params'] = array(
|
||||
'start_date'=>'20200601',
|
||||
'end_date'=>date('Ymd')
|
||||
);
|
||||
$param['fields'] ="";
|
||||
$jsonStr=json_encode($param);
|
||||
list($returnCode, $returnContent) = http_post_json($url, $jsonStr);
|
||||
$arr = json_decode($returnContent,true);
|
||||
return $arr['data'];
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取A股个股香港资金持股每日数据
|
||||
* @return mixed
|
||||
*/
|
||||
function getHKHoldByCode(){
|
||||
$url = "http://api.waditu.com";
|
||||
$param['api_name']='hk_hold';
|
||||
$param['token']='1bc28452ba375da19320cda845ae6307578964cb3ae473d0dc702aea';
|
||||
$param['params'] = array(
|
||||
'ts_code' => ts_code_conv($_REQUEST['ts_code']),
|
||||
'start_date'=>str_replace('-','',$_REQUEST['t_start']),
|
||||
'end_date'=>str_replace('-','',$_REQUEST['t_end'])
|
||||
);
|
||||
$param['fields'] ="";
|
||||
$jsonStr=json_encode($param);
|
||||
list($returnCode, $returnContent) = http_post_json($url, $jsonStr);
|
||||
$arr = json_decode($returnContent,true);
|
||||
return $arr['data'];
|
||||
}
|
||||
/**
|
||||
* 使用复权因子对股价和成交股数进行复权
|
||||
* @param $adj
|
||||
* @param $data
|
||||
* @return mixed
|
||||
*/
|
||||
function adjData($adj,$data){
|
||||
$num = count($data);
|
||||
for($i=0;$i<$num;$i++){
|
||||
$t = str_replace('-','',$data[$i]['tdate']);
|
||||
$data[$i]['tprice']=round($data[$i]['tprice']*$adj[$t],3);
|
||||
$data[$i]['tvol']=round($data[$i]['tvol']/$adj[$t],0);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
/**
|
||||
*
|
||||
0] => trade_date
|
||||
[1] => ts_code
|
||||
[2] => rzye
|
||||
[3] => rqye
|
||||
[4] => rzmre
|
||||
[5] => rqyl
|
||||
[6] => rzche
|
||||
[7] => rqchl
|
||||
[8] => rqmcl
|
||||
[9] => rzrqye
|
||||
https://tushare.pro/document/2?doc_id=58
|
||||
*/
|
||||
function marginByCodeReform($data){
|
||||
$data['items']=array_reverse($data['items']);
|
||||
foreach($data['items'] as $rec){
|
||||
$dataRT[]=array('value'=>array(date('Y-m-d',strtotime($rec[0])),$rec[9]/10000/10000));
|
||||
$val[]=$rec[9]/10000/10000;
|
||||
}
|
||||
$data_last= round($val[count($val)-1],2);
|
||||
$data_max= round(max($val),2);
|
||||
$data_min= round(min($val),2);
|
||||
if(count($val)>0) $data_avg= round(array_sum($val)/count($val),2);
|
||||
else $data_avg=null;
|
||||
return array('data'=>$dataRT,'data_max'=>$data_max,'data_min'=>$data_min,'data_avg'=>$data_avg,'data_last'=>$data_last);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 计算累积值
|
||||
* @param $data
|
||||
* @return array
|
||||
*/
|
||||
function moneyFlowStacked($data){
|
||||
$keys=array_keys($data['fields']);
|
||||
$num = count($data['items']);
|
||||
foreach ($keys as $key) {
|
||||
$tmp = 0;
|
||||
for($i=0; $i<$num; $i++){
|
||||
//keep trade_date field NOT changed.
|
||||
if($key > 0)$tmp += $data['items'][$i][$key];
|
||||
else $tmp = $data['items'][$i][$key];
|
||||
$items[$i][$key]=$tmp;
|
||||
}
|
||||
}
|
||||
return array('fields'=>$data['fields'],'items'=>$items);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据日期截取数据
|
||||
* @param $data
|
||||
* @param $s start date yyyymmdd
|
||||
* @param $e end date yyyymmdd
|
||||
* @return array|false
|
||||
*/
|
||||
function moneyFlowDateFilter($data,$s,$e){
|
||||
if($s>$e) return false;
|
||||
$num = count($data['items']);
|
||||
$items = array();
|
||||
for($i=0;$i<$num;$i++){
|
||||
if($data['items'][$i][0]>= $s and $data['items'][$i][0]<= $e)
|
||||
$items[]=$data['items'][$i];
|
||||
}
|
||||
return array('fields'=>$data['fields'],'items'=>$items);
|
||||
}
|
||||
|
||||
/**
|
||||
*$hsgt :
|
||||
[0] => trade_date
|
||||
[1] => ggt_ss
|
||||
[2] => ggt_sz
|
||||
[3] => hgt
|
||||
[4] => sgt
|
||||
[5] => north_money
|
||||
[6] => south_money
|
||||
*/
|
||||
function moneyFlowReform($data,$hsgt){
|
||||
$data['items']=array_reverse($data['items']);
|
||||
$key = array_search($hsgt,$data['fields']);
|
||||
foreach($data['items'] as $rec){
|
||||
$dataRT[]=array('value'=>array(date('Y-m-d',strtotime($rec[0])),$rec[$key]/100));
|
||||
$val[]=$rec[$key]/100; //单位:亿元
|
||||
}
|
||||
$data_last= round($val[count($val)-1],2);
|
||||
$data_max= round(max($val),2);
|
||||
$data_min= round(min($val),2);
|
||||
if(count($val)>0) $data_avg= round(array_sum($val)/count($val),2);
|
||||
else $data_avg=null;
|
||||
return array('data'=>$dataRT,'data_max'=>$data_max,'data_min'=>$data_min,'data_avg'=>$data_avg,'data_last'=>$data_last);
|
||||
}
|
||||
/**
|
||||
* $hkhold:
|
||||
* 0 code
|
||||
* 1 trade_date
|
||||
* 2 ts_code
|
||||
* 3 name
|
||||
* 4 vol
|
||||
* 5 ratio
|
||||
* 6 exchange
|
||||
*
|
||||
*/
|
||||
function hkHoldReform($data,$hkhold){
|
||||
//print_r($data);
|
||||
$data['items']=array_reverse($data['items']);
|
||||
$key = array_search($hkhold,$data['fields']);
|
||||
foreach($data['items'] as $rec){
|
||||
if($hkhold=='vol') $rec[$key] = $rec[$key]/10000; //万股
|
||||
$dataRT[]=array('value'=>array(date('Y-m-d',strtotime($rec[1])),$rec[$key]));
|
||||
$val[]=$rec[$key];
|
||||
}
|
||||
$data_last= round($val[count($val)-1],2);
|
||||
$data_max= round(max($val),2);
|
||||
$data_min= round(min($val),2);
|
||||
if(count($val)>0) $data_avg= round(array_sum($val)/count($val),2);
|
||||
else $data_avg=null;
|
||||
return array('data'=>$dataRT,'data_max'=>$data_max,'data_min'=>$data_min,'data_avg'=>$data_avg,'data_last'=>$data_last);
|
||||
}
|
||||
@@ -0,0 +1,151 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @param $ts_code: stock code
|
||||
* @param $where: add select condition you need.
|
||||
* @return array: return stock trade recode history data;
|
||||
*/
|
||||
function trade_rec($ts_code, $day_st, $day_end,$where = ''): array
|
||||
{
|
||||
global $mysqli;
|
||||
$tmp=explode('.',$ts_code);
|
||||
$ts_code = $tmp[0];
|
||||
$day_end = ($day_end)?$day_end:date('Y-m-d');
|
||||
$where = $where." and tdate>= '{$day_st}' and tdate<='{$day_end}' and tprice>0"; //担保转出的时候,可能tprice<0
|
||||
if($_REQUEST['t_vendor']=='方正证券') {
|
||||
$sql = <<< EOF
|
||||
select * from trade_record where ts_code = '$ts_code' $where and length(trade_id)=5 order by tdate asc,ttime asc
|
||||
EOF;
|
||||
} elseif($_REQUEST['t_vendor']=='长江证券') {
|
||||
$sql = <<< EOF
|
||||
select * from trade_record_cj where ts_code = '$ts_code' $where order by tdate asc,ttime asc
|
||||
EOF;
|
||||
}
|
||||
$result = $mysqli->query($sql) or die($sql);
|
||||
return $result->fetch_all(MYSQLI_ASSOC);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $data : data get from db
|
||||
* @param $flgType : 2 of flg type: 买入,卖出,
|
||||
* @return array
|
||||
*/
|
||||
function recDataSort($data,$flgType):array {
|
||||
$dataNum=count($data);
|
||||
|
||||
$rtData=$note=$rtVol=$rtPrice=array();
|
||||
for($i=0;$i<$dataNum;$i++){
|
||||
if($flgType !='' and $data[$i]['flg']!=$flgType) continue; //$flgType is null means all data matches
|
||||
$rtData[] = array("value"=>array($data[$i]['tdate'],$data[$i]['tprice']));
|
||||
$rtDataVol[] = array("value"=>array($data[$i]['tdate'],abs($data[$i]['tvol'])));
|
||||
$rtVol[] = $data[$i]['tvol'];
|
||||
$rtPrice[] = $data[$i]['tprice'];
|
||||
$note[] = "{$data[$i]['tprice']} {$data[$i]['flg']} {$data[$i]['ts_name']} {$data[$i]['tvol']} 股,成交金额 {$data[$i]['tamount']}";
|
||||
}
|
||||
return array('data'=>$rtData, 'data2'=>$rtDataVol,'note'=>$note, 'tvol'=>$rtVol, 'tprice'=>$rtPrice);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $vol : trade volume array
|
||||
* @param $price : trade price array
|
||||
* @return array|false
|
||||
*/
|
||||
function avePrice($vol,$price){
|
||||
$numVol = count($vol);
|
||||
$numPrice = count($price);
|
||||
if($numPrice!=$numVol or $numVol==0) return false;
|
||||
|
||||
$ttlVol=array_sum($vol);
|
||||
$ttlAmt=0; //total amount
|
||||
for($i=0;$i<$numVol;$i++){
|
||||
$ttlAmt += $vol[$i]*$price[$i];
|
||||
}
|
||||
$aveprice=round($ttlAmt/$ttlVol,2);
|
||||
return array('avePrice'=>$aveprice,'ttlVol'=>$ttlVol,);
|
||||
|
||||
}
|
||||
|
||||
function tradeSummary($dataBuy,$dataSell,$dataAll):array{
|
||||
$buyNum = count($dataBuy);
|
||||
$sellNum = count($dataSell);
|
||||
$allNum = count($dataAll);
|
||||
$dataBuyReverse = array_reverse($dataBuy,false); //反向重排数组,key值不保留
|
||||
|
||||
|
||||
$sellVol = $sellAmt = $sellTaxAll =0;
|
||||
$buyVol = $buyAmt = $buyTaxAll = 0;
|
||||
$buyVolRev = $buyAmtRev = $buyAmtRevFix = $buyPriceRevFix = 0;
|
||||
for($i=0;$i<$sellNum;$i++){
|
||||
$sellVol += $dataSell[$i]['tvol'];
|
||||
$sellAmt += $dataSell[$i]['tamount'];
|
||||
if($_REQUEST['t_vendor']=='方正证券')
|
||||
$sellTaxAll += $dataSell[$i]['commission'];
|
||||
$sellTaxAll += $dataSell[$i]['tax1'];
|
||||
$sellTaxAll += $dataSell[$i]['tax2'];
|
||||
$sellTaxAll += $dataSell[$i]['tax3'];
|
||||
}
|
||||
for($i=0;$i<$buyNum;$i++){
|
||||
$buyVol += $dataBuy[$i]['tvol'];
|
||||
$buyAmt += $dataBuy[$i]['tamount'];
|
||||
if($_REQUEST['t_vendor']=='方正证券')
|
||||
$buyTaxAll += $dataSell[$i]['commission'];
|
||||
$buyTaxAll += $dataBuy[$i]['tax2'];
|
||||
$buyTaxAll += $dataBuy[$i]['tax3'];
|
||||
$buyTaxAll += $dataBuy[$i]['tax1'];
|
||||
if($buyVolRev<abs($sellVol)) {
|
||||
$buyVolRev += $dataBuyReverse[$i]['tvol'];
|
||||
$buyAmtRev += $dataBuyReverse[$i]['tamount'];
|
||||
}
|
||||
}
|
||||
if($buyVolRev >= $sellVol) {
|
||||
$buyAmtRevFix = $buyAmtRev;
|
||||
$netTAmt = $sellAmt - $buyAmtRevFix;
|
||||
//按价格验算净收入
|
||||
if($buyVolRev) $buyPriceRevFix = $buyAmtRev/$buyVolRev;
|
||||
else $buyPriceRevFix = 0;
|
||||
$netTAmtCal = $sellAmt-abs($buyPriceRevFix*min(abs($sellVol),$buyVolRev));
|
||||
$buyPriceRevFix = round($buyPriceRevFix,2);
|
||||
$netTAmtCal = round($netTAmtCal,0);
|
||||
//差价>100表示$buyVolRev 与$sellVol差异较大
|
||||
if(abs($netTAmtCal-$netTAmt)>100)
|
||||
$netTAmtArr = array("T买成本" => $buyPriceRevFix, "T买股数" => $buyVolRev,"T近似收益" => $netTAmtCal);
|
||||
else
|
||||
$netTAmtArr = array("T买成本" => $buyPriceRevFix, "T买股数" => $buyVolRev,"做T收益" => round($netTAmt,0));
|
||||
}
|
||||
|
||||
|
||||
$buyAvePrice = round($buyAmt/$buyVol,2);
|
||||
if($sellVol) $sellAvePrice = abs(round($sellAmt/$sellVol,2));
|
||||
else $sellAvePrice = 0;
|
||||
$netBuyVol = $buyVol + $sellVol;
|
||||
$netBuyAmt = $buyAmt - $sellAmt;
|
||||
|
||||
$recentPrice = recentPrice($_REQUEST['ts_code']); //最新价格,前一天收盘价
|
||||
$stockCost =($netBuyVol>0)?round(($netBuyAmt+$sellTaxAll+$buyTaxAll)/$netBuyVol,2):'--'; //持股成本
|
||||
$currentProfit =($netBuyVol>0)?round(($recentPrice['close'] - $stockCost) * $netBuyVol,2):'--'; //当前浮动盈亏;
|
||||
|
||||
$netTAmtArr = array_merge($netTAmtArr, array("最新价格"=>$recentPrice['close'],"浮动盈亏" => $currentProfit));
|
||||
|
||||
$rtArr =array("买入次数"=>$buyNum,"买入股数"=>$buyVol,"买入金额"=>$buyAmt,"买入均价"=>$buyAvePrice,"买入税费"=>$buyTaxAll,
|
||||
"卖出次数"=>$sellNum,"卖出股数"=>abs($sellVol),"卖出金额"=>$sellAmt,"卖出均价"=>$sellAvePrice,"卖出税费"=>$sellTaxAll,
|
||||
"当前股数"=>$netBuyVol,"持股金额"=>$netBuyAmt, "持股成本"=>$stockCost);
|
||||
return array_merge($rtArr,$netTAmtArr);
|
||||
}
|
||||
|
||||
function recentPrice($ts_code){
|
||||
global $mysqli;
|
||||
$sql = "SELECT close FROM `stock_his_pro` where ts_code='".ts_code_conv($ts_code)."' and trade_date=(select max(trade_date) from stock_his_pro)";
|
||||
$result = $mysqli->query($sql) or die($sql);
|
||||
$rt = $result->fetch_all(MYSQLI_ASSOC); //MYSQLI_ASSOC object $rt[0]['close']
|
||||
return $rt[0]; //get arr['close']
|
||||
}
|
||||
|
||||
/**
|
||||
* reform date to yyyymmdd
|
||||
* @param $date
|
||||
* @return false|string
|
||||
*/
|
||||
function reformDate($date){
|
||||
return date('Ymd',strtotime($date));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
ini_set("display_errors","1");
|
||||
header("content-type:text/html;charset=utf-8");
|
||||
//设置时区
|
||||
date_default_timezone_set('PRC');
|
||||
//获取文件名
|
||||
$filename = $_FILES['file']['name'];
|
||||
//获取文件临时路径
|
||||
$temp_name = $_FILES['file']['tmp_name'];
|
||||
//获取大小
|
||||
$size = $_FILES['file']['size'];
|
||||
//获取文件上传码,0代表文件上传成功
|
||||
$error = $_FILES['file']['error'];
|
||||
//判断文件大小是否超过设置的最大上传限制
|
||||
if ($size > 20*1024*1024){
|
||||
//
|
||||
//echo "<script>alert('文件大小超过20M大小');window.history.go(-1);</script>";
|
||||
echo json_encode(array(
|
||||
"status" => "-2",
|
||||
"data"=> $_FILES['file'],
|
||||
"msg" => "文件大小超过20MB!",
|
||||
));
|
||||
exit();
|
||||
}
|
||||
//phpinfo函数会以数组的形式返回关于文件路径的信息
|
||||
//[dirname]:目录路径[basename]:文件名[extension]:文件后缀名[filename]:不包含后缀的文件名
|
||||
$arr = pathinfo($filename);
|
||||
//获取文件的后缀名
|
||||
$ext_suffix = $arr['extension'];
|
||||
|
||||
//设置允许上传文件的后缀
|
||||
$allow_suffix = array('xls');
|
||||
//判断上传的文件是否在允许的范围内(后缀)==>白名单判断
|
||||
if(!in_array($ext_suffix, $allow_suffix)){
|
||||
//window.history.go(-1)表示返回上一页并刷新页面
|
||||
//echo "<script>alert('上传的文件类型只能是jpg,gif,jpeg,png,xls');window.history.go(-1);</script>";
|
||||
echo json_encode(array(
|
||||
"status" => "-1",
|
||||
"rows"=>$arr,
|
||||
"msg" => "仅支持上传文件类型: xls!",
|
||||
));
|
||||
exit();
|
||||
}
|
||||
//检测存放上传文件的路径是否存在,如果不存在则新建目录
|
||||
$uploadDir = __DIR__ . '/../uploads/';
|
||||
if (!file_exists($uploadDir)){
|
||||
mkdir($uploadDir);
|
||||
}
|
||||
//为上传的文件新起一个名字,保证更加安全
|
||||
$new_filename = date('YmdHis',time()).rand(100,1000).'.'.$ext_suffix;
|
||||
//将文件从临时路径移动到磁盘
|
||||
if (move_uploaded_file($temp_name, $uploadDir.$new_filename)){
|
||||
//echo "<script>alert('文件上传成功!');window.history.go(-1);</script>";
|
||||
echo json_encode(array(
|
||||
"status" => "1",
|
||||
"data"=>$arr,
|
||||
"fpath"=>$uploadDir.$new_filename,
|
||||
"msg" => "File upload success!",
|
||||
));
|
||||
}else{
|
||||
//echo "<script>alert('文件上传失败,错误码:$error');</script>";
|
||||
echo json_encode(array(
|
||||
"status" => "-1",
|
||||
"data"=>$ext_suffix,
|
||||
"fpath"=>$uploadDir,
|
||||
"file"=>$_FILES['file'],
|
||||
"msg" => "文件上传失败,错误码:$error",
|
||||
"e"=>"error",
|
||||
));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<script type="text/javascript" src="lib/jquery.min.js"></script>
|
||||
<link href="css/style.css?version=22000" rel="stylesheet" type="text/css">
|
||||
<title>Stock Reference Data</title>
|
||||
</head>
|
||||
<?php
|
||||
$_REQUEST['ts_code']=$_REQUEST['ts_code']?$_REQUEST['ts_code']:'600000';
|
||||
?>
|
||||
<body>
|
||||
<div > </div>
|
||||
<div style="text-align: center"><h2>Stock Reference Data</h2></div>
|
||||
|
||||
<div > </div>
|
||||
<div style="text-align: center; margin:0 auto; width: 840px;">
|
||||
<div style="clear:both;position: relative; float:left; text-align:center; margin: 0 auto;width:400px;height: 400px; ">
|
||||
<div class="div_block">个股:股票代码: <input type='text' name='ts_code' id='ts_code' size="12" value='<?=$_REQUEST['ts_code']?>' ></div>
|
||||
<div class="div_block">个股:<a href="#" onclick="openurl('https://echart.doorcome.cn/stock_trend.php');">股价VS PE/PB/PS 趋势</a></div>
|
||||
<div class="div_block">个股:<a href="#" onclick="openurl('https://echart.doorcome.cn/stockmargin.php');">股价VS 融资融券余额</a></div>
|
||||
<div class="div_block">个股:<a href="#" onclick="openurl('https://echart.doorcome.cn/hkholdbycode.php');">股价VS 北向资金持股</a></div>
|
||||
<div class='div_block'>个股:<a href="#" onclick="openurl('https://echart.doorcome.cn/stock_ih.php');">股价VS 机构持仓趋势</a></div>
|
||||
<div class='div_block'>个股:<a href="#" onclick="openurl('https://echart.doorcome.cn/stockkeydata.php');">个股基本面数据</a></div>
|
||||
<div class='div_block'>指数:<a href="#" onclick="openurl('https://echart.doorcome.cn/index_trend.php');">指数VS PE/PB/PS/市值 趋势</a></div>
|
||||
<div class='div_block'>指数:<a href="#" onclick="openurl('https://echart.doorcome.cn/index_ih.php');">指数VS 机构持仓趋势</a></div>
|
||||
<div class='div_block'>指数:<a href="#" onclick="openurl('https://echart.doorcome.cn/index_mv_all.php');">指数VS 两市总市值</a></div>
|
||||
<div class='div_block'>指数:<a href="#" onclick="openurl('https://echart.doorcome.cn/moneyflow.php');">指数VS 沪深港通资金流向</a></div>
|
||||
</div>
|
||||
<div style="text-align:center; margin: 0 auto;float: left;position: relative;width:400px; ">
|
||||
|
||||
<div class='div_block'>房产:<a href="https://echart.doorcome.cn/realestate.php" target='_blank'>房地产挂牌数量趋势(宁波)</a></div>
|
||||
<div class='div_block'>房产:<a href="https://echart.doorcome.cn/estateNewTradeDaily.php" target='_blank'>新房每日成交量(宁波)</a></div>
|
||||
<div class='div_block'>房产:<a href="https://echart.doorcome.cn/estateTradeDaily.php" target='_blank'>二手房每日成交量(宁波)</a></div>
|
||||
<div class='div_block'>房产:<a href="https://echart.doorcome.cn/estateListDaily.php" target='_blank'>二手房每日挂牌量(宁波)</a></div>
|
||||
</div>
|
||||
</div>
|
||||
<?php include_once "html/footer.php"; ?>
|
||||
<script>
|
||||
function openurl(url){
|
||||
let ts_code = $("#ts_code").val();
|
||||
url = url + '?ts_code='+ ts_code;
|
||||
console.log(url);
|
||||
window.open(url);
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
include_once "inc/getBasic.inc.php";
|
||||
$_REQUEST['code']=$_REQUEST['code']?$_REQUEST['code']:'ShareHDNum'; #code:sh sz zx cy
|
||||
$_REQUEST['t_start']=$_REQUEST['t_start']?$_REQUEST['t_start']:'2006-01-01';
|
||||
$_REQUEST['t_end']=$_REQUEST['t_end']?$_REQUEST['t_end']:'';
|
||||
$title="指数VS机构持仓";
|
||||
include_once "html/head.php";
|
||||
?>
|
||||
<form name="main" id="main" method="get"> <div style="width:100%;text-align:center">
|
||||
指标代码:
|
||||
<select name='code' id='code'>
|
||||
<option value='ShareHDNum'>持股数-亿股</option>
|
||||
<option value='vPosition'>持股金额-亿元</option>
|
||||
<option value='VSRatio'>每股单价-元</option>
|
||||
</select>
|
||||
<script>
|
||||
document.getElementById('code').value='<?=$_REQUEST['code']?>';
|
||||
</script>
|
||||
开始时间: <input type='date' name='t_start' id='t_start' width='30px' value='<?=$_REQUEST['t_start']?>' >
|
||||
结束时间: <input type='date' name='t_end' id='t_end' width='30px' value='<?=$_REQUEST['t_end']?>'>
|
||||
<input type='submit' value="给我查!">
|
||||
<div > </div>
|
||||
<input type='checkbox' id='cb_01' onclick="hideSwitch(this.id,'1')" > 基金
|
||||
<input type='checkbox' id='cb_02' onclick="hideSwitch(this.id,'2')" checked> QFII
|
||||
<input type='checkbox' id='cb_03' onclick="hideSwitch(this.id,'3')" > 社保
|
||||
<input type='checkbox' id='cb_04' onclick="hideSwitch(this.id,'4')" > 券商
|
||||
<input type='checkbox' id='cb_05' onclick="hideSwitch(this.id,'5')" > 保险
|
||||
<input type='checkbox' id='cb_06' onclick="hideSwitch(this.id,'6')" > 信托
|
||||
</div> </form>
|
||||
<div > </div>
|
||||
<!-- https://echart.doorcome.cn/chartThree.php?lx=1&share=vPosition&s=2010-01-01 -->
|
||||
<div style="width:100%; text-align:center;display:None" id='1'>
|
||||
<iframe src="https://echart.doorcome.cn/chartThree.php?s=<?=$_REQUEST['t_start']?>&lx=1&share=<?=$_REQUEST['code']?>&e=<?=$_REQUEST['t_end']?>"
|
||||
height="400px" width="1000px"></iframe>
|
||||
<div > </div>
|
||||
</div>
|
||||
<div style="width:100%; text-align:center; display:block;" id='2'>
|
||||
<iframe src="https://echart.doorcome.cn/chartThree.php?s=<?=$_REQUEST['t_start']?>&lx=2&share=<?=$_REQUEST['code']?>&e=<?=$_REQUEST['t_end']?>"
|
||||
height="400px" width="1000px"></iframe>
|
||||
<div > </div>
|
||||
</div>
|
||||
<div style="width:100%; text-align:center; display:None;" id='3'>
|
||||
<iframe src="https://echart.doorcome.cn/chartThree.php?s=<?=$_REQUEST['t_start']?>&lx=3&share=<?=$_REQUEST['code']?>&e=<?=$_REQUEST['t_end']?>"
|
||||
height="400px" width="1000px"></iframe>
|
||||
</div>
|
||||
<div > </div>
|
||||
<div style="width:100%; text-align:center; display:None;" id='4'>
|
||||
<iframe src="https://echart.doorcome.cn/chartThree.php?s=<?=$_REQUEST['t_start']?>&lx=4&share=<?=$_REQUEST['code']?>&e=<?=$_REQUEST['t_end']?>"
|
||||
height="400px" width="1000px"></iframe>
|
||||
</div>
|
||||
<div > </div>
|
||||
<div style="width:100%; text-align:center; display:None;" id='5'>
|
||||
<iframe src="https://echart.doorcome.cn/chartThree.php?s=<?=$_REQUEST['t_start']?>&lx=5&share=<?=$_REQUEST['code']?>&e=<?=$_REQUEST['t_end']?>"
|
||||
height="400px" width="1000px"></iframe>
|
||||
</div>
|
||||
<div > </div>
|
||||
<div style="width:100%; text-align:center; display:None;" id='6'>
|
||||
<iframe src="https://echart.doorcome.cn/chartThree.php?s=<?=$_REQUEST['t_start']?>&lx=6&share=<?=$_REQUEST['code']?>&e=<?=$_REQUEST['t_end']?>"
|
||||
height="400px" width="1000px"></iframe>
|
||||
</div>
|
||||
<?php include_once "html/footer.php"; ?>
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
$_REQUEST['code']=$_REQUEST['code']?$_REQUEST['code']:'sh'; #code:sh sz zx cy
|
||||
$_REQUEST['t_start']=$_REQUEST['t_start']?$_REQUEST['t_start']:'2015-01-01';
|
||||
$_REQUEST['t_end']=$_REQUEST['t_end']?$_REQUEST['t_end']:'';
|
||||
$title="指数VS两市总市值趋势";
|
||||
include_once "html/head.php";
|
||||
?>
|
||||
<form name="main" id="main" method="get"> <div style="width:100%;text-align:center">
|
||||
指数代码:
|
||||
<select name='code' id='code'>
|
||||
<option value='sh'>上证指数</option>
|
||||
<option value='sz'>深圳成指</option>
|
||||
<option value='zx'>中小板指</option>
|
||||
<option value='cy'>创业板指</option>
|
||||
</select>
|
||||
<script>
|
||||
document.getElementById('code').value='<?=$_REQUEST['code']?>';
|
||||
</script>
|
||||
开始时间: <input type='date' name='t_start' id='t_start' width='30px' value='<?=$_REQUEST['t_start']?>' >
|
||||
结束时间: <input type='date' name='t_end' id='t_end' width='30px' value='<?=$_REQUEST['t_end']?>' >
|
||||
<input type='submit' value="给我查!">
|
||||
<div > </div>
|
||||
<input type='checkbox' id='cb_total_mv' onclick="hideSwitch(this.id,'total_mv')" checked > 两市总市值
|
||||
<input type='checkbox' id='cb_circ_mv' onclick="hideSwitch(this.id,'circ_mv')" checked> 两市流通市值
|
||||
</div> </form>
|
||||
<div > </div>
|
||||
|
||||
<div style="width:100%; text-align:center; " id='total_mv'>
|
||||
<iframe src="https://echart.doorcome.cn/chartFive.php?s=<?=$_REQUEST['t_start']?>&item=total_mv_all&code=<?=$_REQUEST['code']?>&e=<?=$_REQUEST['t_end']?>"
|
||||
height="400px" width="1000px"></iframe>
|
||||
</div>
|
||||
<div > </div>
|
||||
<div style="width:100%; text-align:center; " id='circ_mv'>
|
||||
<iframe src="https://echart.doorcome.cn/chartFive.php?s=<?=$_REQUEST['t_start']?>&item=circ_mv_all&code=<?=$_REQUEST['code']?>&e=<?=$_REQUEST['t_end']?>"
|
||||
height="400px" width="1000px"></iframe>
|
||||
</div>
|
||||
<?php include_once("html/footer.php"); ?>
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
$_REQUEST['code']=$_REQUEST['code']?$_REQUEST['code']:'sh'; #code:sh sz zx cy
|
||||
$_REQUEST['t_start']=$_REQUEST['t_start']?$_REQUEST['t_start']:'2015-01-01';
|
||||
$_REQUEST['t_end']=$_REQUEST['t_end']?$_REQUEST['t_end']:'';
|
||||
$title="指数VS PE/PB/PS/市值 趋势";
|
||||
include_once "html/head.php";
|
||||
?>
|
||||
<form name="main" id="main" method="get"> <div style="width:100%;text-align:center">
|
||||
指数代码:
|
||||
<select name='code' id='code'>
|
||||
<option value='sh'>上证指数</option>
|
||||
<option value='sz'>深圳成指</option>
|
||||
<option value='zx'>中小板指</option>
|
||||
<option value='cy'>创业板指</option>
|
||||
</select>
|
||||
<script>
|
||||
document.getElementById('code').value='<?=$_REQUEST['code']?>';
|
||||
</script>
|
||||
开始时间: <input type='date' name='t_start' id='t_start' width='30px' value='<?=$_REQUEST['t_start']?>' >
|
||||
结束时间: <input type='date' name='t_end' id='t_end' width='30px' value='<?=$_REQUEST['t_end']?>' >
|
||||
<input type='submit' value="给我查!">
|
||||
<div > </div>
|
||||
<input type='checkbox' id='cb_pe' onclick="hideSwitch(this.id,'pe_ttm')" checked> PE_TTM 市盈率
|
||||
<input type='checkbox' id='cb_pb' onclick="hideSwitch(this.id,'pb')" > PB 市净率
|
||||
<input type='checkbox' id='cb_ps' onclick="hideSwitch(this.id,'ps')" > PS 市销率
|
||||
<input type='checkbox' id='cb_total_mv' onclick="hideSwitch(this.id,'total_mv')" > 总市值
|
||||
<input type='checkbox' id='cb_circ_mv' onclick="hideSwitch(this.id,'circ_mv')" > 流通市值
|
||||
</div> </form>
|
||||
<div > </div>
|
||||
<!--https://echart.doorcome.cn/chartFive.php?s=20071001&code=sz&item=total_mv-->
|
||||
<div style="width:100%; text-align:center" id='pe_ttm'>
|
||||
<iframe src="https://echart.doorcome.cn/chartFive.php?s=<?=$_REQUEST['t_start']?>&item=pe_ttm&code=<?=$_REQUEST['code']?>&e=<?=$_REQUEST['t_end']?>"
|
||||
height="400px" width="1000px"></iframe>
|
||||
</div>
|
||||
<div > </div>
|
||||
<div style="width:100%; text-align:center; display:None;" id='pb'>
|
||||
<iframe src="https://echart.doorcome.cn/chartFive.php?s=<?=$_REQUEST['t_start']?>&item=pb&code=<?=$_REQUEST['code']?>&e=<?=$_REQUEST['t_end']?>"
|
||||
height="400px" width="1000px"></iframe>
|
||||
</div>
|
||||
<div > </div>
|
||||
<div style="width:100%; text-align:center; display:None;" id='ps'>
|
||||
<iframe src="https://echart.doorcome.cn/chartFive.php?s=<?=$_REQUEST['t_start']?>&item=ps&code=<?=$_REQUEST['code']?>&e=<?=$_REQUEST['t_end']?>"
|
||||
height="400px" width="1000px"></iframe>
|
||||
</div>
|
||||
<div > </div>
|
||||
<div style="width:100%; text-align:center; display:None;" id='total_mv'>
|
||||
<iframe src="https://echart.doorcome.cn/chartFive.php?s=<?=$_REQUEST['t_start']?>&item=total_mv&code=<?=$_REQUEST['code']?>&e=<?=$_REQUEST['t_end']?>"
|
||||
height="400px" width="1000px"></iframe>
|
||||
</div>
|
||||
<div > </div>
|
||||
<div style="width:100%; text-align:center; display:None;" id='circ_mv'>
|
||||
<iframe src="https://echart.doorcome.cn/chartFive.php?s=<?=$_REQUEST['t_start']?>&item=circ_mv&code=<?=$_REQUEST['code']?>&e=<?=$_REQUEST['t_end']?>"
|
||||
height="400px" width="1000px"></iframe>
|
||||
</div>
|
||||
<?php include_once "html/footer.php"; ?>
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
// ajax with adj set 1
|
||||
$(function () {
|
||||
jQuery.support.cors = true;
|
||||
if($("#adj").val()=='1') {
|
||||
console.log("Got adj set 1");
|
||||
var pyurl= "https://py.doorcome.cn/ts/adj?";
|
||||
pyurl += "ts_code="+$("#ts_code").val();
|
||||
pyurl += "&s="+$("#s").val();
|
||||
pyurl += "&e="+$("#e").val();
|
||||
console.log(pyurl);
|
||||
//var formData = new FormData($('#form1')[0]);
|
||||
$.ajax({
|
||||
crossDomain:true,
|
||||
//type: 'post',
|
||||
url: pyurl, //上传文件的请求路径必须是绝对路劲
|
||||
//data: formData,
|
||||
cache: false,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
success:function (data) {
|
||||
console.log("Get data sucessfully");
|
||||
var adj = getAdj(data);
|
||||
//console.log(adj);
|
||||
console.log(data1[0]['value'][0]);
|
||||
console.log(data1[0]['value'][1]);
|
||||
data1 = adjData(adj,data1,'price');
|
||||
data2 = adjData(adj,data2,'price');
|
||||
data3 = adjData(adj,data3,'price');
|
||||
data4 = adjData(adj,data4,'volum');
|
||||
data5 = adjData(adj,data5,'volum');
|
||||
console.log(data1[0]['value'][0]);
|
||||
console.log(data1[0]['value'][1]);
|
||||
//重新执行画图
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
},
|
||||
error: function () {
|
||||
alert("获取数据失败!");
|
||||
}
|
||||
});
|
||||
};
|
||||
});
|
||||
|
||||
function getAdj(data){
|
||||
var arr = $.parseJSON(data);
|
||||
var rtArr = {};
|
||||
var key = '';
|
||||
//console.log(arr);
|
||||
var lastAdj= arr[0]['adj_factor'] //last adj number
|
||||
for(var i = 0; i <arr.length;i++){
|
||||
key=arr[i]['trade_date'];
|
||||
rtArr[key] = arr[i]['adj_factor']/lastAdj;
|
||||
}
|
||||
return rtArr;
|
||||
}
|
||||
|
||||
function adjData(adj,data,tp){
|
||||
var k = '';
|
||||
if(data == null) return 0;
|
||||
for(var i=0; i<data.length; i++){
|
||||
k = data[i]['value'][0]; //get date as key
|
||||
k = k.replace(/-/g,''); //formate key formate from yyyy-mm-dd to yyyymmdd
|
||||
if(tp=='price')data[i]['value'][1]=Math.round(data[i]['value'][1]*adj[k]*100)/100; //价格保留两位小数
|
||||
if(tp=='volum')data[i]['value'][1]=Math.round(data[i]['value'][1]/adj[k]); //数量取整数
|
||||
}
|
||||
return data;
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom,'dark');
|
||||
var app = {};
|
||||
option = null;
|
||||
|
||||
option = {
|
||||
title: {
|
||||
//text: legend[0]+' V.S '+legend[2],
|
||||
text: headtxt,
|
||||
subtext: subtxt,
|
||||
textAlign:'center',
|
||||
left:'50%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:legend,
|
||||
right:'20'
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
//type: 'category',
|
||||
type: 'time',
|
||||
boundaryGap: false
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:legend[0], //图列
|
||||
show:true
|
||||
},
|
||||
{
|
||||
type:'value',
|
||||
name:legend[2]+unit, //图例
|
||||
//scale:true,
|
||||
boundaryGap:false,
|
||||
show:true,
|
||||
splitLine:{
|
||||
show:false, //Y2 坐标刻度横线
|
||||
},
|
||||
}
|
||||
],
|
||||
dataZoom: [{
|
||||
type: 'inside', //or slider
|
||||
start: 0,
|
||||
end: 100
|
||||
}, {
|
||||
start: 0,
|
||||
end: 100,
|
||||
handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
|
||||
handleSize: '80%',
|
||||
handleStyle: {
|
||||
color: '#fff',
|
||||
shadowBlur: 3,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.6)',
|
||||
shadowOffsetX: 2,
|
||||
shadowOffsetY: 2
|
||||
}
|
||||
}],
|
||||
series: [
|
||||
{
|
||||
name:legend[0],
|
||||
type:'line',
|
||||
yAxisIndex:0,
|
||||
symbol:'none',
|
||||
data:data1,
|
||||
},
|
||||
{
|
||||
name:legend[2],
|
||||
type:'line',
|
||||
yAxisIndex:1,
|
||||
symbol:'none', //数据圆点
|
||||
smooth:false,
|
||||
data:data2,
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
$(function (){
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom,'dark');
|
||||
var app = {};
|
||||
var option = null;
|
||||
option = {
|
||||
title: {
|
||||
//text: legend[0]+' V.S '+legend[2],
|
||||
text: headtxt,
|
||||
subtext: subtxt,
|
||||
textAlign:'center',
|
||||
left:'50%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:legend,
|
||||
right:'20'
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
//type: 'category',
|
||||
type: 'time',
|
||||
boundaryGap: false
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:legend[0], //图列
|
||||
show:true
|
||||
},
|
||||
{
|
||||
type:'value',
|
||||
name:legend[2]+unit, //图例
|
||||
//scale:true,
|
||||
boundaryGap:false,
|
||||
show:true,
|
||||
splitLine:{
|
||||
show:false, //Y2 坐标刻度横线
|
||||
},
|
||||
}
|
||||
],
|
||||
dataZoom: [{
|
||||
type: 'inside', //or slider
|
||||
start: 0,
|
||||
end: 100
|
||||
}, {
|
||||
start: 0,
|
||||
end: 100,
|
||||
handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
|
||||
handleSize: '80%',
|
||||
handleStyle: {
|
||||
color: '#fff',
|
||||
shadowBlur: 3,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.6)',
|
||||
shadowOffsetX: 2,
|
||||
shadowOffsetY: 2
|
||||
}
|
||||
}],
|
||||
series: [
|
||||
{
|
||||
name:legend[0],
|
||||
type:'line',
|
||||
yAxisIndex:0,
|
||||
symbol:'none',
|
||||
data:data1
|
||||
},
|
||||
{
|
||||
name:legend[2],
|
||||
type:'line',
|
||||
yAxisIndex:1,
|
||||
symbol:'none', //数据圆点
|
||||
smooth:false,
|
||||
data: data2
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,135 @@
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom,'dark'); //内置主题:dark, grey,bright,light
|
||||
var app = {};
|
||||
option = null;
|
||||
console.log(data1[0]['value'][0]);
|
||||
console.log(data1[0]['value'][1]);
|
||||
option = {
|
||||
//backgroundColor: '',
|
||||
title: {
|
||||
//text: legend[0]+' V.S '+legend[2],
|
||||
text: headtxt,
|
||||
subtext: subtxt,
|
||||
textAlign:'center',
|
||||
left:'50%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: [
|
||||
{
|
||||
data:[legend[0],legend[1],legend[2]],
|
||||
right:'50',
|
||||
},
|
||||
{
|
||||
data:[legend[3],legend[4]],
|
||||
right:'100',
|
||||
top:'30',
|
||||
},
|
||||
],
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
//type: 'category',
|
||||
type: 'time',
|
||||
boundaryGap: false
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:legend[0], //图列
|
||||
show:true,
|
||||
scale:true,
|
||||
},
|
||||
{
|
||||
type:'value',
|
||||
name:unit, //图例
|
||||
scale:true, //自动缩放
|
||||
boundaryGap:false,
|
||||
show:true,
|
||||
axisLine:{
|
||||
show:true, //Y2 坐标轴
|
||||
},
|
||||
axisTick: {
|
||||
show:true, //Y2 坐标刻度
|
||||
},
|
||||
splitLine:{
|
||||
show:false, //Y2 坐标刻度横线
|
||||
},
|
||||
}
|
||||
],
|
||||
dataZoom: [{
|
||||
type: 'inside', //or slider
|
||||
start: 0,
|
||||
end: 100
|
||||
}, {
|
||||
start: 0,
|
||||
end: 100,
|
||||
handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
|
||||
handleSize: '80%',
|
||||
handleStyle: {
|
||||
color: '#fff',
|
||||
shadowBlur: 3,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.6)',
|
||||
shadowOffsetX: 2,
|
||||
shadowOffsetY: 2
|
||||
}
|
||||
}],
|
||||
series: [
|
||||
{
|
||||
name:legend[0],
|
||||
type:'line',
|
||||
yAxisIndex:0,
|
||||
symbol:'none',
|
||||
smooth:false,
|
||||
data: data1,
|
||||
},
|
||||
|
||||
{
|
||||
name:legend[1],
|
||||
type:'scatter', //散点图
|
||||
yAxisIndex:0,
|
||||
symbolSize: 10,
|
||||
smooth:false,
|
||||
data: data2,
|
||||
},
|
||||
{
|
||||
name:legend[2],
|
||||
type:'scatter', //散点图
|
||||
yAxisIndex:0,
|
||||
symbolSize: 10,
|
||||
smooth:false,
|
||||
data: data3
|
||||
},
|
||||
{
|
||||
name:legend[3],
|
||||
type:'bar',
|
||||
yAxisIndex:1,
|
||||
symbolSize: 0,
|
||||
barWidth: 1,
|
||||
smooth:false,
|
||||
data: data4,
|
||||
},
|
||||
{
|
||||
name:legend[4],
|
||||
type:'bar',
|
||||
yAxisIndex:1,
|
||||
symbolSize: 0,
|
||||
barWidth: 1,
|
||||
smooth:false,
|
||||
data: data5,
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom,'dark');
|
||||
var app = {};
|
||||
option = null;
|
||||
|
||||
option = {
|
||||
title: {
|
||||
//text: legend[0]+' V.S '+legend[2],
|
||||
text: headtxt,
|
||||
subtext: subtxt,
|
||||
textAlign:'center',
|
||||
left:'50%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:legend,
|
||||
right:'20'
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
//type: 'category',
|
||||
type: 'time',
|
||||
boundaryGap: false
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:legend[0], //图列
|
||||
show:true,
|
||||
scale:true,
|
||||
},
|
||||
{
|
||||
type:'value',
|
||||
name:legend[1]+'-'+unit, //图例
|
||||
//scale:true,
|
||||
boundaryGap:false,
|
||||
show:true,
|
||||
splitLine:{
|
||||
show:false, //Y2 坐标刻度横线
|
||||
},
|
||||
}
|
||||
],
|
||||
dataZoom: [{
|
||||
type: 'inside', //or slider
|
||||
start: 0,
|
||||
end: 100
|
||||
}, {
|
||||
start: 0,
|
||||
end: 100,
|
||||
handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
|
||||
handleSize: '80%',
|
||||
handleStyle: {
|
||||
color: '#fff',
|
||||
shadowBlur: 3,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.6)',
|
||||
shadowOffsetX: 2,
|
||||
shadowOffsetY: 2
|
||||
}
|
||||
}],
|
||||
series: [
|
||||
{
|
||||
name:legend[0],
|
||||
type:'line',
|
||||
yAxisIndex:0,
|
||||
symbol:'none',
|
||||
data:data1,
|
||||
},
|
||||
{
|
||||
name:legend[1],
|
||||
type:'line',
|
||||
yAxisIndex:1,
|
||||
symbol:'none', //数据圆点
|
||||
smooth:false,
|
||||
data:data2,
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom,'dark');
|
||||
var app = {};
|
||||
option = null;
|
||||
|
||||
option = {
|
||||
title: {
|
||||
//text: legend[0]+' V.S '+legend[2],
|
||||
text: headtxt,
|
||||
subtext: subtxt,
|
||||
textAlign:'center',
|
||||
left:'50%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:legend,
|
||||
right:'20'
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
//type: 'category',
|
||||
type: 'time',
|
||||
boundaryGap: false
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:legend[0], //图列
|
||||
show:true,
|
||||
scale:true,
|
||||
},
|
||||
{
|
||||
type:'value',
|
||||
name:legend[1]+'-'+unit, //图例
|
||||
scale:true, //auto sacle
|
||||
boundaryGap:false,
|
||||
show:true,
|
||||
splitLine:{
|
||||
show:false, //Y2 坐标刻度横线
|
||||
},
|
||||
}
|
||||
],
|
||||
dataZoom: [{
|
||||
type: 'inside', //or slider
|
||||
start: 0,
|
||||
end: 100
|
||||
}, {
|
||||
start: 0,
|
||||
end: 100,
|
||||
handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
|
||||
handleSize: '80%',
|
||||
handleStyle: {
|
||||
color: '#fff',
|
||||
shadowBlur: 3,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.6)',
|
||||
shadowOffsetX: 2,
|
||||
shadowOffsetY: 2
|
||||
}
|
||||
}],
|
||||
series: [
|
||||
{
|
||||
name:legend[0],
|
||||
type:'line',
|
||||
yAxisIndex:0,
|
||||
symbol:'none',
|
||||
data:data1,
|
||||
},
|
||||
{
|
||||
name:legend[1],
|
||||
type:'line',
|
||||
yAxisIndex:1,
|
||||
symbol:'none', //数据圆点
|
||||
smooth:false,
|
||||
data:data2,
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
Vendored
+22
@@ -0,0 +1,22 @@
|
||||
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
|
||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("echarts")):"function"==typeof define&&define.amd?define(["exports","echarts"],t):t(e.dataTool={},e.echarts)}(this,function(e,t){"use strict";function r(e,t,r){if(e&&t){if(e.map&&e.map===c)return e.map(t,r);for(var a=[],n=0,o=e.length;n<o;n++)a.push(t.call(r,e[n],n,e));return a}}function a(e){return e?r(u(e,"attribute"),function(e){return{id:i(e,"id"),title:i(e,"title"),type:i(e,"type")}}):[]}function n(e,t){return e?r(u(e,"node"),function(e){var r={id:i(e,"id"),name:i(e,"label"),itemStyle:{normal:{}}},a=l(e,"viz:size"),n=l(e,"viz:position"),o=l(e,"viz:color"),s=l(e,"attvalues");if(a&&(r.symbolSize=parseFloat(i(a,"value"))),n&&(r.x=parseFloat(i(n,"x")),r.y=parseFloat(i(n,"y"))),o&&(r.itemStyle.normal.color="rgb("+[0|i(o,"r"),0|i(o,"g"),0|i(o,"b")].join(",")+")"),s){var f=u(s,"attvalue");r.attributes={};for(var c=0;c<f.length;c++){var p=f[c],d=i(p,"for"),v=i(p,"value"),g=t[d];if(g){switch(g.type){case"integer":case"long":v=parseInt(v,10);break;case"float":case"double":v=parseFloat(v);break;case"boolean":v="true"==v.toLowerCase()}r.attributes[d]=v}}}return r}):[]}function o(e){return e?r(u(e,"edge"),function(e){var t={id:i(e,"id"),name:i(e,"label"),source:i(e,"source"),target:i(e,"target"),lineStyle:{normal:{}}},r=t.lineStyle.normal,a=l(e,"viz:thickness"),n=l(e,"viz:color");return a&&(r.width=parseFloat(a.getAttribute("value"))),n&&(r.color="rgb("+[0|i(n,"r"),0|i(n,"g"),0|i(n,"b")].join(",")+")"),t}):[]}function i(e,t){return e.getAttribute(t)}function l(e,t){for(var r=e.firstChild;r;){if(1==r.nodeType&&r.nodeName.toLowerCase()==t.toLowerCase())return r;r=r.nextSibling}return null}function u(e,t){for(var r=e.firstChild,a=[];r;)r.nodeName.toLowerCase()==t.toLowerCase()&&a.push(r),r=r.nextSibling;return a}function s(e){return e.sort(function(e,t){return e-t}),e}function f(e,t){var r=(e.length-1)*t+1,a=Math.floor(r),n=+e[a-1],o=r-a;return o?n+o*(e[a]-n):n}var c=Array.prototype.map,p=(Object.freeze||Object)({parse:function(e){var t;if(!(t="string"==typeof e?(new DOMParser).parseFromString(e,"text/xml"):e)||t.getElementsByTagName("parsererror").length)return null;var r=l(t,"gexf");if(!r)return null;for(var i=l(r,"graph"),u=a(l(i,"attributes")),s={},f=0;f<u.length;f++)s[u[f].id]=u[f];return{nodes:n(l(i,"nodes"),s),links:o(l(i,"edges"))}}}),d=function(e,t){for(var r=[],a=[],n=[],o=(t=t||[]).boundIQR,i="none"===o||0===o,l=0;l<e.length;l++){n.push(l+"");var u=s(e[l].slice()),c=f(u,.25),p=f(u,.5),d=f(u,.75),v=u[0],g=u[u.length-1],h=(null==o?1.5:o)*(d-c),b=i?v:Math.max(v,c-h),m=i?g:Math.min(g,d+h);r.push([b,c,p,d,m]);for(var y=0;y<u.length;y++){var x=u[y];if(x<b||x>m){var w=[l,x];"vertical"===t.layout&&w.reverse(),a.push(w)}}}return{boxData:r,outliers:a,axisData:n}};t.dataTool&&(t.dataTool.version="1.0.0",t.dataTool.gexf=p,t.dataTool.prepareBoxplotData=d),e.version="1.0.0",e.gexf=p,e.prepareBoxplotData=d});
|
||||
Vendored
+1
File diff suppressed because one or more lines are too long
Vendored
+1
File diff suppressed because one or more lines are too long
Vendored
+22
File diff suppressed because one or more lines are too long
@@ -0,0 +1,76 @@
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom,'dark');
|
||||
var app = {};
|
||||
option = null;
|
||||
|
||||
option = {
|
||||
title: {
|
||||
//text: legend[0]+' V.S '+legend[2],
|
||||
text: headtxt,
|
||||
//subtext: subtxt,
|
||||
textAlign:'center',
|
||||
left:'50%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:legend,
|
||||
right:'20'
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
//type: 'category',
|
||||
type: 'time',
|
||||
boundaryGap: false
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:legend[0], //图列
|
||||
show:true,
|
||||
scale:false,
|
||||
min:200000,
|
||||
}
|
||||
],
|
||||
dataZoom: [{
|
||||
type: 'inside', //or slider
|
||||
start: 0,
|
||||
end: 100
|
||||
}, {
|
||||
start: 0,
|
||||
end: 100,
|
||||
handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
|
||||
handleSize: '80%',
|
||||
handleStyle: {
|
||||
color: '#fff',
|
||||
shadowBlur: 3,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.6)',
|
||||
shadowOffsetX: 2,
|
||||
shadowOffsetY: 2
|
||||
}
|
||||
}],
|
||||
series: [
|
||||
{
|
||||
name:legend[0],
|
||||
type:'line',
|
||||
yAxisIndex:0,
|
||||
symbol:'none',
|
||||
data:data1,
|
||||
itemStyle:{normal:{label:{show:true}}}, //显示数字
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
+517
@@ -0,0 +1,517 @@
|
||||
|
||||
(function (root, factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define(['exports', 'echarts'], factory);
|
||||
} else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {
|
||||
// CommonJS
|
||||
factory(exports, require('echarts'));
|
||||
} else {
|
||||
// Browser globals
|
||||
factory({}, root.echarts);
|
||||
}
|
||||
}(this, function (exports, echarts) {
|
||||
var log = function (msg) {
|
||||
if (typeof console !== 'undefined') {
|
||||
console && console.error && console.error(msg);
|
||||
}
|
||||
};
|
||||
if (!echarts) {
|
||||
log('ECharts is not Loaded');
|
||||
return;
|
||||
}
|
||||
echarts.registerTheme('grey', {
|
||||
"color": [
|
||||
"#9b8bba",
|
||||
"#e098c7",
|
||||
"#8fd3e8",
|
||||
"#71669e",
|
||||
"#cc70af",
|
||||
"#7cb4cc"
|
||||
],
|
||||
"backgroundColor": "rgba(91,92,110,1)",
|
||||
"textStyle": {},
|
||||
"title": {
|
||||
"textStyle": {
|
||||
"color": "#ffffff"
|
||||
},
|
||||
"subtextStyle": {
|
||||
"color": "#cccccc"
|
||||
}
|
||||
},
|
||||
"line": {
|
||||
"itemStyle": {
|
||||
"normal": {
|
||||
"borderWidth": "2"
|
||||
}
|
||||
},
|
||||
"lineStyle": {
|
||||
"normal": {
|
||||
"width": "3"
|
||||
}
|
||||
},
|
||||
"symbolSize": "7",
|
||||
"symbol": "circle",
|
||||
"smooth": true
|
||||
},
|
||||
"radar": {
|
||||
"itemStyle": {
|
||||
"normal": {
|
||||
"borderWidth": "2"
|
||||
}
|
||||
},
|
||||
"lineStyle": {
|
||||
"normal": {
|
||||
"width": "3"
|
||||
}
|
||||
},
|
||||
"symbolSize": "7",
|
||||
"symbol": "circle",
|
||||
"smooth": true
|
||||
},
|
||||
"bar": {
|
||||
"itemStyle": {
|
||||
"normal": {
|
||||
"barBorderWidth": 0,
|
||||
"barBorderColor": "#ccc"
|
||||
},
|
||||
"emphasis": {
|
||||
"barBorderWidth": 0,
|
||||
"barBorderColor": "#ccc"
|
||||
}
|
||||
}
|
||||
},
|
||||
"pie": {
|
||||
"itemStyle": {
|
||||
"normal": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
},
|
||||
"emphasis": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
}
|
||||
}
|
||||
},
|
||||
"scatter": {
|
||||
"itemStyle": {
|
||||
"normal": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
},
|
||||
"emphasis": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
}
|
||||
}
|
||||
},
|
||||
"boxplot": {
|
||||
"itemStyle": {
|
||||
"normal": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
},
|
||||
"emphasis": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parallel": {
|
||||
"itemStyle": {
|
||||
"normal": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
},
|
||||
"emphasis": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sankey": {
|
||||
"itemStyle": {
|
||||
"normal": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
},
|
||||
"emphasis": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
}
|
||||
}
|
||||
},
|
||||
"funnel": {
|
||||
"itemStyle": {
|
||||
"normal": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
},
|
||||
"emphasis": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
}
|
||||
}
|
||||
},
|
||||
"gauge": {
|
||||
"itemStyle": {
|
||||
"normal": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
},
|
||||
"emphasis": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
}
|
||||
}
|
||||
},
|
||||
"candlestick": {
|
||||
"itemStyle": {
|
||||
"normal": {
|
||||
"color": "#e098c7",
|
||||
"color0": "transparent",
|
||||
"borderColor": "#e098c7",
|
||||
"borderColor0": "#8fd3e8",
|
||||
"borderWidth": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"graph": {
|
||||
"itemStyle": {
|
||||
"normal": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
}
|
||||
},
|
||||
"lineStyle": {
|
||||
"normal": {
|
||||
"width": 1,
|
||||
"color": "#aaaaaa"
|
||||
}
|
||||
},
|
||||
"symbolSize": "7",
|
||||
"symbol": "circle",
|
||||
"smooth": true,
|
||||
"color": [
|
||||
"#9b8bba",
|
||||
"#e098c7",
|
||||
"#8fd3e8",
|
||||
"#71669e",
|
||||
"#cc70af",
|
||||
"#7cb4cc"
|
||||
],
|
||||
"label": {
|
||||
"normal": {
|
||||
"textStyle": {
|
||||
"color": "#eeeeee"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"map": {
|
||||
"itemStyle": {
|
||||
"normal": {
|
||||
"areaColor": "#eeeeee",
|
||||
"borderColor": "#444444",
|
||||
"borderWidth": 0.5
|
||||
},
|
||||
"emphasis": {
|
||||
"areaColor": "rgba(224,152,199,1)",
|
||||
"borderColor": "#444444",
|
||||
"borderWidth": 1
|
||||
}
|
||||
},
|
||||
"label": {
|
||||
"normal": {
|
||||
"textStyle": {
|
||||
"color": "#000000"
|
||||
}
|
||||
},
|
||||
"emphasis": {
|
||||
"textStyle": {
|
||||
"color": "rgb(255,255,255)"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"geo": {
|
||||
"itemStyle": {
|
||||
"normal": {
|
||||
"areaColor": "#eeeeee",
|
||||
"borderColor": "#444444",
|
||||
"borderWidth": 0.5
|
||||
},
|
||||
"emphasis": {
|
||||
"areaColor": "rgba(224,152,199,1)",
|
||||
"borderColor": "#444444",
|
||||
"borderWidth": 1
|
||||
}
|
||||
},
|
||||
"label": {
|
||||
"normal": {
|
||||
"textStyle": {
|
||||
"color": "#000000"
|
||||
}
|
||||
},
|
||||
"emphasis": {
|
||||
"textStyle": {
|
||||
"color": "rgb(255,255,255)"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"categoryAxis": {
|
||||
"axisLine": {
|
||||
"show": true,
|
||||
"lineStyle": {
|
||||
"color": "#cccccc"
|
||||
}
|
||||
},
|
||||
"axisTick": {
|
||||
"show": false,
|
||||
"lineStyle": {
|
||||
"color": "#333"
|
||||
}
|
||||
},
|
||||
"axisLabel": {
|
||||
"show": true,
|
||||
"textStyle": {
|
||||
"color": "#cccccc"
|
||||
}
|
||||
},
|
||||
"splitLine": {
|
||||
"show": false,
|
||||
"lineStyle": {
|
||||
"color": [
|
||||
"#eeeeee",
|
||||
"#333333"
|
||||
]
|
||||
}
|
||||
},
|
||||
"splitArea": {
|
||||
"show": true,
|
||||
"areaStyle": {
|
||||
"color": [
|
||||
"rgba(250,250,250,0.05)",
|
||||
"rgba(200,200,200,0.02)"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"valueAxis": {
|
||||
"axisLine": {
|
||||
"show": true,
|
||||
"lineStyle": {
|
||||
"color": "#cccccc"
|
||||
}
|
||||
},
|
||||
"axisTick": {
|
||||
"show": false,
|
||||
"lineStyle": {
|
||||
"color": "#333"
|
||||
}
|
||||
},
|
||||
"axisLabel": {
|
||||
"show": true,
|
||||
"textStyle": {
|
||||
"color": "#cccccc"
|
||||
}
|
||||
},
|
||||
"splitLine": {
|
||||
"show": false,
|
||||
"lineStyle": {
|
||||
"color": [
|
||||
"#eeeeee",
|
||||
"#333333"
|
||||
]
|
||||
}
|
||||
},
|
||||
"splitArea": {
|
||||
"show": true,
|
||||
"areaStyle": {
|
||||
"color": [
|
||||
"rgba(250,250,250,0.05)",
|
||||
"rgba(200,200,200,0.02)"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"logAxis": {
|
||||
"axisLine": {
|
||||
"show": true,
|
||||
"lineStyle": {
|
||||
"color": "#cccccc"
|
||||
}
|
||||
},
|
||||
"axisTick": {
|
||||
"show": false,
|
||||
"lineStyle": {
|
||||
"color": "#333"
|
||||
}
|
||||
},
|
||||
"axisLabel": {
|
||||
"show": true,
|
||||
"textStyle": {
|
||||
"color": "#cccccc"
|
||||
}
|
||||
},
|
||||
"splitLine": {
|
||||
"show": false,
|
||||
"lineStyle": {
|
||||
"color": [
|
||||
"#eeeeee",
|
||||
"#333333"
|
||||
]
|
||||
}
|
||||
},
|
||||
"splitArea": {
|
||||
"show": true,
|
||||
"areaStyle": {
|
||||
"color": [
|
||||
"rgba(250,250,250,0.05)",
|
||||
"rgba(200,200,200,0.02)"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"timeAxis": {
|
||||
"axisLine": {
|
||||
"show": true,
|
||||
"lineStyle": {
|
||||
"color": "#cccccc"
|
||||
}
|
||||
},
|
||||
"axisTick": {
|
||||
"show": false,
|
||||
"lineStyle": {
|
||||
"color": "#333"
|
||||
}
|
||||
},
|
||||
"axisLabel": {
|
||||
"show": true,
|
||||
"textStyle": {
|
||||
"color": "#cccccc"
|
||||
}
|
||||
},
|
||||
"splitLine": {
|
||||
"show": false,
|
||||
"lineStyle": {
|
||||
"color": [
|
||||
"#eeeeee",
|
||||
"#333333"
|
||||
]
|
||||
}
|
||||
},
|
||||
"splitArea": {
|
||||
"show": true,
|
||||
"areaStyle": {
|
||||
"color": [
|
||||
"rgba(250,250,250,0.05)",
|
||||
"rgba(200,200,200,0.02)"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"toolbox": {
|
||||
"iconStyle": {
|
||||
"normal": {
|
||||
"borderColor": "#999999"
|
||||
},
|
||||
"emphasis": {
|
||||
"borderColor": "#666666"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legend": {
|
||||
"textStyle": {
|
||||
"color": "#cccccc"
|
||||
}
|
||||
},
|
||||
"tooltip": {
|
||||
"axisPointer": {
|
||||
"lineStyle": {
|
||||
"color": "#cccccc",
|
||||
"width": 1
|
||||
},
|
||||
"crossStyle": {
|
||||
"color": "#cccccc",
|
||||
"width": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"timeline": {
|
||||
"lineStyle": {
|
||||
"color": "#8fd3e8",
|
||||
"width": 1
|
||||
},
|
||||
"itemStyle": {
|
||||
"normal": {
|
||||
"color": "#8fd3e8",
|
||||
"borderWidth": 1
|
||||
},
|
||||
"emphasis": {
|
||||
"color": "#8fd3e8"
|
||||
}
|
||||
},
|
||||
"controlStyle": {
|
||||
"normal": {
|
||||
"color": "#8fd3e8",
|
||||
"borderColor": "#8fd3e8",
|
||||
"borderWidth": 0.5
|
||||
},
|
||||
"emphasis": {
|
||||
"color": "#8fd3e8",
|
||||
"borderColor": "#8fd3e8",
|
||||
"borderWidth": 0.5
|
||||
}
|
||||
},
|
||||
"checkpointStyle": {
|
||||
"color": "#8fd3e8",
|
||||
"borderColor": "rgba(138,124,168,0.37)"
|
||||
},
|
||||
"label": {
|
||||
"normal": {
|
||||
"textStyle": {
|
||||
"color": "#8fd3e8"
|
||||
}
|
||||
},
|
||||
"emphasis": {
|
||||
"textStyle": {
|
||||
"color": "#8fd3e8"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"visualMap": {
|
||||
"color": [
|
||||
"#8a7ca8",
|
||||
"#e098c7",
|
||||
"#cceffa"
|
||||
]
|
||||
},
|
||||
"dataZoom": {
|
||||
"backgroundColor": "rgba(0,0,0,0)",
|
||||
"dataBackgroundColor": "rgba(255,255,255,0.3)",
|
||||
"fillerColor": "rgba(167,183,204,0.4)",
|
||||
"handleColor": "#a7b7cc",
|
||||
"handleSize": "100%",
|
||||
"textStyle": {
|
||||
"color": "#333333"
|
||||
}
|
||||
},
|
||||
"markPoint": {
|
||||
"label": {
|
||||
"normal": {
|
||||
"textStyle": {
|
||||
"color": "#eeeeee"
|
||||
}
|
||||
},
|
||||
"emphasis": {
|
||||
"textStyle": {
|
||||
"color": "#eeeeee"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}));
|
||||
@@ -0,0 +1,93 @@
|
||||
var dom = document.getElementById("container");
|
||||
var myChart = echarts.init(dom,'dark');
|
||||
var app = {};
|
||||
option = null;
|
||||
|
||||
option = {
|
||||
title: {
|
||||
//text: legend[0]+' V.S '+legend[2],
|
||||
text: headtxt,
|
||||
subtext: subtxt,
|
||||
textAlign:'center',
|
||||
left:'50%'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
legend: {
|
||||
data:legend,
|
||||
right:'20'
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '4%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
//type: 'category',
|
||||
type: 'time',
|
||||
boundaryGap: false
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name:legend[0], //图列
|
||||
show:true,
|
||||
scale:true,
|
||||
},
|
||||
{
|
||||
type:'value',
|
||||
name:legend[1]+unit, //图例
|
||||
//scale:true,
|
||||
boundaryGap:false,
|
||||
show:true,
|
||||
splitLine:{
|
||||
show:false, //Y2 坐标刻度横线
|
||||
},
|
||||
}
|
||||
],
|
||||
dataZoom: [{
|
||||
type: 'inside', //or slider
|
||||
start: 0,
|
||||
end: 100
|
||||
}, {
|
||||
start: 0,
|
||||
end: 100,
|
||||
handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
|
||||
handleSize: '80%',
|
||||
handleStyle: {
|
||||
color: '#fff',
|
||||
shadowBlur: 3,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.6)',
|
||||
shadowOffsetX: 2,
|
||||
shadowOffsetY: 2
|
||||
}
|
||||
}],
|
||||
series: [
|
||||
{
|
||||
name:legend[0],
|
||||
type:'line',
|
||||
yAxisIndex:0,
|
||||
symbol:'none',
|
||||
smooth: false,
|
||||
data:data1,
|
||||
},
|
||||
{
|
||||
name:legend[1],
|
||||
type:'line',
|
||||
yAxisIndex:1,
|
||||
symbol:'none', //数据圆点
|
||||
smooth:false,
|
||||
data:data2,
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
if (option && typeof option === "object") {
|
||||
myChart.setOption(option, true);
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* hide switch the iframe
|
||||
* @param cbid:checkbox id
|
||||
* @param iframeid: iframe id
|
||||
*/
|
||||
function hideSwitch(cbid,iframeid){
|
||||
if($("#"+cbid).prop("checked")) {
|
||||
$("#"+iframeid).css('display','block');
|
||||
}
|
||||
else {
|
||||
$("#"+iframeid).css('display','none');
|
||||
}
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param {*} jsonData : from ajax, e.g: https://echart.doorcome.cn/inc/ajax.inc.php?t=esfTBD&t_start=2023-06-20&t_end=2023-08-23&district=合计'
|
||||
* @param {*} array :e.g: dataSel=['td','area'];
|
||||
* @returns
|
||||
*/
|
||||
function getRows(jsonData,array){
|
||||
var listSplit = [];
|
||||
var tmp;
|
||||
for (let i = 0; i < jsonData.length; i++) {
|
||||
var arr = [];
|
||||
for (let j = 0; j < array.length; j++) {
|
||||
tmp=(jsonData[i][array[j]])?jsonData[i][array[j]]:'';
|
||||
arr[j]=tmp;
|
||||
|
||||
}
|
||||
listSplit[i]={"value":arr};
|
||||
}
|
||||
|
||||
return listSplit;
|
||||
|
||||
}
|
||||
+416
@@ -0,0 +1,416 @@
|
||||
/*
|
||||
* A fast javascript implementation of simplex noise by Jonas Wagner
|
||||
*
|
||||
* Based on a speed-improved simplex noise algorithm for 2D, 3D and 4D in Java.
|
||||
* Which is based on example code by Stefan Gustavson (stegu@itn.liu.se).
|
||||
* With Optimisations by Peter Eastman (peastman@drizzle.stanford.edu).
|
||||
* Better rank ordering method by Stefan Gustavson in 2012.
|
||||
*
|
||||
*
|
||||
* Copyright (C) 2016 Jonas Wagner
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
*/
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
var F2 = 0.5 * (Math.sqrt(3.0) - 1.0);
|
||||
var G2 = (3.0 - Math.sqrt(3.0)) / 6.0;
|
||||
var F3 = 1.0 / 3.0;
|
||||
var G3 = 1.0 / 6.0;
|
||||
var F4 = (Math.sqrt(5.0) - 1.0) / 4.0;
|
||||
var G4 = (5.0 - Math.sqrt(5.0)) / 20.0;
|
||||
|
||||
function SimplexNoise(random) {
|
||||
if (!random) random = Math.random;
|
||||
this.p = buildPermutationTable(random);
|
||||
this.perm = new Uint8Array(512);
|
||||
this.permMod12 = new Uint8Array(512);
|
||||
for (var i = 0; i < 512; i++) {
|
||||
this.perm[i] = this.p[i & 255];
|
||||
this.permMod12[i] = this.perm[i] % 12;
|
||||
}
|
||||
|
||||
}
|
||||
SimplexNoise.prototype = {
|
||||
grad3: new Float32Array([1, 1, 0,
|
||||
-1, 1, 0,
|
||||
1, -1, 0,
|
||||
|
||||
-1, -1, 0,
|
||||
1, 0, 1,
|
||||
-1, 0, 1,
|
||||
|
||||
1, 0, -1,
|
||||
-1, 0, -1,
|
||||
0, 1, 1,
|
||||
|
||||
0, -1, 1,
|
||||
0, 1, -1,
|
||||
0, -1, -1]),
|
||||
grad4: new Float32Array([0, 1, 1, 1, 0, 1, 1, -1, 0, 1, -1, 1, 0, 1, -1, -1,
|
||||
0, -1, 1, 1, 0, -1, 1, -1, 0, -1, -1, 1, 0, -1, -1, -1,
|
||||
1, 0, 1, 1, 1, 0, 1, -1, 1, 0, -1, 1, 1, 0, -1, -1,
|
||||
-1, 0, 1, 1, -1, 0, 1, -1, -1, 0, -1, 1, -1, 0, -1, -1,
|
||||
1, 1, 0, 1, 1, 1, 0, -1, 1, -1, 0, 1, 1, -1, 0, -1,
|
||||
-1, 1, 0, 1, -1, 1, 0, -1, -1, -1, 0, 1, -1, -1, 0, -1,
|
||||
1, 1, 1, 0, 1, 1, -1, 0, 1, -1, 1, 0, 1, -1, -1, 0,
|
||||
-1, 1, 1, 0, -1, 1, -1, 0, -1, -1, 1, 0, -1, -1, -1, 0]),
|
||||
noise2D: function(xin, yin) {
|
||||
var permMod12 = this.permMod12;
|
||||
var perm = this.perm;
|
||||
var grad3 = this.grad3;
|
||||
var n0 = 0; // Noise contributions from the three corners
|
||||
var n1 = 0;
|
||||
var n2 = 0;
|
||||
// Skew the input space to determine which simplex cell we're in
|
||||
var s = (xin + yin) * F2; // Hairy factor for 2D
|
||||
var i = Math.floor(xin + s);
|
||||
var j = Math.floor(yin + s);
|
||||
var t = (i + j) * G2;
|
||||
var X0 = i - t; // Unskew the cell origin back to (x,y) space
|
||||
var Y0 = j - t;
|
||||
var x0 = xin - X0; // The x,y distances from the cell origin
|
||||
var y0 = yin - Y0;
|
||||
// For the 2D case, the simplex shape is an equilateral triangle.
|
||||
// Determine which simplex we are in.
|
||||
var i1, j1; // Offsets for second (middle) corner of simplex in (i,j) coords
|
||||
if (x0 > y0) {
|
||||
i1 = 1;
|
||||
j1 = 0;
|
||||
} // lower triangle, XY order: (0,0)->(1,0)->(1,1)
|
||||
else {
|
||||
i1 = 0;
|
||||
j1 = 1;
|
||||
} // upper triangle, YX order: (0,0)->(0,1)->(1,1)
|
||||
// A step of (1,0) in (i,j) means a step of (1-c,-c) in (x,y), and
|
||||
// a step of (0,1) in (i,j) means a step of (-c,1-c) in (x,y), where
|
||||
// c = (3-sqrt(3))/6
|
||||
var x1 = x0 - i1 + G2; // Offsets for middle corner in (x,y) unskewed coords
|
||||
var y1 = y0 - j1 + G2;
|
||||
var x2 = x0 - 1.0 + 2.0 * G2; // Offsets for last corner in (x,y) unskewed coords
|
||||
var y2 = y0 - 1.0 + 2.0 * G2;
|
||||
// Work out the hashed gradient indices of the three simplex corners
|
||||
var ii = i & 255;
|
||||
var jj = j & 255;
|
||||
// Calculate the contribution from the three corners
|
||||
var t0 = 0.5 - x0 * x0 - y0 * y0;
|
||||
if (t0 >= 0) {
|
||||
var gi0 = permMod12[ii + perm[jj]] * 3;
|
||||
t0 *= t0;
|
||||
n0 = t0 * t0 * (grad3[gi0] * x0 + grad3[gi0 + 1] * y0); // (x,y) of grad3 used for 2D gradient
|
||||
}
|
||||
var t1 = 0.5 - x1 * x1 - y1 * y1;
|
||||
if (t1 >= 0) {
|
||||
var gi1 = permMod12[ii + i1 + perm[jj + j1]] * 3;
|
||||
t1 *= t1;
|
||||
n1 = t1 * t1 * (grad3[gi1] * x1 + grad3[gi1 + 1] * y1);
|
||||
}
|
||||
var t2 = 0.5 - x2 * x2 - y2 * y2;
|
||||
if (t2 >= 0) {
|
||||
var gi2 = permMod12[ii + 1 + perm[jj + 1]] * 3;
|
||||
t2 *= t2;
|
||||
n2 = t2 * t2 * (grad3[gi2] * x2 + grad3[gi2 + 1] * y2);
|
||||
}
|
||||
// Add contributions from each corner to get the final noise value.
|
||||
// The result is scaled to return values in the interval [-1,1].
|
||||
return 70.0 * (n0 + n1 + n2);
|
||||
},
|
||||
// 3D simplex noise
|
||||
noise3D: function(xin, yin, zin) {
|
||||
var permMod12 = this.permMod12;
|
||||
var perm = this.perm;
|
||||
var grad3 = this.grad3;
|
||||
var n0, n1, n2, n3; // Noise contributions from the four corners
|
||||
// Skew the input space to determine which simplex cell we're in
|
||||
var s = (xin + yin + zin) * F3; // Very nice and simple skew factor for 3D
|
||||
var i = Math.floor(xin + s);
|
||||
var j = Math.floor(yin + s);
|
||||
var k = Math.floor(zin + s);
|
||||
var t = (i + j + k) * G3;
|
||||
var X0 = i - t; // Unskew the cell origin back to (x,y,z) space
|
||||
var Y0 = j - t;
|
||||
var Z0 = k - t;
|
||||
var x0 = xin - X0; // The x,y,z distances from the cell origin
|
||||
var y0 = yin - Y0;
|
||||
var z0 = zin - Z0;
|
||||
// For the 3D case, the simplex shape is a slightly irregular tetrahedron.
|
||||
// Determine which simplex we are in.
|
||||
var i1, j1, k1; // Offsets for second corner of simplex in (i,j,k) coords
|
||||
var i2, j2, k2; // Offsets for third corner of simplex in (i,j,k) coords
|
||||
if (x0 >= y0) {
|
||||
if (y0 >= z0) {
|
||||
i1 = 1;
|
||||
j1 = 0;
|
||||
k1 = 0;
|
||||
i2 = 1;
|
||||
j2 = 1;
|
||||
k2 = 0;
|
||||
} // X Y Z order
|
||||
else if (x0 >= z0) {
|
||||
i1 = 1;
|
||||
j1 = 0;
|
||||
k1 = 0;
|
||||
i2 = 1;
|
||||
j2 = 0;
|
||||
k2 = 1;
|
||||
} // X Z Y order
|
||||
else {
|
||||
i1 = 0;
|
||||
j1 = 0;
|
||||
k1 = 1;
|
||||
i2 = 1;
|
||||
j2 = 0;
|
||||
k2 = 1;
|
||||
} // Z X Y order
|
||||
}
|
||||
else { // x0<y0
|
||||
if (y0 < z0) {
|
||||
i1 = 0;
|
||||
j1 = 0;
|
||||
k1 = 1;
|
||||
i2 = 0;
|
||||
j2 = 1;
|
||||
k2 = 1;
|
||||
} // Z Y X order
|
||||
else if (x0 < z0) {
|
||||
i1 = 0;
|
||||
j1 = 1;
|
||||
k1 = 0;
|
||||
i2 = 0;
|
||||
j2 = 1;
|
||||
k2 = 1;
|
||||
} // Y Z X order
|
||||
else {
|
||||
i1 = 0;
|
||||
j1 = 1;
|
||||
k1 = 0;
|
||||
i2 = 1;
|
||||
j2 = 1;
|
||||
k2 = 0;
|
||||
} // Y X Z order
|
||||
}
|
||||
// A step of (1,0,0) in (i,j,k) means a step of (1-c,-c,-c) in (x,y,z),
|
||||
// a step of (0,1,0) in (i,j,k) means a step of (-c,1-c,-c) in (x,y,z), and
|
||||
// a step of (0,0,1) in (i,j,k) means a step of (-c,-c,1-c) in (x,y,z), where
|
||||
// c = 1/6.
|
||||
var x1 = x0 - i1 + G3; // Offsets for second corner in (x,y,z) coords
|
||||
var y1 = y0 - j1 + G3;
|
||||
var z1 = z0 - k1 + G3;
|
||||
var x2 = x0 - i2 + 2.0 * G3; // Offsets for third corner in (x,y,z) coords
|
||||
var y2 = y0 - j2 + 2.0 * G3;
|
||||
var z2 = z0 - k2 + 2.0 * G3;
|
||||
var x3 = x0 - 1.0 + 3.0 * G3; // Offsets for last corner in (x,y,z) coords
|
||||
var y3 = y0 - 1.0 + 3.0 * G3;
|
||||
var z3 = z0 - 1.0 + 3.0 * G3;
|
||||
// Work out the hashed gradient indices of the four simplex corners
|
||||
var ii = i & 255;
|
||||
var jj = j & 255;
|
||||
var kk = k & 255;
|
||||
// Calculate the contribution from the four corners
|
||||
var t0 = 0.6 - x0 * x0 - y0 * y0 - z0 * z0;
|
||||
if (t0 < 0) n0 = 0.0;
|
||||
else {
|
||||
var gi0 = permMod12[ii + perm[jj + perm[kk]]] * 3;
|
||||
t0 *= t0;
|
||||
n0 = t0 * t0 * (grad3[gi0] * x0 + grad3[gi0 + 1] * y0 + grad3[gi0 + 2] * z0);
|
||||
}
|
||||
var t1 = 0.6 - x1 * x1 - y1 * y1 - z1 * z1;
|
||||
if (t1 < 0) n1 = 0.0;
|
||||
else {
|
||||
var gi1 = permMod12[ii + i1 + perm[jj + j1 + perm[kk + k1]]] * 3;
|
||||
t1 *= t1;
|
||||
n1 = t1 * t1 * (grad3[gi1] * x1 + grad3[gi1 + 1] * y1 + grad3[gi1 + 2] * z1);
|
||||
}
|
||||
var t2 = 0.6 - x2 * x2 - y2 * y2 - z2 * z2;
|
||||
if (t2 < 0) n2 = 0.0;
|
||||
else {
|
||||
var gi2 = permMod12[ii + i2 + perm[jj + j2 + perm[kk + k2]]] * 3;
|
||||
t2 *= t2;
|
||||
n2 = t2 * t2 * (grad3[gi2] * x2 + grad3[gi2 + 1] * y2 + grad3[gi2 + 2] * z2);
|
||||
}
|
||||
var t3 = 0.6 - x3 * x3 - y3 * y3 - z3 * z3;
|
||||
if (t3 < 0) n3 = 0.0;
|
||||
else {
|
||||
var gi3 = permMod12[ii + 1 + perm[jj + 1 + perm[kk + 1]]] * 3;
|
||||
t3 *= t3;
|
||||
n3 = t3 * t3 * (grad3[gi3] * x3 + grad3[gi3 + 1] * y3 + grad3[gi3 + 2] * z3);
|
||||
}
|
||||
// Add contributions from each corner to get the final noise value.
|
||||
// The result is scaled to stay just inside [-1,1]
|
||||
return 32.0 * (n0 + n1 + n2 + n3);
|
||||
},
|
||||
// 4D simplex noise, better simplex rank ordering method 2012-03-09
|
||||
noise4D: function(x, y, z, w) {
|
||||
var permMod12 = this.permMod12;
|
||||
var perm = this.perm;
|
||||
var grad4 = this.grad4;
|
||||
|
||||
var n0, n1, n2, n3, n4; // Noise contributions from the five corners
|
||||
// Skew the (x,y,z,w) space to determine which cell of 24 simplices we're in
|
||||
var s = (x + y + z + w) * F4; // Factor for 4D skewing
|
||||
var i = Math.floor(x + s);
|
||||
var j = Math.floor(y + s);
|
||||
var k = Math.floor(z + s);
|
||||
var l = Math.floor(w + s);
|
||||
var t = (i + j + k + l) * G4; // Factor for 4D unskewing
|
||||
var X0 = i - t; // Unskew the cell origin back to (x,y,z,w) space
|
||||
var Y0 = j - t;
|
||||
var Z0 = k - t;
|
||||
var W0 = l - t;
|
||||
var x0 = x - X0; // The x,y,z,w distances from the cell origin
|
||||
var y0 = y - Y0;
|
||||
var z0 = z - Z0;
|
||||
var w0 = w - W0;
|
||||
// For the 4D case, the simplex is a 4D shape I won't even try to describe.
|
||||
// To find out which of the 24 possible simplices we're in, we need to
|
||||
// determine the magnitude ordering of x0, y0, z0 and w0.
|
||||
// Six pair-wise comparisons are performed between each possible pair
|
||||
// of the four coordinates, and the results are used to rank the numbers.
|
||||
var rankx = 0;
|
||||
var ranky = 0;
|
||||
var rankz = 0;
|
||||
var rankw = 0;
|
||||
if (x0 > y0) rankx++;
|
||||
else ranky++;
|
||||
if (x0 > z0) rankx++;
|
||||
else rankz++;
|
||||
if (x0 > w0) rankx++;
|
||||
else rankw++;
|
||||
if (y0 > z0) ranky++;
|
||||
else rankz++;
|
||||
if (y0 > w0) ranky++;
|
||||
else rankw++;
|
||||
if (z0 > w0) rankz++;
|
||||
else rankw++;
|
||||
var i1, j1, k1, l1; // The integer offsets for the second simplex corner
|
||||
var i2, j2, k2, l2; // The integer offsets for the third simplex corner
|
||||
var i3, j3, k3, l3; // The integer offsets for the fourth simplex corner
|
||||
// simplex[c] is a 4-vector with the numbers 0, 1, 2 and 3 in some order.
|
||||
// Many values of c will never occur, since e.g. x>y>z>w makes x<z, y<w and x<w
|
||||
// impossible. Only the 24 indices which have non-zero entries make any sense.
|
||||
// We use a thresholding to set the coordinates in turn from the largest magnitude.
|
||||
// Rank 3 denotes the largest coordinate.
|
||||
i1 = rankx >= 3 ? 1 : 0;
|
||||
j1 = ranky >= 3 ? 1 : 0;
|
||||
k1 = rankz >= 3 ? 1 : 0;
|
||||
l1 = rankw >= 3 ? 1 : 0;
|
||||
// Rank 2 denotes the second largest coordinate.
|
||||
i2 = rankx >= 2 ? 1 : 0;
|
||||
j2 = ranky >= 2 ? 1 : 0;
|
||||
k2 = rankz >= 2 ? 1 : 0;
|
||||
l2 = rankw >= 2 ? 1 : 0;
|
||||
// Rank 1 denotes the second smallest coordinate.
|
||||
i3 = rankx >= 1 ? 1 : 0;
|
||||
j3 = ranky >= 1 ? 1 : 0;
|
||||
k3 = rankz >= 1 ? 1 : 0;
|
||||
l3 = rankw >= 1 ? 1 : 0;
|
||||
// The fifth corner has all coordinate offsets = 1, so no need to compute that.
|
||||
var x1 = x0 - i1 + G4; // Offsets for second corner in (x,y,z,w) coords
|
||||
var y1 = y0 - j1 + G4;
|
||||
var z1 = z0 - k1 + G4;
|
||||
var w1 = w0 - l1 + G4;
|
||||
var x2 = x0 - i2 + 2.0 * G4; // Offsets for third corner in (x,y,z,w) coords
|
||||
var y2 = y0 - j2 + 2.0 * G4;
|
||||
var z2 = z0 - k2 + 2.0 * G4;
|
||||
var w2 = w0 - l2 + 2.0 * G4;
|
||||
var x3 = x0 - i3 + 3.0 * G4; // Offsets for fourth corner in (x,y,z,w) coords
|
||||
var y3 = y0 - j3 + 3.0 * G4;
|
||||
var z3 = z0 - k3 + 3.0 * G4;
|
||||
var w3 = w0 - l3 + 3.0 * G4;
|
||||
var x4 = x0 - 1.0 + 4.0 * G4; // Offsets for last corner in (x,y,z,w) coords
|
||||
var y4 = y0 - 1.0 + 4.0 * G4;
|
||||
var z4 = z0 - 1.0 + 4.0 * G4;
|
||||
var w4 = w0 - 1.0 + 4.0 * G4;
|
||||
// Work out the hashed gradient indices of the five simplex corners
|
||||
var ii = i & 255;
|
||||
var jj = j & 255;
|
||||
var kk = k & 255;
|
||||
var ll = l & 255;
|
||||
// Calculate the contribution from the five corners
|
||||
var t0 = 0.6 - x0 * x0 - y0 * y0 - z0 * z0 - w0 * w0;
|
||||
if (t0 < 0) n0 = 0.0;
|
||||
else {
|
||||
var gi0 = (perm[ii + perm[jj + perm[kk + perm[ll]]]] % 32) * 4;
|
||||
t0 *= t0;
|
||||
n0 = t0 * t0 * (grad4[gi0] * x0 + grad4[gi0 + 1] * y0 + grad4[gi0 + 2] * z0 + grad4[gi0 + 3] * w0);
|
||||
}
|
||||
var t1 = 0.6 - x1 * x1 - y1 * y1 - z1 * z1 - w1 * w1;
|
||||
if (t1 < 0) n1 = 0.0;
|
||||
else {
|
||||
var gi1 = (perm[ii + i1 + perm[jj + j1 + perm[kk + k1 + perm[ll + l1]]]] % 32) * 4;
|
||||
t1 *= t1;
|
||||
n1 = t1 * t1 * (grad4[gi1] * x1 + grad4[gi1 + 1] * y1 + grad4[gi1 + 2] * z1 + grad4[gi1 + 3] * w1);
|
||||
}
|
||||
var t2 = 0.6 - x2 * x2 - y2 * y2 - z2 * z2 - w2 * w2;
|
||||
if (t2 < 0) n2 = 0.0;
|
||||
else {
|
||||
var gi2 = (perm[ii + i2 + perm[jj + j2 + perm[kk + k2 + perm[ll + l2]]]] % 32) * 4;
|
||||
t2 *= t2;
|
||||
n2 = t2 * t2 * (grad4[gi2] * x2 + grad4[gi2 + 1] * y2 + grad4[gi2 + 2] * z2 + grad4[gi2 + 3] * w2);
|
||||
}
|
||||
var t3 = 0.6 - x3 * x3 - y3 * y3 - z3 * z3 - w3 * w3;
|
||||
if (t3 < 0) n3 = 0.0;
|
||||
else {
|
||||
var gi3 = (perm[ii + i3 + perm[jj + j3 + perm[kk + k3 + perm[ll + l3]]]] % 32) * 4;
|
||||
t3 *= t3;
|
||||
n3 = t3 * t3 * (grad4[gi3] * x3 + grad4[gi3 + 1] * y3 + grad4[gi3 + 2] * z3 + grad4[gi3 + 3] * w3);
|
||||
}
|
||||
var t4 = 0.6 - x4 * x4 - y4 * y4 - z4 * z4 - w4 * w4;
|
||||
if (t4 < 0) n4 = 0.0;
|
||||
else {
|
||||
var gi4 = (perm[ii + 1 + perm[jj + 1 + perm[kk + 1 + perm[ll + 1]]]] % 32) * 4;
|
||||
t4 *= t4;
|
||||
n4 = t4 * t4 * (grad4[gi4] * x4 + grad4[gi4 + 1] * y4 + grad4[gi4 + 2] * z4 + grad4[gi4 + 3] * w4);
|
||||
}
|
||||
// Sum up and scale the result to cover the range [-1,1]
|
||||
return 27.0 * (n0 + n1 + n2 + n3 + n4);
|
||||
}
|
||||
};
|
||||
|
||||
function buildPermutationTable(random) {
|
||||
var i;
|
||||
var p = new Uint8Array(256);
|
||||
for (i = 0; i < 256; i++) {
|
||||
p[i] = i;
|
||||
}
|
||||
for (i = 0; i < 255; i++) {
|
||||
var r = i + ~~(random() * (256 - i));
|
||||
var aux = p[i];
|
||||
p[i] = p[r];
|
||||
p[r] = aux;
|
||||
}
|
||||
return p;
|
||||
}
|
||||
SimplexNoise._buildPermutationTable = buildPermutationTable;
|
||||
|
||||
// amd
|
||||
if (typeof define !== 'undefined' && define.amd) define(function() {return SimplexNoise;});
|
||||
// common js
|
||||
if (typeof exports !== 'undefined') exports.SimplexNoise = SimplexNoise;
|
||||
// browser
|
||||
else if (typeof window !== 'undefined') window.SimplexNoise = SimplexNoise;
|
||||
// nodejs
|
||||
if (typeof module !== 'undefined') {
|
||||
module.exports = SimplexNoise;
|
||||
}
|
||||
|
||||
})();
|
||||
@@ -0,0 +1,80 @@
|
||||
/**
|
||||
* Created by Simon on 2017-6-14.
|
||||
*/
|
||||
(function(){
|
||||
$("#btn-search").on("click",function(){
|
||||
if(check_form("myform")){
|
||||
$("#myform").submit();
|
||||
}
|
||||
});
|
||||
|
||||
drawGraph();
|
||||
function drawGraph(){
|
||||
// 基于准备好的dom,初始化echarts实例
|
||||
var myChart = echarts.init(document.getElementById('main'));
|
||||
|
||||
var x = $.parseJSON($("#x").val());
|
||||
var legend = $.parseJSON($("#legend").val());
|
||||
var total = $.parseJSON($("#total").val());
|
||||
var l_yield = $.parseJSON($("#yield").val());
|
||||
var option = {
|
||||
title: {
|
||||
text: '经营报表趋势图',
|
||||
top: "top",
|
||||
left: "center"
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
animation: false
|
||||
}
|
||||
},
|
||||
grid: {x: '7%', y: '7%', width: '85%', height: '70%',top: "15%"},
|
||||
xAxis: {
|
||||
type : 'category',
|
||||
data : x
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
name: legend[0],
|
||||
},{
|
||||
type: 'value',
|
||||
name: legend[1],
|
||||
/* axisLabel: {
|
||||
formatter:'{value} %'
|
||||
}, */
|
||||
scale: true,
|
||||
boundaryGap: ['20%','20%']
|
||||
}],
|
||||
series: [{
|
||||
name: legend[0],
|
||||
type: "bar",
|
||||
yAxisIndex: 0,
|
||||
data: total,
|
||||
itemStyle:{
|
||||
normal:{
|
||||
color: "#00BB00"
|
||||
}
|
||||
}
|
||||
},{
|
||||
name: legend[1],
|
||||
type: "line",
|
||||
yAxisIndex: 1,
|
||||
data: l_yield,
|
||||
label:{
|
||||
normal:{
|
||||
show: true
|
||||
}
|
||||
},
|
||||
lineStyle:{
|
||||
normal:{
|
||||
color: "#D26900"
|
||||
}
|
||||
}
|
||||
}]
|
||||
};
|
||||
//console.info(option);
|
||||
// 使用刚指定的配置项和数据显示图表。
|
||||
myChart.setOption(option);
|
||||
}
|
||||
})();
|
||||
@@ -0,0 +1,416 @@
|
||||
@charset "UTF-8";
|
||||
:root {
|
||||
--dt-row-selected: 0, 136, 204;
|
||||
--dt-row-selected-text: 255, 255, 255;
|
||||
--dt-row-selected-link: 9, 10, 11;
|
||||
}
|
||||
|
||||
table.dataTable td.dt-control {
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
table.dataTable td.dt-control:before {
|
||||
height: 1em;
|
||||
width: 1em;
|
||||
margin-top: -9px;
|
||||
display: inline-block;
|
||||
color: white;
|
||||
border: 0.15em solid white;
|
||||
border-radius: 1em;
|
||||
box-shadow: 0 0 0.2em #444;
|
||||
box-sizing: content-box;
|
||||
text-align: center;
|
||||
text-indent: 0 !important;
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
line-height: 1em;
|
||||
content: "+";
|
||||
background-color: #31b131;
|
||||
}
|
||||
table.dataTable tr.dt-hasChild td.dt-control:before {
|
||||
content: "-";
|
||||
background-color: #d33333;
|
||||
}
|
||||
|
||||
table.dataTable thead > tr > th.sorting, table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting_asc_disabled, table.dataTable thead > tr > th.sorting_desc_disabled,
|
||||
table.dataTable thead > tr > td.sorting,
|
||||
table.dataTable thead > tr > td.sorting_asc,
|
||||
table.dataTable thead > tr > td.sorting_desc,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled {
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
padding-right: 26px;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:before, table.dataTable thead > tr > th.sorting:after, table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_asc:after, table.dataTable thead > tr > th.sorting_desc:before, table.dataTable thead > tr > th.sorting_desc:after, table.dataTable thead > tr > th.sorting_asc_disabled:before, table.dataTable thead > tr > th.sorting_asc_disabled:after, table.dataTable thead > tr > th.sorting_desc_disabled:before, table.dataTable thead > tr > th.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting:before,
|
||||
table.dataTable thead > tr > td.sorting:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_asc:after,
|
||||
table.dataTable thead > tr > td.sorting_desc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after {
|
||||
position: absolute;
|
||||
display: block;
|
||||
opacity: 0.125;
|
||||
right: 10px;
|
||||
line-height: 9px;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:before, table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_desc:before, table.dataTable thead > tr > th.sorting_asc_disabled:before, table.dataTable thead > tr > th.sorting_desc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting:before,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:before,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:before {
|
||||
bottom: 50%;
|
||||
content: "▲";
|
||||
content: "▲"/"";
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:after, table.dataTable thead > tr > th.sorting_asc:after, table.dataTable thead > tr > th.sorting_desc:after, table.dataTable thead > tr > th.sorting_asc_disabled:after, table.dataTable thead > tr > th.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:after,
|
||||
table.dataTable thead > tr > td.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after {
|
||||
top: 50%;
|
||||
content: "▼";
|
||||
content: "▼"/"";
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:after {
|
||||
opacity: 0.6;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting_desc_disabled:after, table.dataTable thead > tr > th.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before {
|
||||
display: none;
|
||||
}
|
||||
table.dataTable thead > tr > th:active,
|
||||
table.dataTable thead > tr > td:active {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > th:before, div.dataTables_scrollBody > table.dataTable > thead > tr > th:after,
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > td:before,
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > td:after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.dataTables_processing {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 200px;
|
||||
margin-left: -100px;
|
||||
margin-top: -26px;
|
||||
text-align: center;
|
||||
padding: 2px;
|
||||
}
|
||||
div.dataTables_processing > div:last-child {
|
||||
position: relative;
|
||||
width: 80px;
|
||||
height: 15px;
|
||||
margin: 1em auto;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 13px;
|
||||
height: 13px;
|
||||
border-radius: 50%;
|
||||
background: rgb(0, 136, 204);
|
||||
background: rgb(var(--dt-row-selected));
|
||||
animation-timing-function: cubic-bezier(0, 1, 1, 0);
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(1) {
|
||||
left: 8px;
|
||||
animation: datatables-loader-1 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(2) {
|
||||
left: 8px;
|
||||
animation: datatables-loader-2 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(3) {
|
||||
left: 32px;
|
||||
animation: datatables-loader-2 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(4) {
|
||||
left: 56px;
|
||||
animation: datatables-loader-3 0.6s infinite;
|
||||
}
|
||||
|
||||
@keyframes datatables-loader-1 {
|
||||
0% {
|
||||
transform: scale(0);
|
||||
}
|
||||
100% {
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
@keyframes datatables-loader-3 {
|
||||
0% {
|
||||
transform: scale(1);
|
||||
}
|
||||
100% {
|
||||
transform: scale(0);
|
||||
}
|
||||
}
|
||||
@keyframes datatables-loader-2 {
|
||||
0% {
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
100% {
|
||||
transform: translate(24px, 0);
|
||||
}
|
||||
}
|
||||
table.dataTable.nowrap th, table.dataTable.nowrap td {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable th.dt-left,
|
||||
table.dataTable td.dt-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable th.dt-center,
|
||||
table.dataTable td.dt-center,
|
||||
table.dataTable td.dataTables_empty {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable th.dt-right,
|
||||
table.dataTable td.dt-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable th.dt-justify,
|
||||
table.dataTable td.dt-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable th.dt-nowrap,
|
||||
table.dataTable td.dt-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable thead th,
|
||||
table.dataTable thead td,
|
||||
table.dataTable tfoot th,
|
||||
table.dataTable tfoot td {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable thead th.dt-head-left,
|
||||
table.dataTable thead td.dt-head-left,
|
||||
table.dataTable tfoot th.dt-head-left,
|
||||
table.dataTable tfoot td.dt-head-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable thead th.dt-head-center,
|
||||
table.dataTable thead td.dt-head-center,
|
||||
table.dataTable tfoot th.dt-head-center,
|
||||
table.dataTable tfoot td.dt-head-center {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable thead th.dt-head-right,
|
||||
table.dataTable thead td.dt-head-right,
|
||||
table.dataTable tfoot th.dt-head-right,
|
||||
table.dataTable tfoot td.dt-head-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable thead th.dt-head-justify,
|
||||
table.dataTable thead td.dt-head-justify,
|
||||
table.dataTable tfoot th.dt-head-justify,
|
||||
table.dataTable tfoot td.dt-head-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable thead th.dt-head-nowrap,
|
||||
table.dataTable thead td.dt-head-nowrap,
|
||||
table.dataTable tfoot th.dt-head-nowrap,
|
||||
table.dataTable tfoot td.dt-head-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-left,
|
||||
table.dataTable tbody td.dt-body-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-center,
|
||||
table.dataTable tbody td.dt-body-center {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-right,
|
||||
table.dataTable tbody td.dt-body-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-justify,
|
||||
table.dataTable tbody td.dt-body-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-nowrap,
|
||||
table.dataTable tbody td.dt-body-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
table.dataTable {
|
||||
clear: both;
|
||||
margin-top: 6px !important;
|
||||
margin-bottom: 6px !important;
|
||||
max-width: none !important;
|
||||
border-collapse: separate !important;
|
||||
}
|
||||
table.dataTable td,
|
||||
table.dataTable th {
|
||||
-webkit-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
table.dataTable td.dataTables_empty,
|
||||
table.dataTable th.dataTables_empty {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable.nowrap th,
|
||||
table.dataTable.nowrap td {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable.table-striped > tbody > tr:nth-of-type(2n+1) {
|
||||
background-color: transparent;
|
||||
}
|
||||
table.dataTable > tbody > tr {
|
||||
background-color: transparent;
|
||||
}
|
||||
table.dataTable > tbody > tr.selected > * {
|
||||
box-shadow: inset 0 0 0 9999px rgb(0, 136, 204);
|
||||
box-shadow: inset 0 0 0 9999px rgb(var(--dt-row-selected));
|
||||
color: rgb(255, 255, 255);
|
||||
color: rgb(var(--dt-row-selected-text));
|
||||
}
|
||||
table.dataTable > tbody > tr.selected a {
|
||||
color: rgb(9, 10, 11);
|
||||
color: rgb(var(--dt-row-selected-link));
|
||||
}
|
||||
table.dataTable.table-striped > tbody > tr.odd > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.023);
|
||||
}
|
||||
table.dataTable.table-striped > tbody > tr.odd.selected > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 136, 204, 0.923);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.923);
|
||||
}
|
||||
table.dataTable.table-hover > tbody > tr:hover > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
table.dataTable.table-hover > tbody > tr.selected:hover > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 136, 204, 0.975);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.975);
|
||||
}
|
||||
|
||||
div.dataTables_wrapper div.dataTables_length label {
|
||||
font-weight: normal;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_length select {
|
||||
width: 75px;
|
||||
display: inline-block;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_filter {
|
||||
text-align: right;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_filter label {
|
||||
font-weight: normal;
|
||||
white-space: nowrap;
|
||||
text-align: left;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_filter input {
|
||||
margin-left: 0.5em;
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_info {
|
||||
padding-top: 8px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_paginate {
|
||||
margin: 0;
|
||||
white-space: nowrap;
|
||||
text-align: right;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_paginate ul.pagination {
|
||||
margin: 2px 0;
|
||||
white-space: nowrap;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_processing {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 200px;
|
||||
margin-left: -100px;
|
||||
margin-top: -26px;
|
||||
text-align: center;
|
||||
padding: 1em 0;
|
||||
}
|
||||
|
||||
div.dataTables_scrollHead table.dataTable {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
div.dataTables_scrollBody > table {
|
||||
border-top: none;
|
||||
margin-top: 0 !important;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
div.dataTables_scrollBody > table > thead .sorting:after,
|
||||
div.dataTables_scrollBody > table > thead .sorting_asc:after,
|
||||
div.dataTables_scrollBody > table > thead .sorting_desc:after {
|
||||
display: none;
|
||||
}
|
||||
div.dataTables_scrollBody > table > tbody > tr:first-child > th,
|
||||
div.dataTables_scrollBody > table > tbody > tr:first-child > td {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
div.dataTables_scrollFoot > .dataTables_scrollFootInner {
|
||||
box-sizing: content-box;
|
||||
}
|
||||
div.dataTables_scrollFoot > .dataTables_scrollFootInner > table {
|
||||
margin-top: 0 !important;
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
div.dataTables_wrapper div.dataTables_length,
|
||||
div.dataTables_wrapper div.dataTables_filter,
|
||||
div.dataTables_wrapper div.dataTables_info,
|
||||
div.dataTables_wrapper div.dataTables_paginate {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
table.dataTable.table-condensed > thead > tr > th {
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
table.table-bordered.dataTable {
|
||||
border-right-width: 0;
|
||||
}
|
||||
table.table-bordered.dataTable th,
|
||||
table.table-bordered.dataTable td {
|
||||
border-left-width: 0;
|
||||
}
|
||||
table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child,
|
||||
table.table-bordered.dataTable td:last-child,
|
||||
table.table-bordered.dataTable td:last-child {
|
||||
border-right-width: 1px;
|
||||
}
|
||||
table.table-bordered.dataTable tbody th,
|
||||
table.table-bordered.dataTable tbody td {
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
|
||||
div.dataTables_scrollHead table.table-bordered {
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
|
||||
div.table-responsive > div.dataTables_wrapper > div.row {
|
||||
margin: 0;
|
||||
}
|
||||
div.table-responsive > div.dataTables_wrapper > div.row > div[class^=col-]:first-child {
|
||||
padding-left: 0;
|
||||
}
|
||||
div.table-responsive > div.dataTables_wrapper > div.row > div[class^=col-]:last-child {
|
||||
padding-right: 0;
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,423 @@
|
||||
@charset "UTF-8";
|
||||
:root {
|
||||
--dt-row-selected: 2, 117, 216;
|
||||
--dt-row-selected-text: 255, 255, 255;
|
||||
--dt-row-selected-link: 9, 10, 11;
|
||||
}
|
||||
|
||||
table.dataTable td.dt-control {
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
table.dataTable td.dt-control:before {
|
||||
height: 1em;
|
||||
width: 1em;
|
||||
margin-top: -9px;
|
||||
display: inline-block;
|
||||
color: white;
|
||||
border: 0.15em solid white;
|
||||
border-radius: 1em;
|
||||
box-shadow: 0 0 0.2em #444;
|
||||
box-sizing: content-box;
|
||||
text-align: center;
|
||||
text-indent: 0 !important;
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
line-height: 1em;
|
||||
content: "+";
|
||||
background-color: #31b131;
|
||||
}
|
||||
table.dataTable tr.dt-hasChild td.dt-control:before {
|
||||
content: "-";
|
||||
background-color: #d33333;
|
||||
}
|
||||
|
||||
table.dataTable thead > tr > th.sorting, table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting_asc_disabled, table.dataTable thead > tr > th.sorting_desc_disabled,
|
||||
table.dataTable thead > tr > td.sorting,
|
||||
table.dataTable thead > tr > td.sorting_asc,
|
||||
table.dataTable thead > tr > td.sorting_desc,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled {
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
padding-right: 26px;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:before, table.dataTable thead > tr > th.sorting:after, table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_asc:after, table.dataTable thead > tr > th.sorting_desc:before, table.dataTable thead > tr > th.sorting_desc:after, table.dataTable thead > tr > th.sorting_asc_disabled:before, table.dataTable thead > tr > th.sorting_asc_disabled:after, table.dataTable thead > tr > th.sorting_desc_disabled:before, table.dataTable thead > tr > th.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting:before,
|
||||
table.dataTable thead > tr > td.sorting:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_asc:after,
|
||||
table.dataTable thead > tr > td.sorting_desc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after {
|
||||
position: absolute;
|
||||
display: block;
|
||||
opacity: 0.125;
|
||||
right: 10px;
|
||||
line-height: 9px;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:before, table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_desc:before, table.dataTable thead > tr > th.sorting_asc_disabled:before, table.dataTable thead > tr > th.sorting_desc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting:before,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:before,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:before {
|
||||
bottom: 50%;
|
||||
content: "▲";
|
||||
content: "▲"/"";
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:after, table.dataTable thead > tr > th.sorting_asc:after, table.dataTable thead > tr > th.sorting_desc:after, table.dataTable thead > tr > th.sorting_asc_disabled:after, table.dataTable thead > tr > th.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:after,
|
||||
table.dataTable thead > tr > td.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after {
|
||||
top: 50%;
|
||||
content: "▼";
|
||||
content: "▼"/"";
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:after {
|
||||
opacity: 0.6;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting_desc_disabled:after, table.dataTable thead > tr > th.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before {
|
||||
display: none;
|
||||
}
|
||||
table.dataTable thead > tr > th:active,
|
||||
table.dataTable thead > tr > td:active {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > th:before, div.dataTables_scrollBody > table.dataTable > thead > tr > th:after,
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > td:before,
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > td:after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.dataTables_processing {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 200px;
|
||||
margin-left: -100px;
|
||||
margin-top: -26px;
|
||||
text-align: center;
|
||||
padding: 2px;
|
||||
}
|
||||
div.dataTables_processing > div:last-child {
|
||||
position: relative;
|
||||
width: 80px;
|
||||
height: 15px;
|
||||
margin: 1em auto;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 13px;
|
||||
height: 13px;
|
||||
border-radius: 50%;
|
||||
background: rgb(2, 117, 216);
|
||||
background: rgb(var(--dt-row-selected));
|
||||
animation-timing-function: cubic-bezier(0, 1, 1, 0);
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(1) {
|
||||
left: 8px;
|
||||
animation: datatables-loader-1 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(2) {
|
||||
left: 8px;
|
||||
animation: datatables-loader-2 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(3) {
|
||||
left: 32px;
|
||||
animation: datatables-loader-2 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(4) {
|
||||
left: 56px;
|
||||
animation: datatables-loader-3 0.6s infinite;
|
||||
}
|
||||
|
||||
@keyframes datatables-loader-1 {
|
||||
0% {
|
||||
transform: scale(0);
|
||||
}
|
||||
100% {
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
@keyframes datatables-loader-3 {
|
||||
0% {
|
||||
transform: scale(1);
|
||||
}
|
||||
100% {
|
||||
transform: scale(0);
|
||||
}
|
||||
}
|
||||
@keyframes datatables-loader-2 {
|
||||
0% {
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
100% {
|
||||
transform: translate(24px, 0);
|
||||
}
|
||||
}
|
||||
table.dataTable.nowrap th, table.dataTable.nowrap td {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable th.dt-left,
|
||||
table.dataTable td.dt-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable th.dt-center,
|
||||
table.dataTable td.dt-center,
|
||||
table.dataTable td.dataTables_empty {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable th.dt-right,
|
||||
table.dataTable td.dt-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable th.dt-justify,
|
||||
table.dataTable td.dt-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable th.dt-nowrap,
|
||||
table.dataTable td.dt-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable thead th,
|
||||
table.dataTable thead td,
|
||||
table.dataTable tfoot th,
|
||||
table.dataTable tfoot td {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable thead th.dt-head-left,
|
||||
table.dataTable thead td.dt-head-left,
|
||||
table.dataTable tfoot th.dt-head-left,
|
||||
table.dataTable tfoot td.dt-head-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable thead th.dt-head-center,
|
||||
table.dataTable thead td.dt-head-center,
|
||||
table.dataTable tfoot th.dt-head-center,
|
||||
table.dataTable tfoot td.dt-head-center {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable thead th.dt-head-right,
|
||||
table.dataTable thead td.dt-head-right,
|
||||
table.dataTable tfoot th.dt-head-right,
|
||||
table.dataTable tfoot td.dt-head-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable thead th.dt-head-justify,
|
||||
table.dataTable thead td.dt-head-justify,
|
||||
table.dataTable tfoot th.dt-head-justify,
|
||||
table.dataTable tfoot td.dt-head-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable thead th.dt-head-nowrap,
|
||||
table.dataTable thead td.dt-head-nowrap,
|
||||
table.dataTable tfoot th.dt-head-nowrap,
|
||||
table.dataTable tfoot td.dt-head-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-left,
|
||||
table.dataTable tbody td.dt-body-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-center,
|
||||
table.dataTable tbody td.dt-body-center {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-right,
|
||||
table.dataTable tbody td.dt-body-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-justify,
|
||||
table.dataTable tbody td.dt-body-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-nowrap,
|
||||
table.dataTable tbody td.dt-body-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
table.dataTable {
|
||||
clear: both;
|
||||
margin-top: 6px !important;
|
||||
margin-bottom: 6px !important;
|
||||
max-width: none !important;
|
||||
border-collapse: separate !important;
|
||||
border-spacing: 0;
|
||||
}
|
||||
table.dataTable td,
|
||||
table.dataTable th {
|
||||
-webkit-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
table.dataTable td.dataTables_empty,
|
||||
table.dataTable th.dataTables_empty {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable.nowrap th,
|
||||
table.dataTable.nowrap td {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable.table-striped > tbody > tr:nth-of-type(2n+1) {
|
||||
background-color: transparent;
|
||||
}
|
||||
table.dataTable > tbody > tr {
|
||||
background-color: transparent;
|
||||
}
|
||||
table.dataTable > tbody > tr.selected > * {
|
||||
box-shadow: inset 0 0 0 9999px rgb(2, 117, 216);
|
||||
box-shadow: inset 0 0 0 9999px rgb(var(--dt-row-selected));
|
||||
color: rgb(255, 255, 255);
|
||||
color: rgb(var(--dt-row-selected-text));
|
||||
}
|
||||
table.dataTable > tbody > tr.selected a {
|
||||
color: rgb(9, 10, 11);
|
||||
color: rgb(var(--dt-row-selected-link));
|
||||
}
|
||||
table.dataTable.table-striped > tbody > tr.odd > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
table.dataTable.table-striped > tbody > tr.odd.selected > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(2, 117, 216, 0.95);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.95);
|
||||
}
|
||||
table.dataTable.table-hover > tbody > tr:hover > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
table.dataTable.table-hover > tbody > tr.selected:hover > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(2, 117, 216, 0.975);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.975);
|
||||
}
|
||||
|
||||
div.dataTables_wrapper div.dataTables_length label {
|
||||
font-weight: normal;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_length select {
|
||||
width: auto;
|
||||
display: inline-block;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_filter {
|
||||
text-align: right;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_filter label {
|
||||
font-weight: normal;
|
||||
white-space: nowrap;
|
||||
text-align: left;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_filter input {
|
||||
margin-left: 0.5em;
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_info {
|
||||
padding-top: 0.85em;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_paginate {
|
||||
margin: 0;
|
||||
white-space: nowrap;
|
||||
text-align: right;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_paginate ul.pagination {
|
||||
margin: 2px 0;
|
||||
white-space: nowrap;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_processing {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 200px;
|
||||
margin-left: -100px;
|
||||
margin-top: -26px;
|
||||
text-align: center;
|
||||
padding: 1em 0;
|
||||
}
|
||||
|
||||
div.dataTables_scrollHead table.dataTable {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
div.dataTables_scrollBody > table {
|
||||
border-top: none;
|
||||
margin-top: 0 !important;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
div.dataTables_scrollBody > table > thead .sorting:before,
|
||||
div.dataTables_scrollBody > table > thead .sorting_asc:before,
|
||||
div.dataTables_scrollBody > table > thead .sorting_desc:before,
|
||||
div.dataTables_scrollBody > table > thead .sorting:after,
|
||||
div.dataTables_scrollBody > table > thead .sorting_asc:after,
|
||||
div.dataTables_scrollBody > table > thead .sorting_desc:after {
|
||||
display: none;
|
||||
}
|
||||
div.dataTables_scrollBody > table > tbody tr:first-child th,
|
||||
div.dataTables_scrollBody > table > tbody tr:first-child td {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
div.dataTables_scrollFoot > .dataTables_scrollFootInner {
|
||||
box-sizing: content-box;
|
||||
}
|
||||
div.dataTables_scrollFoot > .dataTables_scrollFootInner > table {
|
||||
margin-top: 0 !important;
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
div.dataTables_wrapper div.dataTables_length,
|
||||
div.dataTables_wrapper div.dataTables_filter,
|
||||
div.dataTables_wrapper div.dataTables_info,
|
||||
div.dataTables_wrapper div.dataTables_paginate {
|
||||
text-align: center;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_paginate ul.pagination {
|
||||
justify-content: center !important;
|
||||
}
|
||||
}
|
||||
table.dataTable.table-sm > thead > tr > th:not(.sorting_disabled) {
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
table.table-bordered.dataTable {
|
||||
border-right-width: 0;
|
||||
}
|
||||
table.table-bordered.dataTable th,
|
||||
table.table-bordered.dataTable td {
|
||||
border-left-width: 0;
|
||||
}
|
||||
table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child,
|
||||
table.table-bordered.dataTable td:last-child,
|
||||
table.table-bordered.dataTable td:last-child {
|
||||
border-right-width: 1px;
|
||||
}
|
||||
table.table-bordered.dataTable tbody th,
|
||||
table.table-bordered.dataTable tbody td {
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
|
||||
div.dataTables_scrollHead table.table-bordered {
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
|
||||
div.table-responsive > div.dataTables_wrapper > div.row {
|
||||
margin: 0;
|
||||
}
|
||||
div.table-responsive > div.dataTables_wrapper > div.row > div[class^=col-]:first-child {
|
||||
padding-left: 0;
|
||||
}
|
||||
div.table-responsive > div.dataTables_wrapper > div.row > div[class^=col-]:last-child {
|
||||
padding-right: 0;
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,430 @@
|
||||
@charset "UTF-8";
|
||||
:root {
|
||||
--dt-row-selected: 13, 110, 253;
|
||||
--dt-row-selected-text: 255, 255, 255;
|
||||
--dt-row-selected-link: 9, 10, 11;
|
||||
}
|
||||
|
||||
table.dataTable td.dt-control {
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
table.dataTable td.dt-control:before {
|
||||
height: 1em;
|
||||
width: 1em;
|
||||
margin-top: -9px;
|
||||
display: inline-block;
|
||||
color: white;
|
||||
border: 0.15em solid white;
|
||||
border-radius: 1em;
|
||||
box-shadow: 0 0 0.2em #444;
|
||||
box-sizing: content-box;
|
||||
text-align: center;
|
||||
text-indent: 0 !important;
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
line-height: 1em;
|
||||
content: "+";
|
||||
background-color: #31b131;
|
||||
}
|
||||
table.dataTable tr.dt-hasChild td.dt-control:before {
|
||||
content: "-";
|
||||
background-color: #d33333;
|
||||
}
|
||||
|
||||
table.dataTable thead > tr > th.sorting, table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting_asc_disabled, table.dataTable thead > tr > th.sorting_desc_disabled,
|
||||
table.dataTable thead > tr > td.sorting,
|
||||
table.dataTable thead > tr > td.sorting_asc,
|
||||
table.dataTable thead > tr > td.sorting_desc,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled {
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
padding-right: 26px;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:before, table.dataTable thead > tr > th.sorting:after, table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_asc:after, table.dataTable thead > tr > th.sorting_desc:before, table.dataTable thead > tr > th.sorting_desc:after, table.dataTable thead > tr > th.sorting_asc_disabled:before, table.dataTable thead > tr > th.sorting_asc_disabled:after, table.dataTable thead > tr > th.sorting_desc_disabled:before, table.dataTable thead > tr > th.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting:before,
|
||||
table.dataTable thead > tr > td.sorting:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_asc:after,
|
||||
table.dataTable thead > tr > td.sorting_desc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after {
|
||||
position: absolute;
|
||||
display: block;
|
||||
opacity: 0.125;
|
||||
right: 10px;
|
||||
line-height: 9px;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:before, table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_desc:before, table.dataTable thead > tr > th.sorting_asc_disabled:before, table.dataTable thead > tr > th.sorting_desc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting:before,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:before,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:before {
|
||||
bottom: 50%;
|
||||
content: "▲";
|
||||
content: "▲"/"";
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:after, table.dataTable thead > tr > th.sorting_asc:after, table.dataTable thead > tr > th.sorting_desc:after, table.dataTable thead > tr > th.sorting_asc_disabled:after, table.dataTable thead > tr > th.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:after,
|
||||
table.dataTable thead > tr > td.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after {
|
||||
top: 50%;
|
||||
content: "▼";
|
||||
content: "▼"/"";
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:after {
|
||||
opacity: 0.6;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting_desc_disabled:after, table.dataTable thead > tr > th.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before {
|
||||
display: none;
|
||||
}
|
||||
table.dataTable thead > tr > th:active,
|
||||
table.dataTable thead > tr > td:active {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > th:before, div.dataTables_scrollBody > table.dataTable > thead > tr > th:after,
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > td:before,
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > td:after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.dataTables_processing {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 200px;
|
||||
margin-left: -100px;
|
||||
margin-top: -26px;
|
||||
text-align: center;
|
||||
padding: 2px;
|
||||
}
|
||||
div.dataTables_processing > div:last-child {
|
||||
position: relative;
|
||||
width: 80px;
|
||||
height: 15px;
|
||||
margin: 1em auto;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 13px;
|
||||
height: 13px;
|
||||
border-radius: 50%;
|
||||
background: rgb(13, 110, 253);
|
||||
background: rgb(var(--dt-row-selected));
|
||||
animation-timing-function: cubic-bezier(0, 1, 1, 0);
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(1) {
|
||||
left: 8px;
|
||||
animation: datatables-loader-1 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(2) {
|
||||
left: 8px;
|
||||
animation: datatables-loader-2 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(3) {
|
||||
left: 32px;
|
||||
animation: datatables-loader-2 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(4) {
|
||||
left: 56px;
|
||||
animation: datatables-loader-3 0.6s infinite;
|
||||
}
|
||||
|
||||
@keyframes datatables-loader-1 {
|
||||
0% {
|
||||
transform: scale(0);
|
||||
}
|
||||
100% {
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
@keyframes datatables-loader-3 {
|
||||
0% {
|
||||
transform: scale(1);
|
||||
}
|
||||
100% {
|
||||
transform: scale(0);
|
||||
}
|
||||
}
|
||||
@keyframes datatables-loader-2 {
|
||||
0% {
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
100% {
|
||||
transform: translate(24px, 0);
|
||||
}
|
||||
}
|
||||
table.dataTable.nowrap th, table.dataTable.nowrap td {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable th.dt-left,
|
||||
table.dataTable td.dt-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable th.dt-center,
|
||||
table.dataTable td.dt-center,
|
||||
table.dataTable td.dataTables_empty {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable th.dt-right,
|
||||
table.dataTable td.dt-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable th.dt-justify,
|
||||
table.dataTable td.dt-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable th.dt-nowrap,
|
||||
table.dataTable td.dt-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable thead th,
|
||||
table.dataTable thead td,
|
||||
table.dataTable tfoot th,
|
||||
table.dataTable tfoot td {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable thead th.dt-head-left,
|
||||
table.dataTable thead td.dt-head-left,
|
||||
table.dataTable tfoot th.dt-head-left,
|
||||
table.dataTable tfoot td.dt-head-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable thead th.dt-head-center,
|
||||
table.dataTable thead td.dt-head-center,
|
||||
table.dataTable tfoot th.dt-head-center,
|
||||
table.dataTable tfoot td.dt-head-center {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable thead th.dt-head-right,
|
||||
table.dataTable thead td.dt-head-right,
|
||||
table.dataTable tfoot th.dt-head-right,
|
||||
table.dataTable tfoot td.dt-head-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable thead th.dt-head-justify,
|
||||
table.dataTable thead td.dt-head-justify,
|
||||
table.dataTable tfoot th.dt-head-justify,
|
||||
table.dataTable tfoot td.dt-head-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable thead th.dt-head-nowrap,
|
||||
table.dataTable thead td.dt-head-nowrap,
|
||||
table.dataTable tfoot th.dt-head-nowrap,
|
||||
table.dataTable tfoot td.dt-head-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-left,
|
||||
table.dataTable tbody td.dt-body-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-center,
|
||||
table.dataTable tbody td.dt-body-center {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-right,
|
||||
table.dataTable tbody td.dt-body-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-justify,
|
||||
table.dataTable tbody td.dt-body-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-nowrap,
|
||||
table.dataTable tbody td.dt-body-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/*! Bootstrap 5 integration for DataTables
|
||||
*
|
||||
* ©2020 SpryMedia Ltd, all rights reserved.
|
||||
* License: MIT datatables.net/license/mit
|
||||
*/
|
||||
table.dataTable {
|
||||
clear: both;
|
||||
margin-top: 6px !important;
|
||||
margin-bottom: 6px !important;
|
||||
max-width: none !important;
|
||||
border-collapse: separate !important;
|
||||
border-spacing: 0;
|
||||
}
|
||||
table.dataTable td,
|
||||
table.dataTable th {
|
||||
-webkit-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
table.dataTable td.dataTables_empty,
|
||||
table.dataTable th.dataTables_empty {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable.nowrap th,
|
||||
table.dataTable.nowrap td {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable.table-striped > tbody > tr:nth-of-type(2n+1) > * {
|
||||
box-shadow: none;
|
||||
}
|
||||
table.dataTable > tbody > tr {
|
||||
background-color: transparent;
|
||||
}
|
||||
table.dataTable > tbody > tr.selected > * {
|
||||
box-shadow: inset 0 0 0 9999px rgb(13, 110, 253);
|
||||
box-shadow: inset 0 0 0 9999px rgb(var(--dt-row-selected));
|
||||
color: rgb(255, 255, 255);
|
||||
color: rgb(var(--dt-row-selected-text));
|
||||
}
|
||||
table.dataTable > tbody > tr.selected a {
|
||||
color: rgb(9, 10, 11);
|
||||
color: rgb(var(--dt-row-selected-link));
|
||||
}
|
||||
table.dataTable.table-striped > tbody > tr.odd > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
table.dataTable.table-striped > tbody > tr.odd.selected > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.95);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.95);
|
||||
}
|
||||
table.dataTable.table-hover > tbody > tr:hover > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
table.dataTable.table-hover > tbody > tr.selected:hover > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.975);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.975);
|
||||
}
|
||||
|
||||
div.dataTables_wrapper div.dataTables_length label {
|
||||
font-weight: normal;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_length select {
|
||||
width: auto;
|
||||
display: inline-block;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_filter {
|
||||
text-align: right;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_filter label {
|
||||
font-weight: normal;
|
||||
white-space: nowrap;
|
||||
text-align: left;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_filter input {
|
||||
margin-left: 0.5em;
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_info {
|
||||
padding-top: 0.85em;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_paginate {
|
||||
margin: 0;
|
||||
white-space: nowrap;
|
||||
text-align: right;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_paginate ul.pagination {
|
||||
margin: 2px 0;
|
||||
white-space: nowrap;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
div.dataTables_wrapper div.dt-row {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
div.dataTables_scrollHead table.dataTable {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
div.dataTables_scrollBody > table {
|
||||
border-top: none;
|
||||
margin-top: 0 !important;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
div.dataTables_scrollBody > table > thead .sorting:before,
|
||||
div.dataTables_scrollBody > table > thead .sorting_asc:before,
|
||||
div.dataTables_scrollBody > table > thead .sorting_desc:before,
|
||||
div.dataTables_scrollBody > table > thead .sorting:after,
|
||||
div.dataTables_scrollBody > table > thead .sorting_asc:after,
|
||||
div.dataTables_scrollBody > table > thead .sorting_desc:after {
|
||||
display: none;
|
||||
}
|
||||
div.dataTables_scrollBody > table > tbody tr:first-child th,
|
||||
div.dataTables_scrollBody > table > tbody tr:first-child td {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
div.dataTables_scrollFoot > .dataTables_scrollFootInner {
|
||||
box-sizing: content-box;
|
||||
}
|
||||
div.dataTables_scrollFoot > .dataTables_scrollFootInner > table {
|
||||
margin-top: 0 !important;
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
div.dataTables_wrapper div.dataTables_length,
|
||||
div.dataTables_wrapper div.dataTables_filter,
|
||||
div.dataTables_wrapper div.dataTables_info,
|
||||
div.dataTables_wrapper div.dataTables_paginate {
|
||||
text-align: center;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_paginate ul.pagination {
|
||||
justify-content: center !important;
|
||||
}
|
||||
}
|
||||
table.dataTable.table-sm > thead > tr > th:not(.sorting_disabled) {
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
table.table-bordered.dataTable {
|
||||
border-right-width: 0;
|
||||
}
|
||||
table.table-bordered.dataTable thead tr:first-child th,
|
||||
table.table-bordered.dataTable thead tr:first-child td {
|
||||
border-top-width: 1px;
|
||||
}
|
||||
table.table-bordered.dataTable th,
|
||||
table.table-bordered.dataTable td {
|
||||
border-left-width: 0;
|
||||
}
|
||||
table.table-bordered.dataTable th:first-child, table.table-bordered.dataTable th:first-child,
|
||||
table.table-bordered.dataTable td:first-child,
|
||||
table.table-bordered.dataTable td:first-child {
|
||||
border-left-width: 1px;
|
||||
}
|
||||
table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child,
|
||||
table.table-bordered.dataTable td:last-child,
|
||||
table.table-bordered.dataTable td:last-child {
|
||||
border-right-width: 1px;
|
||||
}
|
||||
table.table-bordered.dataTable th,
|
||||
table.table-bordered.dataTable td {
|
||||
border-bottom-width: 1px;
|
||||
}
|
||||
|
||||
div.dataTables_scrollHead table.table-bordered {
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
|
||||
div.table-responsive > div.dataTables_wrapper > div.row {
|
||||
margin: 0;
|
||||
}
|
||||
div.table-responsive > div.dataTables_wrapper > div.row > div[class^=col-]:first-child {
|
||||
padding-left: 0;
|
||||
}
|
||||
div.table-responsive > div.dataTables_wrapper > div.row > div[class^=col-]:last-child {
|
||||
padding-right: 0;
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,379 @@
|
||||
@charset "UTF-8";
|
||||
:root {
|
||||
--dt-row-selected: 0, 209, 178;
|
||||
--dt-row-selected-text: 255, 255, 255;
|
||||
--dt-row-selected-link: 9, 10, 11;
|
||||
}
|
||||
|
||||
table.dataTable td.dt-control {
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
table.dataTable td.dt-control:before {
|
||||
height: 1em;
|
||||
width: 1em;
|
||||
margin-top: -9px;
|
||||
display: inline-block;
|
||||
color: white;
|
||||
border: 0.15em solid white;
|
||||
border-radius: 1em;
|
||||
box-shadow: 0 0 0.2em #444;
|
||||
box-sizing: content-box;
|
||||
text-align: center;
|
||||
text-indent: 0 !important;
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
line-height: 1em;
|
||||
content: "+";
|
||||
background-color: #31b131;
|
||||
}
|
||||
table.dataTable tr.dt-hasChild td.dt-control:before {
|
||||
content: "-";
|
||||
background-color: #d33333;
|
||||
}
|
||||
|
||||
table.dataTable thead > tr > th.sorting, table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting_asc_disabled, table.dataTable thead > tr > th.sorting_desc_disabled,
|
||||
table.dataTable thead > tr > td.sorting,
|
||||
table.dataTable thead > tr > td.sorting_asc,
|
||||
table.dataTable thead > tr > td.sorting_desc,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled {
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
padding-right: 26px;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:before, table.dataTable thead > tr > th.sorting:after, table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_asc:after, table.dataTable thead > tr > th.sorting_desc:before, table.dataTable thead > tr > th.sorting_desc:after, table.dataTable thead > tr > th.sorting_asc_disabled:before, table.dataTable thead > tr > th.sorting_asc_disabled:after, table.dataTable thead > tr > th.sorting_desc_disabled:before, table.dataTable thead > tr > th.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting:before,
|
||||
table.dataTable thead > tr > td.sorting:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_asc:after,
|
||||
table.dataTable thead > tr > td.sorting_desc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after {
|
||||
position: absolute;
|
||||
display: block;
|
||||
opacity: 0.125;
|
||||
right: 10px;
|
||||
line-height: 9px;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:before, table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_desc:before, table.dataTable thead > tr > th.sorting_asc_disabled:before, table.dataTable thead > tr > th.sorting_desc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting:before,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:before,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:before {
|
||||
bottom: 50%;
|
||||
content: "▲";
|
||||
content: "▲"/"";
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:after, table.dataTable thead > tr > th.sorting_asc:after, table.dataTable thead > tr > th.sorting_desc:after, table.dataTable thead > tr > th.sorting_asc_disabled:after, table.dataTable thead > tr > th.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:after,
|
||||
table.dataTable thead > tr > td.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after {
|
||||
top: 50%;
|
||||
content: "▼";
|
||||
content: "▼"/"";
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:after {
|
||||
opacity: 0.6;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting_desc_disabled:after, table.dataTable thead > tr > th.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before {
|
||||
display: none;
|
||||
}
|
||||
table.dataTable thead > tr > th:active,
|
||||
table.dataTable thead > tr > td:active {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > th:before, div.dataTables_scrollBody > table.dataTable > thead > tr > th:after,
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > td:before,
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > td:after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.dataTables_processing {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 200px;
|
||||
margin-left: -100px;
|
||||
margin-top: -26px;
|
||||
text-align: center;
|
||||
padding: 2px;
|
||||
}
|
||||
div.dataTables_processing > div:last-child {
|
||||
position: relative;
|
||||
width: 80px;
|
||||
height: 15px;
|
||||
margin: 1em auto;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 13px;
|
||||
height: 13px;
|
||||
border-radius: 50%;
|
||||
background: rgb(0, 209, 178);
|
||||
background: rgb(var(--dt-row-selected));
|
||||
animation-timing-function: cubic-bezier(0, 1, 1, 0);
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(1) {
|
||||
left: 8px;
|
||||
animation: datatables-loader-1 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(2) {
|
||||
left: 8px;
|
||||
animation: datatables-loader-2 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(3) {
|
||||
left: 32px;
|
||||
animation: datatables-loader-2 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(4) {
|
||||
left: 56px;
|
||||
animation: datatables-loader-3 0.6s infinite;
|
||||
}
|
||||
|
||||
@keyframes datatables-loader-1 {
|
||||
0% {
|
||||
transform: scale(0);
|
||||
}
|
||||
100% {
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
@keyframes datatables-loader-3 {
|
||||
0% {
|
||||
transform: scale(1);
|
||||
}
|
||||
100% {
|
||||
transform: scale(0);
|
||||
}
|
||||
}
|
||||
@keyframes datatables-loader-2 {
|
||||
0% {
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
100% {
|
||||
transform: translate(24px, 0);
|
||||
}
|
||||
}
|
||||
table.dataTable.nowrap th, table.dataTable.nowrap td {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable th.dt-left,
|
||||
table.dataTable td.dt-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable th.dt-center,
|
||||
table.dataTable td.dt-center,
|
||||
table.dataTable td.dataTables_empty {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable th.dt-right,
|
||||
table.dataTable td.dt-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable th.dt-justify,
|
||||
table.dataTable td.dt-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable th.dt-nowrap,
|
||||
table.dataTable td.dt-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable thead th,
|
||||
table.dataTable thead td,
|
||||
table.dataTable tfoot th,
|
||||
table.dataTable tfoot td {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable thead th.dt-head-left,
|
||||
table.dataTable thead td.dt-head-left,
|
||||
table.dataTable tfoot th.dt-head-left,
|
||||
table.dataTable tfoot td.dt-head-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable thead th.dt-head-center,
|
||||
table.dataTable thead td.dt-head-center,
|
||||
table.dataTable tfoot th.dt-head-center,
|
||||
table.dataTable tfoot td.dt-head-center {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable thead th.dt-head-right,
|
||||
table.dataTable thead td.dt-head-right,
|
||||
table.dataTable tfoot th.dt-head-right,
|
||||
table.dataTable tfoot td.dt-head-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable thead th.dt-head-justify,
|
||||
table.dataTable thead td.dt-head-justify,
|
||||
table.dataTable tfoot th.dt-head-justify,
|
||||
table.dataTable tfoot td.dt-head-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable thead th.dt-head-nowrap,
|
||||
table.dataTable thead td.dt-head-nowrap,
|
||||
table.dataTable tfoot th.dt-head-nowrap,
|
||||
table.dataTable tfoot td.dt-head-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-left,
|
||||
table.dataTable tbody td.dt-body-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-center,
|
||||
table.dataTable tbody td.dt-body-center {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-right,
|
||||
table.dataTable tbody td.dt-body-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-justify,
|
||||
table.dataTable tbody td.dt-body-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-nowrap,
|
||||
table.dataTable tbody td.dt-body-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/*! DataTables Bulma integration
|
||||
* ©2020 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
table.dataTable {
|
||||
clear: both;
|
||||
margin-top: 6px !important;
|
||||
margin-bottom: 6px !important;
|
||||
max-width: none !important;
|
||||
border-collapse: separate !important;
|
||||
border-spacing: 0;
|
||||
}
|
||||
table.dataTable td,
|
||||
table.dataTable th {
|
||||
-webkit-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
table.dataTable td.dataTables_empty,
|
||||
table.dataTable th.dataTables_empty {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable.nowrap th,
|
||||
table.dataTable.nowrap td {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable.table.is-striped > tbody > tr:nth-child(2n) {
|
||||
background-color: transparent;
|
||||
}
|
||||
table.dataTable > tbody > tr {
|
||||
background-color: transparent;
|
||||
}
|
||||
table.dataTable > tbody > tr.selected > * {
|
||||
box-shadow: inset 0 0 0 9999px rgb(0, 209, 178);
|
||||
box-shadow: inset 0 0 0 9999px rgb(var(--dt-row-selected));
|
||||
color: rgb(255, 255, 255);
|
||||
color: rgb(var(--dt-row-selected-text));
|
||||
}
|
||||
table.dataTable > tbody > tr.selected a {
|
||||
color: rgb(9, 10, 11);
|
||||
color: rgb(var(--dt-row-selected-link));
|
||||
}
|
||||
table.dataTable.is-striped > tbody > tr.odd > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.019);
|
||||
}
|
||||
table.dataTable.is-striped > tbody > tr.odd.selected > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 209, 178, 0.919);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.919);
|
||||
}
|
||||
table.dataTable.is-hoverable > tbody > tr:hover > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.39);
|
||||
}
|
||||
table.dataTable.is-hoverable > tbody > tr.selected:hover > * {
|
||||
box-shadow: inset 0 0 0 9999px #00d1b2;
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 1.29);
|
||||
}
|
||||
|
||||
div.dataTables_wrapper div.dataTables_length label {
|
||||
font-weight: normal;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_length div {
|
||||
vertical-align: middle;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_length select {
|
||||
width: auto;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_filter {
|
||||
text-align: right;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_filter label {
|
||||
font-weight: normal;
|
||||
white-space: nowrap;
|
||||
text-align: left;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_filter input {
|
||||
margin-left: 0.5em;
|
||||
width: auto;
|
||||
vertical-align: middle;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_info {
|
||||
padding-top: 0.5em;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_paginate ul {
|
||||
justify-content: flex-end;
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_processing {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 200px;
|
||||
margin-left: -100px;
|
||||
margin-top: -26px;
|
||||
text-align: center;
|
||||
padding: 1em 0;
|
||||
}
|
||||
|
||||
div.dataTables_scrollHead table.dataTable {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
div.dataTables_scrollBody table {
|
||||
border-top: none;
|
||||
margin-top: 0 !important;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
div.dataTables_scrollBody table thead .sorting:before,
|
||||
div.dataTables_scrollBody table thead .sorting_asc:before,
|
||||
div.dataTables_scrollBody table thead .sorting_desc:before,
|
||||
div.dataTables_scrollBody table thead .sorting:after,
|
||||
div.dataTables_scrollBody table thead .sorting_asc:after,
|
||||
div.dataTables_scrollBody table thead .sorting_desc:after {
|
||||
display: none;
|
||||
}
|
||||
div.dataTables_scrollBody table tbody tr:first-child th,
|
||||
div.dataTables_scrollBody table tbody tr:first-child td {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
div.dataTables_scrollFoot > .dataTables_scrollFootInner {
|
||||
box-sizing: content-box;
|
||||
}
|
||||
div.dataTables_scrollFoot > .dataTables_scrollFootInner > table {
|
||||
margin-top: 0 !important;
|
||||
border-top: none;
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,357 @@
|
||||
@charset "UTF-8";
|
||||
:root {
|
||||
--dt-row-selected: 0, 137, 182;
|
||||
--dt-row-selected-text: 255, 255, 255;
|
||||
--dt-row-selected-link: 9, 10, 11;
|
||||
}
|
||||
|
||||
table.dataTable td.dt-control {
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
table.dataTable td.dt-control:before {
|
||||
height: 1em;
|
||||
width: 1em;
|
||||
margin-top: -9px;
|
||||
display: inline-block;
|
||||
color: white;
|
||||
border: 0.15em solid white;
|
||||
border-radius: 1em;
|
||||
box-shadow: 0 0 0.2em #444;
|
||||
box-sizing: content-box;
|
||||
text-align: center;
|
||||
text-indent: 0 !important;
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
line-height: 1em;
|
||||
content: "+";
|
||||
background-color: #31b131;
|
||||
}
|
||||
table.dataTable tr.dt-hasChild td.dt-control:before {
|
||||
content: "-";
|
||||
background-color: #d33333;
|
||||
}
|
||||
|
||||
table.dataTable thead > tr > th.sorting, table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting_asc_disabled, table.dataTable thead > tr > th.sorting_desc_disabled,
|
||||
table.dataTable thead > tr > td.sorting,
|
||||
table.dataTable thead > tr > td.sorting_asc,
|
||||
table.dataTable thead > tr > td.sorting_desc,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled {
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
padding-right: 26px;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:before, table.dataTable thead > tr > th.sorting:after, table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_asc:after, table.dataTable thead > tr > th.sorting_desc:before, table.dataTable thead > tr > th.sorting_desc:after, table.dataTable thead > tr > th.sorting_asc_disabled:before, table.dataTable thead > tr > th.sorting_asc_disabled:after, table.dataTable thead > tr > th.sorting_desc_disabled:before, table.dataTable thead > tr > th.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting:before,
|
||||
table.dataTable thead > tr > td.sorting:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_asc:after,
|
||||
table.dataTable thead > tr > td.sorting_desc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after {
|
||||
position: absolute;
|
||||
display: block;
|
||||
opacity: 0.125;
|
||||
right: 10px;
|
||||
line-height: 9px;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:before, table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_desc:before, table.dataTable thead > tr > th.sorting_asc_disabled:before, table.dataTable thead > tr > th.sorting_desc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting:before,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:before,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:before {
|
||||
bottom: 50%;
|
||||
content: "▲";
|
||||
content: "▲"/"";
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:after, table.dataTable thead > tr > th.sorting_asc:after, table.dataTable thead > tr > th.sorting_desc:after, table.dataTable thead > tr > th.sorting_asc_disabled:after, table.dataTable thead > tr > th.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:after,
|
||||
table.dataTable thead > tr > td.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after {
|
||||
top: 50%;
|
||||
content: "▼";
|
||||
content: "▼"/"";
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:after {
|
||||
opacity: 0.6;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting_desc_disabled:after, table.dataTable thead > tr > th.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before {
|
||||
display: none;
|
||||
}
|
||||
table.dataTable thead > tr > th:active,
|
||||
table.dataTable thead > tr > td:active {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > th:before, div.dataTables_scrollBody > table.dataTable > thead > tr > th:after,
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > td:before,
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > td:after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.dataTables_processing {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 200px;
|
||||
margin-left: -100px;
|
||||
margin-top: -26px;
|
||||
text-align: center;
|
||||
padding: 2px;
|
||||
}
|
||||
div.dataTables_processing > div:last-child {
|
||||
position: relative;
|
||||
width: 80px;
|
||||
height: 15px;
|
||||
margin: 1em auto;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 13px;
|
||||
height: 13px;
|
||||
border-radius: 50%;
|
||||
background: rgb(0, 137, 182);
|
||||
background: rgb(var(--dt-row-selected));
|
||||
animation-timing-function: cubic-bezier(0, 1, 1, 0);
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(1) {
|
||||
left: 8px;
|
||||
animation: datatables-loader-1 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(2) {
|
||||
left: 8px;
|
||||
animation: datatables-loader-2 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(3) {
|
||||
left: 32px;
|
||||
animation: datatables-loader-2 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(4) {
|
||||
left: 56px;
|
||||
animation: datatables-loader-3 0.6s infinite;
|
||||
}
|
||||
|
||||
@keyframes datatables-loader-1 {
|
||||
0% {
|
||||
transform: scale(0);
|
||||
}
|
||||
100% {
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
@keyframes datatables-loader-3 {
|
||||
0% {
|
||||
transform: scale(1);
|
||||
}
|
||||
100% {
|
||||
transform: scale(0);
|
||||
}
|
||||
}
|
||||
@keyframes datatables-loader-2 {
|
||||
0% {
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
100% {
|
||||
transform: translate(24px, 0);
|
||||
}
|
||||
}
|
||||
table.dataTable.nowrap th, table.dataTable.nowrap td {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable th.dt-left,
|
||||
table.dataTable td.dt-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable th.dt-center,
|
||||
table.dataTable td.dt-center,
|
||||
table.dataTable td.dataTables_empty {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable th.dt-right,
|
||||
table.dataTable td.dt-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable th.dt-justify,
|
||||
table.dataTable td.dt-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable th.dt-nowrap,
|
||||
table.dataTable td.dt-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable thead th,
|
||||
table.dataTable thead td,
|
||||
table.dataTable tfoot th,
|
||||
table.dataTable tfoot td {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable thead th.dt-head-left,
|
||||
table.dataTable thead td.dt-head-left,
|
||||
table.dataTable tfoot th.dt-head-left,
|
||||
table.dataTable tfoot td.dt-head-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable thead th.dt-head-center,
|
||||
table.dataTable thead td.dt-head-center,
|
||||
table.dataTable tfoot th.dt-head-center,
|
||||
table.dataTable tfoot td.dt-head-center {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable thead th.dt-head-right,
|
||||
table.dataTable thead td.dt-head-right,
|
||||
table.dataTable tfoot th.dt-head-right,
|
||||
table.dataTable tfoot td.dt-head-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable thead th.dt-head-justify,
|
||||
table.dataTable thead td.dt-head-justify,
|
||||
table.dataTable tfoot th.dt-head-justify,
|
||||
table.dataTable tfoot td.dt-head-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable thead th.dt-head-nowrap,
|
||||
table.dataTable thead td.dt-head-nowrap,
|
||||
table.dataTable tfoot th.dt-head-nowrap,
|
||||
table.dataTable tfoot td.dt-head-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-left,
|
||||
table.dataTable tbody td.dt-body-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-center,
|
||||
table.dataTable tbody td.dt-body-center {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-right,
|
||||
table.dataTable tbody td.dt-body-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-justify,
|
||||
table.dataTable tbody td.dt-body-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-nowrap,
|
||||
table.dataTable tbody td.dt-body-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
table.dataTable {
|
||||
clear: both;
|
||||
margin: 0.5em 0 !important;
|
||||
max-width: none !important;
|
||||
width: 100%;
|
||||
}
|
||||
table.dataTable td,
|
||||
table.dataTable th {
|
||||
-webkit-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
table.dataTable td.dataTables_empty,
|
||||
table.dataTable th.dataTables_empty {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable.nowrap th, table.dataTable.nowrap td {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable tr:nth-child(2n) {
|
||||
background-color: transparent;
|
||||
}
|
||||
table.dataTable > tbody > tr {
|
||||
background-color: transparent;
|
||||
}
|
||||
table.dataTable > tbody > tr.selected > * {
|
||||
box-shadow: inset 0 0 0 9999px rgb(0, 137, 182);
|
||||
box-shadow: inset 0 0 0 9999px rgb(var(--dt-row-selected));
|
||||
color: rgb(255, 255, 255);
|
||||
color: rgb(var(--dt-row-selected-text));
|
||||
}
|
||||
table.dataTable > tbody > tr.selected a {
|
||||
color: rgb(9, 10, 11);
|
||||
color: rgb(var(--dt-row-selected-link));
|
||||
}
|
||||
table.dataTable > tbody > tr.even > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.054);
|
||||
}
|
||||
table.dataTable > tbody > tr.even.selected > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 137, 182, 0.954);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.954);
|
||||
}
|
||||
table.dataTable.hover > tbody > tr:hover > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.074);
|
||||
}
|
||||
table.dataTable.hover > tbody > tr.selected:hover > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 137, 182, 0.974);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.974);
|
||||
}
|
||||
|
||||
div.dataTables_wrapper {
|
||||
position: relative;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_length label {
|
||||
float: left;
|
||||
text-align: left;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_length select {
|
||||
width: 75px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_filter label {
|
||||
float: right;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_filter input {
|
||||
display: inline-block !important;
|
||||
width: auto !important;
|
||||
margin-bottom: 0;
|
||||
margin-left: 0.5em;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_info {
|
||||
padding-top: 2px;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_paginate {
|
||||
float: right;
|
||||
margin: 0;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_processing {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 200px;
|
||||
margin-left: -100px;
|
||||
margin-top: -26px;
|
||||
text-align: center;
|
||||
padding: 1rem 0;
|
||||
}
|
||||
|
||||
div.dataTables_scrollHead table {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
div.dataTables_scrollBody table {
|
||||
border-top: none;
|
||||
margin-top: 0 !important;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
div.dataTables_scrollBody table tbody tr:first-child th,
|
||||
div.dataTables_scrollBody table tbody tr:first-child td {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
div.dataTables_scrollFoot table {
|
||||
margin-top: 0 !important;
|
||||
border-top: none;
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,673 @@
|
||||
@charset "UTF-8";
|
||||
:root {
|
||||
--dt-row-selected: 13, 110, 253;
|
||||
--dt-row-selected-text: 255, 255, 255;
|
||||
--dt-row-selected-link: 9, 10, 11;
|
||||
}
|
||||
|
||||
table.dataTable td.dt-control {
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
table.dataTable td.dt-control:before {
|
||||
height: 1em;
|
||||
width: 1em;
|
||||
margin-top: -9px;
|
||||
display: inline-block;
|
||||
color: white;
|
||||
border: 0.15em solid white;
|
||||
border-radius: 1em;
|
||||
box-shadow: 0 0 0.2em #444;
|
||||
box-sizing: content-box;
|
||||
text-align: center;
|
||||
text-indent: 0 !important;
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
line-height: 1em;
|
||||
content: "+";
|
||||
background-color: #31b131;
|
||||
}
|
||||
table.dataTable tr.dt-hasChild td.dt-control:before {
|
||||
content: "-";
|
||||
background-color: #d33333;
|
||||
}
|
||||
|
||||
:root {
|
||||
--dt-row-selected: 13, 110, 253;
|
||||
--dt-row-selected-text: 255, 255, 255;
|
||||
--dt-row-selected-link: 9, 10, 11;
|
||||
}
|
||||
|
||||
table.dataTable td.dt-control {
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
table.dataTable td.dt-control:before {
|
||||
height: 1em;
|
||||
width: 1em;
|
||||
margin-top: -9px;
|
||||
display: inline-block;
|
||||
color: white;
|
||||
border: 0.15em solid white;
|
||||
border-radius: 1em;
|
||||
box-shadow: 0 0 0.2em #444;
|
||||
box-sizing: content-box;
|
||||
text-align: center;
|
||||
text-indent: 0 !important;
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
line-height: 1em;
|
||||
content: "+";
|
||||
background-color: #31b131;
|
||||
}
|
||||
table.dataTable tr.dt-hasChild td.dt-control:before {
|
||||
content: "-";
|
||||
background-color: #d33333;
|
||||
}
|
||||
|
||||
table.dataTable thead > tr > th.sorting, table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting_asc_disabled, table.dataTable thead > tr > th.sorting_desc_disabled,
|
||||
table.dataTable thead > tr > td.sorting,
|
||||
table.dataTable thead > tr > td.sorting_asc,
|
||||
table.dataTable thead > tr > td.sorting_desc,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled {
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
padding-right: 26px;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:before, table.dataTable thead > tr > th.sorting:after, table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_asc:after, table.dataTable thead > tr > th.sorting_desc:before, table.dataTable thead > tr > th.sorting_desc:after, table.dataTable thead > tr > th.sorting_asc_disabled:before, table.dataTable thead > tr > th.sorting_asc_disabled:after, table.dataTable thead > tr > th.sorting_desc_disabled:before, table.dataTable thead > tr > th.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting:before,
|
||||
table.dataTable thead > tr > td.sorting:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_asc:after,
|
||||
table.dataTable thead > tr > td.sorting_desc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after {
|
||||
position: absolute;
|
||||
display: block;
|
||||
opacity: 0.125;
|
||||
right: 10px;
|
||||
line-height: 9px;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:before, table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_desc:before, table.dataTable thead > tr > th.sorting_asc_disabled:before, table.dataTable thead > tr > th.sorting_desc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting:before,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:before,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:before {
|
||||
bottom: 50%;
|
||||
content: "▲";
|
||||
content: "▲"/"";
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:after, table.dataTable thead > tr > th.sorting_asc:after, table.dataTable thead > tr > th.sorting_desc:after, table.dataTable thead > tr > th.sorting_asc_disabled:after, table.dataTable thead > tr > th.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:after,
|
||||
table.dataTable thead > tr > td.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after {
|
||||
top: 50%;
|
||||
content: "▼";
|
||||
content: "▼"/"";
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:after {
|
||||
opacity: 0.6;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting_desc_disabled:after, table.dataTable thead > tr > th.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before {
|
||||
display: none;
|
||||
}
|
||||
table.dataTable thead > tr > th:active,
|
||||
table.dataTable thead > tr > td:active {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > th:before, div.dataTables_scrollBody > table.dataTable > thead > tr > th:after,
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > td:before,
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > td:after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.dataTables_processing {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 200px;
|
||||
margin-left: -100px;
|
||||
margin-top: -26px;
|
||||
text-align: center;
|
||||
padding: 2px;
|
||||
}
|
||||
div.dataTables_processing > div:last-child {
|
||||
position: relative;
|
||||
width: 80px;
|
||||
height: 15px;
|
||||
margin: 1em auto;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 13px;
|
||||
height: 13px;
|
||||
border-radius: 50%;
|
||||
background: rgb(13, 110, 253);
|
||||
background: rgb(var(--dt-row-selected));
|
||||
animation-timing-function: cubic-bezier(0, 1, 1, 0);
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(1) {
|
||||
left: 8px;
|
||||
animation: datatables-loader-1 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(2) {
|
||||
left: 8px;
|
||||
animation: datatables-loader-2 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(3) {
|
||||
left: 32px;
|
||||
animation: datatables-loader-2 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(4) {
|
||||
left: 56px;
|
||||
animation: datatables-loader-3 0.6s infinite;
|
||||
}
|
||||
|
||||
@keyframes datatables-loader-1 {
|
||||
0% {
|
||||
transform: scale(0);
|
||||
}
|
||||
100% {
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
@keyframes datatables-loader-3 {
|
||||
0% {
|
||||
transform: scale(1);
|
||||
}
|
||||
100% {
|
||||
transform: scale(0);
|
||||
}
|
||||
}
|
||||
@keyframes datatables-loader-2 {
|
||||
0% {
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
100% {
|
||||
transform: translate(24px, 0);
|
||||
}
|
||||
}
|
||||
table.dataTable.nowrap th, table.dataTable.nowrap td {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable th.dt-left,
|
||||
table.dataTable td.dt-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable th.dt-center,
|
||||
table.dataTable td.dt-center,
|
||||
table.dataTable td.dataTables_empty {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable th.dt-right,
|
||||
table.dataTable td.dt-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable th.dt-justify,
|
||||
table.dataTable td.dt-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable th.dt-nowrap,
|
||||
table.dataTable td.dt-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable thead th,
|
||||
table.dataTable thead td,
|
||||
table.dataTable tfoot th,
|
||||
table.dataTable tfoot td {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable thead th.dt-head-left,
|
||||
table.dataTable thead td.dt-head-left,
|
||||
table.dataTable tfoot th.dt-head-left,
|
||||
table.dataTable tfoot td.dt-head-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable thead th.dt-head-center,
|
||||
table.dataTable thead td.dt-head-center,
|
||||
table.dataTable tfoot th.dt-head-center,
|
||||
table.dataTable tfoot td.dt-head-center {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable thead th.dt-head-right,
|
||||
table.dataTable thead td.dt-head-right,
|
||||
table.dataTable tfoot th.dt-head-right,
|
||||
table.dataTable tfoot td.dt-head-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable thead th.dt-head-justify,
|
||||
table.dataTable thead td.dt-head-justify,
|
||||
table.dataTable tfoot th.dt-head-justify,
|
||||
table.dataTable tfoot td.dt-head-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable thead th.dt-head-nowrap,
|
||||
table.dataTable thead td.dt-head-nowrap,
|
||||
table.dataTable tfoot th.dt-head-nowrap,
|
||||
table.dataTable tfoot td.dt-head-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-left,
|
||||
table.dataTable tbody td.dt-body-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-center,
|
||||
table.dataTable tbody td.dt-body-center {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-right,
|
||||
table.dataTable tbody td.dt-body-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-justify,
|
||||
table.dataTable tbody td.dt-body-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-nowrap,
|
||||
table.dataTable tbody td.dt-body-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/*
|
||||
* Table styles
|
||||
*/
|
||||
table.dataTable {
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
clear: both;
|
||||
border-collapse: separate;
|
||||
border-spacing: 0;
|
||||
/*
|
||||
* Header and footer styles
|
||||
*/
|
||||
/*
|
||||
* Body styles
|
||||
*/
|
||||
}
|
||||
table.dataTable thead th,
|
||||
table.dataTable tfoot th {
|
||||
font-weight: bold;
|
||||
}
|
||||
table.dataTable thead th,
|
||||
table.dataTable thead td {
|
||||
padding: 10px;
|
||||
}
|
||||
table.dataTable thead th:active,
|
||||
table.dataTable thead td:active {
|
||||
outline: none;
|
||||
}
|
||||
table.dataTable tfoot th,
|
||||
table.dataTable tfoot td {
|
||||
padding: 10px 10px 6px 10px;
|
||||
}
|
||||
table.dataTable tbody tr {
|
||||
background-color: transparent;
|
||||
}
|
||||
table.dataTable tbody tr.selected > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.9);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.9);
|
||||
color: rgb(255, 255, 255);
|
||||
color: rgb(var(--dt-row-selected-text));
|
||||
}
|
||||
table.dataTable tbody tr.selected a {
|
||||
color: rgb(9, 10, 11);
|
||||
color: rgb(var(--dt-row-selected-link));
|
||||
}
|
||||
table.dataTable tbody th,
|
||||
table.dataTable tbody td {
|
||||
padding: 8px 10px;
|
||||
}
|
||||
table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td {
|
||||
border-top: 1px solid rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
table.dataTable.row-border tbody tr:first-child th,
|
||||
table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th,
|
||||
table.dataTable.display tbody tr:first-child td {
|
||||
border-top: none;
|
||||
}
|
||||
table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {
|
||||
border-top: 1px solid rgba(0, 0, 0, 0.15);
|
||||
border-right: 1px solid rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
table.dataTable.cell-border tbody tr th:first-child,
|
||||
table.dataTable.cell-border tbody tr td:first-child {
|
||||
border-left: 1px solid rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
table.dataTable.cell-border tbody tr:first-child th,
|
||||
table.dataTable.cell-border tbody tr:first-child td {
|
||||
border-top: none;
|
||||
}
|
||||
table.dataTable.stripe > tbody > tr.odd > *, table.dataTable.display > tbody > tr.odd > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.023);
|
||||
}
|
||||
table.dataTable.stripe > tbody > tr.odd.selected > *, table.dataTable.display > tbody > tr.odd.selected > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.923);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 0.923));
|
||||
}
|
||||
table.dataTable.hover > tbody > tr:hover > *, table.dataTable.display > tbody > tr:hover > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.035);
|
||||
}
|
||||
table.dataTable.hover > tbody > tr.selected:hover > *, table.dataTable.display > tbody > tr.selected:hover > * {
|
||||
box-shadow: inset 0 0 0 9999px #0d6efd !important;
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 1)) !important;
|
||||
}
|
||||
table.dataTable.order-column > tbody tr > .sorting_1,
|
||||
table.dataTable.order-column > tbody tr > .sorting_2,
|
||||
table.dataTable.order-column > tbody tr > .sorting_3, table.dataTable.display > tbody tr > .sorting_1,
|
||||
table.dataTable.display > tbody tr > .sorting_2,
|
||||
table.dataTable.display > tbody tr > .sorting_3 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.019);
|
||||
}
|
||||
table.dataTable.order-column > tbody tr.selected > .sorting_1,
|
||||
table.dataTable.order-column > tbody tr.selected > .sorting_2,
|
||||
table.dataTable.order-column > tbody tr.selected > .sorting_3, table.dataTable.display > tbody tr.selected > .sorting_1,
|
||||
table.dataTable.display > tbody tr.selected > .sorting_2,
|
||||
table.dataTable.display > tbody tr.selected > .sorting_3 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.919);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 0.919));
|
||||
}
|
||||
table.dataTable.display > tbody > tr.odd > .sorting_1, table.dataTable.order-column.stripe > tbody > tr.odd > .sorting_1 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.054);
|
||||
}
|
||||
table.dataTable.display > tbody > tr.odd > .sorting_2, table.dataTable.order-column.stripe > tbody > tr.odd > .sorting_2 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.047);
|
||||
}
|
||||
table.dataTable.display > tbody > tr.odd > .sorting_3, table.dataTable.order-column.stripe > tbody > tr.odd > .sorting_3 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.039);
|
||||
}
|
||||
table.dataTable.display > tbody > tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe > tbody > tr.odd.selected > .sorting_1 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.954);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 0.954));
|
||||
}
|
||||
table.dataTable.display > tbody > tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe > tbody > tr.odd.selected > .sorting_2 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.947);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 0.947));
|
||||
}
|
||||
table.dataTable.display > tbody > tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe > tbody > tr.odd.selected > .sorting_3 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.939);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 0.939));
|
||||
}
|
||||
table.dataTable.display > tbody > tr.even > .sorting_1, table.dataTable.order-column.stripe > tbody > tr.even > .sorting_1 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.019);
|
||||
}
|
||||
table.dataTable.display > tbody > tr.even > .sorting_2, table.dataTable.order-column.stripe > tbody > tr.even > .sorting_2 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.011);
|
||||
}
|
||||
table.dataTable.display > tbody > tr.even > .sorting_3, table.dataTable.order-column.stripe > tbody > tr.even > .sorting_3 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.003);
|
||||
}
|
||||
table.dataTable.display > tbody > tr.even.selected > .sorting_1, table.dataTable.order-column.stripe > tbody > tr.even.selected > .sorting_1 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.919);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 0.919));
|
||||
}
|
||||
table.dataTable.display > tbody > tr.even.selected > .sorting_2, table.dataTable.order-column.stripe > tbody > tr.even.selected > .sorting_2 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.911);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 0.911));
|
||||
}
|
||||
table.dataTable.display > tbody > tr.even.selected > .sorting_3, table.dataTable.order-column.stripe > tbody > tr.even.selected > .sorting_3 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.903);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 0.903));
|
||||
}
|
||||
table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.082);
|
||||
}
|
||||
table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.074);
|
||||
}
|
||||
table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.062);
|
||||
}
|
||||
table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.982);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 0.982));
|
||||
}
|
||||
table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.974);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 0.974));
|
||||
}
|
||||
table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.962);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 0.962));
|
||||
}
|
||||
table.dataTable.no-footer {
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
table.dataTable.compact thead th,
|
||||
table.dataTable.compact thead td,
|
||||
table.dataTable.compact tfoot th,
|
||||
table.dataTable.compact tfoot td,
|
||||
table.dataTable.compact tbody th,
|
||||
table.dataTable.compact tbody td {
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
table.dataTable th,
|
||||
table.dataTable td {
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
/*
|
||||
* Control feature layout
|
||||
*/
|
||||
.dataTables_wrapper {
|
||||
position: relative;
|
||||
clear: both;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_length {
|
||||
float: left;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_length select {
|
||||
border: 1px solid #aaa;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
background-color: transparent;
|
||||
padding: 4px;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_filter {
|
||||
float: right;
|
||||
text-align: right;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_filter input {
|
||||
border: 1px solid #aaa;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
background-color: transparent;
|
||||
margin-left: 3px;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_info {
|
||||
clear: both;
|
||||
float: left;
|
||||
padding-top: 0.755em;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_paginate {
|
||||
float: right;
|
||||
text-align: right;
|
||||
padding-top: 0.25em;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_paginate .paginate_button {
|
||||
box-sizing: border-box;
|
||||
display: inline-block;
|
||||
min-width: 1.5em;
|
||||
padding: 0.5em 1em;
|
||||
margin-left: 2px;
|
||||
text-align: center;
|
||||
text-decoration: none !important;
|
||||
cursor: pointer;
|
||||
color: inherit !important;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 2px;
|
||||
background: transparent;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
|
||||
color: inherit !important;
|
||||
border: 1px solid rgba(0, 0, 0, 0.3);
|
||||
background-color: rgba(230, 230, 230, 0.1);
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(230, 230, 230, 0.1)), color-stop(100%, rgba(0, 0, 0, 0.1))); /* Chrome,Safari4+ */
|
||||
background: -webkit-linear-gradient(top, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%); /* Chrome10+,Safari5.1+ */
|
||||
background: -moz-linear-gradient(top, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%); /* FF3.6+ */
|
||||
background: -ms-linear-gradient(top, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%); /* IE10+ */
|
||||
background: -o-linear-gradient(top, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%); /* Opera 11.10+ */
|
||||
background: linear-gradient(to bottom, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%); /* W3C */
|
||||
}
|
||||
.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active {
|
||||
cursor: default;
|
||||
color: #666 !important;
|
||||
border: 1px solid transparent;
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_paginate .paginate_button:hover {
|
||||
color: white !important;
|
||||
border: 1px solid #111;
|
||||
background-color: #585858;
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111)); /* Chrome,Safari4+ */
|
||||
background: -webkit-linear-gradient(top, #585858 0%, #111 100%); /* Chrome10+,Safari5.1+ */
|
||||
background: -moz-linear-gradient(top, #585858 0%, #111 100%); /* FF3.6+ */
|
||||
background: -ms-linear-gradient(top, #585858 0%, #111 100%); /* IE10+ */
|
||||
background: -o-linear-gradient(top, #585858 0%, #111 100%); /* Opera 11.10+ */
|
||||
background: linear-gradient(to bottom, #585858 0%, #111 100%); /* W3C */
|
||||
}
|
||||
.dataTables_wrapper .dataTables_paginate .paginate_button:active {
|
||||
outline: none;
|
||||
background-color: #2b2b2b;
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c)); /* Chrome,Safari4+ */
|
||||
background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* Chrome10+,Safari5.1+ */
|
||||
background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* FF3.6+ */
|
||||
background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* IE10+ */
|
||||
background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* Opera 11.10+ */
|
||||
background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%); /* W3C */
|
||||
box-shadow: inset 0 0 3px #111;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_paginate .ellipsis {
|
||||
padding: 0 1em;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_length,
|
||||
.dataTables_wrapper .dataTables_filter,
|
||||
.dataTables_wrapper .dataTables_info,
|
||||
.dataTables_wrapper .dataTables_processing,
|
||||
.dataTables_wrapper .dataTables_paginate {
|
||||
color: inherit;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_scroll {
|
||||
clear: both;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody {
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td {
|
||||
vertical-align: middle;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th > div.dataTables_sizing,
|
||||
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th > div.dataTables_sizing,
|
||||
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td > div.dataTables_sizing {
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
margin: 0 !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
.dataTables_wrapper.no-footer .dataTables_scrollBody {
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,
|
||||
.dataTables_wrapper.no-footer div.dataTables_scrollBody > table {
|
||||
border-bottom: none;
|
||||
}
|
||||
.dataTables_wrapper:after {
|
||||
visibility: hidden;
|
||||
display: block;
|
||||
content: "";
|
||||
clear: both;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
.dataTables_wrapper .dataTables_info,
|
||||
.dataTables_wrapper .dataTables_paginate {
|
||||
float: none;
|
||||
text-align: center;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_paginate {
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 640px) {
|
||||
.dataTables_wrapper .dataTables_length,
|
||||
.dataTables_wrapper .dataTables_filter {
|
||||
float: none;
|
||||
text-align: center;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_filter {
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
}
|
||||
table.dataTable thead th div.DataTables_sort_wrapper {
|
||||
position: relative;
|
||||
}
|
||||
table.dataTable thead th div.DataTables_sort_wrapper span {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
margin-top: -8px;
|
||||
right: -18px;
|
||||
}
|
||||
table.dataTable thead th.ui-state-default,
|
||||
table.dataTable tfoot th.ui-state-default {
|
||||
border-left-width: 0;
|
||||
}
|
||||
table.dataTable thead th.ui-state-default:first-child,
|
||||
table.dataTable tfoot th.ui-state-default:first-child {
|
||||
border-left-width: 1px;
|
||||
}
|
||||
|
||||
/*
|
||||
* Control feature layout
|
||||
*/
|
||||
.dataTables_wrapper .dataTables_paginate .fg-button {
|
||||
box-sizing: border-box;
|
||||
display: inline-block;
|
||||
min-width: 1.5em;
|
||||
padding: 0.5em;
|
||||
margin-left: 2px;
|
||||
text-align: center;
|
||||
text-decoration: none !important;
|
||||
cursor: pointer;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_paginate .fg-button:active {
|
||||
outline: none;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_paginate .fg-button:first-child {
|
||||
border-top-left-radius: 3px;
|
||||
border-bottom-left-radius: 3px;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_paginate .fg-button:last-child {
|
||||
border-top-right-radius: 3px;
|
||||
border-bottom-right-radius: 3px;
|
||||
}
|
||||
.dataTables_wrapper .ui-widget-header {
|
||||
font-weight: normal;
|
||||
}
|
||||
.dataTables_wrapper .ui-toolbar {
|
||||
padding: 8px;
|
||||
}
|
||||
.dataTables_wrapper.no-footer .dataTables_scrollBody {
|
||||
border-bottom: none;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_length,
|
||||
.dataTables_wrapper .dataTables_filter,
|
||||
.dataTables_wrapper .dataTables_info,
|
||||
.dataTables_wrapper .dataTables_processing,
|
||||
.dataTables_wrapper .dataTables_paginate {
|
||||
color: inherit;
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,348 @@
|
||||
@charset "UTF-8";
|
||||
:root {
|
||||
--dt-row-selected: 224, 224, 224;
|
||||
--dt-row-selected-text: 0, 0, 0;
|
||||
--dt-row-selected-link: 9, 10, 11;
|
||||
}
|
||||
|
||||
table.dataTable td.dt-control {
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
table.dataTable td.dt-control:before {
|
||||
height: 1em;
|
||||
width: 1em;
|
||||
margin-top: -9px;
|
||||
display: inline-block;
|
||||
color: white;
|
||||
border: 0.15em solid white;
|
||||
border-radius: 1em;
|
||||
box-shadow: 0 0 0.2em #444;
|
||||
box-sizing: content-box;
|
||||
text-align: center;
|
||||
text-indent: 0 !important;
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
line-height: 1em;
|
||||
content: "+";
|
||||
background-color: #31b131;
|
||||
}
|
||||
table.dataTable tr.dt-hasChild td.dt-control:before {
|
||||
content: "-";
|
||||
background-color: #d33333;
|
||||
}
|
||||
|
||||
table.dataTable thead > tr > th.sorting, table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting_asc_disabled, table.dataTable thead > tr > th.sorting_desc_disabled,
|
||||
table.dataTable thead > tr > td.sorting,
|
||||
table.dataTable thead > tr > td.sorting_asc,
|
||||
table.dataTable thead > tr > td.sorting_desc,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled {
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
padding-right: 26px;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:before, table.dataTable thead > tr > th.sorting:after, table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_asc:after, table.dataTable thead > tr > th.sorting_desc:before, table.dataTable thead > tr > th.sorting_desc:after, table.dataTable thead > tr > th.sorting_asc_disabled:before, table.dataTable thead > tr > th.sorting_asc_disabled:after, table.dataTable thead > tr > th.sorting_desc_disabled:before, table.dataTable thead > tr > th.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting:before,
|
||||
table.dataTable thead > tr > td.sorting:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_asc:after,
|
||||
table.dataTable thead > tr > td.sorting_desc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after {
|
||||
position: absolute;
|
||||
display: block;
|
||||
opacity: 0.125;
|
||||
right: 10px;
|
||||
line-height: 9px;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:before, table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_desc:before, table.dataTable thead > tr > th.sorting_asc_disabled:before, table.dataTable thead > tr > th.sorting_desc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting:before,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:before,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:before {
|
||||
bottom: 50%;
|
||||
content: "▲";
|
||||
content: "▲"/"";
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:after, table.dataTable thead > tr > th.sorting_asc:after, table.dataTable thead > tr > th.sorting_desc:after, table.dataTable thead > tr > th.sorting_asc_disabled:after, table.dataTable thead > tr > th.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:after,
|
||||
table.dataTable thead > tr > td.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after {
|
||||
top: 50%;
|
||||
content: "▼";
|
||||
content: "▼"/"";
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:after {
|
||||
opacity: 0.6;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting_desc_disabled:after, table.dataTable thead > tr > th.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before {
|
||||
display: none;
|
||||
}
|
||||
table.dataTable thead > tr > th:active,
|
||||
table.dataTable thead > tr > td:active {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > th:before, div.dataTables_scrollBody > table.dataTable > thead > tr > th:after,
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > td:before,
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > td:after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.dataTables_processing {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 200px;
|
||||
margin-left: -100px;
|
||||
margin-top: -26px;
|
||||
text-align: center;
|
||||
padding: 2px;
|
||||
}
|
||||
div.dataTables_processing > div:last-child {
|
||||
position: relative;
|
||||
width: 80px;
|
||||
height: 15px;
|
||||
margin: 1em auto;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 13px;
|
||||
height: 13px;
|
||||
border-radius: 50%;
|
||||
background: rgb(224, 224, 224);
|
||||
background: rgb(var(--dt-row-selected));
|
||||
animation-timing-function: cubic-bezier(0, 1, 1, 0);
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(1) {
|
||||
left: 8px;
|
||||
animation: datatables-loader-1 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(2) {
|
||||
left: 8px;
|
||||
animation: datatables-loader-2 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(3) {
|
||||
left: 32px;
|
||||
animation: datatables-loader-2 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(4) {
|
||||
left: 56px;
|
||||
animation: datatables-loader-3 0.6s infinite;
|
||||
}
|
||||
|
||||
@keyframes datatables-loader-1 {
|
||||
0% {
|
||||
transform: scale(0);
|
||||
}
|
||||
100% {
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
@keyframes datatables-loader-3 {
|
||||
0% {
|
||||
transform: scale(1);
|
||||
}
|
||||
100% {
|
||||
transform: scale(0);
|
||||
}
|
||||
}
|
||||
@keyframes datatables-loader-2 {
|
||||
0% {
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
100% {
|
||||
transform: translate(24px, 0);
|
||||
}
|
||||
}
|
||||
table.dataTable.nowrap th, table.dataTable.nowrap td {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable th.dt-left,
|
||||
table.dataTable td.dt-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable th.dt-center,
|
||||
table.dataTable td.dt-center,
|
||||
table.dataTable td.dataTables_empty {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable th.dt-right,
|
||||
table.dataTable td.dt-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable th.dt-justify,
|
||||
table.dataTable td.dt-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable th.dt-nowrap,
|
||||
table.dataTable td.dt-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable thead th,
|
||||
table.dataTable thead td,
|
||||
table.dataTable tfoot th,
|
||||
table.dataTable tfoot td {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable thead th.dt-head-left,
|
||||
table.dataTable thead td.dt-head-left,
|
||||
table.dataTable tfoot th.dt-head-left,
|
||||
table.dataTable tfoot td.dt-head-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable thead th.dt-head-center,
|
||||
table.dataTable thead td.dt-head-center,
|
||||
table.dataTable tfoot th.dt-head-center,
|
||||
table.dataTable tfoot td.dt-head-center {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable thead th.dt-head-right,
|
||||
table.dataTable thead td.dt-head-right,
|
||||
table.dataTable tfoot th.dt-head-right,
|
||||
table.dataTable tfoot td.dt-head-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable thead th.dt-head-justify,
|
||||
table.dataTable thead td.dt-head-justify,
|
||||
table.dataTable tfoot th.dt-head-justify,
|
||||
table.dataTable tfoot td.dt-head-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable thead th.dt-head-nowrap,
|
||||
table.dataTable thead td.dt-head-nowrap,
|
||||
table.dataTable tfoot th.dt-head-nowrap,
|
||||
table.dataTable tfoot td.dt-head-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-left,
|
||||
table.dataTable tbody td.dt-body-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-center,
|
||||
table.dataTable tbody td.dt-body-center {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-right,
|
||||
table.dataTable tbody td.dt-body-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-justify,
|
||||
table.dataTable tbody td.dt-body-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-nowrap,
|
||||
table.dataTable tbody td.dt-body-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/*
|
||||
* Styling for DataTables with Semantic UI
|
||||
*/
|
||||
table.dataTable.table {
|
||||
margin: 0;
|
||||
}
|
||||
table.dataTable.table td,
|
||||
table.dataTable.table th {
|
||||
-webkit-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
table.dataTable.table td.dataTables_empty,
|
||||
table.dataTable.table th.dataTables_empty {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable.table.nowrap th,
|
||||
table.dataTable.table.nowrap td {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable.table.ui.striped > tbody > tr:nth-child(2n) {
|
||||
background-color: transparent;
|
||||
}
|
||||
table.dataTable.table > tbody > tr {
|
||||
background-color: transparent;
|
||||
}
|
||||
table.dataTable.table > tbody > tr.selected > * {
|
||||
box-shadow: inset 0 0 0 9999px rgb(224, 224, 224);
|
||||
box-shadow: inset 0 0 0 9999px rgb(var(--dt-row-selected));
|
||||
color: rgb(0, 0, 0);
|
||||
color: rgb(var(--dt-row-selected-text));
|
||||
}
|
||||
table.dataTable.table > tbody > tr.selected a {
|
||||
color: rgb(9, 10, 11);
|
||||
color: rgb(var(--dt-row-selected-link));
|
||||
}
|
||||
table.dataTable.table.striped > tbody > tr.odd > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.02);
|
||||
}
|
||||
table.dataTable.table.striped > tbody > tr.odd.selected > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(224, 224, 224, 0.92);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.92);
|
||||
}
|
||||
table.dataTable.table.hover > tbody > tr:hover > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.075);
|
||||
}
|
||||
table.dataTable.table.hover > tbody > tr.selected:hover > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(224, 224, 224, 0.975);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.975);
|
||||
}
|
||||
|
||||
div.dataTables_wrapper div.dataTables_length select {
|
||||
vertical-align: middle;
|
||||
min-height: 2.7142em;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_length .ui.selection.dropdown {
|
||||
min-width: 0;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_filter span.input {
|
||||
margin-left: 0.5em;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_info {
|
||||
padding-top: 13px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_processing {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 200px;
|
||||
margin-left: -100px;
|
||||
text-align: center;
|
||||
}
|
||||
div.dataTables_wrapper div.row.dt-table {
|
||||
padding: 0;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_scrollHead table.dataTable {
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom: none;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_scrollBody thead .sorting:after,
|
||||
div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_asc:after,
|
||||
div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_desc:after {
|
||||
display: none;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_scrollBody table.dataTable {
|
||||
border-radius: 0;
|
||||
border-top: none;
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_scrollBody table.dataTable.no-footer {
|
||||
border-bottom-width: 1px;
|
||||
}
|
||||
div.dataTables_wrapper div.dataTables_scrollFoot table.dataTable {
|
||||
border-top-right-radius: 0;
|
||||
border-top-left-radius: 0;
|
||||
border-top: none;
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,584 @@
|
||||
@charset "UTF-8";
|
||||
:root {
|
||||
--dt-row-selected: 13, 110, 253;
|
||||
--dt-row-selected-text: 255, 255, 255;
|
||||
--dt-row-selected-link: 9, 10, 11;
|
||||
}
|
||||
|
||||
table.dataTable td.dt-control {
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
table.dataTable td.dt-control:before {
|
||||
height: 1em;
|
||||
width: 1em;
|
||||
margin-top: -9px;
|
||||
display: inline-block;
|
||||
color: white;
|
||||
border: 0.15em solid white;
|
||||
border-radius: 1em;
|
||||
box-shadow: 0 0 0.2em #444;
|
||||
box-sizing: content-box;
|
||||
text-align: center;
|
||||
text-indent: 0 !important;
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
line-height: 1em;
|
||||
content: "+";
|
||||
background-color: #31b131;
|
||||
}
|
||||
table.dataTable tr.dt-hasChild td.dt-control:before {
|
||||
content: "-";
|
||||
background-color: #d33333;
|
||||
}
|
||||
|
||||
table.dataTable thead > tr > th.sorting, table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting_asc_disabled, table.dataTable thead > tr > th.sorting_desc_disabled,
|
||||
table.dataTable thead > tr > td.sorting,
|
||||
table.dataTable thead > tr > td.sorting_asc,
|
||||
table.dataTable thead > tr > td.sorting_desc,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled {
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
padding-right: 26px;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:before, table.dataTable thead > tr > th.sorting:after, table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_asc:after, table.dataTable thead > tr > th.sorting_desc:before, table.dataTable thead > tr > th.sorting_desc:after, table.dataTable thead > tr > th.sorting_asc_disabled:before, table.dataTable thead > tr > th.sorting_asc_disabled:after, table.dataTable thead > tr > th.sorting_desc_disabled:before, table.dataTable thead > tr > th.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting:before,
|
||||
table.dataTable thead > tr > td.sorting:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_asc:after,
|
||||
table.dataTable thead > tr > td.sorting_desc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after {
|
||||
position: absolute;
|
||||
display: block;
|
||||
opacity: 0.125;
|
||||
right: 10px;
|
||||
line-height: 9px;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:before, table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_desc:before, table.dataTable thead > tr > th.sorting_asc_disabled:before, table.dataTable thead > tr > th.sorting_desc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting:before,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:before,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:before {
|
||||
bottom: 50%;
|
||||
content: "▲";
|
||||
content: "▲"/"";
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting:after, table.dataTable thead > tr > th.sorting_asc:after, table.dataTable thead > tr > th.sorting_desc:after, table.dataTable thead > tr > th.sorting_asc_disabled:after, table.dataTable thead > tr > th.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:after,
|
||||
table.dataTable thead > tr > td.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after {
|
||||
top: 50%;
|
||||
content: "▼";
|
||||
content: "▼"/"";
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting_asc:before, table.dataTable thead > tr > th.sorting_desc:after,
|
||||
table.dataTable thead > tr > td.sorting_asc:before,
|
||||
table.dataTable thead > tr > td.sorting_desc:after {
|
||||
opacity: 0.6;
|
||||
}
|
||||
table.dataTable thead > tr > th.sorting_desc_disabled:after, table.dataTable thead > tr > th.sorting_asc_disabled:before,
|
||||
table.dataTable thead > tr > td.sorting_desc_disabled:after,
|
||||
table.dataTable thead > tr > td.sorting_asc_disabled:before {
|
||||
display: none;
|
||||
}
|
||||
table.dataTable thead > tr > th:active,
|
||||
table.dataTable thead > tr > td:active {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > th:before, div.dataTables_scrollBody > table.dataTable > thead > tr > th:after,
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > td:before,
|
||||
div.dataTables_scrollBody > table.dataTable > thead > tr > td:after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.dataTables_processing {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 200px;
|
||||
margin-left: -100px;
|
||||
margin-top: -26px;
|
||||
text-align: center;
|
||||
padding: 2px;
|
||||
}
|
||||
div.dataTables_processing > div:last-child {
|
||||
position: relative;
|
||||
width: 80px;
|
||||
height: 15px;
|
||||
margin: 1em auto;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 13px;
|
||||
height: 13px;
|
||||
border-radius: 50%;
|
||||
background: rgb(13, 110, 253);
|
||||
background: rgb(var(--dt-row-selected));
|
||||
animation-timing-function: cubic-bezier(0, 1, 1, 0);
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(1) {
|
||||
left: 8px;
|
||||
animation: datatables-loader-1 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(2) {
|
||||
left: 8px;
|
||||
animation: datatables-loader-2 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(3) {
|
||||
left: 32px;
|
||||
animation: datatables-loader-2 0.6s infinite;
|
||||
}
|
||||
div.dataTables_processing > div:last-child > div:nth-child(4) {
|
||||
left: 56px;
|
||||
animation: datatables-loader-3 0.6s infinite;
|
||||
}
|
||||
|
||||
@keyframes datatables-loader-1 {
|
||||
0% {
|
||||
transform: scale(0);
|
||||
}
|
||||
100% {
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
@keyframes datatables-loader-3 {
|
||||
0% {
|
||||
transform: scale(1);
|
||||
}
|
||||
100% {
|
||||
transform: scale(0);
|
||||
}
|
||||
}
|
||||
@keyframes datatables-loader-2 {
|
||||
0% {
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
100% {
|
||||
transform: translate(24px, 0);
|
||||
}
|
||||
}
|
||||
table.dataTable.nowrap th, table.dataTable.nowrap td {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable th.dt-left,
|
||||
table.dataTable td.dt-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable th.dt-center,
|
||||
table.dataTable td.dt-center,
|
||||
table.dataTable td.dataTables_empty {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable th.dt-right,
|
||||
table.dataTable td.dt-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable th.dt-justify,
|
||||
table.dataTable td.dt-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable th.dt-nowrap,
|
||||
table.dataTable td.dt-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable thead th,
|
||||
table.dataTable thead td,
|
||||
table.dataTable tfoot th,
|
||||
table.dataTable tfoot td {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable thead th.dt-head-left,
|
||||
table.dataTable thead td.dt-head-left,
|
||||
table.dataTable tfoot th.dt-head-left,
|
||||
table.dataTable tfoot td.dt-head-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable thead th.dt-head-center,
|
||||
table.dataTable thead td.dt-head-center,
|
||||
table.dataTable tfoot th.dt-head-center,
|
||||
table.dataTable tfoot td.dt-head-center {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable thead th.dt-head-right,
|
||||
table.dataTable thead td.dt-head-right,
|
||||
table.dataTable tfoot th.dt-head-right,
|
||||
table.dataTable tfoot td.dt-head-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable thead th.dt-head-justify,
|
||||
table.dataTable thead td.dt-head-justify,
|
||||
table.dataTable tfoot th.dt-head-justify,
|
||||
table.dataTable tfoot td.dt-head-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable thead th.dt-head-nowrap,
|
||||
table.dataTable thead td.dt-head-nowrap,
|
||||
table.dataTable tfoot th.dt-head-nowrap,
|
||||
table.dataTable tfoot td.dt-head-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-left,
|
||||
table.dataTable tbody td.dt-body-left {
|
||||
text-align: left;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-center,
|
||||
table.dataTable tbody td.dt-body-center {
|
||||
text-align: center;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-right,
|
||||
table.dataTable tbody td.dt-body-right {
|
||||
text-align: right;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-justify,
|
||||
table.dataTable tbody td.dt-body-justify {
|
||||
text-align: justify;
|
||||
}
|
||||
table.dataTable tbody th.dt-body-nowrap,
|
||||
table.dataTable tbody td.dt-body-nowrap {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/*
|
||||
* Table styles
|
||||
*/
|
||||
table.dataTable {
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
clear: both;
|
||||
border-collapse: separate;
|
||||
border-spacing: 0;
|
||||
/*
|
||||
* Header and footer styles
|
||||
*/
|
||||
/*
|
||||
* Body styles
|
||||
*/
|
||||
}
|
||||
table.dataTable thead th,
|
||||
table.dataTable tfoot th {
|
||||
font-weight: bold;
|
||||
}
|
||||
table.dataTable thead th,
|
||||
table.dataTable thead td {
|
||||
padding: 10px;
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
table.dataTable thead th:active,
|
||||
table.dataTable thead td:active {
|
||||
outline: none;
|
||||
}
|
||||
table.dataTable tfoot th,
|
||||
table.dataTable tfoot td {
|
||||
padding: 10px 10px 6px 10px;
|
||||
border-top: 1px solid rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
table.dataTable tbody tr {
|
||||
background-color: transparent;
|
||||
}
|
||||
table.dataTable tbody tr.selected > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.9);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.9);
|
||||
color: rgb(255, 255, 255);
|
||||
color: rgb(var(--dt-row-selected-text));
|
||||
}
|
||||
table.dataTable tbody tr.selected a {
|
||||
color: rgb(9, 10, 11);
|
||||
color: rgb(var(--dt-row-selected-link));
|
||||
}
|
||||
table.dataTable tbody th,
|
||||
table.dataTable tbody td {
|
||||
padding: 8px 10px;
|
||||
}
|
||||
table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td {
|
||||
border-top: 1px solid rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
table.dataTable.row-border tbody tr:first-child th,
|
||||
table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th,
|
||||
table.dataTable.display tbody tr:first-child td {
|
||||
border-top: none;
|
||||
}
|
||||
table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {
|
||||
border-top: 1px solid rgba(0, 0, 0, 0.15);
|
||||
border-right: 1px solid rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
table.dataTable.cell-border tbody tr th:first-child,
|
||||
table.dataTable.cell-border tbody tr td:first-child {
|
||||
border-left: 1px solid rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
table.dataTable.cell-border tbody tr:first-child th,
|
||||
table.dataTable.cell-border tbody tr:first-child td {
|
||||
border-top: none;
|
||||
}
|
||||
table.dataTable.stripe > tbody > tr.odd > *, table.dataTable.display > tbody > tr.odd > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.023);
|
||||
}
|
||||
table.dataTable.stripe > tbody > tr.odd.selected > *, table.dataTable.display > tbody > tr.odd.selected > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.923);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 0.923));
|
||||
}
|
||||
table.dataTable.hover > tbody > tr:hover > *, table.dataTable.display > tbody > tr:hover > * {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.035);
|
||||
}
|
||||
table.dataTable.hover > tbody > tr.selected:hover > *, table.dataTable.display > tbody > tr.selected:hover > * {
|
||||
box-shadow: inset 0 0 0 9999px #0d6efd !important;
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 1)) !important;
|
||||
}
|
||||
table.dataTable.order-column > tbody tr > .sorting_1,
|
||||
table.dataTable.order-column > tbody tr > .sorting_2,
|
||||
table.dataTable.order-column > tbody tr > .sorting_3, table.dataTable.display > tbody tr > .sorting_1,
|
||||
table.dataTable.display > tbody tr > .sorting_2,
|
||||
table.dataTable.display > tbody tr > .sorting_3 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.019);
|
||||
}
|
||||
table.dataTable.order-column > tbody tr.selected > .sorting_1,
|
||||
table.dataTable.order-column > tbody tr.selected > .sorting_2,
|
||||
table.dataTable.order-column > tbody tr.selected > .sorting_3, table.dataTable.display > tbody tr.selected > .sorting_1,
|
||||
table.dataTable.display > tbody tr.selected > .sorting_2,
|
||||
table.dataTable.display > tbody tr.selected > .sorting_3 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.919);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 0.919));
|
||||
}
|
||||
table.dataTable.display > tbody > tr.odd > .sorting_1, table.dataTable.order-column.stripe > tbody > tr.odd > .sorting_1 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.054);
|
||||
}
|
||||
table.dataTable.display > tbody > tr.odd > .sorting_2, table.dataTable.order-column.stripe > tbody > tr.odd > .sorting_2 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.047);
|
||||
}
|
||||
table.dataTable.display > tbody > tr.odd > .sorting_3, table.dataTable.order-column.stripe > tbody > tr.odd > .sorting_3 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.039);
|
||||
}
|
||||
table.dataTable.display > tbody > tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe > tbody > tr.odd.selected > .sorting_1 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.954);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 0.954));
|
||||
}
|
||||
table.dataTable.display > tbody > tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe > tbody > tr.odd.selected > .sorting_2 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.947);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 0.947));
|
||||
}
|
||||
table.dataTable.display > tbody > tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe > tbody > tr.odd.selected > .sorting_3 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.939);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 0.939));
|
||||
}
|
||||
table.dataTable.display > tbody > tr.even > .sorting_1, table.dataTable.order-column.stripe > tbody > tr.even > .sorting_1 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.019);
|
||||
}
|
||||
table.dataTable.display > tbody > tr.even > .sorting_2, table.dataTable.order-column.stripe > tbody > tr.even > .sorting_2 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.011);
|
||||
}
|
||||
table.dataTable.display > tbody > tr.even > .sorting_3, table.dataTable.order-column.stripe > tbody > tr.even > .sorting_3 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.003);
|
||||
}
|
||||
table.dataTable.display > tbody > tr.even.selected > .sorting_1, table.dataTable.order-column.stripe > tbody > tr.even.selected > .sorting_1 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.919);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 0.919));
|
||||
}
|
||||
table.dataTable.display > tbody > tr.even.selected > .sorting_2, table.dataTable.order-column.stripe > tbody > tr.even.selected > .sorting_2 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.911);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 0.911));
|
||||
}
|
||||
table.dataTable.display > tbody > tr.even.selected > .sorting_3, table.dataTable.order-column.stripe > tbody > tr.even.selected > .sorting_3 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.903);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 0.903));
|
||||
}
|
||||
table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.082);
|
||||
}
|
||||
table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.074);
|
||||
}
|
||||
table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.062);
|
||||
}
|
||||
table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.982);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 0.982));
|
||||
}
|
||||
table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.974);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 0.974));
|
||||
}
|
||||
table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 {
|
||||
box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.962);
|
||||
box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected, 0.962));
|
||||
}
|
||||
table.dataTable.no-footer {
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
table.dataTable.compact thead th,
|
||||
table.dataTable.compact thead td,
|
||||
table.dataTable.compact tfoot th,
|
||||
table.dataTable.compact tfoot td,
|
||||
table.dataTable.compact tbody th,
|
||||
table.dataTable.compact tbody td {
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
table.dataTable th,
|
||||
table.dataTable td {
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
/*
|
||||
* Control feature layout
|
||||
*/
|
||||
.dataTables_wrapper {
|
||||
position: relative;
|
||||
clear: both;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_length {
|
||||
float: left;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_length select {
|
||||
border: 1px solid #aaa;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
background-color: transparent;
|
||||
padding: 4px;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_filter {
|
||||
float: right;
|
||||
text-align: right;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_filter input {
|
||||
border: 1px solid #aaa;
|
||||
border-radius: 3px;
|
||||
padding: 5px;
|
||||
background-color: transparent;
|
||||
margin-left: 3px;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_info {
|
||||
clear: both;
|
||||
float: left;
|
||||
padding-top: 0.755em;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_paginate {
|
||||
float: right;
|
||||
text-align: right;
|
||||
padding-top: 0.25em;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_paginate .paginate_button {
|
||||
box-sizing: border-box;
|
||||
display: inline-block;
|
||||
min-width: 1.5em;
|
||||
padding: 0.5em 1em;
|
||||
margin-left: 2px;
|
||||
text-align: center;
|
||||
text-decoration: none !important;
|
||||
cursor: pointer;
|
||||
color: inherit !important;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 2px;
|
||||
background: transparent;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
|
||||
color: inherit !important;
|
||||
border: 1px solid rgba(0, 0, 0, 0.3);
|
||||
background-color: rgba(230, 230, 230, 0.1);
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(230, 230, 230, 0.1)), color-stop(100%, rgba(0, 0, 0, 0.1))); /* Chrome,Safari4+ */
|
||||
background: -webkit-linear-gradient(top, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%); /* Chrome10+,Safari5.1+ */
|
||||
background: -moz-linear-gradient(top, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%); /* FF3.6+ */
|
||||
background: -ms-linear-gradient(top, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%); /* IE10+ */
|
||||
background: -o-linear-gradient(top, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%); /* Opera 11.10+ */
|
||||
background: linear-gradient(to bottom, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%); /* W3C */
|
||||
}
|
||||
.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active {
|
||||
cursor: default;
|
||||
color: #666 !important;
|
||||
border: 1px solid transparent;
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_paginate .paginate_button:hover {
|
||||
color: white !important;
|
||||
border: 1px solid #111;
|
||||
background-color: #585858;
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111)); /* Chrome,Safari4+ */
|
||||
background: -webkit-linear-gradient(top, #585858 0%, #111 100%); /* Chrome10+,Safari5.1+ */
|
||||
background: -moz-linear-gradient(top, #585858 0%, #111 100%); /* FF3.6+ */
|
||||
background: -ms-linear-gradient(top, #585858 0%, #111 100%); /* IE10+ */
|
||||
background: -o-linear-gradient(top, #585858 0%, #111 100%); /* Opera 11.10+ */
|
||||
background: linear-gradient(to bottom, #585858 0%, #111 100%); /* W3C */
|
||||
}
|
||||
.dataTables_wrapper .dataTables_paginate .paginate_button:active {
|
||||
outline: none;
|
||||
background-color: #2b2b2b;
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c)); /* Chrome,Safari4+ */
|
||||
background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* Chrome10+,Safari5.1+ */
|
||||
background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* FF3.6+ */
|
||||
background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* IE10+ */
|
||||
background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); /* Opera 11.10+ */
|
||||
background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%); /* W3C */
|
||||
box-shadow: inset 0 0 3px #111;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_paginate .ellipsis {
|
||||
padding: 0 1em;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_length,
|
||||
.dataTables_wrapper .dataTables_filter,
|
||||
.dataTables_wrapper .dataTables_info,
|
||||
.dataTables_wrapper .dataTables_processing,
|
||||
.dataTables_wrapper .dataTables_paginate {
|
||||
color: inherit;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_scroll {
|
||||
clear: both;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody {
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td {
|
||||
vertical-align: middle;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th > div.dataTables_sizing,
|
||||
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th > div.dataTables_sizing,
|
||||
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td > div.dataTables_sizing {
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
margin: 0 !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
.dataTables_wrapper.no-footer .dataTables_scrollBody {
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,
|
||||
.dataTables_wrapper.no-footer div.dataTables_scrollBody > table {
|
||||
border-bottom: none;
|
||||
}
|
||||
.dataTables_wrapper:after {
|
||||
visibility: hidden;
|
||||
display: block;
|
||||
content: "";
|
||||
clear: both;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
.dataTables_wrapper .dataTables_info,
|
||||
.dataTables_wrapper .dataTables_paginate {
|
||||
float: none;
|
||||
text-align: center;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_paginate {
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 640px) {
|
||||
.dataTables_wrapper .dataTables_length,
|
||||
.dataTables_wrapper .dataTables_filter {
|
||||
float: none;
|
||||
text-align: center;
|
||||
}
|
||||
.dataTables_wrapper .dataTables_filter {
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
Binary file not shown.
|
After Width: | Height: | Size: 160 B |
Binary file not shown.
|
After Width: | Height: | Size: 148 B |
Binary file not shown.
|
After Width: | Height: | Size: 201 B |
Binary file not shown.
|
After Width: | Height: | Size: 158 B |
Binary file not shown.
|
After Width: | Height: | Size: 146 B |
@@ -0,0 +1,200 @@
|
||||
/*! DataTables Bootstrap 3 integration
|
||||
* ©2011-2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
var jq = require('jquery');
|
||||
var cjsRequires = function (root, $) {
|
||||
if ( ! $.fn.dataTable ) {
|
||||
require('datatables.net')(root, $);
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof window !== 'undefined') {
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
// CommonJS environments without a window global must pass a
|
||||
// root. This will give an error otherwise
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ ) {
|
||||
$ = jq( root );
|
||||
}
|
||||
|
||||
cjsRequires( root, $ );
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
cjsRequires( window, jq );
|
||||
module.exports = factory( jq, window, window.document );
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* DataTables integration for Bootstrap 3. This requires Bootstrap 3 and
|
||||
* DataTables 1.10 or newer.
|
||||
*
|
||||
* This file sets the defaults and adds options to DataTables to style its
|
||||
* controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap
|
||||
* for further information.
|
||||
*/
|
||||
|
||||
/* Set the defaults for DataTables initialisation */
|
||||
$.extend( true, DataTable.defaults, {
|
||||
dom:
|
||||
"<'row'<'col-sm-6'l><'col-sm-6'f>>" +
|
||||
"<'row'<'col-sm-12'tr>>" +
|
||||
"<'row'<'col-sm-5'i><'col-sm-7'p>>",
|
||||
renderer: 'bootstrap'
|
||||
} );
|
||||
|
||||
|
||||
/* Default class modification */
|
||||
$.extend( DataTable.ext.classes, {
|
||||
sWrapper: "dataTables_wrapper form-inline dt-bootstrap",
|
||||
sFilterInput: "form-control input-sm",
|
||||
sLengthSelect: "form-control input-sm",
|
||||
sProcessing: "dataTables_processing panel panel-default"
|
||||
} );
|
||||
|
||||
|
||||
/* Bootstrap paging button renderer */
|
||||
DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) {
|
||||
var api = new DataTable.Api( settings );
|
||||
var classes = settings.oClasses;
|
||||
var lang = settings.oLanguage.oPaginate;
|
||||
var aria = settings.oLanguage.oAria.paginate || {};
|
||||
var btnDisplay, btnClass;
|
||||
|
||||
var attach = function( container, buttons ) {
|
||||
var i, ien, node, button;
|
||||
var clickHandler = function ( e ) {
|
||||
e.preventDefault();
|
||||
if ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) {
|
||||
api.page( e.data.action ).draw( 'page' );
|
||||
}
|
||||
};
|
||||
|
||||
for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
|
||||
button = buttons[i];
|
||||
|
||||
if ( Array.isArray( button ) ) {
|
||||
attach( container, button );
|
||||
}
|
||||
else {
|
||||
btnDisplay = '';
|
||||
btnClass = '';
|
||||
|
||||
switch ( button ) {
|
||||
case 'ellipsis':
|
||||
btnDisplay = '…';
|
||||
btnClass = 'disabled';
|
||||
break;
|
||||
|
||||
case 'first':
|
||||
btnDisplay = lang.sFirst;
|
||||
btnClass = button + (page > 0 ?
|
||||
'' : ' disabled');
|
||||
break;
|
||||
|
||||
case 'previous':
|
||||
btnDisplay = lang.sPrevious;
|
||||
btnClass = button + (page > 0 ?
|
||||
'' : ' disabled');
|
||||
break;
|
||||
|
||||
case 'next':
|
||||
btnDisplay = lang.sNext;
|
||||
btnClass = button + (page < pages-1 ?
|
||||
'' : ' disabled');
|
||||
break;
|
||||
|
||||
case 'last':
|
||||
btnDisplay = lang.sLast;
|
||||
btnClass = button + (page < pages-1 ?
|
||||
'' : ' disabled');
|
||||
break;
|
||||
|
||||
default:
|
||||
btnDisplay = button + 1;
|
||||
btnClass = page === button ?
|
||||
'active' : '';
|
||||
break;
|
||||
}
|
||||
|
||||
if ( btnDisplay ) {
|
||||
var disabled = btnClass.indexOf('disabled') !== -1;
|
||||
|
||||
node = $('<li>', {
|
||||
'class': classes.sPageButton+' '+btnClass,
|
||||
'id': idx === 0 && typeof button === 'string' ?
|
||||
settings.sTableId +'_'+ button :
|
||||
null
|
||||
} )
|
||||
.append( $('<a>', {
|
||||
'href': disabled ? null : '#',
|
||||
'aria-controls': settings.sTableId,
|
||||
'aria-disabled': disabled ? 'true' : null,
|
||||
'aria-label': aria[ button ],
|
||||
'aria-role': 'link',
|
||||
'aria-current': btnClass === 'active' ? 'page' : null,
|
||||
'data-dt-idx': button,
|
||||
'tabindex': settings.iTabIndex
|
||||
} )
|
||||
.html( btnDisplay )
|
||||
)
|
||||
.appendTo( container );
|
||||
|
||||
settings.oApi._fnBindAction(
|
||||
node, {action: button}, clickHandler
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// IE9 throws an 'unknown error' if document.activeElement is used
|
||||
// inside an iframe or frame.
|
||||
var activeEl;
|
||||
|
||||
try {
|
||||
// Because this approach is destroying and recreating the paging
|
||||
// elements, focus is lost on the select button which is bad for
|
||||
// accessibility. So we want to restore focus once the draw has
|
||||
// completed
|
||||
activeEl = $(host).find(document.activeElement).data('dt-idx');
|
||||
}
|
||||
catch (e) {}
|
||||
|
||||
attach(
|
||||
$(host).empty().html('<ul class="pagination"/>').children('ul'),
|
||||
buttons
|
||||
);
|
||||
|
||||
if ( activeEl !== undefined ) {
|
||||
$(host).find( '[data-dt-idx='+activeEl+']' ).trigger('focus');
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
return DataTable;
|
||||
}));
|
||||
@@ -0,0 +1,4 @@
|
||||
/*! DataTables Bootstrap 3 integration
|
||||
* ©2011-2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
!function(t){var n,i;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return t(e,window,document)}):"object"==typeof exports?(n=require("jquery"),i=function(e,a){a.fn.dataTable||require("datatables.net")(e,a)},"undefined"!=typeof window?module.exports=function(e,a){return e=e||window,a=a||n(e),i(e,a),t(a,0,e.document)}:(i(window,n),module.exports=t(n,window,window.document))):t(jQuery,window,document)}(function(x,e,n,i){"use strict";var r=x.fn.dataTable;return x.extend(!0,r.defaults,{dom:"<'row'<'col-sm-6'l><'col-sm-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-5'i><'col-sm-7'p>>",renderer:"bootstrap"}),x.extend(r.ext.classes,{sWrapper:"dataTables_wrapper form-inline dt-bootstrap",sFilterInput:"form-control input-sm",sLengthSelect:"form-control input-sm",sProcessing:"dataTables_processing panel panel-default"}),r.ext.renderer.pageButton.bootstrap=function(s,e,d,a,l,c){function u(e,a){for(var t,n,i=function(e){e.preventDefault(),x(e.currentTarget).hasClass("disabled")||b.page()==e.data.action||b.page(e.data.action).draw("page")},r=0,o=a.length;r<o;r++)if(t=a[r],Array.isArray(t))u(e,t);else{switch(f=p="",t){case"ellipsis":p="…",f="disabled";break;case"first":p=g.sFirst,f=t+(0<l?"":" disabled");break;case"previous":p=g.sPrevious,f=t+(0<l?"":" disabled");break;case"next":p=g.sNext,f=t+(l<c-1?"":" disabled");break;case"last":p=g.sLast,f=t+(l<c-1?"":" disabled");break;default:p=t+1,f=l===t?"active":""}p&&(n=-1!==f.indexOf("disabled"),n=x("<li>",{class:m.sPageButton+" "+f,id:0===d&&"string"==typeof t?s.sTableId+"_"+t:null}).append(x("<a>",{href:n?null:"#","aria-controls":s.sTableId,"aria-disabled":n?"true":null,"aria-label":w[t],"aria-role":"link","aria-current":"active"===f?"page":null,"data-dt-idx":t,tabindex:s.iTabIndex}).html(p)).appendTo(e),s.oApi._fnBindAction(n,{action:t},i))}}var p,f,t,b=new r.Api(s),m=s.oClasses,g=s.oLanguage.oPaginate,w=s.oLanguage.oAria.paginate||{};try{t=x(e).find(n.activeElement).data("dt-idx")}catch(e){}u(x(e).empty().html('<ul class="pagination"/>').children("ul"),a),t!==i&&x(e).find("[data-dt-idx="+t+"]").trigger("focus")},r});
|
||||
@@ -0,0 +1,202 @@
|
||||
/*! DataTables Bootstrap 4 integration
|
||||
* ©2011-2017 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
var jq = require('jquery');
|
||||
var cjsRequires = function (root, $) {
|
||||
if ( ! $.fn.dataTable ) {
|
||||
require('datatables.net')(root, $);
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof window !== 'undefined') {
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
// CommonJS environments without a window global must pass a
|
||||
// root. This will give an error otherwise
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ ) {
|
||||
$ = jq( root );
|
||||
}
|
||||
|
||||
cjsRequires( root, $ );
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
cjsRequires( window, jq );
|
||||
module.exports = factory( jq, window, window.document );
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* DataTables integration for Bootstrap 4. This requires Bootstrap 4 and
|
||||
* DataTables 1.10 or newer.
|
||||
*
|
||||
* This file sets the defaults and adds options to DataTables to style its
|
||||
* controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap
|
||||
* for further information.
|
||||
*/
|
||||
|
||||
/* Set the defaults for DataTables initialisation */
|
||||
$.extend( true, DataTable.defaults, {
|
||||
dom:
|
||||
"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>>" +
|
||||
"<'row'<'col-sm-12'tr>>" +
|
||||
"<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
|
||||
renderer: 'bootstrap'
|
||||
} );
|
||||
|
||||
|
||||
/* Default class modification */
|
||||
$.extend( DataTable.ext.classes, {
|
||||
sWrapper: "dataTables_wrapper dt-bootstrap4",
|
||||
sFilterInput: "form-control form-control-sm",
|
||||
sLengthSelect: "custom-select custom-select-sm form-control form-control-sm",
|
||||
sProcessing: "dataTables_processing card",
|
||||
sPageButton: "paginate_button page-item"
|
||||
} );
|
||||
|
||||
|
||||
/* Bootstrap paging button renderer */
|
||||
DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) {
|
||||
var api = new DataTable.Api( settings );
|
||||
var classes = settings.oClasses;
|
||||
var lang = settings.oLanguage.oPaginate;
|
||||
var aria = settings.oLanguage.oAria.paginate || {};
|
||||
var btnDisplay, btnClass;
|
||||
|
||||
var attach = function( container, buttons ) {
|
||||
var i, ien, node, button;
|
||||
var clickHandler = function ( e ) {
|
||||
e.preventDefault();
|
||||
if ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) {
|
||||
api.page( e.data.action ).draw( 'page' );
|
||||
}
|
||||
};
|
||||
|
||||
for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
|
||||
button = buttons[i];
|
||||
|
||||
if ( Array.isArray( button ) ) {
|
||||
attach( container, button );
|
||||
}
|
||||
else {
|
||||
btnDisplay = '';
|
||||
btnClass = '';
|
||||
|
||||
switch ( button ) {
|
||||
case 'ellipsis':
|
||||
btnDisplay = '…';
|
||||
btnClass = 'disabled';
|
||||
break;
|
||||
|
||||
case 'first':
|
||||
btnDisplay = lang.sFirst;
|
||||
btnClass = button + (page > 0 ?
|
||||
'' : ' disabled');
|
||||
break;
|
||||
|
||||
case 'previous':
|
||||
btnDisplay = lang.sPrevious;
|
||||
btnClass = button + (page > 0 ?
|
||||
'' : ' disabled');
|
||||
break;
|
||||
|
||||
case 'next':
|
||||
btnDisplay = lang.sNext;
|
||||
btnClass = button + (page < pages-1 ?
|
||||
'' : ' disabled');
|
||||
break;
|
||||
|
||||
case 'last':
|
||||
btnDisplay = lang.sLast;
|
||||
btnClass = button + (page < pages-1 ?
|
||||
'' : ' disabled');
|
||||
break;
|
||||
|
||||
default:
|
||||
btnDisplay = button + 1;
|
||||
btnClass = page === button ?
|
||||
'active' : '';
|
||||
break;
|
||||
}
|
||||
|
||||
if ( btnDisplay ) {
|
||||
var disabled = btnClass.indexOf('disabled') !== -1;
|
||||
|
||||
node = $('<li>', {
|
||||
'class': classes.sPageButton+' '+btnClass,
|
||||
'id': idx === 0 && typeof button === 'string' ?
|
||||
settings.sTableId +'_'+ button :
|
||||
null
|
||||
} )
|
||||
.append( $('<a>', {
|
||||
'href': disabled ? null : '#',
|
||||
'aria-controls': settings.sTableId,
|
||||
'aria-disabled': disabled ? 'true' : null,
|
||||
'aria-label': aria[ button ],
|
||||
'aria-role': 'link',
|
||||
'aria-current': btnClass === 'active' ? 'page' : null,
|
||||
'data-dt-idx': button,
|
||||
'tabindex': settings.iTabIndex,
|
||||
'class': 'page-link'
|
||||
} )
|
||||
.html( btnDisplay )
|
||||
)
|
||||
.appendTo( container );
|
||||
|
||||
settings.oApi._fnBindAction(
|
||||
node, {action: button}, clickHandler
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// IE9 throws an 'unknown error' if document.activeElement is used
|
||||
// inside an iframe or frame.
|
||||
var activeEl;
|
||||
|
||||
try {
|
||||
// Because this approach is destroying and recreating the paging
|
||||
// elements, focus is lost on the select button which is bad for
|
||||
// accessibility. So we want to restore focus once the draw has
|
||||
// completed
|
||||
activeEl = $(host).find(document.activeElement).data('dt-idx');
|
||||
}
|
||||
catch (e) {}
|
||||
|
||||
attach(
|
||||
$(host).empty().html('<ul class="pagination"/>').children('ul'),
|
||||
buttons
|
||||
);
|
||||
|
||||
if ( activeEl !== undefined ) {
|
||||
$(host).find( '[data-dt-idx='+activeEl+']' ).trigger('focus');
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
return DataTable;
|
||||
}));
|
||||
@@ -0,0 +1,4 @@
|
||||
/*! DataTables Bootstrap 4 integration
|
||||
* ©2011-2017 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
!function(t){var n,o;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return t(e,window,document)}):"object"==typeof exports?(n=require("jquery"),o=function(e,a){a.fn.dataTable||require("datatables.net")(e,a)},"undefined"!=typeof window?module.exports=function(e,a){return e=e||window,a=a||n(e),o(e,a),t(a,0,e.document)}:(o(window,n),module.exports=t(n,window,window.document))):t(jQuery,window,document)}(function(x,e,n,o){"use strict";var r=x.fn.dataTable;return x.extend(!0,r.defaults,{dom:"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",renderer:"bootstrap"}),x.extend(r.ext.classes,{sWrapper:"dataTables_wrapper dt-bootstrap4",sFilterInput:"form-control form-control-sm",sLengthSelect:"custom-select custom-select-sm form-control form-control-sm",sProcessing:"dataTables_processing card",sPageButton:"paginate_button page-item"}),r.ext.renderer.pageButton.bootstrap=function(i,e,d,a,l,c){function u(e,a){for(var t,n,o=function(e){e.preventDefault(),x(e.currentTarget).hasClass("disabled")||m.page()==e.data.action||m.page(e.data.action).draw("page")},r=0,s=a.length;r<s;r++)if(t=a[r],Array.isArray(t))u(e,t);else{switch(f=p="",t){case"ellipsis":p="…",f="disabled";break;case"first":p=g.sFirst,f=t+(0<l?"":" disabled");break;case"previous":p=g.sPrevious,f=t+(0<l?"":" disabled");break;case"next":p=g.sNext,f=t+(l<c-1?"":" disabled");break;case"last":p=g.sLast,f=t+(l<c-1?"":" disabled");break;default:p=t+1,f=l===t?"active":""}p&&(n=-1!==f.indexOf("disabled"),n=x("<li>",{class:b.sPageButton+" "+f,id:0===d&&"string"==typeof t?i.sTableId+"_"+t:null}).append(x("<a>",{href:n?null:"#","aria-controls":i.sTableId,"aria-disabled":n?"true":null,"aria-label":w[t],"aria-role":"link","aria-current":"active"===f?"page":null,"data-dt-idx":t,tabindex:i.iTabIndex,class:"page-link"}).html(p)).appendTo(e),i.oApi._fnBindAction(n,{action:t},o))}}var p,f,t,m=new r.Api(i),b=i.oClasses,g=i.oLanguage.oPaginate,w=i.oLanguage.oAria.paginate||{};try{t=x(e).find(n.activeElement).data("dt-idx")}catch(e){}u(x(e).empty().html('<ul class="pagination"/>').children("ul"),a),t!==o&&x(e).find("[data-dt-idx="+t+"]").trigger("focus")},r});
|
||||
@@ -0,0 +1,212 @@
|
||||
/*! DataTables Bootstrap 5 integration
|
||||
* 2020 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
var jq = require('jquery');
|
||||
var cjsRequires = function (root, $) {
|
||||
if ( ! $.fn.dataTable ) {
|
||||
require('datatables.net')(root, $);
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof window !== 'undefined') {
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
// CommonJS environments without a window global must pass a
|
||||
// root. This will give an error otherwise
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ ) {
|
||||
$ = jq( root );
|
||||
}
|
||||
|
||||
cjsRequires( root, $ );
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
cjsRequires( window, jq );
|
||||
module.exports = factory( jq, window, window.document );
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* DataTables integration for Bootstrap 5. This requires Bootstrap 5 and
|
||||
* DataTables 1.10 or newer.
|
||||
*
|
||||
* This file sets the defaults and adds options to DataTables to style its
|
||||
* controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap
|
||||
* for further information.
|
||||
*/
|
||||
|
||||
/* Set the defaults for DataTables initialisation */
|
||||
$.extend( true, DataTable.defaults, {
|
||||
dom:
|
||||
"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>>" +
|
||||
"<'row dt-row'<'col-sm-12'tr>>" +
|
||||
"<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
|
||||
renderer: 'bootstrap'
|
||||
} );
|
||||
|
||||
|
||||
/* Default class modification */
|
||||
$.extend( DataTable.ext.classes, {
|
||||
sWrapper: "dataTables_wrapper dt-bootstrap5",
|
||||
sFilterInput: "form-control form-control-sm",
|
||||
sLengthSelect: "form-select form-select-sm",
|
||||
sProcessing: "dataTables_processing card",
|
||||
sPageButton: "paginate_button page-item"
|
||||
} );
|
||||
|
||||
|
||||
/* Bootstrap paging button renderer */
|
||||
DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) {
|
||||
var api = new DataTable.Api( settings );
|
||||
var classes = settings.oClasses;
|
||||
var lang = settings.oLanguage.oPaginate;
|
||||
var aria = settings.oLanguage.oAria.paginate || {};
|
||||
var btnDisplay, btnClass;
|
||||
|
||||
var attach = function( container, buttons ) {
|
||||
var i, ien, node, button;
|
||||
var clickHandler = function ( e ) {
|
||||
e.preventDefault();
|
||||
if ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) {
|
||||
api.page( e.data.action ).draw( 'page' );
|
||||
}
|
||||
};
|
||||
|
||||
for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
|
||||
button = buttons[i];
|
||||
|
||||
if ( Array.isArray( button ) ) {
|
||||
attach( container, button );
|
||||
}
|
||||
else {
|
||||
btnDisplay = '';
|
||||
btnClass = '';
|
||||
|
||||
switch ( button ) {
|
||||
case 'ellipsis':
|
||||
btnDisplay = '…';
|
||||
btnClass = 'disabled';
|
||||
break;
|
||||
|
||||
case 'first':
|
||||
btnDisplay = lang.sFirst;
|
||||
btnClass = button + (page > 0 ?
|
||||
'' : ' disabled');
|
||||
break;
|
||||
|
||||
case 'previous':
|
||||
btnDisplay = lang.sPrevious;
|
||||
btnClass = button + (page > 0 ?
|
||||
'' : ' disabled');
|
||||
break;
|
||||
|
||||
case 'next':
|
||||
btnDisplay = lang.sNext;
|
||||
btnClass = button + (page < pages-1 ?
|
||||
'' : ' disabled');
|
||||
break;
|
||||
|
||||
case 'last':
|
||||
btnDisplay = lang.sLast;
|
||||
btnClass = button + (page < pages-1 ?
|
||||
'' : ' disabled');
|
||||
break;
|
||||
|
||||
default:
|
||||
btnDisplay = button + 1;
|
||||
btnClass = page === button ?
|
||||
'active' : '';
|
||||
break;
|
||||
}
|
||||
|
||||
if ( btnDisplay ) {
|
||||
var disabled = btnClass.indexOf('disabled') !== -1;
|
||||
|
||||
node = $('<li>', {
|
||||
'class': classes.sPageButton+' '+btnClass,
|
||||
'id': idx === 0 && typeof button === 'string' ?
|
||||
settings.sTableId +'_'+ button :
|
||||
null
|
||||
} )
|
||||
.append( $('<a>', {
|
||||
'href': disabled ? null : '#',
|
||||
'aria-controls': settings.sTableId,
|
||||
'aria-disabled': disabled ? 'true' : null,
|
||||
'aria-label': aria[ button ],
|
||||
'aria-role': 'link',
|
||||
'aria-current': btnClass === 'active' ? 'page' : null,
|
||||
'data-dt-idx': button,
|
||||
'tabindex': settings.iTabIndex,
|
||||
'class': 'page-link'
|
||||
} )
|
||||
.html( btnDisplay )
|
||||
)
|
||||
.appendTo( container );
|
||||
|
||||
settings.oApi._fnBindAction(
|
||||
node, {action: button}, clickHandler
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var hostEl = $(host);
|
||||
// IE9 throws an 'unknown error' if document.activeElement is used
|
||||
// inside an iframe or frame.
|
||||
var activeEl;
|
||||
|
||||
try {
|
||||
// Because this approach is destroying and recreating the paging
|
||||
// elements, focus is lost on the select button which is bad for
|
||||
// accessibility. So we want to restore focus once the draw has
|
||||
// completed
|
||||
activeEl = hostEl.find(document.activeElement).data('dt-idx');
|
||||
}
|
||||
catch (e) {}
|
||||
|
||||
var paginationEl = hostEl.children('ul.pagination');
|
||||
|
||||
if (paginationEl.length) {
|
||||
paginationEl.empty();
|
||||
}
|
||||
else {
|
||||
paginationEl = hostEl.html('<ul/>').children('ul').addClass('pagination');
|
||||
}
|
||||
|
||||
attach(
|
||||
paginationEl,
|
||||
buttons
|
||||
);
|
||||
|
||||
if ( activeEl !== undefined ) {
|
||||
hostEl.find('[data-dt-idx='+activeEl+']').trigger('focus');
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
return DataTable;
|
||||
}));
|
||||
@@ -0,0 +1,4 @@
|
||||
/*! DataTables Bootstrap 5 integration
|
||||
* 2020 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
!function(t){var n,r;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return t(e,window,document)}):"object"==typeof exports?(n=require("jquery"),r=function(e,a){a.fn.dataTable||require("datatables.net")(e,a)},"undefined"!=typeof window?module.exports=function(e,a){return e=e||window,a=a||n(e),r(e,a),t(a,0,e.document)}:(r(window,n),module.exports=t(n,window,window.document))):t(jQuery,window,document)}(function(x,e,r,i){"use strict";var o=x.fn.dataTable;return x.extend(!0,o.defaults,{dom:"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>><'row dt-row'<'col-sm-12'tr>><'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",renderer:"bootstrap"}),x.extend(o.ext.classes,{sWrapper:"dataTables_wrapper dt-bootstrap5",sFilterInput:"form-control form-control-sm",sLengthSelect:"form-select form-select-sm",sProcessing:"dataTables_processing card",sPageButton:"paginate_button page-item"}),o.ext.renderer.pageButton.bootstrap=function(d,e,s,a,l,c){function u(e,a){for(var t,n,r=function(e){e.preventDefault(),x(e.currentTarget).hasClass("disabled")||b.page()==e.data.action||b.page(e.data.action).draw("page")},i=0,o=a.length;i<o;i++)if(t=a[i],Array.isArray(t))u(e,t);else{switch(f=p="",t){case"ellipsis":p="…",f="disabled";break;case"first":p=g.sFirst,f=t+(0<l?"":" disabled");break;case"previous":p=g.sPrevious,f=t+(0<l?"":" disabled");break;case"next":p=g.sNext,f=t+(l<c-1?"":" disabled");break;case"last":p=g.sLast,f=t+(l<c-1?"":" disabled");break;default:p=t+1,f=l===t?"active":""}p&&(n=-1!==f.indexOf("disabled"),n=x("<li>",{class:m.sPageButton+" "+f,id:0===s&&"string"==typeof t?d.sTableId+"_"+t:null}).append(x("<a>",{href:n?null:"#","aria-controls":d.sTableId,"aria-disabled":n?"true":null,"aria-label":w[t],"aria-role":"link","aria-current":"active"===f?"page":null,"data-dt-idx":t,tabindex:d.iTabIndex,class:"page-link"}).html(p)).appendTo(e),d.oApi._fnBindAction(n,{action:t},r))}}var p,f,t,b=new o.Api(d),m=d.oClasses,g=d.oLanguage.oPaginate,w=d.oLanguage.oAria.paginate||{},e=x(e);try{t=e.find(r.activeElement).data("dt-idx")}catch(e){}var n=e.children("ul.pagination");n.length?n.empty():n=e.html("<ul/>").children("ul").addClass("pagination"),u(n,a),t!==i&&e.find("[data-dt-idx="+t+"]").trigger("focus")},o});
|
||||
@@ -0,0 +1,214 @@
|
||||
/*! DataTables Bulma integration
|
||||
* ©2020 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
var jq = require('jquery');
|
||||
var cjsRequires = function (root, $) {
|
||||
if ( ! $.fn.dataTable ) {
|
||||
require('datatables.net')(root, $);
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof window !== 'undefined') {
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
// CommonJS environments without a window global must pass a
|
||||
// root. This will give an error otherwise
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ ) {
|
||||
$ = jq( root );
|
||||
}
|
||||
|
||||
cjsRequires( root, $ );
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
cjsRequires( window, jq );
|
||||
module.exports = factory( jq, window, window.document );
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
|
||||
/* Set the defaults for DataTables initialisation */
|
||||
$.extend( true, DataTable.defaults, {
|
||||
dom:
|
||||
"<'columns is-gapless is-multiline'" +
|
||||
"<'column is-half'l>" +
|
||||
"<'column is-half'f>" +
|
||||
"<'column is-full'tr>" +
|
||||
"<'column is-half'i>" +
|
||||
"<'column is-half'p>" +
|
||||
">",
|
||||
renderer: 'bulma'
|
||||
} );
|
||||
|
||||
|
||||
/* Default class modification */
|
||||
$.extend( DataTable.ext.classes, {
|
||||
sWrapper: "dataTables_wrapper dt-bulma",
|
||||
sFilterInput: "input",
|
||||
sLengthSelect: "custom-select custom-select-sm form-control form-control-sm",
|
||||
sProcessing: "dataTables_processing card"
|
||||
} );
|
||||
|
||||
|
||||
/* Bulma paging button renderer */
|
||||
DataTable.ext.renderer.pageButton.bulma = function ( settings, host, idx, buttons, page, pages ) {
|
||||
var api = new DataTable.Api( settings );
|
||||
var classes = settings.oClasses;
|
||||
var lang = settings.oLanguage.oPaginate;
|
||||
var aria = settings.oLanguage.oAria.paginate || {};
|
||||
var btnDisplay, btnClass;
|
||||
|
||||
var attach = function( container, buttons ) {
|
||||
var i, ien, node, button, tag, disabled;
|
||||
var clickHandler = function ( e ) {
|
||||
e.preventDefault();
|
||||
if ( ! $(e.currentTarget.firstChild).attr('disabled') && api.page() != e.data.action ) {
|
||||
api.page( e.data.action ).draw( 'page' );
|
||||
}
|
||||
};
|
||||
|
||||
for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
|
||||
button = buttons[i];
|
||||
|
||||
if ( Array.isArray( button ) ) {
|
||||
attach( container, button );
|
||||
}
|
||||
else {
|
||||
btnDisplay = '';
|
||||
btnClass = '';
|
||||
tag = 'a';
|
||||
disabled = false;
|
||||
|
||||
switch ( button ) {
|
||||
case 'ellipsis':
|
||||
btnDisplay = '…';
|
||||
btnClass = 'pagination-link';
|
||||
disabled = true;
|
||||
tag = 'span';
|
||||
break;
|
||||
|
||||
case 'first':
|
||||
btnDisplay = lang.sFirst;
|
||||
btnClass = button;
|
||||
disabled = page <= 0;
|
||||
break;
|
||||
|
||||
case 'previous':
|
||||
btnDisplay = lang.sPrevious;
|
||||
btnClass = button;
|
||||
disabled = page <= 0;
|
||||
break;
|
||||
|
||||
case 'next':
|
||||
btnDisplay = lang.sNext;
|
||||
btnClass = button;
|
||||
disabled = page >= pages - 1;
|
||||
break;
|
||||
|
||||
case 'last':
|
||||
btnDisplay = lang.sLast;
|
||||
btnClass = button;
|
||||
disabled = page >= pages - 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
btnDisplay = button + 1;
|
||||
btnClass = page === button ?
|
||||
'is-current' : '';
|
||||
break;
|
||||
}
|
||||
|
||||
if ( btnDisplay ) {
|
||||
node = $('<li>', {
|
||||
'id': idx === 0 && typeof button === 'string' ?
|
||||
settings.sTableId +'_'+ button :
|
||||
null
|
||||
} )
|
||||
.append( $('<' + tag + '>', {
|
||||
'href': disabled ? null : '#',
|
||||
'aria-controls': settings.sTableId,
|
||||
'aria-disabled': disabled ? 'true' : null,
|
||||
'aria-label': aria[ button ],
|
||||
'aria-role': 'link',
|
||||
'aria-current': btnClass === 'is-current' ? 'page' : null,
|
||||
'data-dt-idx': button,
|
||||
'tabindex': settings.iTabIndex,
|
||||
'class': 'pagination-link ' + btnClass,
|
||||
'disabled': disabled
|
||||
} )
|
||||
.html( btnDisplay )
|
||||
)
|
||||
.appendTo( container );
|
||||
|
||||
settings.oApi._fnBindAction(
|
||||
node, {action: button}, clickHandler
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// IE9 throws an 'unknown error' if document.activeElement is used
|
||||
// inside an iframe or frame.
|
||||
var activeEl;
|
||||
|
||||
try {
|
||||
// Because this approach is destroying and recreating the paging
|
||||
// elements, focus is lost on the select button which is bad for
|
||||
// accessibility. So we want to restore focus once the draw has
|
||||
// completed
|
||||
activeEl = $(host).find(document.activeElement).data('dt-idx');
|
||||
}
|
||||
catch (e) {}
|
||||
|
||||
var nav = $('<nav class="pagination" role="navigation" aria-label="pagination"><ul class="pagination-list"></ul></nav>');
|
||||
$(host).empty().append(nav);
|
||||
|
||||
attach(nav.find('ul'), buttons);
|
||||
|
||||
if ( activeEl !== undefined ) {
|
||||
$(host).find( '[data-dt-idx='+activeEl+']' ).trigger('focus');
|
||||
}
|
||||
};
|
||||
|
||||
// Javascript enhancements on table initialisation
|
||||
$(document).on( 'init.dt', function (e, ctx) {
|
||||
if ( e.namespace !== 'dt' ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var api = new $.fn.dataTable.Api( ctx );
|
||||
|
||||
// Length menu drop down - needs to be wrapped with a div
|
||||
$( 'div.dataTables_length select', api.table().container() ).wrap('<div class="select">');
|
||||
|
||||
// Filtering input
|
||||
// $( 'div.dataTables_filter.ui.input', api.table().container() ).removeClass('input').addClass('form');
|
||||
// $( 'div.dataTables_filter input', api.table().container() ).wrap( '<span class="ui input" />' );
|
||||
} );
|
||||
|
||||
|
||||
return DataTable;
|
||||
}));
|
||||
@@ -0,0 +1,4 @@
|
||||
/*! DataTables Bulma integration
|
||||
* ©2020 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
!function(n){var t,i;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(a){return n(a,window,document)}):"object"==typeof exports?(t=require("jquery"),i=function(a,e){e.fn.dataTable||require("datatables.net")(a,e)},"undefined"!=typeof window?module.exports=function(a,e){return a=a||window,e=e||t(a),i(a,e),n(e,0,a.document)}:(i(window,t),module.exports=n(t,window,window.document))):n(jQuery,window,document)}(function(v,a,i,r){"use strict";var s=v.fn.dataTable;return v.extend(!0,s.defaults,{dom:"<'columns is-gapless is-multiline'<'column is-half'l><'column is-half'f><'column is-full'tr><'column is-half'i><'column is-half'p>>",renderer:"bulma"}),v.extend(s.ext.classes,{sWrapper:"dataTables_wrapper dt-bulma",sFilterInput:"input",sLengthSelect:"custom-select custom-select-sm form-control form-control-sm",sProcessing:"dataTables_processing card"}),s.ext.renderer.pageButton.bulma=function(d,a,u,e,c,p){function f(a,e){for(var n,t,i,r,s=function(a){a.preventDefault(),v(a.currentTarget.firstChild).attr("disabled")||g.page()==a.data.action||g.page(a.data.action).draw("page")},l=0,o=e.length;l<o;l++)if(t=e[l],Array.isArray(t))f(a,t);else{switch(b=m="",r=!(i="a"),t){case"ellipsis":m="…",b="pagination-link",r=!0,i="span";break;case"first":m=w.sFirst,b=t,r=c<=0;break;case"previous":m=w.sPrevious,b=t,r=c<=0;break;case"next":m=w.sNext,b=t,r=p-1<=c;break;case"last":m=w.sLast,b=t,r=p-1<=c;break;default:m=t+1,b=c===t?"is-current":""}m&&(n=v("<li>",{id:0===u&&"string"==typeof t?d.sTableId+"_"+t:null}).append(v("<"+i+">",{href:r?null:"#","aria-controls":d.sTableId,"aria-disabled":r?"true":null,"aria-label":x[t],"aria-role":"link","aria-current":"is-current"===b?"page":null,"data-dt-idx":t,tabindex:d.iTabIndex,class:"pagination-link "+b,disabled:r}).html(m)).appendTo(a),d.oApi._fnBindAction(n,{action:t},s))}}var m,b,n,g=new s.Api(d),w=(d.oClasses,d.oLanguage.oPaginate),x=d.oLanguage.oAria.paginate||{};try{n=v(a).find(i.activeElement).data("dt-idx")}catch(a){}var t=v('<nav class="pagination" role="navigation" aria-label="pagination"><ul class="pagination-list"></ul></nav>');v(a).empty().append(t),f(t.find("ul"),e),n!==r&&v(a).find("[data-dt-idx="+n+"]").trigger("focus")},v(i).on("init.dt",function(a,e){"dt"===a.namespace&&(a=new v.fn.dataTable.Api(e),v("div.dataTables_length select",a.table().container()).wrap('<div class="select">'))}),s});
|
||||
@@ -0,0 +1,55 @@
|
||||
/*! DataTables styling integration
|
||||
* ©2018 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
var jq = require('jquery');
|
||||
var cjsRequires = function (root, $) {
|
||||
if ( ! $.fn.dataTable ) {
|
||||
require('datatables.net')(root, $);
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof window !== 'undefined') {
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
// CommonJS environments without a window global must pass a
|
||||
// root. This will give an error otherwise
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ ) {
|
||||
$ = jq( root );
|
||||
}
|
||||
|
||||
cjsRequires( root, $ );
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
cjsRequires( window, jq );
|
||||
module.exports = factory( jq, window, window.document );
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return DataTable;
|
||||
}));
|
||||
@@ -0,0 +1,4 @@
|
||||
/*! DataTables styling integration
|
||||
* ©2018 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
!function(t){var o,d;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return t(e,window,document)}):"object"==typeof exports?(o=require("jquery"),d=function(e,n){n.fn.dataTable||require("datatables.net")(e,n)},"undefined"!=typeof window?module.exports=function(e,n){return e=e||window,n=n||o(e),d(e,n),t(n,0,e.document)}:(d(window,o),module.exports=t(o,window,window.document))):t(jQuery,window,document)}(function(e,n,t,o){"use strict";return e.fn.dataTable});
|
||||
@@ -0,0 +1,200 @@
|
||||
/*! DataTables Foundation integration
|
||||
* ©2011-2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
var jq = require('jquery');
|
||||
var cjsRequires = function (root, $) {
|
||||
if ( ! $.fn.dataTable ) {
|
||||
require('datatables.net')(root, $);
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof window !== 'undefined') {
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
// CommonJS environments without a window global must pass a
|
||||
// root. This will give an error otherwise
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ ) {
|
||||
$ = jq( root );
|
||||
}
|
||||
|
||||
cjsRequires( root, $ );
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
cjsRequires( window, jq );
|
||||
module.exports = factory( jq, window, window.document );
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* DataTables integration for Foundation. This requires Foundation 5 and
|
||||
* DataTables 1.10 or newer.
|
||||
*
|
||||
* This file sets the defaults and adds options to DataTables to style its
|
||||
* controls using Foundation. See http://datatables.net/manual/styling/foundation
|
||||
* for further information.
|
||||
*/
|
||||
|
||||
// Detect Foundation 5 / 6 as they have different element and class requirements
|
||||
var meta = $('<meta class="foundation-mq"/>').appendTo('head');
|
||||
DataTable.ext.foundationVersion = meta.css('font-family').match(/small|medium|large/) ? 6 : 5;
|
||||
meta.remove();
|
||||
|
||||
|
||||
$.extend( DataTable.ext.classes, {
|
||||
sWrapper: "dataTables_wrapper dt-foundation",
|
||||
sProcessing: "dataTables_processing panel callout"
|
||||
} );
|
||||
|
||||
|
||||
/* Set the defaults for DataTables initialisation */
|
||||
$.extend( true, DataTable.defaults, {
|
||||
dom:
|
||||
"<'row grid-x'<'small-6 columns cell'l><'small-6 columns cell'f>r>"+
|
||||
"t"+
|
||||
"<'row grid-x'<'small-6 columns cell'i><'small-6 columns cell'p>>",
|
||||
renderer: 'foundation'
|
||||
} );
|
||||
|
||||
|
||||
/* Page button renderer */
|
||||
DataTable.ext.renderer.pageButton.foundation = function ( settings, host, idx, buttons, page, pages ) {
|
||||
var api = new DataTable.Api( settings );
|
||||
var classes = settings.oClasses;
|
||||
var lang = settings.oLanguage.oPaginate;
|
||||
var aria = settings.oLanguage.oAria.paginate || {};
|
||||
var btnDisplay, btnClass;
|
||||
var tag;
|
||||
var v5 = DataTable.ext.foundationVersion === 5;
|
||||
|
||||
var attach = function( container, buttons ) {
|
||||
var i, ien, node, button;
|
||||
var clickHandler = function ( e ) {
|
||||
e.preventDefault();
|
||||
if ( !$(e.currentTarget).hasClass('unavailable') && api.page() != e.data.action ) {
|
||||
api.page( e.data.action ).draw( 'page' );
|
||||
}
|
||||
};
|
||||
|
||||
for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
|
||||
button = buttons[i];
|
||||
|
||||
if ( Array.isArray( button ) ) {
|
||||
attach( container, button );
|
||||
}
|
||||
else {
|
||||
btnDisplay = '';
|
||||
btnClass = '';
|
||||
tag = null;
|
||||
|
||||
switch ( button ) {
|
||||
case 'ellipsis':
|
||||
btnDisplay = '…';
|
||||
btnClass = 'unavailable disabled';
|
||||
tag = null;
|
||||
break;
|
||||
|
||||
case 'first':
|
||||
btnDisplay = lang.sFirst;
|
||||
btnClass = button + (page > 0 ?
|
||||
'' : ' unavailable disabled');
|
||||
tag = page > 0 ? 'a' : null;
|
||||
break;
|
||||
|
||||
case 'previous':
|
||||
btnDisplay = lang.sPrevious;
|
||||
btnClass = button + (page > 0 ?
|
||||
'' : ' unavailable disabled');
|
||||
tag = page > 0 ? 'a' : null;
|
||||
break;
|
||||
|
||||
case 'next':
|
||||
btnDisplay = lang.sNext;
|
||||
btnClass = button + (page < pages-1 ?
|
||||
'' : ' unavailable disabled');
|
||||
tag = page < pages-1 ? 'a' : null;
|
||||
break;
|
||||
|
||||
case 'last':
|
||||
btnDisplay = lang.sLast;
|
||||
btnClass = button + (page < pages-1 ?
|
||||
'' : ' unavailable disabled');
|
||||
tag = page < pages-1 ? 'a' : null;
|
||||
break;
|
||||
|
||||
default:
|
||||
btnDisplay = button + 1;
|
||||
btnClass = page === button ?
|
||||
'current' : '';
|
||||
tag = page === button ?
|
||||
null : 'a';
|
||||
break;
|
||||
}
|
||||
|
||||
if ( v5 ) {
|
||||
tag = 'a';
|
||||
}
|
||||
|
||||
if ( btnDisplay ) {
|
||||
var disabled = btnClass.indexOf('disabled') !== -1;
|
||||
|
||||
node = $('<li>', {
|
||||
'class': classes.sPageButton+' '+btnClass,
|
||||
'id': idx === 0 && typeof button === 'string' ?
|
||||
settings.sTableId +'_'+ button :
|
||||
null
|
||||
} )
|
||||
.append( tag ?
|
||||
$('<'+tag+'/>', {
|
||||
'href': disabled ? null : '#',
|
||||
'aria-controls': settings.sTableId,
|
||||
'aria-disabled': disabled ? 'true' : null,
|
||||
'aria-label': aria[ button ],
|
||||
'aria-role': 'link',
|
||||
'aria-current': btnClass === 'current' ? 'page' : null,
|
||||
'tabindex': settings.iTabIndex,
|
||||
} ).html( btnDisplay ) :
|
||||
btnDisplay
|
||||
)
|
||||
.appendTo( container );
|
||||
|
||||
settings.oApi._fnBindAction(
|
||||
node, {action: button}, clickHandler
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
attach(
|
||||
$(host).empty().html('<ul class="pagination"/>').children('ul'),
|
||||
buttons
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
return DataTable;
|
||||
}));
|
||||
@@ -0,0 +1,4 @@
|
||||
/*! DataTables Foundation integration
|
||||
* ©2011-2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
!function(n){var l,t;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(a){return n(a,window,document)}):"object"==typeof exports?(l=require("jquery"),t=function(a,e){e.fn.dataTable||require("datatables.net")(a,e)},"undefined"!=typeof window?module.exports=function(a,e){return a=a||window,e=e||l(a),t(a,e),n(e,0,a.document)}:(t(window,l),module.exports=n(l,window,window.document))):n(jQuery,window,document)}(function(y,a,e,n){"use strict";var l=y.fn.dataTable,t=y('<meta class="foundation-mq"/>').appendTo("head");return l.ext.foundationVersion=t.css("font-family").match(/small|medium|large/)?6:5,t.remove(),y.extend(l.ext.classes,{sWrapper:"dataTables_wrapper dt-foundation",sProcessing:"dataTables_processing panel callout"}),y.extend(!0,l.defaults,{dom:"<'row grid-x'<'small-6 columns cell'l><'small-6 columns cell'f>r>t<'row grid-x'<'small-6 columns cell'i><'small-6 columns cell'p>>",renderer:"foundation"}),l.ext.renderer.pageButton.foundation=function(o,a,s,e,d,u){function c(a,e){for(var n,l,t=function(a){a.preventDefault(),y(a.currentTarget).hasClass("unavailable")||m.page()==a.data.action||m.page(a.data.action).draw("page")},i=0,r=e.length;i<r;i++)if(n=e[i],Array.isArray(n))c(a,n);else{switch(p=f="",b=null,n){case"ellipsis":f="…",p="unavailable disabled",b=null;break;case"first":f=w.sFirst,p=n+(0<d?"":" unavailable disabled"),b=0<d?"a":null;break;case"previous":f=w.sPrevious,p=n+(0<d?"":" unavailable disabled"),b=0<d?"a":null;break;case"next":f=w.sNext,p=n+(d<u-1?"":" unavailable disabled"),b=d<u-1?"a":null;break;case"last":f=w.sLast,p=n+(d<u-1?"":" unavailable disabled"),b=d<u-1?"a":null;break;default:f=n+1,p=d===n?"current":"",b=d===n?null:"a"}v&&(b="a"),f&&(l=-1!==p.indexOf("disabled"),l=y("<li>",{class:g.sPageButton+" "+p,id:0===s&&"string"==typeof n?o.sTableId+"_"+n:null}).append(b?y("<"+b+"/>",{href:l?null:"#","aria-controls":o.sTableId,"aria-disabled":l?"true":null,"aria-label":x[n],"aria-role":"link","aria-current":"current"===p?"page":null,tabindex:o.iTabIndex}).html(f):f).appendTo(a),o.oApi._fnBindAction(l,{action:n},t))}}var f,p,b,m=new l.Api(o),g=o.oClasses,w=o.oLanguage.oPaginate,x=o.oLanguage.oAria.paginate||{},v=5===l.ext.foundationVersion;c(y(a).empty().html('<ul class="pagination"/>').children("ul"),e)},l});
|
||||
@@ -0,0 +1,95 @@
|
||||
/*! DataTables jQuery UI integration
|
||||
* ©2011-2014 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
var jq = require('jquery');
|
||||
var cjsRequires = function (root, $) {
|
||||
if ( ! $.fn.dataTable ) {
|
||||
require('datatables.net')(root, $);
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof window !== 'undefined') {
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
// CommonJS environments without a window global must pass a
|
||||
// root. This will give an error otherwise
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ ) {
|
||||
$ = jq( root );
|
||||
}
|
||||
|
||||
cjsRequires( root, $ );
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
cjsRequires( window, jq );
|
||||
module.exports = factory( jq, window, window.document );
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* DataTables integration for jQuery UI. This requires jQuery UI and
|
||||
* DataTables 1.10 or newer.
|
||||
*
|
||||
* This file sets the defaults and adds options to DataTables to style its
|
||||
* controls using jQuery UI. See http://datatables.net/manual/styling/jqueryui
|
||||
* for further information.
|
||||
*/
|
||||
|
||||
var toolbar_prefix = 'fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix ui-corner-';
|
||||
|
||||
/* Set the defaults for DataTables initialisation */
|
||||
$.extend( true, DataTable.defaults, {
|
||||
dom:
|
||||
'<"'+toolbar_prefix+'tl ui-corner-tr"lfr>'+
|
||||
't'+
|
||||
'<"'+toolbar_prefix+'bl ui-corner-br"ip>'
|
||||
} );
|
||||
|
||||
|
||||
$.extend( DataTable.ext.classes, {
|
||||
"sWrapper": "dataTables_wrapper dt-jqueryui",
|
||||
|
||||
/* Full numbers paging buttons */
|
||||
"sPageButton": "fg-button ui-button ui-state-default",
|
||||
"sPageButtonActive": "ui-state-disabled",
|
||||
"sPageButtonDisabled": "ui-state-disabled",
|
||||
|
||||
/* Features */
|
||||
"sPaging": "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi "+
|
||||
"ui-buttonset-multi paging_", /* Note that the type is postfixed */
|
||||
|
||||
/* Scrolling */
|
||||
"sScrollHead": "dataTables_scrollHead "+"ui-state-default",
|
||||
"sScrollFoot": "dataTables_scrollFoot "+"ui-state-default",
|
||||
|
||||
/* Misc */
|
||||
"sHeaderTH": "ui-state-default",
|
||||
"sFooterTH": "ui-state-default"
|
||||
} );
|
||||
|
||||
|
||||
return DataTable;
|
||||
}));
|
||||
@@ -0,0 +1,4 @@
|
||||
/*! DataTables jQuery UI integration
|
||||
* ©2011-2014 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
!function(a){var u,o;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return a(t,window,document)}):"object"==typeof exports?(u=require("jquery"),o=function(t,e){e.fn.dataTable||require("datatables.net")(t,e)},"undefined"!=typeof window?module.exports=function(t,e){return t=t||window,e=e||u(t),o(t,e),a(e,0,t.document)}:(o(window,u),module.exports=a(u,window,window.document))):a(jQuery,window,document)}(function(t,e,a,u){"use strict";var o=t.fn.dataTable,n="fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix ui-corner-";return t.extend(!0,o.defaults,{dom:'<"'+n+'tl ui-corner-tr"lfr>t<"'+n+'bl ui-corner-br"ip>'}),t.extend(o.ext.classes,{sWrapper:"dataTables_wrapper dt-jqueryui",sPageButton:"fg-button ui-button ui-state-default",sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sScrollHead:"dataTables_scrollHead ui-state-default",sScrollFoot:"dataTables_scrollFoot ui-state-default",sHeaderTH:"ui-state-default",sFooterTH:"ui-state-default"}),o});
|
||||
@@ -0,0 +1,228 @@
|
||||
/*! DataTables Bootstrap 3 integration
|
||||
* ©2011-2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
var jq = require('jquery');
|
||||
var cjsRequires = function (root, $) {
|
||||
if ( ! $.fn.dataTable ) {
|
||||
require('datatables.net')(root, $);
|
||||
}
|
||||
};
|
||||
|
||||
if (typeof window !== 'undefined') {
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
// CommonJS environments without a window global must pass a
|
||||
// root. This will give an error otherwise
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ ) {
|
||||
$ = jq( root );
|
||||
}
|
||||
|
||||
cjsRequires( root, $ );
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
cjsRequires( window, jq );
|
||||
module.exports = factory( jq, window, window.document );
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* DataTables integration for FomanticUI (formally SemanticUI)
|
||||
*
|
||||
* This file sets the defaults and adds options to DataTables to style its
|
||||
* controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap
|
||||
* for further information.
|
||||
*/
|
||||
|
||||
/* Set the defaults for DataTables initialisation */
|
||||
$.extend( true, DataTable.defaults, {
|
||||
dom:
|
||||
"<'ui stackable grid'"+
|
||||
"<'row'"+
|
||||
"<'eight wide column'l>"+
|
||||
"<'right aligned eight wide column'f>"+
|
||||
">"+
|
||||
"<'row dt-table'"+
|
||||
"<'sixteen wide column'tr>"+
|
||||
">"+
|
||||
"<'row'"+
|
||||
"<'seven wide column'i>"+
|
||||
"<'right aligned nine wide column'p>"+
|
||||
">"+
|
||||
">",
|
||||
renderer: 'semanticUI'
|
||||
} );
|
||||
|
||||
|
||||
/* Default class modification */
|
||||
$.extend( DataTable.ext.classes, {
|
||||
sWrapper: "dataTables_wrapper dt-semanticUI",
|
||||
sFilter: "dataTables_filter ui input",
|
||||
sProcessing: "dataTables_processing ui segment",
|
||||
sPageButton: "paginate_button item"
|
||||
} );
|
||||
|
||||
|
||||
/* Bootstrap paging button renderer */
|
||||
DataTable.ext.renderer.pageButton.semanticUI = function ( settings, host, idx, buttons, page, pages ) {
|
||||
var api = new DataTable.Api( settings );
|
||||
var classes = settings.oClasses;
|
||||
var lang = settings.oLanguage.oPaginate;
|
||||
var aria = settings.oLanguage.oAria.paginate || {};
|
||||
var btnDisplay, btnClass;
|
||||
|
||||
var attach = function( container, buttons ) {
|
||||
var i, ien, node, button;
|
||||
var clickHandler = function ( e ) {
|
||||
e.preventDefault();
|
||||
if ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) {
|
||||
api.page( e.data.action ).draw( 'page' );
|
||||
}
|
||||
};
|
||||
|
||||
for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
|
||||
button = buttons[i];
|
||||
|
||||
if ( Array.isArray( button ) ) {
|
||||
attach( container, button );
|
||||
}
|
||||
else {
|
||||
btnDisplay = '';
|
||||
btnClass = '';
|
||||
|
||||
switch ( button ) {
|
||||
case 'ellipsis':
|
||||
btnDisplay = '…';
|
||||
btnClass = 'disabled';
|
||||
break;
|
||||
|
||||
case 'first':
|
||||
btnDisplay = lang.sFirst;
|
||||
btnClass = button + (page > 0 ?
|
||||
'' : ' disabled');
|
||||
break;
|
||||
|
||||
case 'previous':
|
||||
btnDisplay = lang.sPrevious;
|
||||
btnClass = button + (page > 0 ?
|
||||
'' : ' disabled');
|
||||
break;
|
||||
|
||||
case 'next':
|
||||
btnDisplay = lang.sNext;
|
||||
btnClass = button + (page < pages-1 ?
|
||||
'' : ' disabled');
|
||||
break;
|
||||
|
||||
case 'last':
|
||||
btnDisplay = lang.sLast;
|
||||
btnClass = button + (page < pages-1 ?
|
||||
'' : ' disabled');
|
||||
break;
|
||||
|
||||
default:
|
||||
btnDisplay = button + 1;
|
||||
btnClass = page === button ?
|
||||
'active' : '';
|
||||
break;
|
||||
}
|
||||
|
||||
var disabled = btnClass.indexOf('disabled') !== -1;
|
||||
var tag = disabled ?
|
||||
'div' :
|
||||
'a';
|
||||
|
||||
if ( btnDisplay ) {
|
||||
node = $('<'+tag+'>', {
|
||||
'class': classes.sPageButton+' '+btnClass,
|
||||
'id': idx === 0 && typeof button === 'string' ?
|
||||
settings.sTableId +'_'+ button :
|
||||
null,
|
||||
'href': disabled ? null : '#',
|
||||
'aria-controls': settings.sTableId,
|
||||
'aria-disabled': disabled ? 'true' : null,
|
||||
'aria-label': aria[ button ],
|
||||
'aria-role': 'link',
|
||||
'aria-current': btnClass === 'active' ? 'page' : null,
|
||||
'data-dt-idx': button,
|
||||
'tabindex': settings.iTabIndex
|
||||
} )
|
||||
.html( btnDisplay )
|
||||
.appendTo( container );
|
||||
|
||||
settings.oApi._fnBindAction(
|
||||
node, {action: button}, clickHandler
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// IE9 throws an 'unknown error' if document.activeElement is used
|
||||
// inside an iframe or frame.
|
||||
var activeEl;
|
||||
|
||||
try {
|
||||
// Because this approach is destroying and recreating the paging
|
||||
// elements, focus is lost on the select button which is bad for
|
||||
// accessibility. So we want to restore focus once the draw has
|
||||
// completed
|
||||
activeEl = $(host).find(document.activeElement).data('dt-idx');
|
||||
}
|
||||
catch (e) {}
|
||||
|
||||
attach(
|
||||
$(host).empty().html('<div class="ui stackable pagination menu"/>').children(),
|
||||
buttons
|
||||
);
|
||||
|
||||
if ( activeEl !== undefined ) {
|
||||
$(host).find( '[data-dt-idx='+activeEl+']' ).trigger('focus');
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// Javascript enhancements on table initialisation
|
||||
$(document).on( 'init.dt', function (e, ctx) {
|
||||
if ( e.namespace !== 'dt' ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var api = new $.fn.dataTable.Api( ctx );
|
||||
|
||||
// Length menu drop down
|
||||
if ( $.fn.dropdown ) {
|
||||
$( 'div.dataTables_length select', api.table().container() ).dropdown();
|
||||
}
|
||||
|
||||
// Filtering input
|
||||
$( 'div.dataTables_filter.ui.input', api.table().container() ).removeClass('input').addClass('form');
|
||||
$( 'div.dataTables_filter input', api.table().container() ).wrap( '<span class="ui input" />' );
|
||||
} );
|
||||
|
||||
|
||||
return DataTable;
|
||||
}));
|
||||
@@ -0,0 +1,4 @@
|
||||
/*! DataTables Bootstrap 3 integration
|
||||
* ©2011-2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
!function(t){var n,i;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return t(e,window,document)}):"object"==typeof exports?(n=require("jquery"),i=function(e,a){a.fn.dataTable||require("datatables.net")(e,a)},"undefined"!=typeof window?module.exports=function(e,a){return e=e||window,a=a||n(e),i(e,a),t(a,0,e.document)}:(i(window,n),module.exports=t(n,window,window.document))):t(jQuery,window,document)}(function(v,e,n,i){"use strict";var d=v.fn.dataTable;return v.extend(!0,d.defaults,{dom:"<'ui stackable grid'<'row'<'eight wide column'l><'right aligned eight wide column'f>><'row dt-table'<'sixteen wide column'tr>><'row'<'seven wide column'i><'right aligned nine wide column'p>>>",renderer:"semanticUI"}),v.extend(d.ext.classes,{sWrapper:"dataTables_wrapper dt-semanticUI",sFilter:"dataTables_filter ui input",sProcessing:"dataTables_processing ui segment",sPageButton:"paginate_button item"}),d.ext.renderer.pageButton.semanticUI=function(s,e,l,a,o,u){function c(e,a){for(var t,n=function(e){e.preventDefault(),v(e.currentTarget).hasClass("disabled")||b.page()==e.data.action||b.page(e.data.action).draw("page")},i=0,d=a.length;i<d;i++)if(t=a[i],Array.isArray(t))c(e,t);else{switch(f=p="",t){case"ellipsis":p="…",f="disabled";break;case"first":p=w.sFirst,f=t+(0<o?"":" disabled");break;case"previous":p=w.sPrevious,f=t+(0<o?"":" disabled");break;case"next":p=w.sNext,f=t+(o<u-1?"":" disabled");break;case"last":p=w.sLast,f=t+(o<u-1?"":" disabled");break;default:p=t+1,f=o===t?"active":""}var r=-1!==f.indexOf("disabled");p&&(r=v("<"+(r?"div":"a")+">",{class:g.sPageButton+" "+f,id:0===l&&"string"==typeof t?s.sTableId+"_"+t:null,href:r?null:"#","aria-controls":s.sTableId,"aria-disabled":r?"true":null,"aria-label":m[t],"aria-role":"link","aria-current":"active"===f?"page":null,"data-dt-idx":t,tabindex:s.iTabIndex}).html(p).appendTo(e),s.oApi._fnBindAction(r,{action:t},n))}}var p,f,t,b=new d.Api(s),g=s.oClasses,w=s.oLanguage.oPaginate,m=s.oLanguage.oAria.paginate||{};try{t=v(e).find(n.activeElement).data("dt-idx")}catch(e){}c(v(e).empty().html('<div class="ui stackable pagination menu"/>').children(),a),t!==i&&v(e).find("[data-dt-idx="+t+"]").trigger("focus")},v(n).on("init.dt",function(e,a){"dt"===e.namespace&&(e=new v.fn.dataTable.Api(a),v.fn.dropdown&&v("div.dataTables_length select",e.table().container()).dropdown(),v("div.dataTables_filter.ui.input",e.table().container()).removeClass("input").addClass("form"),v("div.dataTables_filter input",e.table().container()).wrap('<span class="ui input" />'))}),d});
|
||||
+15686
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,42 @@
|
||||
table.dataTable thead tr > .dtfc-fixed-left,
|
||||
table.dataTable thead tr > .dtfc-fixed-right,
|
||||
table.dataTable tfoot tr > .dtfc-fixed-left,
|
||||
table.dataTable tfoot tr > .dtfc-fixed-right {
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
z-index: 3;
|
||||
background-color: white;
|
||||
}
|
||||
table.dataTable tbody tr > .dtfc-fixed-left,
|
||||
table.dataTable tbody tr > .dtfc-fixed-right {
|
||||
z-index: 1;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
div.dtfc-left-top-blocker,
|
||||
div.dtfc-right-top-blocker {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
div.dtfc-right-top-blocker,
|
||||
div.dtfc-left-top-blocker {
|
||||
margin-top: 6px;
|
||||
border-bottom: 0px solid #ddd !important;
|
||||
}
|
||||
|
||||
table.dataTable.table-bordered.dtfc-has-left {
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
div.dataTables_scroll.dtfc-has-left table.table-bordered {
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
div.dataTables_scrollBody {
|
||||
border-left: 1px solid #ddd !important;
|
||||
}
|
||||
|
||||
div.dataTables_scrollFootInner table.table-bordered tr th:first-child,
|
||||
div.dataTables_scrollHeadInner table.table-bordered tr th:first-child {
|
||||
border-left: 1px solid #ddd !important;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
table.dataTable thead tr>.dtfc-fixed-left,table.dataTable thead tr>.dtfc-fixed-right,table.dataTable tfoot tr>.dtfc-fixed-left,table.dataTable tfoot tr>.dtfc-fixed-right{top:0;bottom:0;z-index:3;background-color:white}table.dataTable tbody tr>.dtfc-fixed-left,table.dataTable tbody tr>.dtfc-fixed-right{z-index:1;background-color:white}div.dtfc-left-top-blocker,div.dtfc-right-top-blocker{background-color:white}div.dtfc-right-top-blocker,div.dtfc-left-top-blocker{margin-top:6px;border-bottom:0px solid #ddd !important}table.dataTable.table-bordered.dtfc-has-left{border-left:none}div.dataTables_scroll.dtfc-has-left table.table-bordered{border-left:none}div.dataTables_scrollBody{border-left:1px solid #ddd !important}div.dataTables_scrollFootInner table.table-bordered tr th:first-child,div.dataTables_scrollHeadInner table.table-bordered tr th:first-child{border-left:1px solid #ddd !important}
|
||||
@@ -0,0 +1,42 @@
|
||||
table.dataTable thead tr > .dtfc-fixed-left,
|
||||
table.dataTable thead tr > .dtfc-fixed-right,
|
||||
table.dataTable tfoot tr > .dtfc-fixed-left,
|
||||
table.dataTable tfoot tr > .dtfc-fixed-right {
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
z-index: 3;
|
||||
background-color: white;
|
||||
}
|
||||
table.dataTable tbody tr > .dtfc-fixed-left,
|
||||
table.dataTable tbody tr > .dtfc-fixed-right {
|
||||
z-index: 1;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
div.dtfc-left-top-blocker,
|
||||
div.dtfc-right-top-blocker {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
div.dtfc-right-top-blocker,
|
||||
div.dtfc-left-top-blocker {
|
||||
margin-top: 6px;
|
||||
border-bottom: 0px solid #ddd !important;
|
||||
}
|
||||
|
||||
table.dataTable.table-bordered.dtfc-has-left {
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
div.dataTables_scroll.dtfc-has-left table.table-bordered {
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
div.dataTables_scrollBody {
|
||||
border-left: 1px solid #ddd !important;
|
||||
}
|
||||
|
||||
div.dataTables_scrollFootInner table.table-bordered tr th:first-child,
|
||||
div.dataTables_scrollHeadInner table.table-bordered tr th:first-child {
|
||||
border-left: 1px solid #ddd !important;
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user