define(['jquery'], function ($) {
var Controller = {
index: function () {
var getColor = function (color) {
if (!color || color === '—') return '#95a5a6';
if (color.indexOf('红') !== -1) return '#e74c3c';
if (color.indexOf('蓝') !== -1) return '#3498db';
if (color.indexOf('绿') !== -1) return '#2ecc71';
return '#95a5a6';
};
var ball = function (num, color) {
return '' + num + '';
};
function loadData() {
var periods = parseInt($('#dash-periods').val()) || 30;
if (periods < 10) periods = 10;
if (periods > 100) periods = 100;
$('#dash-content').html('
' + __('Loading') + '
');
$.ajax({
url: 'history/dashboard',
type: 'GET',
data: {periods: periods},
dataType: 'json',
success: function (ret) {
if (ret.code != 1) {
$('#dash-content').html('' + (ret.msg || '加载失败') + '
');
return;
}
render(ret.data);
},
error: function () {
$('#dash-content').html('请求失败,请重试
');
}
});
}
function render(data) {
var hc = data.hotcold, cw = data.colorwave, zo = data.zodiac;
var oe = data.oddeven, bs = data.bigsmall, sm = data.sum, tn = data.tailnumbers;
var html = '';
html += '🔥❄️ 冷热号码
';
html += '
热号 Top 5
';
for (var i = 0; i < 5; i++) html += ball(hc.hot[i].num, hc.hot[i].color) + ' ';
html += '
';
html += '
冷号 Top 5
';
for (var i = 0; i < 5; i++) html += ball(hc.cold[i].num, hc.cold[i].color) + ' ';
html += '
';
html += '📊 比例分析
';
html += '
🎨 波色
';
html += '
';
html += '
' + cw.red + '
红波 ' + cw.red_pct + '%
';
html += '
' + cw.blue + '
蓝波 ' + cw.blue_pct + '%
';
html += '
' + cw.green + '
绿波 ' + cw.green_pct + '%
';
html += '
';
html += '
⚖️ 奇偶
';
html += '
';
html += '
' + oe.odd + '
奇数 ' + oe.odd_pct + '%
';
html += '
' + oe.even + '
偶数 ' + oe.even_pct + '%
';
html += '
';
html += '
📏 大小
';
html += '
';
html += '
' + bs.big + '
大数 ' + bs.big_pct + '%
';
html += '
' + bs.small + '
小数 ' + bs.small_pct + '%
';
html += '
';
html += '
';
html += '⭐ 生肖排名
';
for (var i = 0; i < Math.min(zo.list.length, 12); i++) {
var z = zo.list[i];
html += '
' + z.animal + '
' + z.count + ' (' + z.percent + '%)
';
}
html += '
';
html += '📈 和值统计
';
html += '
';
html += '
';
html += '
';
html += '
';
html += '🔢 尾数频率
';
for (var i = 0; i < tn.all.length; i++) {
var t = tn.all[i];
html += '
' + t.tail + '
' + t.count + ' (' + t.percent + '%)
';
}
html += '
';
$('#dash-content').html(html);
if (typeof echarts !== 'undefined' && sm.expects && sm.expects.length > 0) {
var chartDom = document.getElementById('dash-chart');
if (chartDom) {
var chart = echarts.init(chartDom);
chart.setOption({
tooltip: {trigger: 'axis'},
xAxis: {type: 'category', data: sm.expects, axisLabel: {rotate: 45, fontSize: 10}},
yAxis: {type: 'value'},
series: [{type: 'line', data: sm.sums, smooth: true, itemStyle: {color: '#3498db'}, areaStyle: {color: 'rgba(52,152,219,0.1)'}}],
grid: {left: 50, right: 20, bottom: 50, top: 20}
});
$(window).on('resize', function () { chart.resize(); });
}
}
}
$('#btn-dash-refresh').on('click', loadData);
loadData();
}
};
return Controller;
});