216 lines
7.4 KiB
JavaScript
216 lines
7.4 KiB
JavaScript
|
(function ($) {
|
|||
|
// sparkline component
|
|||
|
'use strict';
|
|||
|
|
|||
|
var lgbSparkline = function (element, options) {
|
|||
|
this.$element = $(element);
|
|||
|
this.options = $.extend({}, lgbSparkline.DEFAULTS, options);
|
|||
|
this.init();
|
|||
|
};
|
|||
|
|
|||
|
lgbSparkline.VERSION = '1.0';
|
|||
|
lgbSparkline.Author = 'argo@163.com';
|
|||
|
lgbSparkline.DataKey = "lgb.sparkline";
|
|||
|
lgbSparkline.Template = '<span class="d-inline-block tooltipped tooltipped-s" aria-label="Past year of activity">';
|
|||
|
lgbSparkline.Template += '<svg width="155" height="30">';
|
|||
|
lgbSparkline.Template += ' <defs>';
|
|||
|
lgbSparkline.Template += ' <linearGradient id="{0}" x1="0" x2="0" y1="1" y2="0">';
|
|||
|
lgbSparkline.Template += ' <stop offset="10%" stop-color="#c6e48b"></stop>';
|
|||
|
lgbSparkline.Template += ' <stop offset="33%" stop-color="#7bc96f"></stop>';
|
|||
|
lgbSparkline.Template += ' <stop offset="66%" stop-color="#239a3b"></stop>';
|
|||
|
lgbSparkline.Template += ' <stop offset="90%" stop-color="#196127"></stop>';
|
|||
|
lgbSparkline.Template += ' </linearGradient>';
|
|||
|
lgbSparkline.Template += ' <mask id="{1}" x="0" y="0" width="155" height="28">';
|
|||
|
lgbSparkline.Template += ' <polyline transform="translate(0, 28) scale(1,-1)" points="" fill="transparent" stroke="#8cc665" stroke-width="2">';
|
|||
|
lgbSparkline.Template += ' </polyline>';
|
|||
|
lgbSparkline.Template += ' </mask>';
|
|||
|
lgbSparkline.Template += ' </defs>';
|
|||
|
lgbSparkline.Template += ' <g transform="translate(0, 2.0)">';
|
|||
|
lgbSparkline.Template += ' <rect x="0" y="-2" width="155" height="30" style="stroke: none; fill: url(#{0}); mask: url(#{1})"></rect>';
|
|||
|
lgbSparkline.Template += ' </g>';
|
|||
|
lgbSparkline.Template += '</svg>';
|
|||
|
lgbSparkline.Template += '</span>';
|
|||
|
|
|||
|
lgbSparkline.AllowMethods = /val/;
|
|||
|
|
|||
|
function Plugin(option) {
|
|||
|
var params = $.makeArray(arguments).slice(1);
|
|||
|
return this.each(function () {
|
|||
|
var $this = $(this);
|
|||
|
var data = $this.data(lgbSparkline.DataKey);
|
|||
|
var options = typeof option === 'object' && option;
|
|||
|
|
|||
|
if (!data) $this.data(lgbSparkline.DataKey, data = new lgbSparkline(this, options));
|
|||
|
if (!lgbSparkline.AllowMethods.test(option)) return;
|
|||
|
if (typeof option === 'string') {
|
|||
|
data[option].apply(data, params);
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
$.fn.lgbSparkline = Plugin;
|
|||
|
$.fn.lgbSparkline.Constructor = lgbSparkline;
|
|||
|
|
|||
|
var _proto = lgbSparkline.prototype;
|
|||
|
_proto.init = function () {
|
|||
|
var getUID = function (prefix) {
|
|||
|
if (!prefix) prefix = 'lgb';
|
|||
|
do prefix += ~~(Math.random() * 1000000);
|
|||
|
while (document.getElementById(prefix));
|
|||
|
return prefix;
|
|||
|
};
|
|||
|
|
|||
|
var that = this;
|
|||
|
var element = $.format(lgbSparkline.Template, getUID('gradient'), getUID('spark'))
|
|||
|
this.$ctl = $(element).appendTo(this.$element);
|
|||
|
};
|
|||
|
_proto.val = function (val) {
|
|||
|
this.$ctl.find('polyline').attr('points', val);
|
|||
|
};
|
|||
|
})(jQuery);
|
|||
|
|
|||
|
$(function () {
|
|||
|
$.bc({
|
|||
|
url: "api/Analyse?logType=LoginUsers",
|
|||
|
callback: function (result) {
|
|||
|
$('#login').lgbSparkline('val', result.Polylines.join(' '));
|
|||
|
var op = $.extend(true, {}, option, {
|
|||
|
legend: { data: ["登录数量"] },
|
|||
|
series: [
|
|||
|
{
|
|||
|
name: "登录数量",
|
|||
|
data: result.Datas.map(function (val, index) {
|
|||
|
return val.Value;
|
|||
|
})
|
|||
|
}
|
|||
|
],
|
|||
|
xAxis: [
|
|||
|
{
|
|||
|
data: result.Datas.map(function (val, index) {
|
|||
|
return val.Key;
|
|||
|
})
|
|||
|
}
|
|||
|
],
|
|||
|
dataZoom: {
|
|||
|
start: 50
|
|||
|
}
|
|||
|
});
|
|||
|
var loginChart = echarts.init(document.getElementById('loginChart'));
|
|||
|
loginChart.setOption(op);
|
|||
|
}
|
|||
|
});
|
|||
|
$.bc({
|
|||
|
url: "api/Analyse?logType=log",
|
|||
|
callback: function (result) {
|
|||
|
$('#log').lgbSparkline('val', result.Polylines.join(' '));
|
|||
|
var op = $.extend(true, {}, option, {
|
|||
|
legend: { data: ["操作数量"] },
|
|||
|
series: [
|
|||
|
{
|
|||
|
name: "操作数量",
|
|||
|
data: result.Datas.map(function (val, index) {
|
|||
|
return val.Value;
|
|||
|
})
|
|||
|
}
|
|||
|
],
|
|||
|
xAxis: [
|
|||
|
{
|
|||
|
data: result.Datas.map(function (val, index) {
|
|||
|
return val.Key;
|
|||
|
})
|
|||
|
}
|
|||
|
]
|
|||
|
});
|
|||
|
var logChart = echarts.init(document.getElementById('logChart'));
|
|||
|
logChart.setOption(op);
|
|||
|
}
|
|||
|
});
|
|||
|
$.bc({
|
|||
|
url: "api/Analyse?logType=trace",
|
|||
|
callback: function (result) {
|
|||
|
$('#trace').lgbSparkline('val', result.Polylines.join(' '));
|
|||
|
var op = $.extend(true, {}, option, {
|
|||
|
legend: { data: ["访问数量"] },
|
|||
|
series: [
|
|||
|
{
|
|||
|
name: "访问数量",
|
|||
|
data: result.Datas.map(function (val, index) {
|
|||
|
return val.Value;
|
|||
|
})
|
|||
|
}
|
|||
|
],
|
|||
|
xAxis: [
|
|||
|
{
|
|||
|
data: result.Datas.map(function (val, index) {
|
|||
|
return val.Key;
|
|||
|
})
|
|||
|
}
|
|||
|
]
|
|||
|
});
|
|||
|
var traceChart = echarts.init(document.getElementById('traceChart'));
|
|||
|
traceChart.setOption(op);
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
var option = {
|
|||
|
title: {
|
|||
|
text: '',
|
|||
|
subtext: ''
|
|||
|
},
|
|||
|
tooltip: {
|
|||
|
trigger: 'axis'
|
|||
|
},
|
|||
|
legend: {
|
|||
|
data: ['日访问量']
|
|||
|
},
|
|||
|
toolbox: {
|
|||
|
show: true,
|
|||
|
feature: {
|
|||
|
mark: { show: true },
|
|||
|
dataZoom: { show: true },
|
|||
|
dataView: { show: false },
|
|||
|
magicType: { show: true, type: ['line', 'bar'] },
|
|||
|
restore: { show: true },
|
|||
|
saveAsImage: { show: true }
|
|||
|
}
|
|||
|
},
|
|||
|
calculable: true,
|
|||
|
dataZoom: {
|
|||
|
show: true,
|
|||
|
realtime: true,
|
|||
|
start: 0,
|
|||
|
end: 100
|
|||
|
},
|
|||
|
xAxis: [
|
|||
|
{
|
|||
|
type: 'category',
|
|||
|
boundaryGap: false,
|
|||
|
data: function () {
|
|||
|
var list = [];
|
|||
|
for (var i = 1; i <= 30; i++) {
|
|||
|
list.push('2013-03-' + i);
|
|||
|
}
|
|||
|
return list;
|
|||
|
}()
|
|||
|
}
|
|||
|
],
|
|||
|
yAxis: [
|
|||
|
{
|
|||
|
type: 'value'
|
|||
|
}
|
|||
|
],
|
|||
|
series: [
|
|||
|
{
|
|||
|
name: '日访问量',
|
|||
|
type: 'line',
|
|||
|
data: function () {
|
|||
|
var list = [];
|
|||
|
for (var i = 1; i <= 30; i++) {
|
|||
|
list.push(Math.round(Math.random() * 30));
|
|||
|
}
|
|||
|
return list;
|
|||
|
}()
|
|||
|
}
|
|||
|
]
|
|||
|
};
|
|||
|
});
|