本文整理汇总了Golang中github.com/GeoNet/mtr/ts.Plot.SetThreshold方法的典型用法代码示例。如果您正苦于以下问题:Golang Plot.SetThreshold方法的具体用法?Golang Plot.SetThreshold怎么用?Golang Plot.SetThreshold使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/GeoNet/mtr/ts.Plot
的用法示例。
在下文中一共展示了Plot.SetThreshold方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: plot
/*
plot draws an svg plot to b.
Valid values for resolution are 'minute', 'five_minutes', 'hour'.
*/
func (f fieldMetric) plot(deviceID, typeID, resolution string, plotter ts.SVGPlot, b *bytes.Buffer) *weft.Result {
// we need the devicePK often so read it once.
var devicePK int
if err := dbR.QueryRow(`SELECT devicePK FROM field.device WHERE deviceID = $1`,
deviceID).Scan(&devicePK); err != nil {
if err == sql.ErrNoRows {
return &weft.NotFound
}
return weft.InternalServerError(err)
}
var typePK int
var scale float64
var display string
if err := dbR.QueryRow(`SELECT typePK, scale, display FROM field.type WHERE typeID = $1`,
typeID).Scan(&typePK, &scale, &display); err != nil {
if err == sql.ErrNoRows {
return &weft.NotFound
}
return weft.InternalServerError(err)
}
var p ts.Plot
p.SetUnit(display)
var rows *sql.Rows
var err error
var lower, upper int
if err := dbR.QueryRow(`SELECT lower,upper FROM field.threshold
WHERE devicePK = $1 AND typePK = $2`,
devicePK, typePK).Scan(&lower, &upper); err != nil && err != sql.ErrNoRows {
return weft.InternalServerError(err)
}
if !(lower == 0 && upper == 0) {
p.SetThreshold(float64(lower)*scale, float64(upper)*scale)
}
var tags []string
if rows, err = dbR.Query(`SELECT tag FROM field.metric_tag JOIN mtr.tag USING (tagpk) WHERE
devicePK = $1 AND typePK = $2
ORDER BY tag asc`,
devicePK, typePK); err != nil {
return weft.InternalServerError(err)
}
defer rows.Close()
for rows.Next() {
var s string
if err = rows.Scan(&s); err != nil {
return weft.InternalServerError(err)
}
tags = append(tags, s)
}
rows.Close()
p.SetSubTitle("Tags: " + strings.Join(tags, ","))
var mod string
// TODO move into first select for devicePK
if err = dbR.QueryRow(`SELECT modelid FROM field.device JOIN field.model using (modelpk)
WHERE devicePK = $1`,
devicePK).Scan(&mod); err != nil && err != sql.ErrNoRows {
return weft.InternalServerError(err)
}
p.SetTitle(fmt.Sprintf("Device: %s, Model: %s, Metric: %s", deviceID, mod, strings.Title(typeID)))
switch resolution {
case "minute":
p.SetXAxis(time.Now().UTC().Add(time.Hour*-12), time.Now().UTC())
p.SetXLabel("12 hours")
case "five_minutes":
p.SetXAxis(time.Now().UTC().Add(time.Hour*-24*2), time.Now().UTC())
p.SetXLabel("48 hours")
case "hour":
p.SetXAxis(time.Now().UTC().Add(time.Hour*-24*28), time.Now().UTC())
p.SetXLabel("4 weeks")
default:
return weft.BadRequest("invalid resolution")
}
var timeRange []time.Time
if timeRange, err = defaultTimeRange(resolution); err != nil {
return weft.InternalServerError(err)
}
rows, err = queryMetricRows(devicePK, typePK, resolution, timeRange)
if err != nil {
return weft.InternalServerError(err)
//.........这里部分代码省略.........
示例2: dataLatencyPlot
func dataLatencyPlot(siteID, typeID, resolution string, plotter ts.SVGPlot, b *bytes.Buffer) *weft.Result {
var err error
// we need the sitePK often so read it once.
var sitePK int
if err = dbR.QueryRow(`SELECT sitePK FROM data.site WHERE siteID = $1`,
siteID).Scan(&sitePK); err != nil {
if err == sql.ErrNoRows {
return &weft.NotFound
}
return weft.InternalServerError(err)
}
var typePK int
var scale float64
var display string
if err = dbR.QueryRow(`SELECT typePK, scale, display FROM data.type WHERE typeID = $1`,
typeID).Scan(&typePK, &scale, &display); err != nil {
if err == sql.ErrNoRows {
return &weft.NotFound
}
return weft.InternalServerError(err)
}
var p ts.Plot
p.SetUnit(display)
var lower, upper int
if err := dbR.QueryRow(`SELECT lower,upper FROM data.latency_threshold
WHERE sitePK = $1 AND typePK = $2`,
sitePK, typePK).Scan(&lower, &upper); err != nil && err != sql.ErrNoRows {
return weft.InternalServerError(err)
}
if !(lower == 0 && upper == 0) {
p.SetThreshold(float64(lower)*scale, float64(upper)*scale)
}
var tags []string
var rows *sql.Rows
if rows, err = dbR.Query(`SELECT tag FROM data.latency_tag JOIN mtr.tag USING (tagpk) WHERE
sitePK = $1 AND typePK = $2
ORDER BY tag asc`,
sitePK, typePK); err != nil {
return weft.InternalServerError(err)
}
defer rows.Close()
for rows.Next() {
var s string
if err = rows.Scan(&s); err != nil {
return weft.InternalServerError(err)
}
tags = append(tags, s)
}
rows.Close()
p.SetSubTitle("Tags: " + strings.Join(tags, ","))
p.SetTitle(fmt.Sprintf("Site: %s - %s", siteID, strings.Title(typeID)))
// TODO - loading avg(mean) at each resolution. Need to add max(fifty) and max(ninety) when there are some values.
switch resolution {
case "minute":
p.SetXAxis(time.Now().UTC().Add(time.Hour*-12), time.Now().UTC())
p.SetXLabel("12 hours")
case "five_minutes":
p.SetXAxis(time.Now().UTC().Add(time.Hour*-24*2), time.Now().UTC())
p.SetXLabel("48 hours")
case "hour":
p.SetXAxis(time.Now().UTC().Add(time.Hour*-24*28), time.Now().UTC())
p.SetXLabel("4 weeks")
default:
return weft.BadRequest("invalid resolution")
}
if err != nil {
return weft.InternalServerError(err)
}
var timeRange []time.Time
if timeRange, err = defaultTimeRange(resolution); err != nil {
weft.InternalServerError(err)
}
rows, err = queryLatencyRows(sitePK, typePK, resolution, timeRange)
defer rows.Close()
pts := make(map[internal.ID]([]ts.Point))
var mean float64
var fifty int
var ninety int
var pt ts.Point
for rows.Next() {
if err = rows.Scan(&pt.DateTime, &mean, &fifty, &ninety); err != nil {
//.........这里部分代码省略.........