Anonymous
AnyChart TreeMap не обновляет данные на экране
Сообщение
Anonymous » 27 апр 2024, 23:41
AnyChart TreeMap не обновляет
данные экрана , несмотря на то, что набор данных был изменен. У меня есть следующий код:
Код: Выделить всё
private void makeChart()
{
List data = new ArrayList();
List
> groups = chartActivity.getGroups();
// code skipped
data.add(new CustomTreeDataEntry(rootKey, null, rootKey));
List nonZero = groups.stream().filter(group -> group.second.intValue() != 0).collect(Collectors.toList());
for (Pair pair : groups)
{
Category c = pair.first;
String parent = c.getParent() == null ? rootKey : categories.stream()
.filter(item -> item.getId().equals(c.getParent()))
.findFirst()
.get()
.getName();
Log.d(this.getClass().getName(), "[makeChart] " + c.getName() + " " + pair.second.intValue());
data.add(new CustomTreeDataEntry(c.getName(), parent, c.getName(), pair.second.intValue(), c));
}
TreeMap treeMap = AnyChart.treeMap();
treeMap.data(data, TreeFillingMethod.AS_TABLE);
Title title = treeMap.title();
title.text(wp.getTitle());
title.enabled(true);
title.useHtml(true);
title.padding(0d, 0d, 20d, 0d);
treeMap.colorScale().colors(new String[]{
"#ffee58", "#fbc02d", "#f57f17", "#c0ca33", "#689f38", "#2e7d32"
});
treeMap.colorScale().ranges(colorScale);
treeMap.padding(10d, 10d, 10d, 20d);
treeMap.maxDepth(2d);
treeMap.hovered().fill("#bdbdbd", 1d);
treeMap.selectionMode(SelectionMode.NONE);
treeMap.setOnClickListener(new OnClickListener(new String[]{"category"})
{
@Override
public void onClick(Event event)
{
String uuid = event.getData().get("category");
chartActivity.bringTransactionsFragment(uuid);
}
});
treeMap.labels().useHtml(true);
treeMap.labels().fontColor("#212121");
treeMap.labels().fontSize(12d);
treeMap.labels().format(
"function() {\n" +
" return this.getData('product') + ' ' + anychart.format.number(this.value, {groupsSeparator: ' '});\n" +
" }");
treeMap.headers().format(
"function() {\n" +
" return this.getData('product')\n" +
" }");
treeMap.tooltip()
.useHtml(true)
.titleFormat("{%product}")
.format("function() {\n" +
" return '₽' +\n" +
" anychart.format.number(this.value, {\n" +
" groupsSeparator: ' '\n" +
" });\n" +
" }");
anyChartView = root.findViewById(R.id.any_chart_view);
anyChartView.setChart(treeMap);}
Как видите, я каждый раз воссоздаю полную диаграмму. Но данные на экране не изменяются и не совпадают с данными в объекте
data . Я попытался сделать диаграмму недействительной, но ничего нового не получил. Какой волшебный способ обновить экран графика?
Подробнее здесь:
https://stackoverflow.com/questions/783 ... -on-screen
1714250499
Anonymous
AnyChart TreeMap не обновляет [b]данные экрана[/b], несмотря на то, что набор данных был изменен. У меня есть следующий код: [code] private void makeChart() { List data = new ArrayList(); List > groups = chartActivity.getGroups(); // code skipped data.add(new CustomTreeDataEntry(rootKey, null, rootKey)); List nonZero = groups.stream().filter(group -> group.second.intValue() != 0).collect(Collectors.toList()); for (Pair pair : groups) { Category c = pair.first; String parent = c.getParent() == null ? rootKey : categories.stream() .filter(item -> item.getId().equals(c.getParent())) .findFirst() .get() .getName(); Log.d(this.getClass().getName(), "[makeChart] " + c.getName() + " " + pair.second.intValue()); data.add(new CustomTreeDataEntry(c.getName(), parent, c.getName(), pair.second.intValue(), c)); } TreeMap treeMap = AnyChart.treeMap(); treeMap.data(data, TreeFillingMethod.AS_TABLE); Title title = treeMap.title(); title.text(wp.getTitle()); title.enabled(true); title.useHtml(true); title.padding(0d, 0d, 20d, 0d); treeMap.colorScale().colors(new String[]{ "#ffee58", "#fbc02d", "#f57f17", "#c0ca33", "#689f38", "#2e7d32" }); treeMap.colorScale().ranges(colorScale); treeMap.padding(10d, 10d, 10d, 20d); treeMap.maxDepth(2d); treeMap.hovered().fill("#bdbdbd", 1d); treeMap.selectionMode(SelectionMode.NONE); treeMap.setOnClickListener(new OnClickListener(new String[]{"category"}) { @Override public void onClick(Event event) { String uuid = event.getData().get("category"); chartActivity.bringTransactionsFragment(uuid); } }); treeMap.labels().useHtml(true); treeMap.labels().fontColor("#212121"); treeMap.labels().fontSize(12d); treeMap.labels().format( "function() {\n" + " return this.getData('product') + ' ' + anychart.format.number(this.value, {groupsSeparator: ' '});\n" + " }"); treeMap.headers().format( "function() {\n" + " return this.getData('product')\n" + " }"); treeMap.tooltip() .useHtml(true) .titleFormat("{%product}") .format("function() {\n" + " return '₽' +\n" + " anychart.format.number(this.value, {\n" + " groupsSeparator: ' '\n" + " });\n" + " }"); anyChartView = root.findViewById(R.id.any_chart_view); anyChartView.setChart(treeMap);} [/code] Как видите, я каждый раз воссоздаю полную диаграмму. Но данные на экране не изменяются и не совпадают с данными в объекте [b]data[/b]. Я попытался сделать диаграмму недействительной, но ничего нового не получил. Какой волшебный способ обновить экран графика? Подробнее здесь: [url]https://stackoverflow.com/questions/78396352/anychart-treemap-does-not-update-data-on-screen[/url]