From 97064013fa06d012f2a8ccd9143ae171b220546a Mon Sep 17 00:00:00 2001
From: Eunice Sarah Siregar <13521013@mahasiswa.itb.ac.id>
Date: Fri, 14 Apr 2023 11:09:37 +0700
Subject: [PATCH] feat: fix plan2

---
 src/plan2.py     | 67 ++++++++++++++++++++++++++++++++++++++----------
 src/tesBacaDB.py | 26 +++++++++----------
 2 files changed, 66 insertions(+), 27 deletions(-)

diff --git a/src/plan2.py b/src/plan2.py
index 3292065..70778ad 100644
--- a/src/plan2.py
+++ b/src/plan2.py
@@ -1,8 +1,8 @@
 import sqlite3
-from PyQt6.QtWidgets import QApplication, QLabel, QWidget, QLineEdit, QPushButton, QRadioButton, QCheckBox, QMessageBox
+from PyQt6.QtWidgets import QApplication, QLabel, QWidget, QPushButton, QMessageBox
 from PyQt6.QtGui import QFont, QPixmap, QCursor, QMovie, QIcon
 from PyQt6.QtCore import Qt, QSize, QUrl, QTimer, QTime
-from PyQt6.QtMultimedia import QSoundEffect
+# from PyQt6.QtMultimedia import QSoundEffect
 import time
 import sys
 conn = sqlite3.connect("fitu.db")
@@ -16,7 +16,7 @@ class plan(QWidget):
         # self.remaining_time = 0
         self.timer = QTimer(self)
         self.timer.timeout.connect(self.updateTimer)
-        self.remaining_time = 60  # initial value in seconds
+        self.remaining_time = 0  # initial value in seconds
         self.timer.start(1000)  # set timer to update every second
         self.setUpWindowPlan()
         
@@ -35,11 +35,19 @@ class plan(QWidget):
         else:
             self.timer.stop()
             QMessageBox.information(self, "Time's up!", "The countdown timer has ended.")
+            # QMessageBox.setStyleSheet(QLabel("color: white"))
     
     def resetTimer(self):
-        self.remaining_time = 60
+        self.remaining_time = self.duration[self.index][0]
         self.timer.start(1000)
-        self.timer_label.setText("01:00")
+        if(self.duration[self.index][0]<59):
+
+            self.timer_label.setText("00:"+str(self.remaining_time))
+        else:
+            self.timer_label.setText("00:"+str(self.remaining_time))
+    def repetitionLabel(self):
+        self.timer.stop()
+        self.timer_label.setText(str(self.repCount[self.index][0])+ " Rep")
 
     def setUpPlan(self):
         self.setStyleSheet('background-color: #5A8D6C')
@@ -85,7 +93,7 @@ class plan(QWidget):
         # effect.setLoopCount(-2)
         # effect.play()
 
-        # if self.index == len(latihan)/2 - 1:
+        # if self.index == len(latihan):
         #     nextButton.setEnabled(False)
         #     titleProgram = c.execute(f"SELECT name FROM program WHERE program_id = {programId}").fetchone()
         #     nameExe = c.execute(f"SELECT name FROM daftar_latihan WHERE exercise_id in (SELECT exercise_id FROM latihan_program)").fetchall()
@@ -93,6 +101,16 @@ class plan(QWidget):
         #     totDuration = c.execute(f"SELECT SUM(duration) FROM daftar_latihan WHERE exercise_id in (SELECT exercise_id FROM latihan_program)").fetchone()
         #     c.execute("INSERT INTO riwayat_latihan program_id, name, title_program, date, tot_duration VALUES ({programId}, {nameExe}, {titleProgram}, {date}, {totDuration})")
 
+        self.name = c.execute(f"SELECT title FROM daftar_latihan NATURAL JOIN latihan_program WHERE program_id = 1").fetchall()
+        print(self.name)
+        self.nameLabel = QLabel(self)
+        self.nameLabel.setText(self.name[self.index][0])
+        print(self.name[self.index][0])
+        self.nameLabel.setFont(QFont("Arial", 20, QFont.Weight.Bold))
+        self.nameLabel.setStyleSheet("color: #EEEEE2")
+        self.nameLabel.move(600, 461)
+        self.nameLabel.setFixedWidth(200)
+
         # duration = QLabel(self)
         self.repLabel = QLabel(self)
         self.repLabel.setFont(QFont("Arial", 20, QFont.Weight.Bold))
@@ -105,13 +123,21 @@ class plan(QWidget):
         self.timer_label.move(547, 510)
         self.timer_label.setFont(QFont("Arial", 20, QFont.Weight.Bold))
         self.timer_label.setStyleSheet("background-color: #EEEEE2; border-radius: 10px; border: 2px")
-        durationCount = c.execute(f"SELECT duration FROM daftar_latihan WHERE exercise_id in (SELECT exercise_id FROM latihan_program WHERE program_id = 1)").fetchall()
-        repCount = c.execute(f"SELECT repetition FROM daftar_latihan WHERE exercise_id in (SELECT exercise_id FROM latihan_program WHERE program_id = 1)").fetchall()
-        print(repCount[self.index][0])
-        if durationCount[self.index][0] != None and repCount[self.index][0] == None:
-            self.updateTimer()
-        elif durationCount[self.index][0] == None and repCount[self.index][0] != None:
-            self.repLabel.setText(repCount[self.index][0])
+        # durationCount = c.execute(f"SELECT duration FROM daftar_latihan WHERE exercise_id in (SELECT exercise_id FROM latihan_program WHERE program_id = 1)").fetchall()
+        self.repCount = c.execute(f"SELECT repetition FROM daftar_latihan NATURAL JOIN latihan_program WHERE program_id = 1").fetchall()
+        self.duration = c.execute(f"SELECT duration FROM daftar_latihan NATURAL JOIN latihan_program WHERE program_id = 1").fetchall()
+        for i in self.repCount:
+            print("rep",i)
+        for i in self.duration:
+            print("dur",i)
+
+        if self.duration[self.index][0] != None:
+            self.remaining_time = self.duration[self.index][0]
+            self.resetTimer()
+        else:
+            self.repetitionLabel()
+        print((self.repCount[self.index][0])==None)    
+
 
 
     def prevEx(self):
@@ -123,11 +149,18 @@ class plan(QWidget):
             self.movie.setScaledSize(QSize(330, 305))
             self.movie.setSpeed(60)
             print("kiri:" + str(self.index))
+        if self.duration[self.index][0] != None:
+            self.remaining_time = self.duration[self.index][0]
             self.resetTimer()
+        else:
+            self.repetitionLabel()
+        self.nameLabel.setText(self.name[self.index][0])
+        print(self.index)
+
 
 
     def nextEx(self):
-        if self.index < (len(latihan)/2) - 1:
+        if self.index < (len(latihan)) - 1:
             self.index += 1
             self.movie = QMovie(latihan[self.index][0])
             self.currEx.setMovie(self.movie)
@@ -135,7 +168,13 @@ class plan(QWidget):
             self.movie.setScaledSize(QSize(330, 305))
             self.movie.setSpeed(100)
             print("kanan:" + str(self.index))
+        if self.duration[self.index][0] != None:
+            self.remaining_time = self.duration[self.index][0]
             self.resetTimer()
+        else:
+            self.repetitionLabel()
+        self.nameLabel.setText(self.name[self.index][0])
+        print(self.index)
     
 if __name__ == "__main__":
     
diff --git a/src/tesBacaDB.py b/src/tesBacaDB.py
index b6482db..347fcbc 100644
--- a/src/tesBacaDB.py
+++ b/src/tesBacaDB.py
@@ -20,7 +20,7 @@ def tesBaca():
                 title text,
                 description text,
                 goals text,
-                duration text,
+                duration integer,
                 repetition integer,
                 gif text
                 )
@@ -56,14 +56,6 @@ def tesBaca():
                 INSERT or IGNORE INTO daftar_latihan 
                     (exercise_id, title, description, goals, duration, repetition, gif)
                 VALUES 
-                    (201, 'Push Up', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor','Goals', NULL, 10, 'img/exe-pushup.gif'),
-                    (202, "Sit Up", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor", 'Goals', NULL, 10, "img/exe-situp.gif"),
-                    (203, "Pull Up", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor", 'Goals', NULL, 10, "img/"),
-                    (204, "Squat Jump", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor", 'Goals', NULL, 10, "img/"),
-                    (205, "Lunges", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor", 'Goals', NULL, 10, "img/exe-lunges.gif"),
-                    (206, "Crunches", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor", 'Goals', NULL, 10, "img/exe-crunches.gif"),
-                    (207, "Burpees", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor", 'Goals', NULL, 10, "img/exe-burpees.gif"),
-                    (208, "Bicycle Crunch", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor", 'Goals', NULL, 10, "img/exe-bicycle.gif"),
                     (101, "Jumping Rope", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor", 'Goals', 30, NULL, "img/"),
                     (102, "Running", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor", 'Goals', 30, NULL, "img/"),
                     (103, "Jumping Jacks", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor", 'Goals', 30, NULL, "img/exe-jumpingjack.gif"),
@@ -71,7 +63,15 @@ def tesBaca():
                     (105, "Bridge", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor", 'Goals', 30, NULL, "img/exe-bridges.gif"),
                     (106, "High Knees", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor", 'Goals', 30, NULL, "img/exe-highknee.gif"),
                     (107, "Mountain Climber", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor", 'Goals', 30, NULL, "img/exe-mountain.gif"),
-                    (108, "Russian Twist", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor", 'Goals', 30, NULL,"img/exe-russian.gif")
+                    (108, "Russian Twist", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor", 'Goals', 30, NULL,"img/exe-russian.gif"),
+                    (201, 'Push Up', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor','Goals', NULL, 10, 'img/exe-pushup.gif'),
+                    (202, "Sit Up", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor", 'Goals', NULL, 10, "img/exe-situp.gif"),
+                    (203, "Pull Up", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor", 'Goals', NULL, 10, "img/"),
+                    (204, "Squat Jump", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor", 'Goals', NULL, 10, "img/"),
+                    (205, "Lunges", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor", 'Goals', NULL, 10, "img/exe-lunges.gif"),
+                    (206, "Crunches", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor", 'Goals', NULL, 10, "img/exe-crunches.gif"),
+                    (207, "Burpees", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor", 'Goals', NULL, 10, "img/exe-burpees.gif"),
+                    (208, "Bicycle Crunch", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac venenatis purus. Nulla a fringilla ante. Aenean id ipsum pellentesque, convallis ex eget, cursus dolor", 'Goals', NULL, 10, "img/exe-bicycle.gif")
                 """)
 
     cur.execute("""
@@ -89,9 +89,9 @@ def tesBaca():
                     (program_id, exercise_id)
                 VALUES
                     (1, 201),
-                    (1, 202),
-                    (1, 205),
-                    (1, 206)
+                    (1, 105),
+                    (1, 106),
+                    (1, 202)
                 """)
 
     con.commit()
-- 
GitLab