202 lines
8.2 KiB
Python
202 lines
8.2 KiB
Python
|
# coding: gb2312
|
|||
|
from PyQt5.QtWidgets import *
|
|||
|
from LSZXPagesLibrary.consensus import *
|
|||
|
from LSZXPagesLibrary.pop_message_dialog import PopDialogMessage
|
|||
|
from LSZXPagesLibrary.running_score_layout_define import RunningScoreLayoutDefine
|
|||
|
from LSZXPagesLibrary.tool import format_time
|
|||
|
from PureBackend.global_execrise_backend import GEB
|
|||
|
|
|||
|
|
|||
|
class RunningScore(RunningScoreLayoutDefine):
|
|||
|
|
|||
|
def __init__(self):
|
|||
|
super(RunningScore, self).__init__()
|
|||
|
self.eb = GEB().get_geb()
|
|||
|
self.person_list = None
|
|||
|
self.selected_person_id = ""
|
|||
|
self.labels = []
|
|||
|
# ע<>᷵<EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD>İ<EFBFBD>ť
|
|||
|
self.back_home_button.clicked.connect(self.back_home)
|
|||
|
# <20>ύ<EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
|
|||
|
self.stop_test_button.clicked.connect(self.stop)
|
|||
|
self.revoke_update_button.clicked.connect(self.withdraw_fix_score)
|
|||
|
self.commit_update_button.clicked.connect(self.fix_score)
|
|||
|
# <20><><EFBFBD><EFBFBD>
|
|||
|
self.message_pop_windows = PopDialogMessage(self)
|
|||
|
# ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD>
|
|||
|
self.stop_exercise_pop_windows = PopDialogMessage(self)
|
|||
|
# <20><><EFBFBD><EFBFBD>
|
|||
|
self.message_pop_windows.connect(self.message_pop_commit)
|
|||
|
# ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD>
|
|||
|
self.stop_exercise_pop_windows.connect(self.stop_exercise_pop_commit)
|
|||
|
|
|||
|
def fix_score(self):
|
|||
|
self.eb.fix_score(self.selected_person_id)
|
|||
|
# ȷ<>ϳɼ<CFB3><C9BC>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>б<EFBFBD>
|
|||
|
self.person_list = self.eb.get_running_all_score()
|
|||
|
self.clear_summary()
|
|||
|
self.redraw_person_list()
|
|||
|
|
|||
|
def withdraw_fix_score(self):
|
|||
|
self.eb.fix_withdraw(self.selected_person_id)
|
|||
|
# ȷ<>ϳɼ<CFB3><C9BC>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>б<EFBFBD>
|
|||
|
self.person_list = self.eb.get_running_all_score()
|
|||
|
self.clear_summary()
|
|||
|
self.redraw_person_list()
|
|||
|
|
|||
|
def back_home(self):
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳʱ<D2B3><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|||
|
self.message_pop_windows.show("<EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?")
|
|||
|
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>ť<EFBFBD>¼<EFBFBD>
|
|||
|
def message_pop_commit(self):
|
|||
|
self.clear_summary()
|
|||
|
# <20><>ת
|
|||
|
self.jump2(HOME_PAGE)
|
|||
|
|
|||
|
def stop(self):
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳʱ<D2B3><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
|||
|
self.stop_exercise_pop_windows.show("<EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ύ<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?")
|
|||
|
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>ť<EFBFBD>¼<EFBFBD>
|
|||
|
def stop_exercise_pop_commit(self):
|
|||
|
self.clear_summary()
|
|||
|
# <20>ύ<EFBFBD><E1BDBB><EFBFBD>Գɼ<D4B3>
|
|||
|
self.eb.update_running_score()
|
|||
|
pkg = {
|
|||
|
EXERCISE_TYPE: self.data[EXERCISE_TYPE],
|
|||
|
PERSON_LIST: [
|
|||
|
{
|
|||
|
IS_CHOOSE: False,
|
|||
|
NAME: score["name"],
|
|||
|
ID: score["id"],
|
|||
|
SCORE: int(score['running_score']),
|
|||
|
COUNT: format_time(score['running_count']),
|
|||
|
CLASS: score['class'],
|
|||
|
BAND_ID: score["band_id"]
|
|||
|
}
|
|||
|
for score in self.eb.get_all_score()
|
|||
|
]
|
|||
|
}
|
|||
|
self.jump2(RUNNING_PICK_UP, pkg)
|
|||
|
|
|||
|
def refresh(self) -> None:
|
|||
|
exercise_type = self.data.get(EXERCISE_TYPE)
|
|||
|
if exercise_type:
|
|||
|
exercise_name = EXERCISE_TYPE_TABLE[exercise_type]
|
|||
|
self.title_label.setText(exercise_name)
|
|||
|
|
|||
|
# ȷ<>ϳɼ<CFB3><C9BC>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>б<EFBFBD>
|
|||
|
self.person_list = self.data.get(PERSON_LIST)
|
|||
|
self.clear_summary()
|
|||
|
self.redraw_person_list()
|
|||
|
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
def clear_summary(self):
|
|||
|
scroll_round_widget = self.init_scroll_round_widget()
|
|||
|
self.scroll_round_area.setWidget(scroll_round_widget)
|
|||
|
self.round_tips_label.setText("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飺")
|
|||
|
self.score_abnormal_label.setText("<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>쳣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶ԣ<EFBFBD>")
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD>ɵļ<C9B5>¼
|
|||
|
self.labels = []
|
|||
|
|
|||
|
def redraw_person_list(self):
|
|||
|
column_num = 6
|
|||
|
row_num = 6
|
|||
|
scroll_widget = QWidget()
|
|||
|
scroll_widget.setStyleSheet("border:none;")
|
|||
|
scroll_layout = QVBoxLayout(scroll_widget)
|
|||
|
row_layout = QHBoxLayout()
|
|||
|
for index, item in enumerate(self.person_list):
|
|||
|
card_widget = self.create_person_card(item)
|
|||
|
row_layout.addWidget(card_widget)
|
|||
|
self.labels.append(card_widget)
|
|||
|
|
|||
|
index += 1
|
|||
|
if index % column_num == 0:
|
|||
|
scroll_layout.addLayout(row_layout)
|
|||
|
row_layout = QHBoxLayout()
|
|||
|
|
|||
|
if row_layout.count() > 0:
|
|||
|
for _ in range(column_num - row_layout.count()):
|
|||
|
# <20>հ<D5B0>
|
|||
|
empty_box = QLabel()
|
|||
|
row_layout.addWidget(empty_box)
|
|||
|
scroll_layout.addLayout(row_layout)
|
|||
|
|
|||
|
if scroll_layout.count() < row_num:
|
|||
|
for _ in range(row_num - scroll_layout.count()):
|
|||
|
# <20>հ<D5B0>
|
|||
|
empty_box = QLabel()
|
|||
|
empty_box.setFrameShape(QFrame.Box)
|
|||
|
empty_box.setLineWidth(0)
|
|||
|
# <20><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
row_layout = QHBoxLayout()
|
|||
|
row_layout.addWidget(empty_box)
|
|||
|
scroll_layout.addStretch()
|
|||
|
scroll_layout.addLayout(row_layout)
|
|||
|
self.scroll_area.setWidget(scroll_widget)
|
|||
|
|
|||
|
# ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>Ƭ<EFBFBD><C6AC>ʽ
|
|||
|
def create_person_card(self, item):
|
|||
|
# <20><><EFBFBD><EFBFBD>done<6E><65>True<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿ<EFBFBD><C9BF>ԣ<EFBFBD><D4A3>ɼ<EFBFBD>û<EFBFBD><C3BB><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ɫ
|
|||
|
if item["done"]:
|
|||
|
self.card_widget = self.init_card_widget_widget()
|
|||
|
round_score_name = self.init_round_score_name_label_widget()
|
|||
|
round_score_id = self.init_round_score_id_label_widget()
|
|||
|
round_score_name.setText(item["name"])
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ɿ<EFBFBD><C9BF>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϳɼ<CFB3><C9BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
else:
|
|||
|
# δ<><CEB4><EFBFBD>ɿ<EFBFBD><C9BF>Եijɼ<C4B3><C9BC><EFBFBD><EFBFBD>ijɹ<C4B3><C9B9><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֺ<EFBFBD><D6BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><D3A1>ű<EFBFBD><C5B1><EFBFBD>
|
|||
|
if item["fix"]:
|
|||
|
self.card_widget = self.init_card_widget_widget()
|
|||
|
round_score_name = self.init_round_score_name_label_widget()
|
|||
|
round_score_id = self.init_round_score_id_label_widget()
|
|||
|
round_score_name.setText(item["name"] + "<EFBFBD><EFBFBD>")
|
|||
|
# δ<><CEB4><EFBFBD>ɿ<EFBFBD><C9BF>Եijɼ<C4B3>û<EFBFBD><C3BB><EFBFBD>ģ<DEB8><C4A3><EFBFBD>ʾ<EFBFBD><CABE>ɫ
|
|||
|
else:
|
|||
|
self.card_widget = self.init_unfinished_card_widget_widget()
|
|||
|
round_score_name = self.init_round_unfinished_score_name_label_widget()
|
|||
|
round_score_id = self.init_round_unfinished_score_id_label_widget()
|
|||
|
round_score_name.setText(item["name"])
|
|||
|
round_score_time = self.init_round_score_time_label_widget()
|
|||
|
round_score_grade = self.init_round_score_grade_label_widget()
|
|||
|
bottom_layout = QHBoxLayout()
|
|||
|
bottom_layout.addWidget(round_score_time)
|
|||
|
bottom_layout.addWidget(round_score_grade)
|
|||
|
round_score_id.setText('<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>' + item["id"])
|
|||
|
round_score_time.setText('<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>' + format_time(item["total_time"]))
|
|||
|
round_score_grade.setText('<EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD>' + str(item["score"]))
|
|||
|
person_card_layout = QVBoxLayout(self.card_widget)
|
|||
|
person_card_layout.addWidget(round_score_name)
|
|||
|
person_card_layout.addWidget(round_score_id)
|
|||
|
person_card_layout.addLayout(bottom_layout)
|
|||
|
self.card_widget.mousePressEvent = lambda event, lbl=self.card_widget: self.on_label_clicked(event, lbl)
|
|||
|
return self.card_widget
|
|||
|
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<49><44>Ȧ<EFBFBD><C8A6><EFBFBD><EFBFBD>ÿȦ<C3BF><C8A6>ʱ
|
|||
|
def on_label_clicked(self, event, label):
|
|||
|
index = self.labels.index(label)
|
|||
|
person_name = self.person_list[index]["name"]
|
|||
|
# <20><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD>ԱID
|
|||
|
self.selected_person_id = self.person_list[index]["id"]
|
|||
|
self.round_tips_label.setText(person_name + "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>" + self.selected_person_id + "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飺")
|
|||
|
self.score_abnormal_label.setText(person_name + "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>" + self.selected_person_id + "<EFBFBD><EFBFBD><EFBFBD>ijɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>쳣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶ԣ<EFBFBD>")
|
|||
|
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬Ȧ<E9A3AC><C8A6>+Ȧʱ
|
|||
|
scroll_round_widget = self.init_scroll_round_widget()
|
|||
|
row_round_layout = QVBoxLayout(scroll_round_widget)
|
|||
|
row_round_num = 10
|
|||
|
|
|||
|
for item in self.eb.get_round_time(self.selected_person_id):
|
|||
|
round_time_label = self.init_round_time_label_widget()
|
|||
|
round_time_label.setText(item["name"] + ":" + item["time"])
|
|||
|
row_round_layout.addWidget(round_time_label)
|
|||
|
if row_round_layout.count() < row_round_num:
|
|||
|
for _ in range(row_round_num - row_round_layout.count()):
|
|||
|
# <20>հ<D5B0>
|
|||
|
empty_box = QLabel()
|
|||
|
empty_box.setStyleSheet("border:none")
|
|||
|
row_round_layout.addWidget(empty_box)
|
|||
|
self.scroll_round_area.setWidget(scroll_round_widget)
|