MCSM: отображение некого графика
This commit is contained in:
@@ -1,5 +1,107 @@
|
|||||||
var ContentModule = React.createClass({
|
var NvLineChart = React.createClass({
|
||||||
|
sinAndCos: function(){
|
||||||
|
var sin = [],sin2 = [],cos = [];
|
||||||
|
|
||||||
|
//Data is represented as an array of {x,y} pairs.
|
||||||
|
for (var i = 0; i < 100; i++) {
|
||||||
|
sin.push({x: i, y: Math.sin(i/10)});
|
||||||
|
sin2.push({x: i, y: Math.sin(i/10) *0.25 + 0.5});
|
||||||
|
cos.push({x: i, y: .5 * Math.cos(i/10)});
|
||||||
|
}
|
||||||
|
|
||||||
|
//Line chart data should be sent as an array of series objects.
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
values: sin, //values - represents the array of {x,y} data points
|
||||||
|
key: 'Sine Wave', //key - the name of the series.
|
||||||
|
color: '#ff7f0e' //color - optional: choose your own line color.
|
||||||
|
},
|
||||||
|
{
|
||||||
|
values: cos,
|
||||||
|
key: 'Cosine Wave',
|
||||||
|
color: '#2ca02c'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
values: sin2,
|
||||||
|
key: 'Another sine wave',
|
||||||
|
color: '#7777ff',
|
||||||
|
area: true //area - set to true if you want this line to turn into a filled area chart.
|
||||||
|
}
|
||||||
|
];
|
||||||
|
},
|
||||||
render: function(){return(
|
render: function(){return(
|
||||||
ce(Panel, null, ce('h3', null, 'MS Server Manager is comming...'))
|
ce('div', {id: 'chart'}, ce('svg', {style: {'height': '500px'}}))
|
||||||
)}
|
)},
|
||||||
|
componentDidMount: function(){
|
||||||
|
var _this = this;
|
||||||
|
|
||||||
|
nv.addGraph(function() {
|
||||||
|
var chart = nv.models.lineChart().useInteractiveGuideline(true);
|
||||||
|
|
||||||
|
chart.xAxis.axisLabel('Time (ms)').tickFormat(d3.format(',r'));
|
||||||
|
|
||||||
|
chart.yAxis.axisLabel('Voltage (v)').tickFormat(d3.format('.02f'));
|
||||||
|
|
||||||
|
d3.select('#chart svg')
|
||||||
|
.datum(_this.sinAndCos())
|
||||||
|
.transition().duration(500)
|
||||||
|
.call(chart);
|
||||||
|
|
||||||
|
nv.utils.windowResize(chart.update);
|
||||||
|
return chart;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var ContentModule = React.createClass({
|
||||||
|
loadScript: function(url, fnLoad, fnError) {
|
||||||
|
const script = document.createElement("script");
|
||||||
|
script.src = url;
|
||||||
|
script.onload = fnLoad;
|
||||||
|
script.onerror = fnError;
|
||||||
|
document.body.appendChild(script);
|
||||||
|
},
|
||||||
|
loadStyle: function(url, fnLoad, fnError) {
|
||||||
|
const style = document.createElement("link");
|
||||||
|
style.rel = "stylesheet";
|
||||||
|
style.href = url;
|
||||||
|
style.onload = fnLoad;
|
||||||
|
style.onerror = fnError;
|
||||||
|
document.body.appendChild(style);
|
||||||
|
},
|
||||||
|
getInitialState: function(){return{
|
||||||
|
nvScriptReady: 0,
|
||||||
|
}},
|
||||||
|
componentWillMount: function(){
|
||||||
|
var _this = this;
|
||||||
|
|
||||||
|
this.loadScript(
|
||||||
|
"https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.17/d3.min.js",
|
||||||
|
function(){
|
||||||
|
_this.loadStyle("https://cdnjs.cloudflare.com/ajax/libs/nvd3/1.8.5/nv.d3.min.css");
|
||||||
|
_this.loadScript(
|
||||||
|
"https://cdnjs.cloudflare.com/ajax/libs/nvd3/1.8.5/nv.d3.js",
|
||||||
|
function(){ _this.setState({nvScriptReady: 1}); console.info('nv ok'); },
|
||||||
|
function(){ _this.setState({nvScriptReady: 2}); console.error('nv error load'); }
|
||||||
|
);
|
||||||
|
},
|
||||||
|
function(){ _this.setState({nvScriptReady: 2}); console.error('d3 error load'); }
|
||||||
|
);
|
||||||
|
},
|
||||||
|
render: function(){
|
||||||
|
var element;
|
||||||
|
if (this.state.nvScriptReady == 1) {
|
||||||
|
element = ce(NvLineChart);
|
||||||
|
} else if (this.state.nvScriptReady == 2) {
|
||||||
|
element = ce('span', null, 'error');
|
||||||
|
} else {
|
||||||
|
element = ce('span', null, 'loading...');
|
||||||
|
}
|
||||||
|
|
||||||
|
return(
|
||||||
|
ce(Panel, {title: 'MC Server Manager'},
|
||||||
|
element
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
});
|
});
|
||||||
Reference in New Issue
Block a user