package config

// defaults
var defaultParams = []*Param{
	&Param{
		Key:   "filterStr",
		Val:   "",
		Label: "Container Name or ID Filter",
	},
	&Param{
		Key:   "sortField",
		Val:   "state",
		Label: "Container Sort Field",
	},
	&Param{
		Key:   "columns",
		Val:   "status,name,id,cpu,mem,net,io,pids,uptime",
		Label: "Enabled Columns",
	},
}

type Param struct {
	Key   string
	Val   string
	Label string
}

// Get Param by key
func Get(k string) *Param {
	lock.RLock()
	defer lock.RUnlock()

	for _, p := range GlobalParams {
		if p.Key == k {
			return p
		}
	}
	return &Param{} // default
}

// GetVal gets Param value by key
func GetVal(k string) string {
	return Get(k).Val
}

// Set param value
func Update(k, v string) {
	p := Get(k)
	log.Noticef("config change [%s]: %s -> %s", k, quote(p.Val), quote(v))

	lock.Lock()
	defer lock.Unlock()
	p.Val = v
	// log.Errorf("ignoring update for non-existant parameter: %s", k)
}
