के साथ मैं ब्राउज़र में कुछ चार्ट उत्पन्न करने के लिए HighStock का उपयोग कर रहा हूं। लेकिन अब मैं उनमें से कुछ को सर्वर पर स्टोर करना चाहता हूं। तो मुझे पता है कि हाईचर्ट्स को सर्वर पर निर्यात किया जा सकता है लेकिन यदि संभव हो तो मैं किसी अन्य तरीके का उपयोग करूंगा। बात सर्वर पर हाईस्टॉक चलाने और svg को कुछ छवि प्रारूप में कनवर्ट करना है और फिर उसे वहां स्टोर करना है।सर्वर-साइड हाईस्टॉक चार्ट पीढ़ी नोडजेएस
त्वरित googling मुझे this page देता है। हाईचर्ट्स और नोडजेएस का संयोजन सही तरीका प्रतीत होता है लेकिन यह समाधान हाईचर्ट्स के नए संस्करणों के लिए काम नहीं करता है। दरअसल, (v0.2.10 - नवीनतम) jsdom मॉड्यूल का उपयोग कर Highstock v1.0.2 साथ NodeJS में (निम्न कोड को देखो):
Error: Invalid character: Invalid character in tag name: <
किसी तरह इन दो:
var jsdom = require('jsdom');
var fs = require('fs');
var jQuery = fs.readFileSync('./js/jquery-1.7.min.js').toString();
var Highstock = fs.readFileSync('./js/highstock.js').toString();
jsdom.env({
html: '<div id="container"></div>',
src: [ jQuery, Highstock ],
done: function(errors, window) {
if (errors) return console.log(errors);
var Highcharts = window.Highcharts;
var chart = new Highcharts.Chart(options);
}
});
एक अपवाद फेंकता पुस्तकालय एक साथ काम नहीं कर रहे हैं। तो यह हाईस्टॉक के पुराने संस्करणों के साथ काम कर सकता है लेकिन वास्तव में मुझे हाईस्टॉक v1.0.2 की आवश्यकता है।
क्या इस समस्या के लिए कोई समाधान है? कुछ बेहतर लाइब्रेरी jsdom
? या कुछ अजीब अभी तक काम कर रहे चाल? किसी भी विचार की सराहना की। :)
// संपादित
recoder के लिए धन्यवाद मैं यह काम कर रहा करने के लिए प्रबंधित किया है। मुख्य बात forExport
विकल्पों को ध्वज (अपवाद को रोकने) को जोड़ना था। दुर्भाग्य से इसने चार्ट बनाया लेकिन धारक को अपडेट नहीं किया। मैंने exporting
मॉड्यूल (हाईस्टॉक पैकेज का हिस्सा) जोड़ने के बाद इसे काम करने में कामयाब रहा है। पूर्ण काम कर कोड इस तरह दिखता है:
var jsdom = require('jsdom');
var fs = require('fs');
var jQuery = fs.readFileSync('./js/jquery-1.7.min.js').toString();
var Highstock = fs.readFileSync('./js/highstock.src.js').toString();
var Exporting = fs.readFileSync('./js/exporting.src.js').toString();
jsdom.env({
html: '<div id="container"></div>',
src: [ jQuery, Highstock, Exporting ],
done: function(errors, window) {
if (errors) return console.log(errors);
var Highcharts = window.Highcharts;
var chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
animation: false,
forExport: true
},
exporting: { enabled: false },
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
series: [{
animation: false,
name: 'Tokyo',
data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
}, {
animation: false,
name: 'New York',
data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5]
}, {
animation: false,
name: 'Berlin',
data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0]
}, {
animation: false,
name: 'London',
data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8]
}]
});
var svg = chart.getSVG();
fs.writeFile("./test.svg", svg, function(err) {
if(err) {
console.log(err);
} else {
console.log("The file was saved!");
}
});
}
});
चार्ट के रूप में अच्छा के रूप में यह होना चाहिए (उदाहरण के लिए बुरी तरह से रखा लेबल) नहीं है, लेकिन शायद यह ट्यूनिंग विकल्प की बात है। कम से कम यह काम करता है!
आपकी परियोजना में रूचि रखते हैं, क्या इसके लिए कोई साइट है? – bouncingHippo
अगर मैं सर्वर पर चीजों को स्टोर करने का इरादा नहीं रखता, तो क्या मुझे अभी भी नोडजेएस का उपयोग करने की आवश्यकता है? मैं सिर्फ वेब साइट को याहू फाइनेंस से सीधे डेटा प्राप्त करना चाहता हूं और इसे हाईस्टॉक्स/हाईचर्ट्स – bouncingHippo
@bouncingHippo No का उपयोग करके प्लॉट करना चाहता हूं, आपको नोडजेएस का उपयोग करने की आवश्यकता नहीं है। और यह वास्तव में एक परियोजना नहीं है, मैं बस सर्वर-साइड छवि उत्पादन का परीक्षण कर रहा हूं। दुर्भाग्यवश यह काम नहीं कर रहा था क्योंकि मुझे उम्मीद थी कि यह काम करेगी, इसलिए मैंने इसे छोड़ दिया है। – freakish