~metta-crawler/homebank/copy-editing

« back to all changes in this revision

Viewing changes to src/gtk-chart.c

  • Committer: Maxime Doyen
  • Date: 2023-10-11 20:24:04 UTC
  • Revision ID: homebank@free.fr-20231011202404-ysmmgu051iobpz9n
5.7.1 release

Show diffs side-by-side

added added

removed removed

Lines of Context:
935
935
guint nbrows, nbcols;
936
936
guint rowid, colid;
937
937
 
938
 
        DBDT( g_print("\n[chart] time data series\n") );
 
938
        DBDT( g_print("------\n[chart] time data series\n") );
939
939
 
940
940
        model  = chart->model;
941
941
        nbcols = chart->nb_cols;
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);
 
1042
                                
 
1043
                                DBDT( g_print("  append chartiem for colid0: '%s' n_child:%d\n", item.label, item.n_child) );
1042
1044
                        }
1043
1045
 
1044
1046
                        value = da_datarow_get_cell_sum (dr, colid);
1049
1051
                        }*/
1050
1052
                        chart->colsum[colid] += ABS(value);
1051
1053
 
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]) );
1053
1055
 
1054
1056
                        if( value < 0.0 )
1055
1057
                                colmin += value;
1988
1990
                                //DBC( g_print(" %d '%s' %f\n", i, item->label, label_w) );
1989
1991
                        }
1990
1992
 
1991
 
                        drawctx->label_w = label_w;
 
1993
                        DBC( g_print(" raw label width:%f\n", label_w) );
1992
1994
 
1993
1995
                        drawctx->legend_font_h = (th / PANGO_SCALE);
1994
1996
 
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 )
1997
1999
                        {
 
2000
                                ratio = GTK_ORIENTATION_HORIZONTAL;
1998
2001
                                DBC( g_print(" ratio forced to horiz\n") );
1999
 
                                ratio = GTK_ORIENTATION_HORIZONTAL;
2000
2002
                        }
2001
2003
 
2002
2004
                        // labels not much than 1/4 of width graph
2003
2005
                        if( ratio == GTK_ORIENTATION_HORIZONTAL )
2004
2006
                        {
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) );
 
2010
                        }
 
2011
                        //#2037597
 
2012
                        else
 
2013
                        {
 
2014
                                gdouble lw = floor((drawctx->graph.width - drawctx->legend_font_h - CHART_SPACING)*3/4);
 
2015
                                drawctx->legend_label_w = MIN(label_w, lw);
2007
2016
                        }
2008
2017
 
2009
2018
                        drawctx->legend.width  = drawctx->legend_font_h + CHART_SPACING + drawctx->legend_label_w;
2033
2042
                                //drawctx->legend.width += CHART_SPACING + drawctx->legend_value_w + CHART_SPACING + drawctx->legend_rate_w;
2034
2043
                        }
2035
2044
 
2036
 
 
2037
 
 
2038
2045
                        //5.7 hide legend if not enough room
2039
2046
                        //#1964434 maximize chart size
2040
2047
                        chart->legend_visible = FALSE;
2686
2693
                        DataRow *dr;
2687
2694
                        gdouble value, rate = 0.0;
2688
2695
 
 
2696
                                DBT( g_print("\n   rowid=%d colid=%d\n", chart->hover, colid) );
 
2697
 
2689
2698
                                if( colid > -1 )
2690
2699
                                {
2691
 
                                        gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(chart->model), &iter, NULL, chart->hover);
2692
 
                                        
2693
 
                                        gtk_tree_model_get (GTK_TREE_MODEL(chart->model), &iter,
2694
 
                                                //LST_STORE_TRENDROW=6
2695
 
                                                LST_REPORT2_ROW, &dr,
2696
 
                                                -1);
 
2700
                                GtkTreePath *path;
 
2701
                                gboolean valid;
2697
2702
 
2698
 
                                        value = da_datarow_get_cell_sum (dr, colid);
2699
 
                                        strval = chart_print_double(chart, chart->buffer1, value);
2700
 
                                        
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);
2703
2705
                                        else
 
2706
                                                path = gtk_tree_path_new_from_indices(chart->colindice, chart->hover, -1);
 
2707
                        
 
2708
                                        valid = gtk_tree_model_get_iter(chart->model, &iter, path);
 
2709
                                        gtk_tree_path_free(path);
 
2710
 
 
2711
                                        DBT( g_print("\n   get iter %d:%d valid=%d\n", chart->colindice, chart->hover, valid) );
 
2712
                                        if( valid )
2704
2713
                                        {
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,
 
2717
                                                        -1);
 
2718
 
 
2719
                                                DBT( g_print("   row=%p\n", dr) );
 
2720
 
 
2721
                                                value = da_datarow_get_cell_sum (dr, colid);
 
2722
                                                strval = chart_print_double(chart, chart->buffer1, value);
 
2723
                                                
 
2724
                                                if( chart->show_mono == TRUE )
 
2725
                                                        buffer = g_strdup_printf("%s\n%s", chart->collabel[colid], strval);
 
2726
                                                else
 
2727
                                                {
 
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);
 
2731
                                                }
 
2732
                                                DBT( g_print(" colid=%d value=%.2f sum=%.2f rate=%.2f%%\n", colid, value, chart->colsum[colid], rate) );
 
2733
 
2708
2734
                                        }
2709
 
                                        DBT( g_print(" colid=%d value=%.2f sum=%.2f rate=%.2f%%\n", colid, value, chart->colsum[colid], rate) );
2710
2735
                                }
2711
2736
                        }
2712
2737
                }