Id should always represent position in file
This commit is contained in:
parent
8a9e6c2bec
commit
6ea3390313
3
sort.go
3
sort.go
@ -34,9 +34,6 @@ func (timerlist *TimerList) Sort(sortFlag int) error {
|
|||||||
}
|
}
|
||||||
func (timerlist *TimerList) refresh() {
|
func (timerlist *TimerList) refresh() {
|
||||||
timerlist.Sort(timerlist.SortFlag)
|
timerlist.Sort(timerlist.SortFlag)
|
||||||
for i, t := range timerlist.Timers {
|
|
||||||
t.Id = i
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type timerlistSort struct {
|
type timerlistSort struct {
|
||||||
|
34
timerlist.go
34
timerlist.go
@ -184,6 +184,16 @@ func (timerlist *TimerList) GetActiveTimers() *TimerList {
|
|||||||
return &t
|
return &t
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (timerlist *TimerList) GetNextId() int {
|
||||||
|
nextId := 0
|
||||||
|
for _, v := range timerlist.Timers {
|
||||||
|
if v.Id > nextId {
|
||||||
|
nextId = v.Id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nextId + 1
|
||||||
|
}
|
||||||
|
|
||||||
// String returns a complete list of timers in timer.txt format.
|
// String returns a complete list of timers in timer.txt format.
|
||||||
func (timerlist *TimerList) String() string {
|
func (timerlist *TimerList) String() string {
|
||||||
var ret string
|
var ret string
|
||||||
@ -195,14 +205,16 @@ func (timerlist *TimerList) String() string {
|
|||||||
|
|
||||||
// AddTimer prepends a Timer to the current TimerList and takes care to set the Timer.Id correctly
|
// AddTimer prepends a Timer to the current TimerList and takes care to set the Timer.Id correctly
|
||||||
func (timerlist *TimerList) AddTimer(timer *Timer) {
|
func (timerlist *TimerList) AddTimer(timer *Timer) {
|
||||||
|
timer.Id = timerlist.GetNextId()
|
||||||
timerlist.Timers = append(timerlist.Timers, timer)
|
timerlist.Timers = append(timerlist.Timers, timer)
|
||||||
timerlist.refresh()
|
timerlist.refresh()
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddTimers adds all passed in timers to the list, sorts the list, then updates the Timer.Id values.
|
// AddTimers adds all passed in timers to the list, sorts the list, then updates the Timer.Id values.
|
||||||
func (timerlist *TimerList) AddTimers(timers []*Timer) {
|
func (timerlist *TimerList) AddTimers(timers []*Timer) {
|
||||||
timerlist.Timers = append(timerlist.Timers, timers...)
|
for _, v := range timers {
|
||||||
timerlist.Sort(SortStartDateAsc)
|
timerlist.AddTimer(v)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
func (timerlist *TimerList) Combine(other *TimerList) { timerlist.AddTimers(other.Timers) }
|
func (timerlist *TimerList) Combine(other *TimerList) { timerlist.AddTimers(other.Timers) }
|
||||||
|
|
||||||
@ -285,6 +297,14 @@ func (timerlist *TimerList) Filter(predicate func(*Timer) bool) *TimerList {
|
|||||||
return &newList
|
return &newList
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (timerlist *TimerList) ResetIds() {
|
||||||
|
timerId := 1
|
||||||
|
for _, v := range timerlist.Timers {
|
||||||
|
v.Id = timerId
|
||||||
|
timerId++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// LoadFromFile loads a TimerList from *os.File.
|
// LoadFromFile loads a TimerList from *os.File.
|
||||||
// Note: This will clear the current TimerList and overwrite it's contents with whatever is in *os.File.
|
// Note: This will clear the current TimerList and overwrite it's contents with whatever is in *os.File.
|
||||||
func (timerlist *TimerList) LoadFromFile(file *os.File) error {
|
func (timerlist *TimerList) LoadFromFile(file *os.File) error {
|
||||||
@ -317,8 +337,12 @@ func (timerlist *TimerList) WriteToFile(file *os.File) error {
|
|||||||
writer := bufio.NewWriter(file)
|
writer := bufio.NewWriter(file)
|
||||||
_, err := writer.WriteString(timerlist.String())
|
_, err := writer.WriteString(timerlist.String())
|
||||||
writer.Flush()
|
writer.Flush()
|
||||||
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
timerlist.ResetIds()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// LoadFromFilename loads a TimerList from the filename.
|
// LoadFromFilename loads a TimerList from the filename.
|
||||||
func (timerlist *TimerList) LoadFromFilename(filename string) error {
|
func (timerlist *TimerList) LoadFromFilename(filename string) error {
|
||||||
@ -332,7 +356,11 @@ func (timerlist *TimerList) LoadFromFilename(filename string) error {
|
|||||||
|
|
||||||
// WriteToFilename writes a TimerList to the specified file (most likely called "timer.txt").
|
// WriteToFilename writes a TimerList to the specified file (most likely called "timer.txt").
|
||||||
func (timerlist *TimerList) WriteToFilename(filename string) error {
|
func (timerlist *TimerList) WriteToFilename(filename string) error {
|
||||||
return ioutil.WriteFile(filename, []byte(timerlist.String()), 0640)
|
if err := ioutil.WriteFile(filename, []byte(timerlist.String()), 0640); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
timerlist.ResetIds()
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// LoadFromFile loads and returns a TimerList from *os.File.
|
// LoadFromFile loads and returns a TimerList from *os.File.
|
||||||
|
Loading…
Reference in New Issue
Block a user