ПКМ для FIM AMM

This commit is contained in:
2026-01-19 10:38:23 +03:00
parent 8dd2e386fb
commit 1c44fdb182
10 changed files with 98 additions and 33 deletions

View File

@@ -71,7 +71,7 @@ int CommonView::calculateWidth_0Column()
widthRightColumns += w; widthRightColumns += w;
} }
} }
width0Column = widthHeader - widthRightColumns - widthSB; width0Column = widthHeader - widthRightColumns - widthSB - 20;
return width0Column; return width0Column;
} }
@@ -82,12 +82,6 @@ void CommonView::setWidthColumnsTree()
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Name, 100); treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Name, 100);
listWidthColumn.append(100); listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_AMMtasks, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_FIMtasks, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Login, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Password, 100); treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Password, 100);
listWidthColumn.append(100); listWidthColumn.append(100);
@@ -102,8 +96,14 @@ void CommonView::setWidthColumnsTree()
listWidthColumn.append(140); listWidthColumn.append(140);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Archived, 100); treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Archived, 100);
listWidthColumn.append(100); listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_AMMtasks, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_FIMtasks, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Messages, 100); treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Messages, 100);
listWidthColumn.append(100); listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Login, 100);
listWidthColumn.append(100);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Logged, 80); treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_Logged, 80);
listWidthColumn.append(80); listWidthColumn.append(80);
treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_ID, 40); treeWidget->setColumnWidth(ColumnsTreeUsers::clmn_ID, 40);
@@ -114,7 +114,7 @@ void CommonView::setWidthColumnsTree()
void CommonView::reSetHeadTreeWidget() void CommonView::reSetHeadTreeWidget()
{ {
QStringList listHeaders = {tr("Name"), tr("AMM tasks"), tr("FIM tasks"), tr("Login"), tr("Password"), tr("Class"), tr("Computer"), tr("IP address"), tr("Administrator"), tr("Archived"), tr("Messages"), tr("Online"), tr("ID")}; QStringList listHeaders = {tr("Name"), tr("Password"), tr("Class"), tr("Computer"), tr("IP address"), tr("Administrator"), tr("Archived"), tr("AMM tasks"), tr("FIM tasks"), tr("Messages"), tr("Login"), tr("Online"), tr("ID")};
treeWidget->setHeaderLabels(listHeaders); treeWidget->setHeaderLabels(listHeaders);
} }

View File

@@ -32,16 +32,16 @@ public:
protected: protected:
enum ColumnsTreeUsers{ enum ColumnsTreeUsers{
clmn_Name = 0, clmn_Name = 0,
clmn_AMMtasks,
clmn_FIMtasks,
clmn_Login,
clmn_Password, clmn_Password,
clmn_Class, clmn_Class,
clmn_Computer, clmn_Computer,
clmn_IP_address, clmn_IP_address,
clmn_Administrator, clmn_Administrator,
clmn_Archived, clmn_Archived,
clmn_AMMtasks,
clmn_FIMtasks,
clmn_Messages, clmn_Messages,
clmn_Login,
clmn_Logged, clmn_Logged,
clmn_ID, clmn_ID,
clmn_count clmn_count
@@ -92,7 +92,7 @@ protected:
void preparationTreeWidget(); void preparationTreeWidget();
private: protected:
int calculateWidth_0Column(); int calculateWidth_0Column();
void setWidthColumnsTree(); void setWidthColumnsTree();

View File

@@ -76,6 +76,7 @@ void ConnectorToServer::slot_AnswerQueryToDB_ListTasksAMMforTrainee(QList<TaskAm
mtxAccess.unlock(); mtxAccess.unlock();
emit signal_UpdateTasksAMMforTrainee(trainee_id); emit signal_UpdateTasksAMMforTrainee(trainee_id);
emit signal_UpdateDB(false, true);
} }
void ConnectorToServer::slot_AnswerQueryToDB_ListTasksFIMforTrainee(QList<TaskAmmFim> listTasks, int trainee_id) void ConnectorToServer::slot_AnswerQueryToDB_ListTasksFIMforTrainee(QList<TaskAmmFim> listTasks, int trainee_id)
@@ -91,6 +92,7 @@ void ConnectorToServer::slot_AnswerQueryToDB_ListTasksFIMforTrainee(QList<TaskAm
mtxAccess.unlock(); mtxAccess.unlock();
emit signal_UpdateTasksFIMforTrainee(trainee_id); emit signal_UpdateTasksFIMforTrainee(trainee_id);
emit signal_UpdateDB(false, true);
} }
void ConnectorToServer::slot_AnswerQueryTasksXML_FIM(QByteArray array) void ConnectorToServer::slot_AnswerQueryTasksXML_FIM(QByteArray array)

View File

@@ -86,10 +86,10 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
ui->groupBox_Instructors->setMinimumHeight(200); ui->groupBox_Instructors->setMinimumHeight(200);
ui->groupBox_Instructors->setMaximumHeight(300); ui->groupBox_Instructors->setMaximumHeight(300);
ui->groupBox_Trainees->setMinimumHeight(400); ui->groupBox_Trainees->setMinimumHeight(500);
ui->groupBox_Trainees->setMinimumWidth(800); ui->groupBox_Trainees->setMinimumWidth(900);
ui->groupBox_Instructors->setMinimumWidth(800); ui->groupBox_Instructors->setMinimumWidth(900);
//Доступность кнопок //Доступность кнопок

View File

@@ -37,7 +37,7 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre
treeWidget->setFocusPolicy(Qt::FocusPolicy::NoFocus); treeWidget->setFocusPolicy(Qt::FocusPolicy::NoFocus);
connect(treeWidget, &QTreeWidget::itemClicked, this, &AMMtasksWidget::on_treeWidgetItemClicked); connect(treeWidget, &QTreeWidget::currentItemChanged, this, &AMMtasksWidget::on_treeWidgetCurrentItemChanged);
connect(treeWidget, &QTreeWidget::itemDoubleClicked, this, &AMMtasksWidget::on_treeWidgetDoubleClicked); connect(treeWidget, &QTreeWidget::itemDoubleClicked, this, &AMMtasksWidget::on_treeWidgetDoubleClicked);
preparationTreeWidget(); preparationTreeWidget();
@@ -199,9 +199,9 @@ void AMMtasksWidget::changeEvent(QEvent *event)
} }
} }
void AMMtasksWidget::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column) void AMMtasksWidget::on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
{ {
if(item == nullptr) if(current == nullptr)
{ {
ui->btnDelete->setEnabled(false); ui->btnDelete->setEnabled(false);
ui->btnStatus->setEnabled(false); ui->btnStatus->setEnabled(false);
@@ -211,7 +211,7 @@ void AMMtasksWidget::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column)
if(this->type == TypeListTreeAMMFIM::listCommon) if(this->type == TypeListTreeAMMFIM::listCommon)
{ {
int id = item->text(ColumnsTreeAMM::clmnAMM_ID).toInt(); int id = current->text(ColumnsTreeAMM::clmnAMM_ID).toInt();
TaskAmmFim task = taskTreePreparation->getTaskAMMbyID(id); TaskAmmFim task = taskTreePreparation->getTaskAMMbyID(id);
if(taskTreePreparation->getTypeModuleAMMbyID(id) == ModuleType::TYPE_PM) if(taskTreePreparation->getTypeModuleAMMbyID(id) == ModuleType::TYPE_PM)
@@ -229,13 +229,13 @@ void AMMtasksWidget::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column)
} }
else if(this->type == TypeListTreeAMMFIM::listForTrainee) else if(this->type == TypeListTreeAMMFIM::listForTrainee)
{ {
QTreeWidgetItem *treeItemParent = item->parent(); QTreeWidgetItem *treeItemParent = current->parent();
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбрана задача {//Выбрана задача
ui->btnStatus->setEnabled(true); ui->btnStatus->setEnabled(true);
ui->btnDelete->setEnabled(true); ui->btnDelete->setEnabled(true);
int id = item->text(ColumnsTreeAMM::clmnAMM_ID).toInt(); int id = current->text(ColumnsTreeAMM::clmnAMM_ID).toInt();
TaskAmmFim task = taskTreePreparation->getTaskAMMbyID(id); TaskAmmFim task = taskTreePreparation->getTaskAMMbyID(id);
if(task.getID()) if(task.getID())

View File

@@ -41,7 +41,7 @@ protected:
void changeEvent(QEvent * event) override; void changeEvent(QEvent * event) override;
private Q_SLOTS: private Q_SLOTS:
void on_treeWidgetItemClicked(QTreeWidgetItem *item, int column); void on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
void on_btnDelete_clicked(); void on_btnDelete_clicked();
void on_btnStatus_clicked(); void on_btnStatus_clicked();
void on_btnAssignTask_clicked(); void on_btnAssignTask_clicked();

View File

@@ -34,8 +34,7 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre
treeWidget->setFocusPolicy(Qt::FocusPolicy::NoFocus); treeWidget->setFocusPolicy(Qt::FocusPolicy::NoFocus);
//connect(treeWidget, &QTreeWidget::currentItemChanged, this, &FIMtasksWidget::on_treeWidgetCurrentItemChanged); connect(treeWidget, &QTreeWidget::currentItemChanged, this, &FIMtasksWidget::on_treeWidgetCurrentItemChanged);
connect(treeWidget, &QTreeWidget::itemClicked, this, &FIMtasksWidget::on_treeWidgetItemClicked);
preparationTreeWidget(); preparationTreeWidget();
@@ -160,9 +159,9 @@ void FIMtasksWidget::changeEvent(QEvent *event)
} }
} }
void FIMtasksWidget::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column) void FIMtasksWidget::on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
{ {
if(item == nullptr) if(current == nullptr)
{ {
ui->btnDelete->setEnabled(false); ui->btnDelete->setEnabled(false);
ui->btnCheck->setEnabled(false); ui->btnCheck->setEnabled(false);
@@ -170,10 +169,10 @@ void FIMtasksWidget::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column)
return; return;
} }
QTreeWidgetItem *treeItemParent = item->parent(); QTreeWidgetItem *treeItemParent = current->parent();
if(treeItemParent == nullptr) if(treeItemParent == nullptr)
{//Выбрана задача {//Выбрана задача
int id = item->text(ColumnsTreeFIM::clmnFIM_ID).toInt(); int id = current->text(ColumnsTreeFIM::clmnFIM_ID).toInt();
TaskAmmFim task = taskTreePreparation->getTaskFIMbyID(id); TaskAmmFim task = taskTreePreparation->getTaskFIMbyID(id);
@@ -201,14 +200,14 @@ void FIMtasksWidget::on_treeWidgetItemClicked(QTreeWidgetItem *item, int column)
} }
else else
{ {
setCurrentParentTask(item); //setCurrentParentTask(current);
/* /**/
ui->btnAssignTask->setEnabled(false); ui->btnAssignTask->setEnabled(false);
ui->btnDelete->setEnabled(false); ui->btnDelete->setEnabled(false);
ui->btnCheck->setEnabled(false); ui->btnCheck->setEnabled(false);
*/
} }
} }
@@ -469,7 +468,9 @@ void FIMtasksWidget::setCurrentTask(int id)
if(item->text(ColumnsTreeFIM::clmnFIM_ID).toInt() == id) if(item->text(ColumnsTreeFIM::clmnFIM_ID).toInt() == id)
{ {
treeWidget->setCurrentItem(item); treeWidget->setCurrentItem(item);
treeWidget->itemClicked(item, 0); //treeWidget->itemClicked(item, 0);
//treeWidget->itemChanged(item, 0);
treeWidget->setItemSelected(item, true);
return; return;
} }
} }

View File

@@ -40,7 +40,7 @@ protected:
void changeEvent(QEvent * event) override; void changeEvent(QEvent * event) override;
private Q_SLOTS: private Q_SLOTS:
void on_treeWidgetItemClicked(QTreeWidgetItem *item, int column); void on_treeWidgetCurrentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
void on_btnDelete_clicked(); void on_btnDelete_clicked();
void on_btnCheck_clicked(); void on_btnCheck_clicked();
void on_btnAssignTask_clicked(); void on_btnAssignTask_clicked();

View File

@@ -20,6 +20,56 @@ void TraineesView::slot_NeedUpdateUI(bool treeInstructor, bool treeTrainee)
} }
} }
QString TraineesView::buildStatisticTasksAMM(QList<TaskAmmFim> listTasks)
{
QString stat = "X/X";
int cntAll = 0;
int cntCompleted = 0;
for(TaskAmmFim task : listTasks)
{
cntAll++;
if(task.status == "completed")
cntCompleted++;
}
stat = QString("%1/%2").arg(
QString::number(cntCompleted),
QString::number(cntAll));
return stat;
}
QString TraineesView::buildStatisticTasksFIM(QList<TaskAmmFim> listTasks)
{
QString stat = "X/X/X";
int cntAll = 0;
int cntCompleted = 0;
int cntCheckup = 0;
int cntFailed = 0;
for(TaskAmmFim task : listTasks)
{
cntAll++;
if(task.status == "completed")
cntCompleted++;
else if(task.status == "checkup")
cntCheckup++;
else if(task.status == "failed")
cntFailed++;
}
stat = QString("%1/%2/%3/%4").arg(
QString::number(cntCompleted),
QString::number(cntFailed),
QString::number(cntCheckup),
QString::number(cntAll));
return stat;
}
void TraineesView::loadTraineesFromDB() void TraineesView::loadTraineesFromDB()
{ {
mtxTreeWidget.lock(); mtxTreeWidget.lock();
@@ -51,6 +101,11 @@ void TraineesView::loadTraineesFromDB()
if(trainee.getGroup().getID() != group.getID()) if(trainee.getGroup().getID() != group.getID())
continue; continue;
QList<TaskAmmFim> listAMM = connectorToServer->getListTasksAMMforTrainee(trainee.getID());
QList<TaskAmmFim> listFIM = connectorToServer->getListTasksFIMforTrainee(trainee.getID());
QString statAMM = buildStatisticTasksAMM(listAMM);
QString statFIM = buildStatisticTasksFIM(listFIM);
QTreeWidgetItem *ItemTrainee = new QTreeWidgetItem(); QTreeWidgetItem *ItemTrainee = new QTreeWidgetItem();
ItemTrainee->setText(ColumnsTreeUsers::clmn_ID, QString::number(trainee.getID())); ItemTrainee->setText(ColumnsTreeUsers::clmn_ID, QString::number(trainee.getID()));
@@ -61,6 +116,9 @@ void TraineesView::loadTraineesFromDB()
ItemTrainee->setText(ColumnsTreeUsers::clmn_Computer, trainee.getComputer().getName()); ItemTrainee->setText(ColumnsTreeUsers::clmn_Computer, trainee.getComputer().getName());
ItemTrainee->setText(ColumnsTreeUsers::clmn_IP_address, trainee.getComputer().getIpAddress()); ItemTrainee->setText(ColumnsTreeUsers::clmn_IP_address, trainee.getComputer().getIpAddress());
ItemTrainee->setText(ColumnsTreeUsers::clmn_AMMtasks, statAMM);
ItemTrainee->setText(ColumnsTreeUsers::clmn_FIMtasks, statFIM);
//Сокрытие пароля //Сокрытие пароля
ItemTrainee->setText(ColumnsTreeUsers::clmn_Password, QStringLiteral("******")); ItemTrainee->setText(ColumnsTreeUsers::clmn_Password, QStringLiteral("******"));

View File

@@ -17,6 +17,10 @@ public Q_SLOTS:
//Слот обработки сигнала необходимости обновления интерфейса //Слот обработки сигнала необходимости обновления интерфейса
void slot_NeedUpdateUI(bool treeInstructor, bool treeTrainee); void slot_NeedUpdateUI(bool treeInstructor, bool treeTrainee);
private:
QString buildStatisticTasksAMM(QList<TaskAmmFim> listTasks);
QString buildStatisticTasksFIM(QList<TaskAmmFim> listTasks);
protected: protected:
virtual void updateButtons(){}; virtual void updateButtons(){};
void loadTraineesFromDB(); void loadTraineesFromDB();