Exemple #1
0
// GraphURL2D returns a link to a bar graph displaying particular graph data.
// GraphURL2D returns nil if given graph data of length 0 in either dimension.
func (b *BarGraph) GraphURL2D(gd GraphData2D) *url.URL {
	xlength := gd.XLen()
	ylength := gd.YLen()
	if xlength <= 0 || ylength <= 0 {
		return nil
	}
	labels := make([]string, xlength)
	titles := make([]string, ylength)
	values := make([][]int64, ylength)
	var includeChdl bool
	for y := range values {
		titles[y] = gd.YLabel(y)
		if titles[y] != "" {
			includeChdl = true
		}
		values[y] = make([]int64, xlength)
	}
	for x := range labels {
		labels[x] = gd.XLabel(x)
		for y := range values {
			values[y][x] = gd.Value(x, y)
		}
	}
	max := maxInt64(values...)
	if max == 0 {
		max = 1
	}
	for i := 0; i < b.Scale; i++ {
		max = (max + 9) / 10
	}
	actualMax := max
	for i := 0; i < b.Scale; i++ {
		max *= 10
	}

	encoded := encodeInt64(max, values...)
	url, _ := url.Parse("http://chart.apis.google.com/chart")
	urlParams := []string{
		"chs", "500x250",
		"cht", "bvg",
		"chco", encodeColors(len(values), b.Palette, ","),
		"chd", encoded,
		"chxt", "x,y",
		"chbh", "a",
		"chxr", fmt.Sprintf("1,0,%d", actualMax),
		"chxl", fmt.Sprintf("0:|%s", strings.Join(labels, "|")),
		"chdl", strings.Join(titles, "|")}
	// If we aren't including chdl parameter, chop it off of end of parameter
	// list
	if !includeChdl {
		urlParams = urlParams[:len(urlParams)-2]
	}
	return http_util.AppendParams(url, urlParams...)
}
Exemple #2
0
// GraphURL returns a link to a pie graph displaying particular graph data.
// GraphURL returns nil if given graph data of length 0.
func (p *PieGraph) GraphURL(gd GraphData) *url.URL {
	length := gd.Len()
	if length <= 0 {
		return nil
	}
	labels := make([]string, length)
	values := make([]int64, length)
	for idx := range labels {
		labels[idx] = gd.Label(idx)
		values[idx] = gd.Value(idx)
	}
	encoded := encodeInt64(maxInt64(values), values)
	url, _ := url.Parse("http://chart.apis.google.com/chart")
	return http_util.AppendParams(
		url,
		"chs", "500x250",
		"cht", "p3",
		"chco", encodeColors(len(values), p.Palette, "|"),
		"chd", encoded,
		"chdl", strings.Join(labels, "|"))
}