Trong ứng dụng Góc của chúng tôi, chúng tôi đang sử dụng highcarts-ng để thực hiện HighCharts của chúng tôi.HighCharts: Cách sử dụng reflow để cho phép tự động thay đổi kích thước sau khi thay đổi kích thước
Đây là Chart Tối đa hóa và Giảm thiểu chức năng, hoạt động:
function expandChartPanel() {
vm.chartMaxed = !vm.chartMaxed;
viewHeader = ScopeFactory.getScope('viewHeader');
highChart = ScopeFactory.getScope('highChart');
var chart = highChart.chartObject;
var highChartContainer = document.getElementById("highchart-container");
var highChartContainerWidth = document.getElementById('highchart-container').clientWidth;
var highChartContainerHeight = document.getElementById('highchart-container').clientHeight;
var windowWidth = window.innerWidth;
var windowHeight = window.innerHeight;
if (vm.chartMaxed) {
vs.savedWidth = highChartContainerWidth;
vs.savedHeight = highChartContainerHeight;
console.log('savedWidth = ', vs.savedWidth);
console.log('savedHeight = ', vs.savedHeight);
root.chartExpanded = true;
viewHeader.vh.chartExpanded = true;
highChart.highChartMax = true;
highChartContainerHeight = document.getElementById('highchart-container').clientHeight;
windowWidth = window.innerWidth;
windowHeight = window.innerHeight;
highChart.chartConfig.size.width = windowWidth;
highChart.chartConfig.size.height = windowHeight - 220;
chart.setSize(windowWidth, windowHeight - 220);
}
else {
root.chartExpanded = false;
viewHeader.vh.chartExpanded = false;
highChart.highChartMax = false;
highChart.chartConfig.size.width = vs.savedWidth;
highChart.chartConfig.size.height = vs.savedHeight;
chart.setSize(vs.savedWidth, vs.savedHeight);
}
highChart.restoreChartSize();
}
Dưới đây là chức năng reflow:
function restoreChartSize() {
console.log('restoreChartSize');
if (!vs.chartObject.reflowNow) {
vs.chartObject.reflowNow = vs.chartObject.reflowNow = function() {
this.containerHeight = this.options.chart.height || window.window.HighchartsAdapter.adapterRun(this.renderTo, 'height');
this.containerWidth = this.options.chart.width || window.window.HighchartsAdapter.adapterRun(this.renderTo, 'width');
this.setSize(this.containerWidth, this.containerHeight, true);
this.hasUserSize = null;
}
}
vs.chartObject.reflowNow();
}
Chức năng này reflow trên, hoạt động hoàn hảo trong jsFiddle này, nhưng không phải trong ứng dụng của chúng tôi.
The full Gist file of our HighChartsDirective file.
Sau khi nhấp vào Phóng to, biểu đồ sẽ mở rộng đến kích thước đầy đủ của cửa sổ trình duyệt, nhưng sau khi kéo để thay đổi kích thước cửa sổ trình duyệt, tôi gọi hàm restoreChartSize
, kích hoạt chỉnh lại.
Tuy nhiên kích thước của bảng xếp hạng không đi để tự động kích thước 100% 100%, nó đi trở lại kích thước ban đầu của bảng xếp hạng :(
Sau Tối đa hóa chức năng:
Bây giờ sau khi thay đổi kích thước cửa sổ trình duyệt:
window.onresize = function(event) {
console.log('window resizing...');
highChart = ScopeFactory.getScope('highChart');
highChart.restoreChartSize();
console.log('highChart.chartConfig = ', highChart.chartConfig);
};
^trở lại kích thước tĩnh nhỏ hơn, không tự động kích thước 100%
Cảm ơn, nhưng q nhanh chóng, chúng tôi don 't init biểu đồ với 'var chart = new Highcharts.Chart ({' Đây là Gist đầy đủ của hàm DisplayChart của chúng tôi, làm cách nào để tạo biến để kết nối với biểu đồ? https://gist.github.com/leongaban/2e1e1c5cf2cd76e9b3a6 –
@LeonGaban cập nhật câu trả lời mà bạn có thể sử dụng dựa trên ý chính của bạn. Chỉ cần nhớ làm gì đó sau khi biểu đồ đã được khởi tạo. – Shaunak
Ugh Tôi vẫn không thể nhận được biểu đồ được liên kết chính xác, tôi đã thêm mã ở trên, nếu tôi vẫn gặp sự cố sau này ... có thể phải yêu cầu nhà phát triển khác cấu trúc lại mã của mình để biết cách thiết lập highcharts trong jsfiddle –