|
@@ -0,0 +1,106 @@
|
|
|
+#include "DataTableWidget.h"
|
|
|
+
|
|
|
+#include "ProjectManager.h"
|
|
|
+#include <dbService/CNodeDataService.h>
|
|
|
+#include <dbService/ClassSet.h>
|
|
|
+
|
|
|
+#include <Widgets/Button.h>
|
|
|
+#include <QBoxLayout>
|
|
|
+
|
|
|
+#include <QTabWidget>
|
|
|
+#include <QLabel>
|
|
|
+#include <QTableView>
|
|
|
+
|
|
|
+#include <QDebug>
|
|
|
+
|
|
|
+DataTableWidget::DataTableWidget(ProjectInfo *proj, int indexType, QWidget *parent)
|
|
|
+ : QWidget(parent), m_proj(proj), m_indexType(indexType)
|
|
|
+{
|
|
|
+ m_mind1 = new CMind(this);
|
|
|
+ m_mind2 = new CMind(this);
|
|
|
+ initWidget();
|
|
|
+ initLayout();
|
|
|
+ connectSignalsAndSlots();
|
|
|
+ setupMind();
|
|
|
+}
|
|
|
+
|
|
|
+void DataTableWidget::initWidget()
|
|
|
+{
|
|
|
+ m_dataTab = new QTabWidget(this);
|
|
|
+ m_dataTab->setTabPosition(QTabWidget::South);
|
|
|
+ m_pageLab = new QLabel(this);
|
|
|
+ m_previous = new PushButton("上一级指标", this);
|
|
|
+ m_next = new PushButton("下一级指标", this);
|
|
|
+}
|
|
|
+
|
|
|
+void DataTableWidget::initLayout()
|
|
|
+{
|
|
|
+ m_layout = new QVBoxLayout(this);
|
|
|
+ m_layout->addWidget(m_dataTab);
|
|
|
+ m_pageLayout = new QHBoxLayout();
|
|
|
+ m_layout->addLayout(m_pageLayout);
|
|
|
+
|
|
|
+ m_pageLayout->setSpacing(10);
|
|
|
+ m_pageLayout->addStretch();
|
|
|
+ m_pageLayout->addWidget(m_previous);
|
|
|
+ m_pageLayout->addWidget(m_pageLab);
|
|
|
+ m_pageLayout->addWidget(m_next);
|
|
|
+ m_pageLayout->addStretch();
|
|
|
+}
|
|
|
+
|
|
|
+void DataTableWidget::connectSignalsAndSlots()
|
|
|
+{
|
|
|
+ connect(m_previous, &PushButton::clicked, this, &DataTableWidget::slotPrevious);
|
|
|
+ connect(m_next, &PushButton::clicked, this, &DataTableWidget::slotNext);
|
|
|
+}
|
|
|
+
|
|
|
+void DataTableWidget::setupMind()
|
|
|
+{
|
|
|
+ ProjectManager::IndexType t = (ProjectManager::IndexType)m_indexType;
|
|
|
+
|
|
|
+ QList<CNodeData> list;
|
|
|
+ bool ret = CNodeDataService().QueryAll(list, m_proj->id, t);
|
|
|
+ if (ret) {
|
|
|
+ m_mind1->setNodeList(list);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (t == ProjectManager::TechIndex) {
|
|
|
+ QList<CNodeData> list;
|
|
|
+ bool ret = CNodeDataService().QueryAll(list, m_proj->id, ProjectManager::AbilityIndex);
|
|
|
+ if (ret) {
|
|
|
+ m_mind2->setNodeList(list);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ setCurrentPage(1);
|
|
|
+}
|
|
|
+
|
|
|
+int DataTableWidget::currentPage() const
|
|
|
+{
|
|
|
+ return m_currentPage;
|
|
|
+}
|
|
|
+
|
|
|
+void DataTableWidget::setCurrentPage(int p)
|
|
|
+{
|
|
|
+ if (p < 1 || p >= m_mind1->levels()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ m_currentPage = p;
|
|
|
+ m_dataTab->clear();
|
|
|
+ for (CNodeData n : m_mind1->nodesInLevel(p)) {
|
|
|
+ QTableView *t = new QTableView(m_dataTab);
|
|
|
+ m_dataTab->addTab(t, n.name);
|
|
|
+ }
|
|
|
+
|
|
|
+ m_pageLab->setText(QString("共 %1 页, 当前第 %2 页").arg(m_mind1->levels() - 1).arg(p));
|
|
|
+}
|
|
|
+
|
|
|
+void DataTableWidget::slotPrevious()
|
|
|
+{
|
|
|
+ setCurrentPage(m_currentPage - 1);
|
|
|
+}
|
|
|
+
|
|
|
+void DataTableWidget::slotNext()
|
|
|
+{
|
|
|
+ setCurrentPage(m_currentPage + 1);
|
|
|
+}
|