diff --git a/README.md b/README.md index 81ae7b8..04e4d1d 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,10 @@ goplot ====== -goplot是一个使用简单的绘制图表的工具,图表绘制使用了[Chart.js](http://www.chartjs.org/)开源库,编译好的goplot只有一个二进制文件,不依赖任何库/网络。 +goplot 是一个使用简单的绘制图表的工具,图表绘制使用了[Chart.js](http://www.chartjs.org/)开源库,编译好的goplot只有一个二进制文件,不依赖任何库/网络。 + +##### 下载 -##### 下 载 [Mac OS X](http://www.bigendian123.com/goplot-darwin.tar.gz) [Linux amd64](http://www.bigendian123.com/goplot-linux-amd64.tar.gz) @@ -11,10 +12,16 @@ goplot是一个使用简单的绘制图表的工具,图表绘制使用了[Char Windows暂缺 ##### 使用方法 -* 解压下载包后,进入解压目录,可以看到一个goplot的可执行文件和一些*.chart文件,这些chart文件是默认的一些数据文件样例。可以在这些chart文件的目录执行goplot,然后通过浏览器访问http://localhost:8000就可以看到图表了。 -* 你可以把`goplot`工具放到你的`PATH`中,在chart文件所在的目录执行goplot即可。 -* chart文件必须是.chart后缀名,内容可以参考源码examples目录中的例子。启动goplot的目录如果有多个chart文件,可以通过不断刷新网页来切换图表。 +* 解压下载包后,进入解压目录,可以看到一个 goplot 的可执行文件和一些 *.chart 文件,这些 chart 文件是默认的一些数据文件样例。可以在这些 chart 文件的目录执行 goplot,然后通过浏览器访问: 就可以看到图表了。 +* 你可以把 `goplot` 工具放到你的 `PATH` 中,在 chart 文件所在的目录执行 goplot 即可。 +* chart 文件必须是 .chart 后缀名,内容可以参考源码 examples 目录中的例子。启动 goplot 的目录如果有多个 chart 文件,可以通过不断刷新网页来切换图表。 + +.chart 文件定义了 Chart 的 Name,goplot 会根据该 Name 建立路由规则,访问对应 Name 的 Chart 规则为: + +```url +http://localhost:8000/\ +``` ##### 曲线图 ![](image/line.png) diff --git a/server.go b/server.go index 6c5d94e..c05e3b7 100644 --- a/server.go +++ b/server.go @@ -2,6 +2,7 @@ package main import ( "net/http" + "strings" "text/template" ) @@ -78,7 +79,17 @@ func handler(w http.ResponseWriter, r *http.Request) { w.Write([]byte(err.Error())) return } else { - chart = ChartHandlers[prop.Name] + var ok bool + urls := strings.Split(r.URL.String(), "/") + if 2 > len(urls) { + w.Write([]byte(err.Error())) + return + } + chart, ok = ChartHandlers[urls[1]] + if !ok { + w.Write([]byte(err.Error())) + return + } canvas := chart.Canvas("line", prop.Height, prop.Width) Args["Canvas"] = canvas