From ae396b0399a9ee4ec8aee4879f0eb36bc7aeb7e8 Mon Sep 17 00:00:00 2001 From: Nikolaus Gotsche Date: Sun, 14 Oct 2018 23:40:18 +0200 Subject: Pause Resume and more bugfixing --- sqlite.go | 129 +++++++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 89 insertions(+), 40 deletions(-) (limited to 'sqlite.go') diff --git a/sqlite.go b/sqlite.go index 666e2ca..f59d5c5 100644 --- a/sqlite.go +++ b/sqlite.go @@ -66,7 +66,7 @@ var db *sql.DB var err error var currproject project var opentask task - +var pausetask int func initDB(filename string) { if _, err := os.Stat(filename); os.IsNotExist(err) { @@ -138,7 +138,7 @@ func initDB(filename string) { }else{ db, err = sql.Open("sqlite3", filename) checkErr(err) - fmt.Println("Opening DB", filename ," - Last Usage:",lastUsage()) + fmt.Println("Opening DB", filename ," - Last Usage:",lastUsage()) } } @@ -154,6 +154,24 @@ func lastUsage() (out string) { return } +func getPauseTask() (id int) { + rows,err := db.Query("SELECT pauseid FROM vars WHERE id = 1") + checkErr(err) + for rows.Next() { + err = rows.Scan(&id) + checkErr(err) + } + return +} + +func setPauseTask(id int) { + stmt, err := db.Prepare("UPDATE vars SET pauseid = ? WHERE id = 1 ") + checkErr(err) + _, err = stmt.Exec(id) + checkErr(err) + pausetask = id +} + func newTaskTime(proj int, tim string) { boldGreen := color.New(color.FgGreen, color.Bold).SprintFunc() boldRed := color.New(color.FgRed, color.Bold).SprintFunc() @@ -194,27 +212,40 @@ func newTaskTime(proj int, tim string) { } -func newTask(proj int) { +func newTask(resume bool) { boldGreen := color.New(color.FgGreen, color.Bold).SprintFunc() boldRed := color.New(color.FgRed, color.Bold).SprintFunc() - fmt.Println(boldGreen("Starting new Task")) - if (opentask.id == 0) { - task := getInterInput("Specify Task: ") - stmt, err := db.Prepare("INSERT INTO timetable(project, task, checkout) values(?, ?, ?)") - checkErr(err) - if (proj == 0) { - _, err = stmt.Exec(currproject.id,task,0) - }else{ - _, err = stmt.Exec(proj,task,0) - } - checkErr(err) - fmt.Println("...New Task inserted into",currproject.name,": ",task) - getOpenTask() - updateProject(currproject.id) - } else { + task := "" + if (opentask.id > 0) { fmt.Println(boldRed("Another Task is already Open")) showOpenTask() + return } + if resume { + if pausetask == 0 { + fmt.Println(boldRed("No Task was Paused")) + return + }else{ + idx := []int{pausetask} + tsks := getSelectedTasks(idx) + fulltask := tsks[0] + fmt.Println(boldGreen("Resuming Task ",pausetask," - ",fulltask.taskname)) + //fmt.Println() + task = fulltask.taskname + } + }else{ + fmt.Println(boldGreen("Starting new Task")) + task = getInterInput("Specify Task: ") + } + stmt, err := db.Prepare("INSERT INTO timetable(project, task, checkout) values(?, ?, ?)") + checkErr(err) + _, err = stmt.Exec(currproject.id,task,0) + checkErr(err) + if !resume{ + fmt.Println("...New Task inserted into",currproject.name,": ",task) + } + getOpenTask() + updateProject(currproject.id) } func newBill(proj int) (int,string) { @@ -387,21 +418,25 @@ func closeTaskTime(tim string) { //fmt.Println(tim,timt) } -func closeTask() { +func closeTask(loud bool) { boldGreen := color.New(color.FgGreen, color.Bold).SprintFunc() boldRed := color.New(color.FgRed, color.Bold).SprintFunc() - fmt.Println(boldGreen("Stoping Task ",opentask.id,":",opentask.taskname)) + if loud { + fmt.Println(boldGreen("Stoping Task ",opentask.id,":",opentask.taskname)) + } if opentask.id==0 { fmt.Println(boldRed("There is no Open Task")) return } if (time.Now().After(opentask.start.Local())) { com := "" - if isInterSure("Do You Want to enter a Comment?"){ - com = getInterMultiInput("Comment:") - } - fmt.Println("...Closing Task",opentask.id) - stmt, err := db.Prepare("UPDATE timetable SET stop = datetime('now'), comment = ? WHERE id = ?") + if loud { + if isInterSure("Do You Want to enter a Comment?"){ + com = getInterMultiInput("Comment:") + } + fmt.Println("...Closing Task",opentask.id) + } + stmt, err := db.Prepare("UPDATE timetable SET stop = datetime('now'), comment = ? WHERE id = ?") checkErr(err) _, err = stmt.Exec(com,opentask.id) checkErr(err) @@ -774,7 +809,11 @@ func getOpenTask() { func showOpenTask() { if (opentask.id==0) { - fmt.Println("___No Open Tasks____________") + if pausetask > 0 { + fmt.Printf ("___Task %v Paused___________\n",pausetask) + }else{ + fmt.Println("___No Open Tasks____________") + } } else { fmt.Println("___Open Task________________") dur := float64(time.Now().Sub(opentask.start))/(1000000000*60*60) @@ -816,8 +855,16 @@ func addCustomer() { func newProject() { boldRed := color.New(color.FgRed, color.Bold).SprintFunc() boldGreen := color.New(color.FgGreen, color.Bold).SprintFunc() + if (opentask.id > 0) { + fmt.Println(boldRed("There is an Open Task")) + showOpenTask() + return + } + if pausetask > 0 { + fmt.Println(boldRed("Task ",pausetask," pause status removed")) + setPauseTask(0) + } fmt.Println(boldGreen("Creating new Project")) - if (opentask.id == 0) { nam := getInterInput("Enter Project Name: ") icust := 0 allCustomers() @@ -840,10 +887,6 @@ func newProject() { checkErr(err) fmt.Println(" Project Created:",nam) getLastProject() - } else { - fmt.Println(boldRed("There is an Open Task")) - showOpenTask() - } } func getClosedTasks(num int) { @@ -954,13 +997,23 @@ func getLastProject() { func setProject (nid int) { boldGreen := color.New(color.FgGreen, color.Bold).SprintFunc() boldRed := color.New(color.FgRed, color.Bold).SprintFunc() - fmt.Println(boldGreen("Opening Project ",nid)) - if !isProject(nid){ - fmt.Println(boldRed("There is no Project"),nid) + if (opentask.id > 0) { + fmt.Println(boldRed("There is an Open Task")) + showOpenTask() + return + } + if pausetask > 0 { + fmt.Println(boldRed("Task ",pausetask," pause status removed")) + setPauseTask(0) + } + if isProject(nid){ + fmt.Println(boldGreen("Opening Project ",nid)) + }else{ + fmt.Println(boldRed("There is no Project"),nid) return } - if (opentask.id == 0) { - rows,err := db.Query("SELECT * FROM projects WHERE id = $1",nid) + + rows,err := db.Query("SELECT * FROM projects WHERE id = $1",nid) checkErr(err) var uid int @@ -984,10 +1037,6 @@ func setProject (nid int) { //currproject.finish = finish != 0 currproject.customer = custo updateProject(uid) - } else { - fmt.Println(boldRed("There is an Open Task")) - showOpenTask() - } } func getCustomerList() (outint []int, outstr []string) { -- cgit v1.2.3