From d76bb562d9ad24d4975774f882cb7c373dfdc50a Mon Sep 17 00:00:00 2001 From: krivoshein Date: Tue, 27 May 2025 15:07:55 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0?= =?UTF-8?q?=D0=BC=D0=B8=20=D0=BF=D0=BE=D0=BA=D0=B0=20=D0=B7=D0=B0=D0=BA?= =?UTF-8?q?=D0=BE=D0=BD=D1=87=D0=B8=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DataBaseLMS/databaselms.cpp | 38 +++ .../tasks/ammtaskswidget.cpp | 4 +- .../tasks/ammtaskswidget.ui | 2 +- .../tasks/dialogchecktask.cpp | 7 +- .../tasks/dialogchecktask.ui | 25 +- .../tasks/fimtaskswidget.cpp | 10 +- .../tasks/tasktreepreparation.cpp | 7 +- .../InstructorsAndTraineesWidget_ru_RU.qm | Bin 12633 -> 16033 bytes .../InstructorsAndTraineesWidget_ru_RU.ts | 273 ++++++++++++++---- 9 files changed, 292 insertions(+), 74 deletions(-) diff --git a/DataBaseLMS/databaselms.cpp b/DataBaseLMS/databaselms.cpp index 9eb4060..b4dd8c2 100644 --- a/DataBaseLMS/databaselms.cpp +++ b/DataBaseLMS/databaselms.cpp @@ -783,6 +783,44 @@ int DataBaseLMS::deleteTaskFIM(int id_task) return 0; } + //Выгребаем все malfunction для этой задачи + queryStr = QString("SELECT malfunctions.malfunction_id " + "FROM public.malfunctions JOIN public.tasks_fim ON tasks_fim.task_id = malfunctions.task_fim_malf " + "WHERE malfunctions.task_fim_malf = %1 " + "ORDER BY malfunctions.malfunction_id ASC").arg( + id_task); + QSqlQuery queryMalf = QSqlQuery(*db); + + if(queryExec(queryStr, &queryMalf)) + { + while (queryMalf.next()) + {//Неисправность + int malfunction_id = 0; + + malfunction_id = queryMalf.value(0).toString().toInt(); + + if(malfunction_id) + { + queryStr = QString("DELETE FROM public.malf_sign " + "WHERE malf_malf_sign = %1 ").arg( + malfunction_id); + + QSqlQuery querySign = QSqlQuery(*db); + if(!queryExec(queryStr, &querySign)) + { + resBool = db->rollback(); + return 0; + } + } + }; + } + else + { + resBool = db->rollback(); + return 0; + } + + queryStr = QString("DELETE FROM public.malfunctions " "WHERE task_fim_malf = %1 ").arg( QString::number(id_task)); diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp index 8db648a..9866334 100644 --- a/InstructorsAndTrainees/tasks/ammtaskswidget.cpp +++ b/InstructorsAndTrainees/tasks/ammtaskswidget.cpp @@ -94,13 +94,13 @@ void AMMtasksWidget::resizeEvent(QResizeEvent *event) treeWidget->setColumnWidth(ColumnsTree::clmn_ID, 50); treeWidget->setColumnWidth(ColumnsTree::clmn_code, 250); - treeWidget->setColumnWidth(ColumnsTree::clmn_status, 100); + treeWidget->setColumnWidth(ColumnsTree::clmn_status, 110); int widthPMorDM; if(type == TypeList::listCommon) widthPMorDM = width - (250 + 10); else - widthPMorDM = width - (400 + 10); + widthPMorDM = width - (410 + 10); treeWidget->setColumnWidth(ColumnsTree::clmn_PMorDM, widthPMorDM); } diff --git a/InstructorsAndTrainees/tasks/ammtaskswidget.ui b/InstructorsAndTrainees/tasks/ammtaskswidget.ui index 31c259b..609d678 100644 --- a/InstructorsAndTrainees/tasks/ammtaskswidget.ui +++ b/InstructorsAndTrainees/tasks/ammtaskswidget.ui @@ -49,7 +49,7 @@ - Active + Аvailable diff --git a/InstructorsAndTrainees/tasks/dialogchecktask.cpp b/InstructorsAndTrainees/tasks/dialogchecktask.cpp index 92b1f06..b47f3fb 100644 --- a/InstructorsAndTrainees/tasks/dialogchecktask.cpp +++ b/InstructorsAndTrainees/tasks/dialogchecktask.cpp @@ -65,7 +65,12 @@ void DialogCheckTask::outReport(FIMReport report) ui->plainText->appendHtml(str); //Result - str = QString("

%1

").arg(item.procedure.result); + str = item.procedure.result; + if(str == "viewed") + str = tr("viewed"); + else if(str == "completed") + str = tr("completed"); + str = QString("

%1

").arg(str); ui->plainText->appendHtml(str); //Text diff --git a/InstructorsAndTrainees/tasks/dialogchecktask.ui b/InstructorsAndTrainees/tasks/dialogchecktask.ui index cc7f81f..044b15f 100644 --- a/InstructorsAndTrainees/tasks/dialogchecktask.ui +++ b/InstructorsAndTrainees/tasks/dialogchecktask.ui @@ -53,10 +53,16 @@ + + + 0 + 0 + + 0 - 500 + 0 @@ -79,7 +85,7 @@
- Wrong + Failed @@ -105,7 +111,7 @@ - Right + Completed @@ -124,19 +130,6 @@ - - - - Qt::Vertical - - - - 20 - 40 - - - - diff --git a/InstructorsAndTrainees/tasks/fimtaskswidget.cpp b/InstructorsAndTrainees/tasks/fimtaskswidget.cpp index 0ece978..84fb28a 100644 --- a/InstructorsAndTrainees/tasks/fimtaskswidget.cpp +++ b/InstructorsAndTrainees/tasks/fimtaskswidget.cpp @@ -28,6 +28,7 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty treeWidget = new QTreeWidget(); ui->horizontalLayout_1->addWidget(treeWidget); + //treeWidget->setMinimumSize(400, 400); connect(treeWidget, &QTreeWidget::currentItemChanged, this, &FIMtasksWidget::on_treeWidget_currentItemChanged); @@ -92,13 +93,13 @@ void FIMtasksWidget::resizeEvent(QResizeEvent *event) int width = treeWidget->width(); treeWidget->setColumnWidth(ColumnsTree::clmn_ID, 50); - treeWidget->setColumnWidth(ColumnsTree::clmn_status, 100); + treeWidget->setColumnWidth(ColumnsTree::clmn_status, 110); int widthTitle; if(type == TypeList::listCommon) widthTitle = width - (0 + 10); else - widthTitle = width - (150 + 10); + widthTitle = width - (160 + 10); treeWidget->setColumnWidth(ColumnsTree::clmn_Title, widthTitle); } @@ -249,24 +250,27 @@ void FIMtasksWidget::fillTree() itemTask->setText(0, task->title); itemTask->setText(1, QString::number(task->id)); - itemTask->setText(2, task->status); //itemTask->setFlags(itemTask->flags() | Qt::ItemIsUserCheckable); //itemTask->setCheckState(0, Qt::Checked); if(task->status == "completed") { + itemTask->setText(2, tr("completed")); itemTask->setIcon(2, QIcon(QStringLiteral(":/resources/icons/circleGreen.png"))); } else if(task->status == "failed") { + itemTask->setText(2, tr("failed")); itemTask->setIcon(2, QIcon(QStringLiteral(":/resources/icons/circleRed.png"))); } else if(task->status == "checkup") { + itemTask->setText(2, tr("checkup")); itemTask->setIcon(2, QIcon(QStringLiteral(":/resources/icons/circleYellow.png"))); } else { + itemTask->setText(2, tr("new")); itemTask->setIcon(2, QIcon(QStringLiteral(":/resources/icons/circleGray.png"))); } diff --git a/InstructorsAndTrainees/tasks/tasktreepreparation.cpp b/InstructorsAndTrainees/tasks/tasktreepreparation.cpp index 956d8c9..41c4da9 100644 --- a/InstructorsAndTrainees/tasks/tasktreepreparation.cpp +++ b/InstructorsAndTrainees/tasks/tasktreepreparation.cpp @@ -251,23 +251,26 @@ void TaskTreePreparation::slot_prepareListItemsForTrainee(QList list item->setText(ColumnsTree::clmn_PMorDM, text); item->setText(ColumnsTree::clmn_code, code); - item->setText(ColumnsTree::clmn_ID, ID); - item->setText(ColumnsTree::clmn_status, status); + item->setText(ColumnsTree::clmn_ID, ID); if(status == "completed") { + item->setText(ColumnsTree::clmn_status, tr("completed")); item->setIcon(ColumnsTree::clmn_status, QIcon(QStringLiteral(":/resources/icons/circleGreen.png"))); } else if(status == "failed") { + item->setText(ColumnsTree::clmn_status, tr("failed")); item->setIcon(ColumnsTree::clmn_status, QIcon(QStringLiteral(":/resources/icons/circleRed.png"))); } else if(status == "checkup") { + item->setText(ColumnsTree::clmn_status, tr("checkup")); item->setIcon(ColumnsTree::clmn_status, QIcon(QStringLiteral(":/resources/icons/circleYellow.png"))); } else { + item->setText(ColumnsTree::clmn_status, tr("new")); item->setIcon(ColumnsTree::clmn_status, QIcon(QStringLiteral(":/resources/icons/circleGray.png"))); } diff --git a/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.qm b/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.qm index 43be936fbb0a6f9bb96ebd3053936dde534a421a..52e5ba6eea00a8a43924e1d08fa6c0dbd5e24a4b 100644 GIT binary patch delta 3453 zcmb`Ie{56N6~~Y5Yx_OhvGW5$OcL|3lQ@u&*omE(G>OTNku{JwY67%HMZA#L#3Go; zc0<`(UTCMO?YcmDg{dmgLPgt^NnI7D(RD2lgj!lb%gUy%C7VXpZH29CrNJ0d>CS!E zefiOZ?2ko?KF@yloO{mq{P6F)4?Qf`9`DI{_n-Uso?D!EV&kDV#~J~QIRNA$fUcRb zu!OPvGGpLh0OkmQ?>~%H6#y&q0lWtQTE_sEegcqu8$WMh4CDgHrvdzhj8*G_96162 z+kwb$5P-C&flxZff&A{rcySh^=`+THn~Wt6Mt=umMTD{H1mkiq7{40?;0%oX4;d{- z!MGoj@t+3c%gmWx z=b`hyTL6Y3M!ucVGRWu~W(+E@#y}I<0{15Uc=1o}?tQ`ou&f={TTzXo9WwNe zphIGYr~csr$oMsUy!kDF{F}N4JxW&X)rl&f)V=h%9+j%rja@_O^;wLLlZ=J$=nbp7 z0gAt;Kkzcz=WNk`wRZ@h^sHgi>J0$%PZ(k=>jBbF8AgA#5tVKt<=jhHYB@sULs)B* zlf<7#n(;Gb(GAAR{bca3=+M(h4qks6pe&R8td!R75@W$>#;QljJNjej=QVP6Uju+W z#JF%L@y{68-RAgD{(z<9 z7)#pCM|&lZ!8vSxHHH@ibItFc!$8c#oa2j6QR1^)Z7*Kry23>kwF9_!aYIY7iORNd zL+uHG&=u}U5tT^a&Y1rTZqJ!4{656(d7JVnZm$lNDElpUpy5qS;39V*@-RT*`S%R~S;zPbRXEZG5As)SGInG2m;BYk&tuJx zGghv% z!Jm&}hNFx=oAtxCGkES9TizwKx2?6+tj0hWjoHHTjTZoxyk+ZnAEmU%85bV6ZP;}P zLk31t&uF{G=p>AuuNjM%F;*P5jXOREn71R%w%d&X_!-OBr)58b{vC0~+)vX+_lY=7 zAEni*4+{&@KI?Pgm@KzPbenN=U9dlU9wW^gcRY5_Z!o}!V~_hGoZs&|E?jyP109V5 zEWb~A$Wz{GZ)j^viiypMb-%VXgVhRH#YT2n>L&A zX}YCy#n9`r6AuXxAGu?inWdJe_xbR@ zi8N^MO`SOuA5D94>Gg2O-TVujq(!kbu za#qiFl0R7i&4p>Dn$b*lO1j@Ya}V0c0)MZtR+giXP$fRU82}LIhC#{E2oC|uojah zOS{*ij;BEHp>}ia8>`2u%=hOjF?Zb@n+2UIN8Mq%U1;3O6?aW>HqIjrBs^&w)=b(e z=1p`LJ}^KdDa!m-?@ZK+*A%Bm7unT0*XBb@&cynio~gIs8M=XeB%-}H#H4Lhar??U zr|#^p@o(Z3Zgj;}P&`uPF&Z+azCuHMRWwpoWH5wXxN7NwR|CN`X`O3u3AL*uQKvb~ zR@aRbAC%%kG$Hgv6LgREP)DIW93g)yRP~1f{m`8kLO&Bf8X0Q_dc>q8bSAg=OPzfZ z{t}?EGUUnQxOHMY7LD~Pr@UTeyv#Y$y5y9;c1qO7F0otitF6{1B@%QU#=rTs`u4#J z<&6@jVlQ2?V9GnbOL{Q5TI`nk6>n*$@@nx$MJk;y|F0#cw`b9=>xxTKM_d{Z<6;sQ zL2B683ZGaT6N55Q`k7qFnvXepVkTqF_IAB8YtZQ=ovctkGP#w?Wtk%*r8jkR4b#8N OTsTawk@w1m_5TGdFc852 delta 1143 zcmXYvZERCz6vzL)_qpx8?d@9Ki{0!>*U|SaY}zf1)Xga}#BDV(!3?s6fu<1RjLt0a z1G|U`S#%2YvY}zaEM%hcL9{ahrVeHngT^6ZW+Y4#V2G&rmJuQ_J>~f6ckg-r=RD{9 z&oj2|`;A8O=u@6Aejge7s=_C@Zw)PPq_%JiJ0CiUZaMyQO6FCS(rqMopg7WXf6P=5IiH%Nam9s#KgMoqw%TH#b2mdxk0AV1}M!Ml;sJcNc+sYppFa z)JSB(x;W+nO7`0H!#e=Y*kOBq-wyz8F$0F}aQbO#J?dz4j_T&r(bP6_FsHtyCTIooOtFq> z1W)ltWKezY;w7^9Bc>>4DoxDLC1&(r_4@cc6|UCg6irakuQ^{QM*`P1_lX05)1%d0 zd5J9U)p{Rr3W=xuZ`3peL!(BsH(AkwN|bX}uPFF5tx0kUd{8SHnKyh(+$S!T(j z&Z*&UDx72%4LE<^>;qh*1u4r`s#jmIe})>mr^PkU@eRF^3D=qPFH?SK3%S-QlPOkF zCK^RT1})JI+hPyUNs~DdUy-#{+hlW< z)o;#M1LTl?yXA)s^x8^p*@}lg{hWjORXMMT3l2q|z GpY$IXiZf6E diff --git a/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.ts b/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.ts index 31107af..88e1f0b 100644 --- a/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.ts +++ b/InstructorsAndTrainees/translations/InstructorsAndTraineesWidget_ru_RU.ts @@ -6,34 +6,67 @@ Form - Форма + Форма - + + Аvailable + Доступные + + + + Check + Проверить + + + + Delete + Удалить + + + Task AMM Задача AMM - + DM code DM код - - + + ID - ID + ID - + + + Status + Статус + + + PM/DM - + PM/DM - + Code Код + + + Attention! + Внимание! + + + + The deletion will be irrevocable. +Delete it anyway? + Удаление будет безвозвратным. +Всё равно удалить? + DialogAuthorizationInstructor @@ -59,6 +92,62 @@ Пароль + + DialogCheckTask + + + Form + Форма + + + + Task + Задача + + + + Completion Report + Отчет о выполнении + + + + Failed + Неверно + + + + Completed + Выполнена + + + + viewed + Просмотрено + + + + completed + Выполнена + + + + + Attention! + Внимание! + + + + Change task status? +The status will be set: 'failed' + Изменить статус задачи? Будет установлен статус 'неверно' + + + + Change task status? +The status will be set: 'completed' + Изменить статус задачи? Будет установлен статус 'выполнена' + + DialogEditGroup @@ -419,24 +508,77 @@ The changes will not be accepted. Form - Форма + Форма - + + Check + Проверить + + + + Delete + Удалить + + + + completed + выполнена + + + + failed + неверно + + + + checkup + на проверке + + + + new + новая + + + Task FIM Задача FIM - - + + ID - ID + ID - + + + Status + Статус + + + Title Заголовок + + + Attention! + Внимание! + + + + The deletion will be irrevocable. +Delete it anyway? + Удаление будет безвозвратным. +Всё равно удалить? + + + + Check Task + Проверка задачи + InstructorsAndTraineesWidget @@ -468,7 +610,7 @@ The changes will not be accepted. Update StyleSheet - + Обновить стиль @@ -478,12 +620,12 @@ The changes will not be accepted. AMM - + FIM - + @@ -492,52 +634,62 @@ The changes will not be accepted. - - - + + + Authorization Instructor Авторизация инструктора - + none нет - - + + Deauthorization Instructor Деавторизация инструктора - + Attention! Внимание! - + The file could not be opened Файл не может быть открыт - + Instructor deauthorization Деавторизация инструктора - + Error! Ошибка! - - + + Warning! + Внимание! + + + + The server is disabled + Сервер отключен + + + + Instructor authorization Авторизация инструктора - + Invalid login or password! Неправильный логин или пароль! @@ -599,7 +751,7 @@ The changes will not be accepted. Form - Форма + Форма @@ -614,12 +766,12 @@ The changes will not be accepted. Tab 1 - + Tab 2 - + @@ -627,12 +779,12 @@ The changes will not be accepted. Form - Форма + Форма TextLabel - + @@ -684,31 +836,54 @@ The changes will not be accepted. RecognizeSystem - + Attention! - Внимание! + Внимание! - + The file could not be opened - + Файл не может быть открыт - + You cannot delete the basic version! - + You cannot delete the active version - + This name already exists + + TaskTreePreparation + + + completed + выполнено + + + + failed + неверно + + + + checkup + на проверке + + + + new + новая + + TraineesView @@ -789,7 +964,7 @@ The changes will not be accepted. Delete - + Удалить @@ -869,12 +1044,12 @@ The changes will not be accepted. Инструкторы - + Editor of Instructors Редактор инструкторов - + Editor of instructors Редактор инструкторов @@ -888,12 +1063,12 @@ The changes will not be accepted. Обучаемые - + Editor of Trainees Редактор обучаемых - + Editor of trainees Редактор обучаемых @@ -903,7 +1078,7 @@ The changes will not be accepted. Form - Форма + Форма