Фильтрация АММ медленно

This commit is contained in:
krivoshein
2025-04-02 14:46:33 +03:00
parent 3e8fa010e3
commit 910acdc87f
9 changed files with 102 additions and 16 deletions

View File

@@ -43,5 +43,6 @@
<file>resources/icons/762.gif</file> <file>resources/icons/762.gif</file>
<file>resources/icons/assignTask.png</file> <file>resources/icons/assignTask.png</file>
<file>resources/icons/delete.png</file> <file>resources/icons/delete.png</file>
<file>resources/icons/filter.png</file>
</qresource> </qresource>
</RCC> </RCC>

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

@@ -19,7 +19,8 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
threadAnimation(nullptr), threadAnimation(nullptr),
taskTreePreparation(nullptr), taskTreePreparation(nullptr),
waitAnimationWidget(nullptr), waitAnimationWidget(nullptr),
accessAssignTask(false) accessAssignTask(false),
flOnlyActive(false)
{ {
ui->setupUi(this); ui->setupUi(this);
@@ -55,6 +56,8 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeList ty
ui->btnDelete->setEnabled(false); ui->btnDelete->setEnabled(false);
if(type == TypeList::listCommon) if(type == TypeList::listCommon)
ui->btnDelete->setVisible(false); ui->btnDelete->setVisible(false);
else
ui->btnOnlyActive->setVisible(false);
} }
AMMtasksWidget::~AMMtasksWidget() AMMtasksWidget::~AMMtasksWidget()
@@ -186,16 +189,17 @@ void AMMtasksWidget::slot_UpdateTasksAMMforTrainee(int trainee_id)
} }
} }
void AMMtasksWidget::loadTasksAMM() void AMMtasksWidget::loadTasksAMM(bool flRequestFromDB)
{ {
//Обновление дерева //Обновление дерева
treeWidget->clear(); treeWidget->clear();
waitAnimationWidget->showWithPlay(); waitAnimationWidget->showWithPlay();
QByteArray array = connectorToServer->getListTaskAmmArray(); if(flRequestFromDB)
/*QByteArray array*/arrayAMM = connectorToServer->getListTaskAmmArray();
signal_prepareListItems(array, &listAllModules); emit signal_prepareListItems(/*array*/arrayAMM, &listAllModules, flOnlyActive);
} }
void AMMtasksWidget::slot_listItemsReady(QList<QTreeWidgetItem *> listItems) void AMMtasksWidget::slot_listItemsReady(QList<QTreeWidgetItem *> listItems)
@@ -306,3 +310,19 @@ void AMMtasksWidget::on_btnDelete_clicked()
} }
} }
} }
void AMMtasksWidget::on_btnOnlyActive_clicked()
{
if(ui->btnOnlyActive->isChecked())
{
flOnlyActive = true;
//slot_listItemsReady(listItemsALL, listItemsACTIVE);
}
else
{
flOnlyActive = false;
//slot_listItemsReady(listItemsALL, listItemsACTIVE);
}
//connectorToServer->sendQueryTasksXML("amm");
loadTasksAMM(false);
}

View File

@@ -50,6 +50,8 @@ private Q_SLOTS:
void on_btnDelete_clicked(); void on_btnDelete_clicked();
void on_btnOnlyActive_clicked();
public Q_SLOTS: public Q_SLOTS:
void slot_AssignTaskAMMtoTrainee(); void slot_AssignTaskAMMtoTrainee();
@@ -68,10 +70,10 @@ private:
Module* searchModuleByID(int id); Module* searchModuleByID(int id);
void preparationTreeWidget(); void preparationTreeWidget();
void reSetHeadTreeWidget(); void reSetHeadTreeWidget();
void loadTasksAMM(); void loadTasksAMM(bool flRequestFromDB = true);
Q_SIGNALS: Q_SIGNALS:
void signal_prepareListItems(QByteArray array, QList<Module*>* listAllModules); void signal_prepareListItems(QByteArray array, QList<Module*>* listAllModules, bool flOnlyActive);
void signal_prepareListItemsForTrainee(QList<TaskAmmFim> listTask, QList<Module*>* listAllModules); void signal_prepareListItemsForTrainee(QList<TaskAmmFim> listTask, QList<Module*>* listAllModules);
public Q_SLOTS: public Q_SLOTS:
void slot_listItemsReady(QList<QTreeWidgetItem*> listItems); void slot_listItemsReady(QList<QTreeWidgetItem*> listItems);
@@ -92,6 +94,10 @@ private:
TaskTreePreparation* taskTreePreparation; TaskTreePreparation* taskTreePreparation;
WaitAnimationWidget *waitAnimationWidget; WaitAnimationWidget *waitAnimationWidget;
bool accessAssignTask; bool accessAssignTask;
bool flOnlyActive;
QByteArray arrayAMM;
}; };
#endif // AMMTASKSWIDGET_H #endif // AMMTASKSWIDGET_H

View File

@@ -40,8 +40,43 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item>
<widget class="QToolButton" name="btnOnlyActive">
<property name="minimumSize">
<size>
<width>50</width>
<height>50</height>
</size>
</property>
<property name="text">
<string>Active</string>
</property>
<property name="icon">
<iconset resource="../resources.qrc">
<normaloff>:/resources/icons/filter.png</normaloff>:/resources/icons/filter.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonTextUnderIcon</enum>
</property>
</widget>
</item>
<item> <item>
<widget class="QToolButton" name="btnDelete"> <widget class="QToolButton" name="btnDelete">
<property name="minimumSize">
<size>
<width>50</width>
<height>50</height>
</size>
</property>
<property name="text"> <property name="text">
<string>Delete</string> <string>Delete</string>
</property> </property>

View File

@@ -5,7 +5,8 @@ int Module::lastID = 0;
Module::Module(): Module::Module():
type (ModuleType::TYPE_PM), type (ModuleType::TYPE_PM),
parentModule(nullptr), parentModule(nullptr),
ID(0) ID(0),
isActive(false)
{ {
ID = ++lastID; ID = ++lastID;
} }
@@ -38,6 +39,19 @@ Module *Module::getModuleByID(int id)
return nullptr; return nullptr;
} }
void Module::setIsActiveTrue()
{
this->isActive = true;
if(parentModule)
parentModule->setIsActiveTrue();
}
bool Module::getIsActive()
{
return this->isActive;
}
PM::PM(): PM::PM():

View File

@@ -20,11 +20,15 @@ public:
void setParentModule(Module* parentModule){ this->parentModule = parentModule; }; void setParentModule(Module* parentModule){ this->parentModule = parentModule; };
Module* getModuleByID(int id); Module* getModuleByID(int id);
void setIsActiveTrue();
bool getIsActive();
protected: protected:
ModuleType type; ModuleType type;
Module* parentModule; Module* parentModule;
int ID; int ID;
static int lastID; static int lastID;
bool isActive;
}; };

View File

@@ -21,13 +21,16 @@ void TaskTreePreparation::stopParser()
flagStop = true; flagStop = true;
} }
QTreeWidgetItem *TaskTreePreparation::addModuleToTreeWidget(Module *module, QTreeWidgetItem *parentItem) QTreeWidgetItem *TaskTreePreparation::addModuleToTreeWidget(Module *module, bool flOnlyActive, QTreeWidgetItem *parentItem)
{ {
QTreeWidgetItem* itemModule = nullptr; QTreeWidgetItem* itemModule = nullptr;
if(flagStop) if(flagStop)
return itemModule; return itemModule;
if(flOnlyActive && !module->getIsActive())
return nullptr;
QString text = ""; QString text = "";
QString ID = QString::number(module->getID()); QString ID = QString::number(module->getID());
QString code = ""; QString code = "";
@@ -45,7 +48,7 @@ QTreeWidgetItem *TaskTreePreparation::addModuleToTreeWidget(Module *module, QTre
for(Module* module : PMmodul->getListChildModules()) for(Module* module : PMmodul->getListChildModules())
{ {
addModuleToTreeWidget(module, itemModule); addModuleToTreeWidget(module, flOnlyActive, itemModule);
} }
} }
else else
@@ -158,6 +161,10 @@ void TaskTreePreparation::domElementParser(QDomElement element, Module* modulePa
PM* PMmodulParent = static_cast<PM*>(moduleParent); PM* PMmodulParent = static_cast<PM*>(moduleParent);
PMmodulParent->addChildModule(module); PMmodulParent->addChildModule(module);
} }
//Активность
if(nodeMap.namedItem("active").nodeValue() == "true")
module->setIsActiveTrue();
} }
else if(name == "rus" || name == "eng") else if(name == "rus" || name == "eng")
{ {
@@ -201,7 +208,7 @@ void TaskTreePreparation::domElementParser(QDomElement element, Module* modulePa
}while (! (childElement = childElement.nextSiblingElement()).isNull()); }while (! (childElement = childElement.nextSiblingElement()).isNull());
} }
void TaskTreePreparation::slot_prepareListItems(QByteArray array, QList<Module*>* listAllModules) void TaskTreePreparation::slot_prepareListItems(QByteArray array, QList<Module*>* listAllModules, bool flOnlyActive)
{ {
qDebug() << "TaskTreePreparation::slot_prepareListItems thread ID " << QThread::currentThreadId(); qDebug() << "TaskTreePreparation::slot_prepareListItems thread ID " << QThread::currentThreadId();
@@ -213,7 +220,7 @@ void TaskTreePreparation::slot_prepareListItems(QByteArray array, QList<Module*>
for(Module* module : *this->listAllModules) for(Module* module : *this->listAllModules)
{ {
QTreeWidgetItem* item = addModuleToTreeWidget(module); QTreeWidgetItem* item = addModuleToTreeWidget(module, flOnlyActive);
listItems.append(item); listItems.append(item);
} }
@@ -230,7 +237,6 @@ void TaskTreePreparation::slot_prepareListItemsForTrainee(QList<TaskAmmFim> list
listItems.clear(); listItems.clear();
for(TaskAmmFim task : listTask) for(TaskAmmFim task : listTask)
{ {
QTreeWidgetItem* item = nullptr; QTreeWidgetItem* item = nullptr;

View File

@@ -25,13 +25,13 @@ public:
void stopParser(); void stopParser();
private: private:
QTreeWidgetItem* addModuleToTreeWidget(Module* module, QTreeWidgetItem* parentItem = nullptr); QTreeWidgetItem* addModuleToTreeWidget(Module* module, bool flOnlyActive = false, QTreeWidgetItem* parentItem = nullptr);
void loadAMMtasksFromXML(QByteArray array); void loadAMMtasksFromXML(QByteArray array);
void domElementParser(QDomElement element, Module* moduleParent); void domElementParser(QDomElement element, Module* moduleParent);
void deleteAllModuls(); void deleteAllModuls();
public Q_SLOTS: public Q_SLOTS:
void slot_prepareListItems(QByteArray array, QList<Module*>* listAllModules); void slot_prepareListItems(QByteArray array, QList<Module*>* listAllModules, bool flOnlyActive);
void slot_prepareListItemsForTrainee(QList<TaskAmmFim> listTask, QList<Module*>* listAllModules); void slot_prepareListItemsForTrainee(QList<TaskAmmFim> listTask, QList<Module*>* listAllModules);
Q_SIGNALS: Q_SIGNALS: