1039
1039
//add for drill down
1040
1040
item.n_child = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(model), &iter);
1041
1041
g_array_append_vals(chart->items, &item, 1);
1043
DBDT( g_print(" append chartiem for colid0: '%s' n_child:%d\n", item.label, item.n_child) );
1044
1046
value = da_datarow_get_cell_sum (dr, colid);
1050
1052
chart->colsum[colid] += ABS(value);
1052
DBDT( g_print(" row=%d '%s', amt=%.2f colsum=%.2f\n", pos, label, value, chart->colsum[colid]) );
1054
DBDT( g_print(" row=%p pos(row)=%d col=%d '%s', amt=%.2f colsum=%.2f\n", dr, pos, colid, label, value, chart->colsum[colid]) );
1054
1056
if( value < 0.0 )
1055
1057
colmin += value;
1988
1990
//DBC( g_print(" %d '%s' %f\n", i, item->label, label_w) );
1991
drawctx->label_w = label_w;
1993
DBC( g_print(" raw label width:%f\n", label_w) );
1993
1995
drawctx->legend_font_h = (th / PANGO_SCALE);
1995
1997
//force ratio to avoid legend at bottom with too much items
1996
1998
if( floor(n_legend * drawctx->legend_font_h * CHART_LINE_SPACING) > drawctx->graph.height / 2 )
2000
ratio = GTK_ORIENTATION_HORIZONTAL;
1998
2001
DBC( g_print(" ratio forced to horiz\n") );
1999
ratio = GTK_ORIENTATION_HORIZONTAL;
2002
2004
// labels not much than 1/4 of width graph
2003
2005
if( ratio == GTK_ORIENTATION_HORIZONTAL )
2005
2007
gdouble lw = floor(drawctx->graph.width / 4);
2006
drawctx->legend_label_w = MIN(drawctx->label_w, lw);
2008
drawctx->legend_label_w = MIN(label_w, lw);
2009
DBC( g_print(" clamp label width:%f\n", drawctx->legend_label_w) );
2014
gdouble lw = floor((drawctx->graph.width - drawctx->legend_font_h - CHART_SPACING)*3/4);
2015
drawctx->legend_label_w = MIN(label_w, lw);
2009
2018
drawctx->legend.width = drawctx->legend_font_h + CHART_SPACING + drawctx->legend_label_w;
2687
2694
gdouble value, rate = 0.0;
2696
DBT( g_print("\n rowid=%d colid=%d\n", chart->hover, colid) );
2689
2698
if( colid > -1 )
2691
gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(chart->model), &iter, NULL, chart->hover);
2693
gtk_tree_model_get (GTK_TREE_MODEL(chart->model), &iter,
2694
//LST_STORE_TRENDROW=6
2695
LST_REPORT2_ROW, &dr,
2698
value = da_datarow_get_cell_sum (dr, colid);
2699
strval = chart_print_double(chart, chart->buffer1, value);
2701
if( chart->show_mono == TRUE )
2702
buffer = g_strdup_printf("%s\n%s", chart->collabel[colid], strval);
2703
if( chart->colindice < 0 )
2704
path = gtk_tree_path_new_from_indices(chart->hover, -1);
2706
path = gtk_tree_path_new_from_indices(chart->colindice, chart->hover, -1);
2708
valid = gtk_tree_model_get_iter(chart->model, &iter, path);
2709
gtk_tree_path_free(path);
2711
DBT( g_print("\n get iter %d:%d valid=%d\n", chart->colindice, chart->hover, valid) );
2705
if( chart->colsum[colid] > 0 )
2706
rate = (value * 100) / chart->colsum[colid];
2707
buffer = g_strdup_printf("%s\n%s\n%s\n%.2f%%", chart->collabel[colid], item->label, strval, rate);
2714
gtk_tree_model_get (GTK_TREE_MODEL(chart->model), &iter,
2715
//LST_STORE_TRENDROW=6
2716
LST_REPORT2_ROW, &dr,
2719
DBT( g_print(" row=%p\n", dr) );
2721
value = da_datarow_get_cell_sum (dr, colid);
2722
strval = chart_print_double(chart, chart->buffer1, value);
2724
if( chart->show_mono == TRUE )
2725
buffer = g_strdup_printf("%s\n%s", chart->collabel[colid], strval);
2728
if( chart->colsum[colid] > 0 )
2729
rate = (value * 100) / chart->colsum[colid];
2730
buffer = g_strdup_printf("%s\n%s\n%s\n%.2f%%", chart->collabel[colid], item->label, strval, rate);
2732
DBT( g_print(" colid=%d value=%.2f sum=%.2f rate=%.2f%%\n", colid, value, chart->colsum[colid], rate) );
2709
DBT( g_print(" colid=%d value=%.2f sum=%.2f rate=%.2f%%\n", colid, value, chart->colsum[colid], rate) );