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