sampler-fork/config/component.go

91 lines
2.3 KiB
Go
Raw Normal View History

2019-02-26 04:36:23 +00:00
package config
import (
"github.com/sqshq/sampler/component/asciibox"
"github.com/sqshq/sampler/data"
ui "github.com/sqshq/termui"
)
type ComponentConfig struct {
Title string `yaml:"title"`
RefreshRateMs *int `yaml:"refresh-rate-ms,omitempty"`
Position Position `yaml:"position"`
Size Size `yaml:"size"`
}
2019-03-03 19:35:29 +00:00
type TriggerConfig struct {
2019-03-03 23:35:32 +00:00
Title string `yaml:"title"`
Condition string `yaml:"condition"`
Actions *ActionsConfig `yaml:"actions,omitempty"`
2019-03-03 19:35:29 +00:00
}
2019-03-03 23:35:32 +00:00
type ActionsConfig struct {
TerminalBell *bool `yaml:"terminal-bell,omitempty"`
Sound *bool `yaml:"sound,omitempty"`
Visual *bool `yaml:"visual,omitempty"`
Script *string `yaml:"script,omitempty"`
2019-03-03 19:35:29 +00:00
}
2019-02-26 04:36:23 +00:00
type GaugeConfig struct {
ComponentConfig `yaml:",inline"`
2019-03-03 23:35:32 +00:00
Triggers []TriggerConfig `yaml:"triggers"`
2019-02-26 04:36:23 +00:00
Scale *int `yaml:"scale,omitempty"`
Color *ui.Color `yaml:"color,omitempty"`
Values map[string]string `yaml:"values"`
2019-02-27 04:23:56 +00:00
Items []data.Item `yaml:",omitempty"`
2019-02-26 04:36:23 +00:00
}
type BarChartConfig struct {
ComponentConfig `yaml:",inline"`
2019-03-03 23:35:32 +00:00
Triggers []TriggerConfig `yaml:"triggers"`
Scale *int `yaml:"scale,omitempty"`
Items []data.Item `yaml:"items"`
2019-02-26 04:36:23 +00:00
}
type AsciiBoxConfig struct {
ComponentConfig `yaml:",inline"`
2019-03-03 23:35:32 +00:00
Triggers []TriggerConfig `yaml:"triggers"`
2019-02-26 04:36:23 +00:00
data.Item `yaml:",inline"`
Font *asciibox.AsciiFont `yaml:"font,omitempty"`
}
type RunChartConfig struct {
ComponentConfig `yaml:",inline"`
2019-03-03 23:35:32 +00:00
Triggers []TriggerConfig `yaml:"triggers"`
Legend *LegendConfig `yaml:"legend,omitempty"`
Scale *int `yaml:"scale,omitempty"`
Items []data.Item `yaml:"items"`
2019-02-26 04:36:23 +00:00
}
type LegendConfig struct {
Enabled bool `yaml:"enabled"`
Details bool `yaml:"details"`
}
type Position struct {
X int `yaml:"w"`
Y int `yaml:"h"`
}
type Size struct {
X int `yaml:"w"`
Y int `yaml:"h"`
}
type ComponentType rune
const (
TypeRunChart ComponentType = 0
TypeBarChart ComponentType = 1
TypeTextBox ComponentType = 2
TypeAsciiBox ComponentType = 3
TypeGauge ComponentType = 4
)
type ComponentSettings struct {
Type ComponentType
Title string
Size Size
Position Position
}