diff --git a/DOCS/Андрей/Board.md b/DOCS/Андрей/Board.md index 2778313..84c40e3 100644 --- a/DOCS/Андрей/Board.md +++ b/DOCS/Андрей/Board.md @@ -9,10 +9,12 @@ kanban-plugin: board - [ ] GUI: Сделать кнопку перезапроса общих списков FIM (по аналогии с АММ) - [ ] /RUS/Scens/tasksFIM.xml возможно изменится структура - [ ] выгрузка назначенных задач с оценками в эксель таблицу или любой другой человекочитаемый вид +- [ ] Текстовый поиск в задачах ## Completed +- [ ] Не влазиют слишком большие сообщения - [ ] FIM процедура добавить кнопку сделать новой - [ ] Не видно новых пришедших сообщений, если выбран другой Юзер - [ ] При смене УЗ в ГУИ остается история переписки в мессенджере. При этом Имя инструктора в диалоге подменяется. (Путается только в ГУИ!) @@ -58,6 +60,7 @@ kanban-plugin: board - [ ] Учет ширины скрола на деревьях (появляется если дерево больше окна) - [ ] Универсальный пересчет ширин колонок деревьев - [ ] При обновлении деревьев слетает назначенная колонка сортировки +- [ ] В сообщение о неудачном подключении к PostgreSQL добавить: PSQL не установлен ## Server @@ -66,17 +69,14 @@ kanban-plugin: board (Так как сейчас может вызвать проблемы при смене логина юзера!!!) - [ ] Зарефакторить databaselms_PostgreSQL.cpp (возможно, нужно использовать транзакции при восстановлении БД!) -- [ ] В сообщение о неудачном подключении к PostgreSQL добавить: PSQL не установлен ## GUI Messenger -- [ ] Не влазиют слишком большие сообщения ## GUI общие -- [ ] Текстовый поиск в задачах - [ ] Общий список АММ. автопролистывание вниз, если раскрывается дерево внизу diff --git a/FILES/translations/RRJServer_ru_RU.qm b/FILES/translations/RRJServer_ru_RU.qm index e20a4a6..76bba9d 100644 Binary files a/FILES/translations/RRJServer_ru_RU.qm and b/FILES/translations/RRJServer_ru_RU.qm differ diff --git a/LibInstructorsAndTrainees/commonview.cpp b/LibInstructorsAndTrainees/commonview.cpp index 8f0f5d9..3620bb1 100644 --- a/LibInstructorsAndTrainees/commonview.cpp +++ b/LibInstructorsAndTrainees/commonview.cpp @@ -26,6 +26,11 @@ CommonView::CommonView(ConnectorToServer* connectorToServer, TypeView type, QWid treeWidget->setSortingEnabled(false); + treeWidget->setVerticalScrollMode(QAbstractItemView::ScrollMode::ScrollPerPixel); + treeWidget->verticalScrollBar()->setSingleStep(10); + treeWidget->setHorizontalScrollMode(QAbstractItemView::ScrollMode::ScrollPerPixel); + treeWidget->horizontalScrollBar()->setSingleStep(10); + waitAnimationWidget = new WaitAnimationWidget; QMovie *movie = new QMovie(":/resources/icons/762.gif"); waitAnimationWidget->initialize(movie,this); diff --git a/LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp b/LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp index 518ee66..9faaa33 100644 --- a/LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp +++ b/LibInstructorsAndTrainees/tasks/ammtaskswidget.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include "ammtaskswidget.h" #include "ui_ammtaskswidget.h" #include "checkertask.h" @@ -100,6 +101,11 @@ AMMtasksWidget::AMMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre ui->label_Actual->setVisible(false); ui->btnDocsUpdating->setVisible(false); } + + treeWidget->setVerticalScrollMode(QAbstractItemView::ScrollMode::ScrollPerPixel); + treeWidget->verticalScrollBar()->setSingleStep(10); + treeWidget->setHorizontalScrollMode(QAbstractItemView::ScrollMode::ScrollPerPixel); + treeWidget->horizontalScrollBar()->setSingleStep(10); } AMMtasksWidget::~AMMtasksWidget() diff --git a/LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp b/LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp index c65a41c..8f7ec24 100644 --- a/LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp +++ b/LibInstructorsAndTrainees/tasks/fimtaskswidget.cpp @@ -85,6 +85,11 @@ FIMtasksWidget::FIMtasksWidget(ConnectorToServer* connectorToServer, TypeListTre //ui->verticalLayout->setAlignment(Qt::AlignmentFlag::AlignBottom); //ui->horizontalLayout_3->setAlignment(Qt::AlignmentFlag::AlignLeft); } + + treeWidget->setVerticalScrollMode(QAbstractItemView::ScrollMode::ScrollPerPixel); + treeWidget->verticalScrollBar()->setSingleStep(10); + treeWidget->setHorizontalScrollMode(QAbstractItemView::ScrollMode::ScrollPerPixel); + treeWidget->horizontalScrollBar()->setSingleStep(10); } FIMtasksWidget::~FIMtasksWidget() diff --git a/LibInstructorsAndTrainees/tasks/listsubproc.cpp b/LibInstructorsAndTrainees/tasks/listsubproc.cpp index 4258eaf..f0be64f 100644 --- a/LibInstructorsAndTrainees/tasks/listsubproc.cpp +++ b/LibInstructorsAndTrainees/tasks/listsubproc.cpp @@ -16,6 +16,11 @@ ListSubProc::ListSubProc(QWidget *parent) : treeWidget->setFocusPolicy(Qt::FocusPolicy::NoFocus); + treeWidget->setVerticalScrollMode(QAbstractItemView::ScrollMode::ScrollPerPixel); + treeWidget->verticalScrollBar()->setSingleStep(10); + treeWidget->setHorizontalScrollMode(QAbstractItemView::ScrollMode::ScrollPerPixel); + treeWidget->horizontalScrollBar()->setSingleStep(10); + preparationTreeWidget(); } diff --git a/LibInstructorsAndTrainees/trainees/personalcardtrainee.cpp b/LibInstructorsAndTrainees/trainees/personalcardtrainee.cpp index 5e91df4..4b254af 100644 --- a/LibInstructorsAndTrainees/trainees/personalcardtrainee.cpp +++ b/LibInstructorsAndTrainees/trainees/personalcardtrainee.cpp @@ -98,9 +98,20 @@ void PersonalCardTrainee::loadInfo() TimingOfTrainee timing = trainee.getTiming(); - ui->lblTimeOperation->setText(timing.getOperatingTimeS()); - ui->lblLoginTime->setText(timing.getEntryTimeS()); - ui->lblTimeExit->setText(timing.getExitTimeS()); + QTime time0; + time0.setHMS(0, 0, 0); + if(timing.getOperatingTime() == time0) + { + ui->lblTimeOperation->setText(timing.getOperatingTimeS()); + ui->lblLoginTime->setText("---"); + ui->lblTimeExit->setText("---"); + } + else + { + ui->lblTimeOperation->setText(timing.getOperatingTimeS()); + ui->lblLoginTime->setText(timing.getEntryTimeS()); + ui->lblTimeExit->setText(timing.getExitTimeS()); + } } void PersonalCardTrainee::slot_countTasksAMMforTraineeChanged(int trainee_id, QString statAMM) diff --git a/LibServer/cficontroller/cficontroller.cpp b/LibServer/cficontroller/cficontroller.cpp index b001005..5deeb6f 100644 --- a/LibServer/cficontroller/cficontroller.cpp +++ b/LibServer/cficontroller/cficontroller.cpp @@ -24,7 +24,7 @@ void CfiController::unLockAccessToCfiXML() } -bool CfiController::parsingCfiXML(QMap& mapCfiObjects) +bool CfiController::parsingCfiXML(QMap& mapCfiObjects) { QMutexLocker locker(&mtxAccess); @@ -62,8 +62,8 @@ bool CfiController::updateCfiXML(const QByteArray &array) if(! Tools::loadByteArrayXMLtoDOM(array, &docCfiListDOM_New)) return false; - QMap mapCfiObjects_Orig; - QMap mapCfiObjects_New; + QMap mapCfiObjects_Orig; + QMap mapCfiObjects_New; if(!parsingCfiXML_DOM(docCfiListDOM_Orig, mapCfiObjects_Orig)) return false; @@ -111,7 +111,7 @@ double CfiController::roundDoubleVal(double value, int cntNumAfterPoint) return round(value * pow(10, cntNumAfterPoint)) / pow(10, cntNumAfterPoint); } -bool CfiController::parsingCfiXML_DOM(QDomDocument &domDoc, QMap& mapCfiObjects) +bool CfiController::parsingCfiXML_DOM(QDomDocument &domDoc, QMap& mapCfiObjects) { QDomElement CFIObjectsElement = domDoc.firstChildElement("CFIObjects"); if(CFIObjectsElement.isNull()) @@ -138,7 +138,7 @@ bool CfiController::parsingCfiXML_DOM(QDomDocument &domDoc, QMap //атрибуты CFIObject QDomNamedNodeMap nodeMapOneCFIObject = oneCFIObjectElement.attributes(); - cfiObj.setId(nodeMapOneCFIObject.namedItem("id").nodeValue().toInt()); + cfiObj.setGuid(nodeMapOneCFIObject.namedItem("guid").nodeValue()); cfiObj.setIsChanged(nodeMapOneCFIObject.namedItem("isChanged").nodeValue() == "True" ? true : false); //childs CFIObject @@ -201,42 +201,54 @@ bool CfiController::parsingCfiXML_DOM(QDomDocument &domDoc, QMap cfiObj.setSetCameraPos(setCamPos); - mapCfiObjects.insert(cfiObj.getId(), cfiObj); + mapCfiObjects.insert(cfiObj.getGuid(), cfiObj); } }while (! (oneCFIObjectElement = oneCFIObjectElement.nextSiblingElement()).isNull()); return true; } -bool CfiController::merge2map(QMap &mapCfiObjects_orig, QMap &mapCfiObjects_new) +bool CfiController::merge2map(QMap &mapCfiObjects_orig, QMap &mapCfiObjects_new) { + //Проверка на удаление + for(CfiObject cfiObj : mapCfiObjects_orig) + { + QString guid = cfiObj.getGuid(); + + if(!mapCfiObjects_new.contains(guid)) + {//Удаляем + mapCfiObjects_orig.take(guid); + } + } + + //Замена, Добавление for(CfiObject cfiObj : mapCfiObjects_new) { - int id = cfiObj.getId(); + QString guid = cfiObj.getGuid(); - if(mapCfiObjects_orig.contains(id)) + if(mapCfiObjects_orig.contains(guid)) {//Такой есть if(cfiObj.getIsChanged()) {//Заменяем - mapCfiObjects_orig.take(id); + mapCfiObjects_orig.take(guid); cfiObj.setIsChanged(false); cfiObj.resetIsChangedInDomElement(); - mapCfiObjects_orig.insert(id, cfiObj); + mapCfiObjects_orig.insert(guid, cfiObj); } } else {//Добавляем cfiObj.setIsChanged(false); cfiObj.resetIsChangedInDomElement(); - mapCfiObjects_orig.insert(id, cfiObj); + mapCfiObjects_orig.insert(guid, cfiObj); } } return true; } -bool CfiController::saveNewCfiListFile(QMap &mapCfiObjects) +bool CfiController::saveNewCfiListFile(QMap &mapCfiObjects) { QDomDocument commonDOM; if(! Tools::loadFileXMLtoDOM(":/resources/blankXML/ListCFI.xml", &commonDOM)) diff --git a/LibServer/cficontroller/cficontroller.h b/LibServer/cficontroller/cficontroller.h index 0272509..4596668 100644 --- a/LibServer/cficontroller/cficontroller.h +++ b/LibServer/cficontroller/cficontroller.h @@ -18,7 +18,7 @@ public: void unLockAccessToCfiXML(); //Распарсивание файла CfiList.xml - bool parsingCfiXML(QMap& mapCfiObjects); + bool parsingCfiXML(QMap& mapCfiObjects); //Слияние (обновление) с новыми данными bool updateCfiXML(const QByteArray& array); @@ -34,19 +34,17 @@ private: double roundDoubleVal(double value, int cntNumAfterPoint); - bool parsingCfiXML_DOM(QDomDocument& domDoc, QMap& mapCfiObjects); + bool parsingCfiXML_DOM(QDomDocument& domDoc, QMap& mapCfiObjects); - bool merge2map(QMap& mapCfiObjects_orig, QMap& mapCfiObjects_new); + bool merge2map(QMap& mapCfiObjects_orig, QMap& mapCfiObjects_new); - bool saveNewCfiListFile(QMap& mapCfiObjects); + bool saveNewCfiListFile(QMap& mapCfiObjects); private: UpdateController* updateController; QMutex mtxAccess; - //QList listCfiObjects; - QLocale* germanLocale; }; diff --git a/LibServer/cficontroller/cfiobject.cpp b/LibServer/cficontroller/cfiobject.cpp index 6e0366d..cd4fcee 100644 --- a/LibServer/cficontroller/cfiobject.cpp +++ b/LibServer/cficontroller/cfiobject.cpp @@ -5,14 +5,14 @@ CfiObject::CfiObject() } -int CfiObject::getId() const +QString CfiObject::getGuid() const { - return id; + return guid; } -void CfiObject::setId(int value) +void CfiObject::setGuid(QString value) { - id = value; + guid = value; } QString CfiObject::getCfiName() const diff --git a/LibServer/cficontroller/cfiobject.h b/LibServer/cficontroller/cfiobject.h index ba1a4f0..89d08e6 100644 --- a/LibServer/cficontroller/cfiobject.h +++ b/LibServer/cficontroller/cfiobject.h @@ -42,8 +42,8 @@ class CfiObject public: CfiObject(); - int getId() const; - void setId(int value); + QString getGuid() const; + void setGuid(QString value); QString getCfiName() const; void setCfiName(const QString &value); @@ -69,7 +69,7 @@ public: void resetIsChangedInDomElement(); private: - int id; + QString guid; bool isChanged; QString cfiName; QString cfi; diff --git a/LibServer/settings/dialogsettingstray.cpp b/LibServer/settings/dialogsettingstray.cpp index 04e1f51..07250f9 100644 --- a/LibServer/settings/dialogsettingstray.cpp +++ b/LibServer/settings/dialogsettingstray.cpp @@ -75,6 +75,7 @@ DialogSettingsTray::DialogSettingsTray(ProviderDBLMS* providerDBLMS, QWidget *pa ui->btnSave->setEnabled(false); ui->btnCheckDB->setEnabled(true); + ui->btnUpdateDocs->setEnabled(true); flSettingsServerChanged = false; } else @@ -90,6 +91,7 @@ DialogSettingsTray::DialogSettingsTray(ProviderDBLMS* providerDBLMS, QWidget *pa ui->btnSave->setEnabled(false); ui->btnCheckDB->setEnabled(false); + ui->btnUpdateDocs->setEnabled(false); flSettingsServerChanged = false; } } @@ -217,6 +219,7 @@ void DialogSettingsTray::on_btnSave_clicked() saveSettings(); ui->btnCheckDB->setEnabled(true); + ui->btnUpdateDocs->setEnabled(true); this->accept(); } @@ -242,6 +245,7 @@ void DialogSettingsTray::on_editNameDB_textChanged(const QString &arg1) { ui->btnSave->setEnabled(true); ui->btnCheckDB->setEnabled(false); + ui->btnUpdateDocs->setEnabled(false); flSettingsServerChanged = true; } @@ -249,6 +253,7 @@ void DialogSettingsTray::on_editHostName_textChanged(const QString &arg1) { ui->btnSave->setEnabled(true); ui->btnCheckDB->setEnabled(false); + ui->btnUpdateDocs->setEnabled(false); flSettingsServerChanged = true; } @@ -256,6 +261,7 @@ void DialogSettingsTray::on_editPort_textChanged(const QString &arg1) { ui->btnSave->setEnabled(true); ui->btnCheckDB->setEnabled(false); + ui->btnUpdateDocs->setEnabled(false); flSettingsServerChanged = true; } @@ -263,6 +269,7 @@ void DialogSettingsTray::on_editUserName_textChanged(const QString &arg1) { ui->btnSave->setEnabled(true); ui->btnCheckDB->setEnabled(false); + ui->btnUpdateDocs->setEnabled(false); flSettingsServerChanged = true; } @@ -270,6 +277,7 @@ void DialogSettingsTray::on_editPassword_textChanged(const QString &arg1) { ui->btnSave->setEnabled(true); ui->btnCheckDB->setEnabled(false); + ui->btnUpdateDocs->setEnabled(false); flSettingsServerChanged = true; } diff --git a/translations/RRJServer_ru_RU.qm b/translations/RRJServer_ru_RU.qm index e20a4a6..76bba9d 100644 Binary files a/translations/RRJServer_ru_RU.qm and b/translations/RRJServer_ru_RU.qm differ diff --git a/translations/RRJServer_ru_RU.ts b/translations/RRJServer_ru_RU.ts index a9a535d..f5ab72f 100644 --- a/translations/RRJServer_ru_RU.ts +++ b/translations/RRJServer_ru_RU.ts @@ -927,7 +927,7 @@ Please try again later. Changeable: - Изменен: + Изменяемая: @@ -1487,14 +1487,12 @@ Please reconnect to the server. Maintenance training device RRJ-95NEW-100 Instructor's workstation - АРМ Инструктора Тренажёра процедур технического -обслуживания RRJ-95NEW-100 + АРМ Инструктора Тренажёра процедур технического обслуживания RRJ-95NEW-100 Maintenance training device RRJ-95NEW-100 Server - Сервер Тренажёра процедур технического -обслуживания RRJ-95NEW-100 + Сервер Тренажёра процедур технического обслуживания RRJ-95NEW-100 @@ -1747,81 +1745,81 @@ Please reconnect to the server. Версия материалов: - + Error PostgreSQL! Ошибка PostgreSQL! - + Server is started! Сервер запущен! - + Server is stoped! Сервер остановлен! - + Settings file could not be opened: Файл настроек не открыт: - + Database settings have been changed. The server will be restarted. Настройки Базы Данных были изменены. Сервер будет перезапущен. - + The file could not be opened Файл не может быть открыт - - + + Database connection error! Ошибка подключения Базы данных! - + Database connection OK! База данных подключена! - - + + started запущен - + locked заблокирован - + stoped остановлен - + connected подключена - + not connected не подключен - + No Client files found! Файлы клиента не найдены! - + * check Application for the presence of a folder with a build * check SharedData for a folder with the base version and the name base * проверьте Application на наличие папки со сборкой