diff --git a/MorphereAnalyzer/MorphereAnalyzer.pro b/MorphereAnalyzer/MorphereAnalyzer.pro index 447d131..664a2d4 100644 --- a/MorphereAnalyzer/MorphereAnalyzer.pro +++ b/MorphereAnalyzer/MorphereAnalyzer.pro @@ -4,7 +4,7 @@ # #------------------------------------------------- -QT += core gui sql webkitwidgets network webkit +QT += core gui sql network webenginewidgets greaterThan(QT_MAJOR_VERSION, 4): QT += widgets diff --git a/MorphereAnalyzer/mainwindow.cpp b/MorphereAnalyzer/mainwindow.cpp index a99ae82..21ca838 100644 --- a/MorphereAnalyzer/mainwindow.cpp +++ b/MorphereAnalyzer/mainwindow.cpp @@ -175,6 +175,8 @@ void MainWindow::createActions() connect(actTestUpload, SIGNAL(triggered()), this, SLOT(slotTestUpload())); actShowUpload = new QAction(tr("Show Upload"), this); connect(actShowUpload, SIGNAL(triggered()), this, SLOT(slotShowUpload())); + actD3ViewTree = new QAction(tr("D3View Tree"), this); + connect(actD3ViewTree, SIGNAL(triggered()), this, SLOT(slotD3ViewTree())); } void MainWindow::slotShowUpload() @@ -189,6 +191,12 @@ void MainWindow::slotD3View() //qDebug() << "hide the D3View"; } +void MainWindow::slotD3ViewTree() +{ + ((YMorphereWidget*)(m_ptwResult->currentWidget()))->D3ViewTree(); + //qDebug() << "hide the D3View"; +} + void MainWindow::createMenus() { @@ -225,7 +233,7 @@ void MainWindow::createMenus() menuD3View = menuBar()->addMenu(tr("D3View")); menuD3View->addAction(actD3View); - + menuD3View->addAction(actD3ViewTree); } //! [12] diff --git a/MorphereAnalyzer/mainwindow.h b/MorphereAnalyzer/mainwindow.h index a69e811..0f52dca 100644 --- a/MorphereAnalyzer/mainwindow.h +++ b/MorphereAnalyzer/mainwindow.h @@ -84,7 +84,7 @@ private slots: void slotTestUpload(); void slotD3View(); void slotShowUpload(); - + void slotD3ViewTree(); protected: void closeEvent(QCloseEvent *); @@ -143,6 +143,7 @@ private: QAction *actD3View; + QAction *actD3ViewTree; QAction *actShowUpload; //AnalyzerThread m_pThread[16]; /* diff --git a/MorphereAnalyzer/ychildrenthread.h b/MorphereAnalyzer/ychildrenthread.h index 1980c4d..48a848f 100644 --- a/MorphereAnalyzer/ychildrenthread.h +++ b/MorphereAnalyzer/ychildrenthread.h @@ -40,8 +40,6 @@ class YOneDepthMThread:public YMorphereThread private: //QString getWeeksInMonth(unsigned int _nDate); - - QString userdict; int m_nTitleBody; int m_nPeriod; diff --git a/MorphereAnalyzer/ymonedepthwidget.cpp b/MorphereAnalyzer/ymonedepthwidget.cpp index d2c67fa..9dd5da5 100644 --- a/MorphereAnalyzer/ymonedepthwidget.cpp +++ b/MorphereAnalyzer/ymonedepthwidget.cpp @@ -18,7 +18,8 @@ #include #include #include - +#include +#include #define D_NOT_SELECT -1 #define SAFE_DELETE(x) if(x != NULL) { delete x; x = NULL; } @@ -657,8 +658,8 @@ void YMOneDepthWidget::D3View() QString strHtml; - strHtml = "" - "\n" + strHtml = "" + "\n" "\n" + "\n" + "\n " + "\n" + "\n " + "\n" + "\n " + "\n" + "\n " + "\n" + "\n " + "\n " + "\n"; + + qDebug() << strHtml; + + QFile file("d3onedepthtree.html"); + if(!file.open(QFile::WriteOnly | QFile::Text)) return; + + QTextStream out(&file); + + out << strHtml; + + file.close(); + m_WVD3View.setHtml(strHtml); + //m_WVD3View.settings()->setObjectCacheCapacities(0,0,0); + m_WVD3View.repaint(); + m_WVD3View.show(); +} + +QString YMOneDepthWidget::Json() +{ + + QString strCKeyword = getCenterKeyword(); + //qDebug() << "executed"; + QString strjson = "{\n\t\"name\":\" " + strCKeyword + "\",\n"; + strjson += ("\t\"children\": [\n"); + + STable* pTable = (STable*)((QTabWidget*)(m_ptwTable->currentWidget()))->currentWidget(); + int nCountIndex = pTable->columnCount() - 1; + int nKeywordIndex = pTable->columnCount() - 2; + + for (int i = 0; i < pTable->rowCount(); i++) + { + QString strKeyword = pTable->item(i, nKeywordIndex)->text().trimmed(); + int nCount = pTable->item(i, nCountIndex)->text().trimmed().toInt(); + strjson += ("\t{\"name\": \"" + strKeyword + "\", \"size\": " + QString::number(nCount) + "},\n"); + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t]\n}"; + + return strjson; + +} + bool YMOneDepthWidget::setListMorphere(QStringList& MorphereEN, QStringList& MorphereKO) { QFile fHeader("morpherelist.txt"); diff --git a/MorphereAnalyzer/ymonedepthwidget.h b/MorphereAnalyzer/ymonedepthwidget.h index bab847f..10eaa74 100644 --- a/MorphereAnalyzer/ymonedepthwidget.h +++ b/MorphereAnalyzer/ymonedepthwidget.h @@ -46,6 +46,7 @@ public: QMap getResult(); void TestUpload(); void D3View(); + void D3ViewTree(); void setParam(QString strJson); private: // Data @@ -141,7 +142,7 @@ public slots: QTabWidget* getQTabWidget(); bool isSortMorphereDateChecked(); bool isSortDateMorphereChecked(); - + QString Json(); }; diff --git a/MorphereAnalyzer/ymorpherewidget.cpp b/MorphereAnalyzer/ymorpherewidget.cpp index 4c831ab..85a5233 100644 --- a/MorphereAnalyzer/ymorpherewidget.cpp +++ b/MorphereAnalyzer/ymorpherewidget.cpp @@ -67,6 +67,13 @@ void YMorphereWidget::D3View() } + +void YMorphereWidget::D3ViewTree() +{ + +} + + void YMorphereWidget::setParam(QString strJson) { diff --git a/MorphereAnalyzer/ymorpherewidget.h b/MorphereAnalyzer/ymorpherewidget.h index e397ec8..e6ef44f 100644 --- a/MorphereAnalyzer/ymorpherewidget.h +++ b/MorphereAnalyzer/ymorpherewidget.h @@ -6,18 +6,24 @@ #include "yalgorithm.h" #include #include "widget.h" -#include -class QWebViewChild:public QWebView +#include +class QWebViewChild:public QWebEngineView { Q_OBJECT +public: + QWebViewChild(QWidget *parent = 0):QWebEngineView(parent) + { + + } + protected: void closeEvent(QCloseEvent *event) { this->setHtml(QString()); - this->settings()->setObjectCacheCapacities(0,0,0); this->repaint(); } + }; @@ -46,6 +52,7 @@ public: virtual void SaveFileSimple(); virtual void TestUpload(); virtual void D3View(); + virtual void D3ViewTree(); void setTabWidget(QTabWidget* tabWidget); virtual void setParam(QString strJson); QString getName(); diff --git a/MorphereAnalyzer/ymplatformwidget.cpp b/MorphereAnalyzer/ymplatformwidget.cpp new file mode 100644 index 0000000..f17291f --- /dev/null +++ b/MorphereAnalyzer/ymplatformwidget.cpp @@ -0,0 +1,3186 @@ + +#include "ymplatformwidget.h" +#include "../Json/sjson.h" +#include "../common.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define D_NOT_SELECT -1 + +#define SAFE_DELETE(x) if(x != NULL) { delete x; x = NULL; } +#define SAFE_DELETEARRAY(x) if(x != NULL) { delete [] x; x = NULL; } +#define SAFE_RELEASE(x) if(x != NULL) { x->Release(); x = NULL; } + + +YMPlatformWidget::YMPlatformWidget(QWidget *parent) + :YMorphereWidget(parent) +{ + if(!setListMorphere(m_strlistMorphere, m_strlistMorphereko)) + { + m_strlistMorphere << "NNG" <<"NNP"<<"NNB"<<"NNBC"<<"NR"<<"NP"<<"VV"<<"VA"<<"VX"<<"VCP"<<"VCN"<<"MM"<<"MAG"<<"MAJ"<<"IC"<<"JKS"<<"JKC"<<"JKG"<<"JKO"<<"JKB"<<"JKV"<<"JKQ"<<"JX"<<"JC"<<"EP"<<"EF"<<"EC"<<"ETN"<<"ETM"<<"XPN"<<"XSN"<<"XSV"<<"XSA"<<"XR"<<"SF"<<"SE"<<"SSO"<<"SSC"<<"SC"<<"SY"<<"SL"<<"SH"<<"SN"; + m_strlistMorphereko << "NNG" <<"NNP"<<"NNB"<<"NNBC"<<"NR"<<"NP"<<"VV"<<"VA"<<"VX"<<"VCP"<<"VCN"<<"MM"<<"MAG"<<"MAJ"<<"IC"<<"JKS"<<"JKC"<<"JKG"<<"JKO"<<"JKB"<<"JKV"<<"JKQ"<<"JX"<<"JC"<<"EP"<<"EF"<<"EC"<<"ETN"<<"ETM"<<"XPN"<<"XSN"<<"XSV"<<"XSA"<<"XR"<<"SF"<<"SE"<<"SSO"<<"SSC"<<"SC"<<"SY"<<"SL"<<"SH"<<"SN"; + } + + m_strName = "platform"; + + + QVBoxLayout *vMainLayout = new QVBoxLayout; + vMainLayout->setAlignment(Qt::AlignVCenter); + QVBoxLayout *vboxlayout = new QVBoxLayout; + + QGroupBox *gBox = setMorphereList(); + QGroupBox *gDate = setDate(); + QGroupBox *gData = setData(); + QGroupBox *gFilter = setFilter(); + QGroupBox *gFilter2 = setFilter2(); + QGroupBox *gOther = setOther(); + QGroupBox *gSort = setSort(); + QHBoxLayout *hboxlayout = new QHBoxLayout; + QGroupBox *gDictionary = setDictionary(); + QGroupBox *gCenterKeyword = setCenterKeyword(); + + hboxlayout->addWidget(gBox,5); + vboxlayout->addWidget(gData,3); + vboxlayout->addWidget(gDate,3); + //vboxlayout->addWidget(gFilter,3); + vboxlayout->addWidget(gSort,2); + vboxlayout->addWidget(gOther,2); + vboxlayout->addWidget(gDictionary,2); + + hboxlayout->addLayout(vboxlayout,5); + vMainLayout->addLayout(hboxlayout, 2); + + vMainLayout->addWidget(gCenterKeyword, 1); + vMainLayout->addWidget(gFilter, 1); + vMainLayout->addWidget(gFilter2, 1); + + + m_ptwData = new QTabWidget; + m_ptwData->setTabsClosable(true); + connect(m_ptwData,SIGNAL(tabCloseRequested(int)),this,SLOT(CloseTab(int))); + connect(m_ptwData,SIGNAL(tabBarDoubleClicked(int)),this,SLOT(DoubleClickTab(int))); + AddTable("Start"); + + vMainLayout->addWidget(m_ptwData, 8); + setLayout(vMainLayout); +} + +QGroupBox *YMPlatformWidget::setMorphereList() +{ + QVBoxLayout *vlayout = new QVBoxLayout; + QVBoxLayout *vlayout1 = new QVBoxLayout; + + QHBoxLayout *hlayout = new QHBoxLayout; + QGroupBox *groupBox = new QGroupBox(tr("Morphere List")); + + m_plwMorphereList = new QListWidget; + m_plwMorphereAdd = new QListWidget; + m_plwMorphereList->setSelectionMode(QAbstractItemView::MultiSelection); + m_plwMorphereAdd->setSelectionMode(QAbstractItemView::ExtendedSelection); + + + for(int i=0;isetData(Qt::UserRole, QVariant(m_strlistMorphere.at(i))); + } + + for(int i=0;isetData(Qt::UserRole, QVariant(m_strlistMorphere.at(i))); + } + + for(int i=0;icount();i++) + { + m_plwMorphereAdd->item(i)->setHidden(true); + } + + + QPushButton *ppbAdd = new QPushButton("Add"); + QPushButton *ppbDel = new QPushButton("Del"); + vlayout->addWidget(m_plwMorphereList); + vlayout->addWidget(ppbAdd); + + vlayout1->addWidget(m_plwMorphereAdd); + vlayout1->addWidget(ppbDel); + + connect(ppbAdd, SIGNAL(released()),this, SLOT(MorphereListAdd())); + connect(ppbDel, SIGNAL(released()),this, SLOT(MorphereListDel())); + + + + hlayout->addLayout(vlayout); + hlayout->addLayout(vlayout1); + + groupBox->setLayout(hlayout); + groupBox->setCheckable(true); + return groupBox; +} + + +QGroupBox *YMPlatformWidget::setDate() +{ + QHBoxLayout *hlayout = new QHBoxLayout; + QHBoxLayout *hlayout1 = new QHBoxLayout; + QHBoxLayout *hlayout2 = new QHBoxLayout; + QVBoxLayout *vlayout = new QVBoxLayout; + + QGroupBox *groupBox = new QGroupBox(tr("Date")); + + m_pdeStart = new QDateEdit(QDate::currentDate()); + m_pdeEnd = new QDateEdit(QDate::currentDate()); + + m_pdeStart->setDateRange(QDate(2003, 5, 20),QDate::currentDate()); + m_pdeEnd->setDateRange(QDate(2003, 5, 20),QDate::currentDate()); + + QCalendarWidget *pCalender = new QCalendarWidget(); + m_pdeStart->setCalendarWidget(pCalender); + m_pdeStart->setCalendarPopup(true); + + m_pdeEnd->setCalendarWidget(pCalender); + m_pdeEnd->setCalendarPopup(true); + + m_pcbDate = new QComboBox; + m_pcbDate->addItems(QStringList() << "ALL" << "NotAll"); + + m_pcbPeriod = new QComboBox; + m_pcbPeriod->addItems(QStringList() << "None" << "1 Day" << "1 Week" << "1 Month"); + + m_pleDates = new QLineEdit; + m_pleDates->setValidator(new QIntValidator(1, 100)); + + + m_pcbDuring = new QComboBox; + m_pcbDuring->addItems(QStringList() << "None" << "Days" << "Weeks" << "Months" << "Years"); + + hlayout->addWidget(m_pcbDate); + hlayout->addWidget(new QLabel("Start:")); + hlayout->addWidget(m_pdeStart); + hlayout->addWidget(new QLabel("End:")); + hlayout->addWidget(m_pdeEnd); + + hlayout1->addWidget(new QLabel("Period:")); + hlayout1->addWidget(m_pcbPeriod); + + hlayout2->addWidget(new QLabel("Recent:")); + hlayout2->addWidget(m_pleDates); + hlayout2->addWidget(m_pcbDuring); + + vlayout->addLayout(hlayout2); + vlayout->addLayout(hlayout); + vlayout->addLayout(hlayout1); + + groupBox->setCheckable(true); + + groupBox->setLayout(vlayout); + + return groupBox; +} + +QGroupBox *YMPlatformWidget::setFilter() +{ + QHBoxLayout *hlayout = new QHBoxLayout; + QHBoxLayout *hlayout2 = new QHBoxLayout; + QHBoxLayout *hlayout3 = new QHBoxLayout; + QVBoxLayout *vlayout = new QVBoxLayout; + + + m_pleFilterRankALL = new QLineEdit; + m_pleFilterRankSeparated = new QLineEdit; + m_pleFilterKeyword = new QLineEdit; + m_pleFilterKeywordLength = new QLineEdit; + m_pleFilterExtractor = new QLineEdit; + + m_pleFilterKeywordLength->setValidator(new QIntValidator(1, 10)); + m_pleFilterRankALL->setValidator(new QIntValidator(1, 10000)); + m_pleFilterRankSeparated->setValidator(new QIntValidator(1, 10000)); + + hlayout->addWidget(new QLabel("RankALL: ")); + hlayout->addWidget(m_pleFilterRankALL); + hlayout->addWidget(new QLabel("RankSeparated: ")); + hlayout->addWidget(m_pleFilterRankSeparated); + hlayout->addWidget(new QLabel("Keyword Length: ")); + hlayout->addWidget(m_pleFilterKeywordLength); + + hlayout2->addWidget(new QLabel("KeywordFilter: ")); + hlayout2->addWidget(m_pleFilterKeyword); + + hlayout3->addWidget(new QLabel("Extract Keyword: ")); + hlayout3->addWidget(m_pleFilterExtractor); + + + vlayout->addLayout(hlayout3); + vlayout->addLayout(hlayout2); + vlayout->addLayout(hlayout); + QGroupBox *groupBox = new QGroupBox(tr("1Depth Filter")); + + groupBox->setCheckable(true); + + groupBox->setLayout(vlayout); + groupBox->setChecked(true); + return groupBox; +} + +QGroupBox *YMPlatformWidget::setFilter2() +{ + QHBoxLayout *hlayout = new QHBoxLayout; + QHBoxLayout *hlayout2 = new QHBoxLayout; + QHBoxLayout *hlayout3 = new QHBoxLayout; + QVBoxLayout *vlayout = new QVBoxLayout; + + + m_pleFilterRankALL2 = new QLineEdit; + m_pleFilterRankSeparated2 = new QLineEdit; + m_pleFilterKeyword2 = new QLineEdit; + m_pleFilterKeywordLength2 = new QLineEdit; + m_pleFilterExtractor2 = new QLineEdit; + + m_pleFilterKeywordLength2->setValidator(new QIntValidator(1, 10)); + m_pleFilterRankALL2->setValidator(new QIntValidator(1, 10000)); + m_pleFilterRankSeparated2->setValidator(new QIntValidator(1, 10000)); + + hlayout->addWidget(new QLabel("RankALL: ")); + hlayout->addWidget(m_pleFilterRankALL2); + hlayout->addWidget(new QLabel("RankSeparated: ")); + hlayout->addWidget(m_pleFilterRankSeparated2); + hlayout->addWidget(new QLabel("Keyword Length: ")); + hlayout->addWidget(m_pleFilterKeywordLength2); + + hlayout2->addWidget(new QLabel("KeywordFilter: ")); + hlayout2->addWidget(m_pleFilterKeyword2); + + hlayout3->addWidget(new QLabel("Extract Keyword: ")); + hlayout3->addWidget(m_pleFilterExtractor2); + + + vlayout->addLayout(hlayout3); + vlayout->addLayout(hlayout2); + vlayout->addLayout(hlayout); + QGroupBox *groupBox = new QGroupBox(tr("2Depth Filter")); + + groupBox->setCheckable(true); + + groupBox->setLayout(vlayout); + groupBox->setChecked(true); + return groupBox; +} + + + + +QGroupBox *YMPlatformWidget::setOther() +{ + QHBoxLayout *hlayout = new QHBoxLayout; + + m_pcbThread = new QComboBox; + + hlayout->addWidget(new QLabel("Thread:")); + hlayout->addWidget(m_pcbThread); + + m_pcbThread->addItems(QStringList() << "1" << "2" << "4" << "8"); + + QGroupBox *groupBox = new QGroupBox(tr("Other")); + groupBox->setCheckable(true); + + groupBox->setLayout(hlayout); + + return groupBox; +} + +QGroupBox *YMPlatformWidget::setSort() +{ + QHBoxLayout *hlayout = new QHBoxLayout; + + m_rbDateMorphere = new QRadioButton("Date/Morphere"); + m_rbMorphereDate = new QRadioButton("Morphere/Date"); + + + m_bgRadioGroup = new QButtonGroup; + + m_bgRadioGroup->addButton(m_rbMorphereDate); + m_bgRadioGroup->addButton(m_rbDateMorphere); + + m_rbMorphereDate->setChecked(true); + + hlayout->addWidget(m_rbMorphereDate); + hlayout->addWidget(m_rbDateMorphere); + + QGroupBox *groupBox = new QGroupBox(tr("Sort")); + groupBox->setCheckable(true); + + groupBox->setLayout(hlayout); + + return groupBox; +} + + +QGroupBox *YMPlatformWidget::setDictionary() +{ + QHBoxLayout *hlayout = new QHBoxLayout; + + m_pcbDictionary = new QComboBox; + + m_pcbDictionary->setEditable(true); + m_pcbDictionary->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + QPushButton* add = new QPushButton; + QPushButton* del = new QPushButton; + add->setText(tr("+")); + del->setText(tr("-")); + + //hlayout->addWidget(new QLabel(tr("User-Dict: "))); + hlayout->addWidget(m_pcbDictionary); + hlayout->addWidget(add); + hlayout->addWidget(del); + + connect(add, SIGNAL(released()),this, SLOT(AddDictionary())); + connect(del, SIGNAL(released()),this, SLOT(DelDictionary())); + + QGroupBox *groupBox = new QGroupBox(tr("User Dictionary")); + groupBox->setCheckable(true); + + groupBox->setLayout(hlayout); + + return groupBox; +} + + + +QGroupBox *YMPlatformWidget::setCenterKeyword() +{ + QHBoxLayout *hlayout = new QHBoxLayout; + + m_pleCKeyword = new QLineEdit; + m_pcbCountMethod = new QComboBox; + m_pcbCountMethod->addItems(QStringList() << "Duplicate" << "NonDuplicate"); + + hlayout->addWidget(new QLabel("Center Keyword: ")); + hlayout->addWidget(m_pleCKeyword); + hlayout->addWidget(new QLabel("CountMethod: ")); + hlayout->addWidget(m_pcbCountMethod); + + QGroupBox *groupBox = new QGroupBox(tr("Center Keyword")); + + groupBox->setCheckable(true); + groupBox->setLayout(hlayout); + groupBox->setChecked(true); + return groupBox; +} + + +void YMPlatformWidget::AddDictionary() +{ + QStringList strFilenames = QFileDialog::getOpenFileNames(0,"Dictionary file",QDir::currentPath(), + "dic files (*.dic);;All files (*.*)",new QString("Dictionary files (*.dic)")); + + foreach(QString strFilename, strFilenames) + { + QFile file(strFilename); + if (!file.open(QIODevice::ReadOnly)) return; + } + + + for(int i = 0; i < m_pcbDictionary->count(); i++) + { + if(strFilenames.contains(m_pcbDictionary->itemText(i))) + strFilenames.removeOne(m_pcbDictionary->itemText(i)); + } + + m_pcbDictionary->addItems(strFilenames); +} + +QString YMPlatformWidget::getUserDictList() +{ + QStringList strList; + + for(int i = 0; i < m_pcbDictionary->count();i++) + { + strList << m_pcbDictionary->itemText(i); + } + + return strList.join(","); +} + + + +void YMPlatformWidget::DelDictionary() +{ + m_pcbDictionary->removeItem(0); + qDebug() << getUserDictList(); +} + +bool YMPlatformWidget::isSortMorphereDateChecked() +{ + return m_rbMorphereDate->isChecked(); +} + +bool YMPlatformWidget::isSortDateMorphereChecked() +{ + return m_rbDateMorphere->isChecked(); +} + + +void YMPlatformWidget::MorphereListAdd() +{ + QList listitem = m_plwMorphereList->selectedItems(); + + foreach(QListWidgetItem *item, listitem) + { + for(int i = 0; i < m_plwMorphereAdd->count();i++) + { + if(item->data(Qt::UserRole) == m_plwMorphereAdd->item(i)->data(Qt::UserRole)) + m_plwMorphereAdd->item(i)->setHidden(false); + } + } +} + +void YMPlatformWidget::MorphereListDel() +{ + for(int i = m_plwMorphereAdd->count() - 1; i >= 0 ;i--) + { + if(m_plwMorphereAdd->item(i)->isSelected()) + { + m_plwMorphereAdd->item(i)->setHidden(true); + } + } +} + +QTableWidget *YMPlatformWidget::AddTable(QString _str) +{ + STable *pTable = new STable; + m_ptwData->addTab(pTable,_str); + return (QTableWidget *)pTable; +} + +void YMPlatformWidget::CloseTab(int index) +{ + ((STable*)(m_ptwData->widget(index)))->clear(); + m_ptwData->removeTab(index); +} + +void YMPlatformWidget::DoubleClickTab(int index) +{ + bool ok; + if (index < 0) return; + QString text = QInputDialog::getText(this,"Tab name change","Name : ", QLineEdit::Normal,m_ptwData->tabText(index), &ok); + if (ok) + { + m_ptwData->setTabText(index,text); + } +} + +void YMPlatformWidget::FileImport() +{ + QString strFilename = QFileDialog::getOpenFileName(0,"Import file",QDir::currentPath(), + "csv files (*.csv);;All files (*.*)",new QString("Text files (*.csv)")); + + QFile file(strFilename); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return; + + clearResult(); + m_mapViewResult.clear(); + + //qDebug() << "clear is complete"; + + QTextStream in(&file); + + while(!in.atEnd()) + { + QString strLine = in.readLine(); + strLine = strLine.replace("\"",""); + //qDebug() << strLine; + QStringList strListLine = strLine.split(","); + + if(strListLine.size() != 4) + continue; + + //qDebug() << strListLine.at(4).trimmed().toInt(); + + QString strKey = strListLine.at(0).trimmed() + "~!@" + strListLine.at(1).trimmed() + "~!@" + strListLine.at(2).trimmed(); + m_mapResult.insert(strKey, strListLine.at(3).trimmed().toInt()); + } + + file.close(); + + for(QMap::iterator iterPos = m_mapResult.begin(); iterPos != m_mapResult.end(); iterPos++) + { + QString strkey = iterPos.key(); + int count = iterPos.value(); + QStringList strlistKey = strkey.split("~!@"); + QString strDate = strlistKey.at(0); + QString strMorphere = strlistKey.at(1); + QString strKeyword = strlistKey.at(2); + + if(m_mapViewResult.contains(strDate)) + { + if(m_mapViewResult.value(strDate).contains(strMorphere)) + { + m_mapViewResult[(strDate)][(strMorphere)].insertMulti(count, strKeyword); + } + else + { + QMap qLast; + qLast.insert(count, strKeyword); + m_mapViewResult[(strDate)].insert(strMorphere, qLast); + } + } + else + { + QMap qLast; + qLast.insert(count , strKeyword); + QMap > qMedium; + qMedium.insert(strMorphere, qLast); + m_mapViewResult.insert(strDate, qMedium); + } + } + ViewResult(); +} + +void YMPlatformWidget::FileExport() +{ + QString strFilename = QFileDialog::getSaveFileName(0,"Exoprt file",QDir::currentPath(), + "csv files (*.csv);;All files (*.*)",new QString("Text files (*.csv)")); + if (strFilename.toLower().right(4) != QString(".csv")) + strFilename += ".csv"; + QFile file(strFilename); + if(!file.open(QFile::WriteOnly | QFile::Text)) return; + + QTextStream out(&file); + + + for (int i = 0; i < m_ptwData->count(); i++) + { + m_ptwData->setTabEnabled(i, true); + QTabWidget* p_childWidget = (QTabWidget*)(m_ptwData->widget(i)); + + for (int j = 0; j < p_childWidget->count(); j++) + { + p_childWidget->setTabEnabled(j, true); + STable *stable = (STable *) (p_childWidget->widget(j)); + for (int nCount = 0 ; nCount < stable->rowCount(); nCount++ ) + { + + QString str = stable->item(nCount,0)->text().trimmed() + "," + stable->item(nCount,1)->text().trimmed(); + out << m_ptwData->tabText(i).trimmed() << "," << p_childWidget->tabText(j).trimmed() << ","; + out << str << endl; + } + } + } + + file.close(); +} + +int YMPlatformWidget::getThread() +{ + return m_pcbThread->currentText().toInt(); +} + + +unsigned int YMPlatformWidget::getDateStart() +{ + return m_pdeStart->dateTime().toString("yyyy-MM-dd").replace("-","").trimmed().toInt(); +} + +unsigned int YMPlatformWidget::getDateEnd() +{ + return m_pdeEnd->dateTime().toString("yyyy-MM-dd").replace("-","").trimmed().toInt(); +} + +int YMPlatformWidget::getPeriod() +{ + return m_pcbPeriod->currentIndex(); +} + +QStringList YMPlatformWidget::getMorphereList() +{ + QStringList strList; + for(int i = 0; i < m_plwMorphereAdd->count();i++) + { + if(m_plwMorphereAdd->item(i)->isHidden()) + continue; + else + { + strList << m_plwMorphereAdd->item(i)->data(Qt::UserRole).toString(); + } + } + return strList; +} + +bool YMPlatformWidget::getDateAll() +{ + if(m_pcbDate->currentIndex() == 0) + return true; + else + return false; +} + +QTabWidget* YMPlatformWidget::getQTabWidget() +{ + return m_ptwData; +} + + +void YMPlatformWidget::MemClear() +{ + m_mapResult.clear(); + m_mapViewResult.clear(); +} + + +bool YMPlatformWidget::setListMorphere(QStringList& MorphereEN, QStringList& MorphereKO) +{ + QFile fHeader("morpherelist.txt"); + if (!fHeader.open(QIODevice::ReadOnly | QIODevice::Text)) return false; + + QTextStream in(&fHeader); + + QString str = in.readLine(); + + if(str.at(0) == '#') + { + } + else + { + qDebug() << "The wrong file is read"; + return false; + } + + while(!in.atEnd()) + { + str = in.readLine(); + QStringList strList = str.trimmed().split("@",QString::SkipEmptyParts); + if(strList.isEmpty()) + break; + if(strList.size() < 2) + return false; + MorphereEN << strList.at(0).trimmed().replace("\"","").trimmed(); + MorphereKO << strList.at(1).trimmed().replace("\"","").trimmed(); + } + + return true; +} + + +void YMPlatformWidget::RawFileExport() +{ + QString strFilename = QFileDialog::getSaveFileName(0,"Exoprt file",QDir::currentPath(), + "csv files (*.csv);;All files (*.*)",new QString("Text files (*.csv)")); + if (strFilename.toLower().right(4) != QString(".csv")) + strFilename += ".csv"; + QFile file(strFilename); + if(!file.open(QFile::WriteOnly | QFile::Text)) return; + + QTextStream out(&file); + + /* + out << "#Head#,"; + for (int nCount = 0;nCount < pCurrent->columnCount() ;nCount++ ) + out << pCurrent->horizontalHeaderItem(nCount)->text() << ","; + + m_pProgress->setRange(0,pCurrent->rowCount()-1); + */ + + for( QMap > >::iterator iterPos = m_mapViewResult.begin(); iterPos != m_mapViewResult.end(); iterPos++) + { + for(QMap >::iterator iterPos2 = iterPos.value().begin(); iterPos2 != iterPos.value().end(); iterPos2++) + { + QMapIterator i(m_mapViewResult[iterPos.key()][iterPos2.key()]); + i.toBack(); + while(i.hasPrevious()) + { + i.previous(); + out << "\"" << iterPos.key() << "\"" << ","; + out << "\"" << iterPos2.key() << "\"" << ","; + out << "\"" << i.value() << "\"" << ","; + out << "\"" << i.key() << "\"" << "\n"; + } + } + } + + file.close(); +} + + + +YMPlatformWidget::~YMPlatformWidget() +{ + +} + +void YMPlatformWidget::clearViewResult() +{ + +} + +QGroupBox *YMPlatformWidget::setData() +{ + QHBoxLayout *hlayout = new QHBoxLayout; + + m_pcbData = new QComboBox; + m_pcbData->addItems(QStringList() << "Title" << "Body" << "Title+Body" << "PlatformTitle"); + + m_pcbData->setCurrentIndex(2); + + hlayout->addWidget(new QLabel("Data: ")); + hlayout->addWidget(m_pcbData); + + + QGroupBox *groupBox = new QGroupBox(tr("Data")); + + groupBox->setCheckable(true); + groupBox->setLayout(hlayout); + groupBox->setChecked(true); + return groupBox; +} + + +void YMPlatformWidget::clearView() +{ + m_mapViewResult.clear(); + m_mapViewResult2.clear(); +} + + + + +void YMPlatformWidget::SortViewResult() +{ + if(isSortDateMorphereChecked()) + { + for(QMap::iterator iterPos = m_mapResult.begin(); iterPos != m_mapResult.end(); iterPos++) + { + QString strkey = iterPos.key(); + int count = iterPos.value(); + QStringList strlistKey = strkey.split("~!@"); + + QString strDate = strlistKey.at(0); + QString strPlatformName = strlistKey.at(1); + QString strPlatformForm = strlistKey.at(2); + QString strMorphere = strlistKey.at(3); + QString strKeyword = strlistKey.at(4); + QString strMorphere2 = strlistKey.at(5); + QString strKeyword2 = strlistKey.at(6); + + m_mapViewResult[(strDate)]["ALLMORPHERE"].insertMulti(count, QString(strPlatformName + "~!@" + strPlatformForm + "~!@" + strMorphere + "~!@" + strKeyword + "~!@" + strMorphere2 + "~!@" + strKeyword2 )); // added + if(m_mapViewResult.contains(strDate)) + { + if(m_mapViewResult.value(strDate).contains(strMorphere)) + { + m_mapViewResult[(strDate)][(strMorphere)].insertMulti(count, strPlatformName + "~!@" + strPlatformForm + "~!@" +strKeyword + "~!@" + strMorphere2 + "~!@" + strKeyword2); + //m_mapViewResult[(strDate)]["ALLMORPHERE"].insertMulti(count, QString(strMorphere + "~!@" + strKeyword )); // added + } + else + { + QMap qLast; + qLast.insert(count, strPlatformName + "~!@" + strPlatformForm + "~!@" +strKeyword + "~!@" + strMorphere2 + "~!@" + strKeyword2); + m_mapViewResult[(strDate)].insert(strMorphere, qLast); + + /* + qLast.clear(); //added + qLast.insert(count, QString(strMorphere + "~!@" + strKeyword));//added + m_mapViewResult[(strDate)].insert("ALLMORPHERE", qLast);//added + */ + } + } + else + { + QMap qLast; + qLast.insert(count , strPlatformName + "~!@" + strPlatformForm + "~!@" +strKeyword + "~!@" + strMorphere2 + "~!@" + strKeyword2); + QMap > qMedium; + qMedium.insert(strMorphere, qLast); + m_mapViewResult.insert(strDate, qMedium); + /* + qLast.clear(); + qMedium.clear(); + qLast.insert(count, QString(strMorphere + "~!@" + strKeyword)); + qMedium.insert("ALLMORPHERE", qLast); + m_mapViewResult.insert(strDate, qMedium); + */ + } + } + } + else + { + for(QMap::iterator iterPos = m_mapResult.begin(); iterPos != m_mapResult.end(); iterPos++) + { + QString strkey = iterPos.key(); + int count = iterPos.value(); + QStringList strlistKey = strkey.split("~!@"); + QString strDate = strlistKey.at(0); + QString strPlatformName = strlistKey.at(1); + QString strPlatformForm = strlistKey.at(2); + QString strMorphere = strlistKey.at(3); + QString strKeyword = strlistKey.at(4); + QString strMorphere2 = strlistKey.at(5); + QString strKeyword2 = strlistKey.at(6); + + m_mapViewResult[("ALLMORPHERE")][(strDate)].insertMulti(count, QString(strPlatformName + "~!@" + strPlatformForm + "~!@" + strMorphere + "~!@" + strKeyword + "~!@" + strMorphere2 + "~!@" + strKeyword2 )); + if(m_mapViewResult.contains(strMorphere)) + { + if(m_mapViewResult.value(strMorphere).contains(strDate)) + { + m_mapViewResult[(strMorphere)][(strDate)].insertMulti(count, strPlatformName + "~!@" + strPlatformForm + "~!@" + strKeyword + "~!@" + strMorphere2 + "~!@" + strKeyword2 ); + //m_mapViewResult[("ALLMORPHERE")][(strDate)].insertMulti(count, QString(strMorphere + "~!@" + strKeyword )); + } + else + { + + QMap qLast; + qLast.insert(count, strPlatformName + "~!@" + strPlatformForm + "~!@" + strKeyword + "~!@" + strMorphere2 + "~!@" + strKeyword2); + m_mapViewResult[(strMorphere)].insert(strDate, qLast); + /* + qLast.clear(); + qLast.insert(count, QString(strMorphere + "~!@" + strKeyword) ); + m_mapViewResult[("ALLMORPHERE")].insert(strDate, qLast); + */ + } + } + else + { + QMap qLast; + qLast.insert(count , strPlatformName + "~!@" + strPlatformForm + "~!@" + strKeyword + "~!@" + strMorphere2 + "~!@" + strKeyword2); + QMap > qMedium; + qMedium.insert(strDate, qLast); + m_mapViewResult.insert(strMorphere, qMedium); + /* + qLast.clear(); + qMedium.clear(); + qLast.insert(count,QString(strMorphere + "~!@" + strKeyword)); + qMedium.insert(strDate, qLast); + m_mapViewResult.insert("ALLMORPHERE", qMedium); + */ + } + } + } +/* + for(QMap::iterator iterPos = m_mapResult.begin(); iterPos != m_mapResult.end(); iterPos++) + { + QString strkey = iterPos.key(); + int count = iterPos.value(); + QStringList strlistKey = strkey.split("~!@"); + QString strDate = strlistKey.at(0); + QString strMorphere = strlistKey.at(1); + QString strKeyword = strlistKey.at(2); + + if(m_mapViewResult2.contains(strDate)) + { + if(m_mapViewResult2.value(strDate).contains(count)) + { + m_mapViewResult2[(strDate)][(count)].insertMulti(strMorphere, strKeyword); + } + else + { + QMap qLast; + qLast.insert(strMorphere, strKeyword); + m_mapViewResult2[(strDate)].insert(count, qLast); + } + } + else + { + QMap qLast; + qLast.insert(strMorphere , strKeyword); + QMap > qMedium; + qMedium.insert(count, qLast); + m_mapViewResult2.insert(strDate, qMedium); + } + } +*/ +} + + +void YMPlatformWidget::ViewResult() +{ + SortViewResult(); + foreach(STable* ptable, m_lTable) + { + ptable->clear(); + delete ptable; + } + m_lTable.clear(); + + foreach(QTabWidget* pwidget, m_lTabWidget) + { + pwidget->clear(); + delete pwidget; + } + m_lTabWidget.clear(); + + + m_ptwTable = getQTabWidget(); + m_ptwTable->clear(); + + for( QMap > >::iterator iterPos = m_mapViewResult.begin(); iterPos != m_mapViewResult.end(); iterPos++) + { + QTabWidget* temp = new QTabWidget; + for(QMap >::iterator iterPos2 = iterPos.value().begin(); iterPos2 != iterPos.value().end(); iterPos2++) + { + + if( (iterPos2.key() == "ALLMORPHERE") || (iterPos.key() == "ALLMORPHERE") ) + { + int ncRow = 0; + + STable *pNew = new STable; + pNew->setColumnCount(7); + pNew->setRowCount(m_mapViewResult[iterPos.key()][iterPos2.key()].size()); + pNew->setHorizontalHeaderItem(0 ,new QTableWidgetItem("Platform Name")); + pNew->setHorizontalHeaderItem(1 ,new QTableWidgetItem("Platform Form")); + pNew->setHorizontalHeaderItem(2 ,new QTableWidgetItem("1D Morphere")); + pNew->setHorizontalHeaderItem(3 ,new QTableWidgetItem("1D Keyword")); + pNew->setHorizontalHeaderItem(4 ,new QTableWidgetItem("2D Morphere")); + pNew->setHorizontalHeaderItem(5 ,new QTableWidgetItem("2D Keyword")); + pNew->setHorizontalHeaderItem(6 ,new QTableWidgetItem("Count")); + + QMapIterator i(m_mapViewResult[iterPos.key()][iterPos2.key()]); + i.toBack(); + while(i.hasPrevious()) + { + i.previous(); + pNew->setItem(ncRow,0,new QTableWidgetItem(QString(i.value().split("~!@").at(0)))); + pNew->setItem(ncRow,1,new QTableWidgetItem(QString(i.value().split("~!@").at(1)))); + pNew->setItem(ncRow,2,new QTableWidgetItem(QString(i.value().split("~!@").at(2)))); + pNew->setItem(ncRow,3,new QTableWidgetItem(QString(i.value().split("~!@").at(3)))); + pNew->setItem(ncRow,4,new QTableWidgetItem(QString(i.value().split("~!@").at(4)))); + pNew->setItem(ncRow,5,new QTableWidgetItem(QString(i.value().split("~!@").at(5)))); + + pNew->setItem(ncRow,6,new QTableWidgetItem(QString::number(i.key()))); + ncRow++; + } + temp->addTab(pNew, iterPos2.key()); + m_lTable << pNew; + + } + else + { + int ncRow = 0; + + STable *pNew = new STable; + pNew->setColumnCount(6); + pNew->setRowCount(m_mapViewResult[iterPos.key()][iterPos2.key()].size()); + pNew->setHorizontalHeaderItem(0 ,new QTableWidgetItem("Platform Name")); + pNew->setHorizontalHeaderItem(1 ,new QTableWidgetItem("Platform Form")); + pNew->setHorizontalHeaderItem(2 ,new QTableWidgetItem("1D Keyword")); + pNew->setHorizontalHeaderItem(3 ,new QTableWidgetItem("2D Morphere")); + pNew->setHorizontalHeaderItem(4 ,new QTableWidgetItem("2D Keyword")); + pNew->setHorizontalHeaderItem(5 ,new QTableWidgetItem("Count")); + + QMapIterator i(m_mapViewResult[iterPos.key()][iterPos2.key()]); + i.toBack(); + while(i.hasPrevious()) + { + i.previous(); + pNew->setItem(ncRow,0,new QTableWidgetItem(QString(i.value().split("~!@").at(0)))); + pNew->setItem(ncRow,1,new QTableWidgetItem(QString(i.value().split("~!@").at(1)))); + pNew->setItem(ncRow,2,new QTableWidgetItem(QString(i.value().split("~!@").at(2)))); + pNew->setItem(ncRow,3,new QTableWidgetItem(QString(i.value().split("~!@").at(3)))); + pNew->setItem(ncRow,4,new QTableWidgetItem(QString(i.value().split("~!@").at(4)))); + pNew->setItem(ncRow,5,new QTableWidgetItem(QString::number(i.key()))); + ncRow++; + } + temp->addTab(pNew, iterPos2.key()); + m_lTable << pNew; + } + + } + m_ptwTable->addTab(temp, iterPos.key()); + m_lTabWidget << temp; + } + + /* + QMap > >::iterator iterPosi = m_mapViewResult2.begin(); + for( QMap > >::iterator iterPos = m_mapViewResult.begin(); iterPos != m_mapViewResult.end(); iterPos++, iterPosi++) + { + QTabWidget* temp = new QTabWidget; + for(QMap >::iterator iterPos2 = iterPos.value().begin(); iterPos2 != iterPos.value().end(); iterPos2++) + { + int ncRow = 0; + + STable *pNew = new STable; + pNew->setColumnCount(2); + pNew->setRowCount(m_mapViewResult[iterPos.key()][iterPos2.key()].size()); + pNew->setHorizontalHeaderItem(0 ,new QTableWidgetItem("Keyword")); + pNew->setHorizontalHeaderItem(1 ,new QTableWidgetItem("Count")); + + QMapIterator i(m_mapViewResult[iterPos.key()][iterPos2.key()]); + i.toBack(); + while(i.hasPrevious()) + { + i.previous(); + pNew->setItem(ncRow,0,new QTableWidgetItem(QString(i.value()))); + pNew->setItem(ncRow,1,new QTableWidgetItem(QString::number(i.key()))); + ncRow++; + } + temp->addTab(pNew, iterPos2.key()); + m_lTable << pNew; + } + + { + int ncRow = 0; + + STable *pNew = new STable; + pNew->setColumnCount(3); + pNew->setRowCount(m_mapViewResult2[iterPosi.key()].size()); + pNew->setHorizontalHeaderItem(0 ,new QTableWidgetItem("Morphere")); + pNew->setHorizontalHeaderItem(1 ,new QTableWidgetItem("Keyword")); + pNew->setHorizontalHeaderItem(2 ,new QTableWidgetItem("Count")); + + QMapIterator> j(m_mapViewResult2[iterPosi.key()]); + j.toBack(); + while(j.hasPrevious()) + { + j.previous(); + for(QMap::iterator iterPosii = m_mapViewResult2[iterPosi.key()][j.key()].begin(); iterPosii != m_mapViewResult2[iterPosi.key()][j.key()].end(); iterPosii++) + { + pNew->setItem(ncRow,0,new QTableWidgetItem(QString(iterPosii.key()))); + pNew->setItem(ncRow,1,new QTableWidgetItem(QString(iterPosii.value()))); + pNew->setItem(ncRow,2,new QTableWidgetItem(QString::number(j.key()))); + ncRow++; + } + } + temp->addTab(pNew, "ALL"); + m_lTable << pNew; + } + + m_ptwTable->addTab(temp, iterPos.key()); + m_lTabWidget << temp; + } + */ +} + +void YMPlatformWidget::SaveFile() +{ + QString strFilename = QFileDialog::getSaveFileName(0,"save file",QDir::currentPath(), + "json files (*.json);;All files (*.*)",new QString("Text files (*.json)")); + if (strFilename.toLower().right(5) != QString(".json")) + strFilename += ".json"; + QFile file(strFilename); + if(!file.open(QFile::WriteOnly | QFile::Text)) return; + + QTextStream out(&file); + + QMap > > > mapResult; + + QString strCKeyword = getCenterKeyword(); + //qDebug() << "executed"; + { + STable* pTable = (STable*)((QTabWidget*)(m_ptwTable->currentWidget()))->currentWidget(); + if(pTable->columnCount() < 4) + return; + int nCountIndex = pTable->columnCount() - 1; + int nTDKeywordIndex = pTable->columnCount() - 2; + int nODKeywordIndex = pTable->columnCount() - 4; + int nPlatformName = 0; + int nPlatformForm = 1; + + for (int i = 0; i < pTable->rowCount(); i++) + { + QString strODKeyword = pTable->item(i, nODKeywordIndex)->text().trimmed(); + QString strTDKeyword = pTable->item(i, nTDKeywordIndex)->text().trimmed(); + QString strPlatformName = pTable->item(i, nPlatformName)->text().trimmed(); + QString strPlatformForm = pTable->item(i, nPlatformForm)->text().trimmed(); + int nCount = pTable->item(i, nCountIndex)->text().trimmed().toInt(); + + + if(mapResult.contains(strPlatformName)) + { + if(mapResult[strPlatformName].contains(strPlatformForm)) + { + if(mapResult[strPlatformName][strPlatformForm].contains(strODKeyword)) + { + mapResult[strPlatformName][strPlatformForm][strODKeyword].insert(strTDKeyword, nCount); + } + else + { + QMap qLast; + qLast.insert(strTDKeyword, nCount); + mapResult[strPlatformName][strPlatformForm].insert(strODKeyword, qLast); + } + } + else + { + QMap qLast; + qLast.insert(strTDKeyword, nCount); + QMap > qMedium; + qMedium.insert(strODKeyword, qLast); + mapResult[strPlatformName].insert(strPlatformForm, qMedium); + } + } + else + { + QMap qLast; + qLast.insert(strTDKeyword, nCount); + QMap > qMedium; + qMedium.insert(strODKeyword, qLast); + QMap > > qFirst; + qFirst.insert(strPlatformForm, qMedium); + mapResult.insert(strPlatformName, qFirst); + } + } + } + + + QString strjson = "{\n\t\"name\":\" " + strCKeyword + "\",\n"; + strjson += ("\t\"children\": [\n"); + + for(QMap > > >::iterator iterPos1 = mapResult.begin(); iterPos1 != mapResult.end(); iterPos1++) + { + int sum1 = 0; + for(QMap > >::iterator iterPos2 = iterPos1.value().begin(); iterPos2 != iterPos1.value().end(); iterPos2++) + { + for(QMap >::iterator iterPos3 = iterPos2.value().begin(); iterPos3 != iterPos2.value().end(); iterPos3++) + { + for(QMap::iterator iterPos4 = iterPos3.value().begin(); iterPos4 != iterPos3.value().end(); iterPos4++) + { + sum1 += iterPos4.value(); + } + } + } + + strjson += "\t{\n"; + //strjson += ("\t\t\"name\":\"" + iterPos1.key() + "\",\n"); + strjson += ("\t\t\"name\":\"" + iterPos1.key() + "\",\"size\":" + QString::number(sum1) + ",\n"); + strjson += "\t\t\"children\": [\n"; + for(QMap > >::iterator iterPos2 = iterPos1.value().begin(); iterPos2 != iterPos1.value().end(); iterPos2++) + { + int sum2 = 0; + for(QMap >::iterator iterPos3 = iterPos2.value().begin(); iterPos3 != iterPos2.value().end(); iterPos3++) + { + for(QMap::iterator iterPos4 = iterPos3.value().begin(); iterPos4 != iterPos3.value().end(); iterPos4++) + { + sum2 += iterPos4.value(); + } + } + + strjson += "\t\t{\n"; + //strjson += ("\t\t\t\"name\":\"" + iterPos2.key() + "\",\n"); + strjson += ("\t\t\t\"name\":\"" + iterPos2.key() + "\",\"size\":" + QString::number(sum2) + ",\n"); + strjson += "\t\t\t\"children\": [\n"; + + for(QMap >::iterator iterPos3 = iterPos2.value().begin(); iterPos3 != iterPos2.value().end(); iterPos3++) + { + int sum3 = 0; + for(QMap::iterator iterPos4 = iterPos3.value().begin(); iterPos4 != iterPos3.value().end(); iterPos4++) + { + sum3 += iterPos4.value(); + } + + strjson += "\t\t\t{\n"; + strjson += ("\t\t\t\t\"name\":\"" + iterPos3.key() + + "\",\"size\":" + QString::number(sum3) + ",\n"); + strjson += "\t\t\t\t\"children\": [\n"; + + for(QMap::iterator iterPos4 = iterPos3.value().begin(); iterPos4 != iterPos3.value().end(); iterPos4++) + { + strjson += ("\t\t\t\t\t{\"name\": \"" + iterPos4.key() + "\",\"size\":" + QString::number(iterPos4.value()) + "},\n"); + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t\t\t\t]\n\t\t\t},\n"; + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t\t\t]\n\t\t},\n"; + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t\t]\n\t},\n"; + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t]\n}"; + + out << strjson; + + file.close(); + + + /* + QString strFilename = QFileDialog::getSaveFileName(0,"save file",QDir::currentPath(), + "csv files (*.csv);;All files (*.*)",new QString("Text files (*.csv)")); + if (strFilename.toLower().right(4) != QString(".csv")) + strFilename += ".csv"; + QFile file(strFilename); + if(!file.open(QFile::WriteOnly | QFile::Text)) return; + + QTextStream out(&file); + QMap > mapResult; + + { + STable* pTable = (STable*)((QTabWidget*)(m_ptwTable->currentWidget()))->currentWidget(); + if(pTable->columnCount() < 4) + return; + int nCountIndex = pTable->columnCount() - 1; + int nTDKeywordIndex = pTable->columnCount() - 2; + int nODKeywordIndex = pTable->columnCount() - 4; + + for (int i = 0; i < pTable->rowCount(); i++) + { + QString strODKeyword = pTable->item(i, nODKeywordIndex)->text().trimmed(); + QString strTDKeyword = pTable->item(i, nTDKeywordIndex)->text().trimmed(); + int nCount = pTable->item(i, nCountIndex)->text().trimmed().toInt(); + if(mapResult.contains(strODKeyword)) + { + mapResult[strODKeyword].insert(strTDKeyword, nCount); + } + else + { + QMap qLast; + qLast.insert(strTDKeyword, nCount); + mapResult.insert(strODKeyword, qLast); + } + } + } + + QString strCKeyword = m_pleCKeyword->text().trimmed(); + + for(QMap >::iterator iterPos = mapResult.begin(); iterPos != mapResult.end(); iterPos++) + { + int sum = 0; + out << iterPos.key(); + for(QMap::iterator iterPos2 = iterPos.value().begin(); iterPos2 != iterPos.value().end() ; iterPos2++) + { + sum += iterPos2.value(); + for(int i = 0; i < iterPos2.value(); i++) + { + out << ";" << iterPos2.key(); + } + } + out << "\n"; + out << strCKeyword; + for(int i = 0; i < sum; i++) + { + out << ";" << iterPos.key(); + } + out << "\n"; + } + + file.close(); + */ +} + +void YMPlatformWidget::SaveFileSimple() +{ + /* + QString strFilename = QFileDialog::getSaveFileName(0,"save file",QDir::currentPath(), + "dl files (*.dl);;All files (*.*)",new QString("Text files (*.dl)")); + if (strFilename.toLower().right(3) != QString(".dl")) + strFilename += ".dl"; + QFile file(strFilename); + if(!file.open(QFile::WriteOnly | QFile::Text)) return; + QMap > mapResult; + + QTextStream out(&file); + QSet setKey; + { + STable* pTable = (STable*)((QTabWidget*)(m_ptwTable->currentWidget()))->currentWidget(); + if(pTable->columnCount() < 4) + return; + int nCountIndex = pTable->columnCount() - 1; + int nTDKeywordIndex = pTable->columnCount() - 2; + int nODKeywordIndex = pTable->columnCount() - 4; + + for (int i = 0; i < pTable->rowCount(); i++) + { + QString strODKeyword = pTable->item(i, nODKeywordIndex)->text().trimmed(); + QString strTDKeyword = pTable->item(i, nTDKeywordIndex)->text().trimmed(); + int nCount = pTable->item(i, nCountIndex)->text().trimmed().toInt(); + setKey.insert(strODKeyword); + setKey.insert(strTDKeyword); + + if(mapResult.contains(strODKeyword)) + { + mapResult[strODKeyword].insert(strTDKeyword, nCount); + } + else + { + QMap qLast; + qLast.insert(strTDKeyword, nCount); + mapResult.insert(strODKeyword, qLast); + } + } + } + + QString strCKeyword = m_pleCKeyword->text().trimmed(); + + out << "dl\nformat=edgelist1\nn=" + QString::number(setKey.size()) + "\ndata:\n"; + + setKey.clear(); + + for(QMap >::iterator iterPos = mapResult.begin(); iterPos != mapResult.end(); iterPos++) + { + int sum = 0; + + for(QMap::iterator iterPos2 = iterPos.value().begin(); iterPos2 != iterPos.value().end() ; iterPos2++) + { + sum += iterPos2.value(); + out << iterPos.key() << " " << iterPos2.key() << " " << iterPos2.value() << "\n"; + } + out << strCKeyword << " " << iterPos.key() << " " << sum << "\n"; + } + + file.close(); + */ +} + +QMap YMPlatformWidget::getResult() +{ + return m_mapResult; +} + +QString YMPlatformWidget::Json() +{ + //QMap mapResult = m_mapResult; + QMap > > > mapResult; + + QString strCKeyword = getCenterKeyword(); + //qDebug() << "executed"; + { + STable* pTable = (STable*)((QTabWidget*)(m_ptwTable->currentWidget()))->currentWidget(); + if(pTable->columnCount() < 4) + return QString(); + int nCountIndex = pTable->columnCount() - 1; + int nTDKeywordIndex = pTable->columnCount() - 2; + int nODKeywordIndex = pTable->columnCount() - 4; + int nPlatformName = 0; + int nPlatformForm = 1; + + for (int i = 0; i < pTable->rowCount(); i++) + { + QString strODKeyword = pTable->item(i, nODKeywordIndex)->text().trimmed(); + QString strTDKeyword = pTable->item(i, nTDKeywordIndex)->text().trimmed(); + QString strPlatformName = pTable->item(i, nPlatformName)->text().trimmed(); + QString strPlatformForm = pTable->item(i, nPlatformForm)->text().trimmed(); + int nCount = pTable->item(i, nCountIndex)->text().trimmed().toInt(); + + + if(mapResult.contains(strPlatformName)) + { + if(mapResult[strPlatformName].contains(strPlatformForm)) + { + if(mapResult[strPlatformName][strPlatformForm].contains(strODKeyword)) + { + mapResult[strPlatformName][strPlatformForm][strODKeyword].insert(strTDKeyword, nCount); + } + else + { + QMap qLast; + qLast.insert(strTDKeyword, nCount); + mapResult[strPlatformName][strPlatformForm].insert(strODKeyword, qLast); + } + } + else + { + QMap qLast; + qLast.insert(strTDKeyword, nCount); + QMap > qMedium; + qMedium.insert(strODKeyword, qLast); + mapResult[strPlatformName].insert(strPlatformForm, qMedium); + } + } + else + { + QMap qLast; + qLast.insert(strTDKeyword, nCount); + QMap > qMedium; + qMedium.insert(strODKeyword, qLast); + QMap > > qFirst; + qFirst.insert(strPlatformForm, qMedium); + mapResult.insert(strPlatformName, qFirst); + } + } + } + + + QString strjson = "{\n\t\"name\":\" " + strCKeyword + "\",\n"; + strjson += ("\t\"children\":[\n"); + + for(QMap > > >::iterator iterPos1 = mapResult.begin(); iterPos1 != mapResult.end(); iterPos1++) + { + int sum1 = 0; + for(QMap > >::iterator iterPos2 = iterPos1.value().begin(); iterPos2 != iterPos1.value().end(); iterPos2++) + { + for(QMap >::iterator iterPos3 = iterPos2.value().begin(); iterPos3 != iterPos2.value().end(); iterPos3++) + { + for(QMap::iterator iterPos4 = iterPos3.value().begin(); iterPos4 != iterPos3.value().end(); iterPos4++) + { + sum1 += iterPos4.value(); + } + } + } + + strjson += "\t{\n"; + //strjson += ("\t\t\"name\":\"" + iterPos1.key() + "\",\n"); + strjson += ("\t\t\"name\":\"" + iterPos1.key() + "\",\"size\":" + QString::number(sum1) + ",\n"); + strjson += "\t\t\"children\":[\n"; + for(QMap > >::iterator iterPos2 = iterPos1.value().begin(); iterPos2 != iterPos1.value().end(); iterPos2++) + { + int sum2 = 0; + for(QMap >::iterator iterPos3 = iterPos2.value().begin(); iterPos3 != iterPos2.value().end(); iterPos3++) + { + for(QMap::iterator iterPos4 = iterPos3.value().begin(); iterPos4 != iterPos3.value().end(); iterPos4++) + { + sum2 += iterPos4.value(); + } + } + + strjson += "\t\t{\n"; + //strjson += ("\t\t\t\"name\":\"" + iterPos2.key() + "\",\n"); + strjson += ("\t\t\t\"name\":\"" + iterPos2.key() + "\",\"size\":" + QString::number(sum2) + ",\n"); + strjson += "\t\t\t\"children\":[\n"; + + for(QMap >::iterator iterPos3 = iterPos2.value().begin(); iterPos3 != iterPos2.value().end(); iterPos3++) + { + int sum3 = 0; + for(QMap::iterator iterPos4 = iterPos3.value().begin(); iterPos4 != iterPos3.value().end(); iterPos4++) + { + sum3 += iterPos4.value(); + } + + strjson += "\t\t\t{\n"; + strjson += ("\t\t\t\t\"name\":\"" + iterPos3.key() + + "\",\"size\":" + QString::number(sum3) + ",\n"); + strjson += "\t\t\t\t\"children\":[\n"; + + for(QMap::iterator iterPos4 = iterPos3.value().begin(); iterPos4 != iterPos3.value().end(); iterPos4++) + { + strjson += ("\t\t\t\t\t{\"name\": \"" + iterPos4.key() + "\",\"size\":" + QString::number(iterPos4.value()) + "},\n"); + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t\t\t\t]\n\t\t\t},\n"; + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t\t\t]\n\t\t},\n"; + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t\t]\n\t},\n"; + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t]\n}"; + + mapResult.clear(); + return strjson; +} + +void YMPlatformWidget::D3View() +{ + //QMap mapResult = m_mapResult; + QMap > > > mapResult; + + QString strCKeyword = getCenterKeyword(); + //qDebug() << "executed"; + { + STable* pTable = (STable*)((QTabWidget*)(m_ptwTable->currentWidget()))->currentWidget(); + if(pTable->columnCount() < 4) + return; + int nCountIndex = pTable->columnCount() - 1; + int nTDKeywordIndex = pTable->columnCount() - 2; + int nODKeywordIndex = pTable->columnCount() - 4; + int nPlatformName = 0; + int nPlatformForm = 1; + + for (int i = 0; i < pTable->rowCount(); i++) + { + QString strODKeyword = pTable->item(i, nODKeywordIndex)->text().trimmed(); + QString strTDKeyword = pTable->item(i, nTDKeywordIndex)->text().trimmed(); + QString strPlatformName = pTable->item(i, nPlatformName)->text().trimmed(); + QString strPlatformForm = pTable->item(i, nPlatformForm)->text().trimmed(); + int nCount = pTable->item(i, nCountIndex)->text().trimmed().toInt(); + + + if(mapResult.contains(strPlatformName)) + { + if(mapResult[strPlatformName].contains(strPlatformForm)) + { + if(mapResult[strPlatformName][strPlatformForm].contains(strODKeyword)) + { + mapResult[strPlatformName][strPlatformForm][strODKeyword].insert(strTDKeyword, nCount); + } + else + { + QMap qLast; + qLast.insert(strTDKeyword, nCount); + mapResult[strPlatformName][strPlatformForm].insert(strODKeyword, qLast); + } + } + else + { + QMap qLast; + qLast.insert(strTDKeyword, nCount); + QMap > qMedium; + qMedium.insert(strODKeyword, qLast); + mapResult[strPlatformName].insert(strPlatformForm, qMedium); + } + } + else + { + QMap qLast; + qLast.insert(strTDKeyword, nCount); + QMap > qMedium; + qMedium.insert(strODKeyword, qLast); + QMap > > qFirst; + qFirst.insert(strPlatformForm, qMedium); + mapResult.insert(strPlatformName, qFirst); + } + } + } + + + QString strjson = "{\n\t\"name\":\" " + strCKeyword + "\",\n"; + strjson += ("\t\"children\":[\n"); + + for(QMap > > >::iterator iterPos1 = mapResult.begin(); iterPos1 != mapResult.end(); iterPos1++) + { + int sum1 = 0; + for(QMap > >::iterator iterPos2 = iterPos1.value().begin(); iterPos2 != iterPos1.value().end(); iterPos2++) + { + for(QMap >::iterator iterPos3 = iterPos2.value().begin(); iterPos3 != iterPos2.value().end(); iterPos3++) + { + for(QMap::iterator iterPos4 = iterPos3.value().begin(); iterPos4 != iterPos3.value().end(); iterPos4++) + { + sum1 += iterPos4.value(); + } + } + } + + strjson += "\t{\n"; + //strjson += ("\t\t\"name\":\"" + iterPos1.key() + "\",\n"); + strjson += ("\t\t\"name\":\"" + iterPos1.key() + "\",\"size\":" + QString::number(sum1) + ",\n"); + strjson += "\t\t\"children\":[\n"; + for(QMap > >::iterator iterPos2 = iterPos1.value().begin(); iterPos2 != iterPos1.value().end(); iterPos2++) + { + int sum2 = 0; + for(QMap >::iterator iterPos3 = iterPos2.value().begin(); iterPos3 != iterPos2.value().end(); iterPos3++) + { + for(QMap::iterator iterPos4 = iterPos3.value().begin(); iterPos4 != iterPos3.value().end(); iterPos4++) + { + sum2 += iterPos4.value(); + } + } + + strjson += "\t\t{\n"; + //strjson += ("\t\t\t\"name\":\"" + iterPos2.key() + "\",\n"); + strjson += ("\t\t\t\"name\":\"" + iterPos2.key() + "\",\"size\":" + QString::number(sum2) + ",\n"); + strjson += "\t\t\t\"children\":[\n"; + + for(QMap >::iterator iterPos3 = iterPos2.value().begin(); iterPos3 != iterPos2.value().end(); iterPos3++) + { + int sum3 = 0; + for(QMap::iterator iterPos4 = iterPos3.value().begin(); iterPos4 != iterPos3.value().end(); iterPos4++) + { + sum3 += iterPos4.value(); + } + + strjson += "\t\t\t{\n"; + strjson += ("\t\t\t\t\"name\":\"" + iterPos3.key() + + "\",\"size\":" + QString::number(sum3) + ",\n"); + strjson += "\t\t\t\t\"children\":[\n"; + + for(QMap::iterator iterPos4 = iterPos3.value().begin(); iterPos4 != iterPos3.value().end(); iterPos4++) + { + strjson += ("\t\t\t\t\t{\"name\": \"" + iterPos4.key() + "\",\"size\":" + QString::number(iterPos4.value()) + "},\n"); + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t\t\t\t]\n\t\t\t},\n"; + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t\t\t]\n\t\t},\n"; + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t\t]\n\t},\n"; + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t]\n}"; + QRegExp re("\\s"); + strjson = strjson.replace(re,""); + + QString strHtml; + + strHtml = "" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n"; + + { + QString strHtml; + strHtml = "\n" + "\n" + "\n" + "\n" + "\n" + "\n"; + } + { + QString strHtml; + strHtml = "" + "\n " + "\n " + "\n" + "\n Tree Example" + "\n" + "\n " + "\n" + "\n " + "\n" + "\n " + "\n" + "\n " + "\n" + "\n " + "\n" + "\n " + "\n " + "\n"; + } + + + qDebug() << strHtml; + + QFile file("d3platform.html"); + if(!file.open(QFile::WriteOnly | QFile::Text)) return; + + QTextStream out(&file); + + out << strHtml; + + file.close(); + + m_WVD3View.setHtml(strHtml.toUtf8()); + //m_WVD3View.settings()->setObjectCacheCapacities(0,0,0); + m_WVD3View.repaint(); + m_WVD3View.show(); + +} + + +void YMPlatformWidget::D3ViewTree() +{ + //QMap mapResult = m_mapResult; + QMap > > > mapResult; + + QString strCKeyword = getCenterKeyword(); + //qDebug() << "executed"; + { + STable* pTable = (STable*)((QTabWidget*)(m_ptwTable->currentWidget()))->currentWidget(); + if(pTable->columnCount() < 4) + return; + int nCountIndex = pTable->columnCount() - 1; + int nTDKeywordIndex = pTable->columnCount() - 2; + int nODKeywordIndex = pTable->columnCount() - 4; + int nPlatformName = 0; + int nPlatformForm = 1; + + for (int i = 0; i < pTable->rowCount(); i++) + { + QString strODKeyword = pTable->item(i, nODKeywordIndex)->text().trimmed(); + QString strTDKeyword = pTable->item(i, nTDKeywordIndex)->text().trimmed(); + QString strPlatformName = pTable->item(i, nPlatformName)->text().trimmed(); + QString strPlatformForm = pTable->item(i, nPlatformForm)->text().trimmed(); + int nCount = pTable->item(i, nCountIndex)->text().trimmed().toInt(); + + + if(mapResult.contains(strPlatformName)) + { + if(mapResult[strPlatformName].contains(strPlatformForm)) + { + if(mapResult[strPlatformName][strPlatformForm].contains(strODKeyword)) + { + mapResult[strPlatformName][strPlatformForm][strODKeyword].insert(strTDKeyword, nCount); + } + else + { + QMap qLast; + qLast.insert(strTDKeyword, nCount); + mapResult[strPlatformName][strPlatformForm].insert(strODKeyword, qLast); + } + } + else + { + QMap qLast; + qLast.insert(strTDKeyword, nCount); + QMap > qMedium; + qMedium.insert(strODKeyword, qLast); + mapResult[strPlatformName].insert(strPlatformForm, qMedium); + } + } + else + { + QMap qLast; + qLast.insert(strTDKeyword, nCount); + QMap > qMedium; + qMedium.insert(strODKeyword, qLast); + QMap > > qFirst; + qFirst.insert(strPlatformForm, qMedium); + mapResult.insert(strPlatformName, qFirst); + } + } + } + + + QString strjson = "{\n\t\"name\":\" " + strCKeyword + "\",\n"; + strjson += ("\t\"children\":[\n"); + + for(QMap > > >::iterator iterPos1 = mapResult.begin(); iterPos1 != mapResult.end(); iterPos1++) + { + int sum1 = 0; + for(QMap > >::iterator iterPos2 = iterPos1.value().begin(); iterPos2 != iterPos1.value().end(); iterPos2++) + { + for(QMap >::iterator iterPos3 = iterPos2.value().begin(); iterPos3 != iterPos2.value().end(); iterPos3++) + { + for(QMap::iterator iterPos4 = iterPos3.value().begin(); iterPos4 != iterPos3.value().end(); iterPos4++) + { + sum1 += iterPos4.value(); + } + } + } + + strjson += "\t{\n"; + //strjson += ("\t\t\"name\":\"" + iterPos1.key() + "\",\n"); + strjson += ("\t\t\"name\":\"" + iterPos1.key() + "\",\"size\":" + QString::number(sum1) + ",\n"); + strjson += "\t\t\"children\":[\n"; + for(QMap > >::iterator iterPos2 = iterPos1.value().begin(); iterPos2 != iterPos1.value().end(); iterPos2++) + { + int sum2 = 0; + for(QMap >::iterator iterPos3 = iterPos2.value().begin(); iterPos3 != iterPos2.value().end(); iterPos3++) + { + for(QMap::iterator iterPos4 = iterPos3.value().begin(); iterPos4 != iterPos3.value().end(); iterPos4++) + { + sum2 += iterPos4.value(); + } + } + + strjson += "\t\t{\n"; + //strjson += ("\t\t\t\"name\":\"" + iterPos2.key() + "\",\n"); + strjson += ("\t\t\t\"name\":\"" + iterPos2.key() + "\",\"size\":" + QString::number(sum2) + ",\n"); + strjson += "\t\t\t\"children\":[\n"; + + for(QMap >::iterator iterPos3 = iterPos2.value().begin(); iterPos3 != iterPos2.value().end(); iterPos3++) + { + int sum3 = 0; + for(QMap::iterator iterPos4 = iterPos3.value().begin(); iterPos4 != iterPos3.value().end(); iterPos4++) + { + sum3 += iterPos4.value(); + } + + strjson += "\t\t\t{\n"; + strjson += ("\t\t\t\t\"name\":\"" + iterPos3.key() + + "\",\"size\":" + QString::number(sum3) + ",\n"); + strjson += "\t\t\t\t\"children\":[\n"; + + for(QMap::iterator iterPos4 = iterPos3.value().begin(); iterPos4 != iterPos3.value().end(); iterPos4++) + { + strjson += ("\t\t\t\t\t{\"name\": \"" + iterPos4.key() + "\",\"size\":" + QString::number(iterPos4.value()) + "},\n"); + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t\t\t\t]\n\t\t\t},\n"; + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t\t\t]\n\t\t},\n"; + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t\t]\n\t},\n"; + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t]\n}"; + QRegExp re("\\s"); + strjson = strjson.replace(re,""); + { + QString strHtml; + + strHtml = "" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n"; + } + { + QString strHtml; + strHtml = "\n" + "\n" + "\n" + "\n" + "\n" + "\n"; + } + QString strHtml; + strHtml = "" + "\n " + "\n " + "\n" + "\n Tree Example" + "\n" + "\n " + "\n" + "\n " + "\n" + "\n " + "\n" + "\n " + "\n" + "\n " + "\n" + "\n " + "\n " + "\n"; + + qDebug() << strHtml; + + QFile file("d3platform.html"); + if(!file.open(QFile::WriteOnly | QFile::Text)) return; + + QTextStream out(&file); + + out << strHtml; + + file.close(); + + m_WVD3View.setHtml(strHtml.toUtf8()); + //m_WVD3View.settings()->setObjectCacheCapacities(0,0,0); + m_WVD3View.repaint(); + m_WVD3View.show(); +} + + +void YMPlatformWidget::TestUpload() +{ + //QMap mapResult = m_mapResult; + QMap > > > mapResult; + + QString strCKeyword = getCenterKeyword(); + //qDebug() << "executed"; + { + STable* pTable = (STable*)((QTabWidget*)(m_ptwTable->currentWidget()))->currentWidget(); + if(pTable->columnCount() < 4) + return; + int nCountIndex = pTable->columnCount() - 1; + int nTDKeywordIndex = pTable->columnCount() - 2; + int nODKeywordIndex = pTable->columnCount() - 4; + int nPlatformName = 0; + int nPlatformForm = 1; + + for (int i = 0; i < pTable->rowCount(); i++) + { + QString strODKeyword = pTable->item(i, nODKeywordIndex)->text().trimmed(); + QString strTDKeyword = pTable->item(i, nTDKeywordIndex)->text().trimmed(); + QString strPlatformName = pTable->item(i, nPlatformName)->text().trimmed(); + QString strPlatformForm = pTable->item(i, nPlatformForm)->text().trimmed(); + int nCount = pTable->item(i, nCountIndex)->text().trimmed().toInt(); + + + if(mapResult.contains(strPlatformName)) + { + if(mapResult[strPlatformName].contains(strPlatformForm)) + { + if(mapResult[strPlatformName][strPlatformForm].contains(strODKeyword)) + { + mapResult[strPlatformName][strPlatformForm][strODKeyword].insert(strTDKeyword, nCount); + } + else + { + QMap qLast; + qLast.insert(strTDKeyword, nCount); + mapResult[strPlatformName][strPlatformForm].insert(strODKeyword, qLast); + } + } + else + { + QMap qLast; + qLast.insert(strTDKeyword, nCount); + QMap > qMedium; + qMedium.insert(strODKeyword, qLast); + mapResult[strPlatformName].insert(strPlatformForm, qMedium); + } + } + else + { + QMap qLast; + qLast.insert(strTDKeyword, nCount); + QMap > qMedium; + qMedium.insert(strODKeyword, qLast); + QMap > > qFirst; + qFirst.insert(strPlatformForm, qMedium); + mapResult.insert(strPlatformName, qFirst); + } + } + } + + + QString strjson = "{\n\t\"name\":\" " + strCKeyword + "\",\n"; + strjson += ("\t\"children\": [\n"); + + for(QMap > > >::iterator iterPos1 = mapResult.begin(); iterPos1 != mapResult.end(); iterPos1++) + { + int sum1 = 0; + for(QMap > >::iterator iterPos2 = iterPos1.value().begin(); iterPos2 != iterPos1.value().end(); iterPos2++) + { + for(QMap >::iterator iterPos3 = iterPos2.value().begin(); iterPos3 != iterPos2.value().end(); iterPos3++) + { + for(QMap::iterator iterPos4 = iterPos3.value().begin(); iterPos4 != iterPos3.value().end(); iterPos4++) + { + sum1 += iterPos4.value(); + } + } + } + + strjson += "\t{\n"; + //strjson += ("\t\t\"name\":\"" + iterPos1.key() + "\",\n"); + strjson += ("\t\t\"name\":\"" + iterPos1.key() + "\",\"size\":" + QString::number(sum1) + ",\n"); + strjson += "\t\t\"children\": [\n"; + for(QMap > >::iterator iterPos2 = iterPos1.value().begin(); iterPos2 != iterPos1.value().end(); iterPos2++) + { + int sum2 = 0; + for(QMap >::iterator iterPos3 = iterPos2.value().begin(); iterPos3 != iterPos2.value().end(); iterPos3++) + { + for(QMap::iterator iterPos4 = iterPos3.value().begin(); iterPos4 != iterPos3.value().end(); iterPos4++) + { + sum2 += iterPos4.value(); + } + } + + strjson += "\t\t{\n"; + //strjson += ("\t\t\t\"name\":\"" + iterPos2.key() + "\",\n"); + strjson += ("\t\t\t\"name\":\"" + iterPos2.key() + "\",\"size\":" + QString::number(sum2) + ",\n"); + strjson += "\t\t\t\"children\": [\n"; + + for(QMap >::iterator iterPos3 = iterPos2.value().begin(); iterPos3 != iterPos2.value().end(); iterPos3++) + { + int sum3 = 0; + for(QMap::iterator iterPos4 = iterPos3.value().begin(); iterPos4 != iterPos3.value().end(); iterPos4++) + { + sum3 += iterPos4.value(); + } + + strjson += "\t\t\t{\n"; + strjson += ("\t\t\t\t\"name\":\"" + iterPos3.key() + + "\",\"size\":" + QString::number(sum3) + ",\n"); + strjson += "\t\t\t\t\"children\": [\n"; + + for(QMap::iterator iterPos4 = iterPos3.value().begin(); iterPos4 != iterPos3.value().end(); iterPos4++) + { + strjson += ("\t\t\t\t\t{\"name\": \"" + iterPos4.key() + "\",\"size\":" + QString::number(iterPos4.value()) + "},\n"); + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t\t\t\t]\n\t\t\t},\n"; + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t\t\t]\n\t\t},\n"; + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t\t]\n\t},\n"; + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t]\n}"; + + QFile file("c:/data/jsontest2.txt"); + if(!file.open(QFile::WriteOnly | QFile::Text)) return; + QTextStream out(&file); + + out << strjson; + + file.close(); + + /* + QSqlDatabase dbWeb = QSqlDatabase::addDatabase("QMYSQL"); + dbWeb.setHostName("db.big-bird.co.kr"); + dbWeb.setUserName("concepters"); + dbWeb.setPassword("con97996655"); + dbWeb.setDatabaseName("dbconcepters"); + + int nCompany = 90; + + if(!dbWeb.open()) + qDebug() << "DB open Failed"; + + + + QSqlQuery query(QSqlDatabase::database(dbWeb.connectionName())); + + QString strquery; + + strquery = "insert into stats_json (jdata, company_num) values ('" + strjson + "', " + QString::number(nCompany) + ")"; + + if(!query.exec(strquery.toUtf8())) + { + strquery = "update stats_json set jdata='" + strjson + "' where company_num=" + QString::number(nCompany); + if(!query.exec(strquery.toUtf8())) + { + qDebug() << query.lastError().text(); + } + } + + + dbWeb.close(); + + */ +} + + +void YMPlatformWidget::setParam(QString strJson) +{ + SJson json; + { + + QString strMorphere = json.Get(strJson, "MorphereList"); + QStringList slMorphere = strMorphere.split(" ", QString::SkipEmptyParts); + + for(int i = 0; i < m_plwMorphereAdd->count(); i++) + { + m_plwMorphereAdd->item(i)->setHidden(true); + } + + for(int i = 0; i < m_plwMorphereAdd->count(); i++) + { + foreach(QString morphere, slMorphere) + { + if(m_plwMorphereAdd->item(i)->data(Qt::UserRole).toString().compare(morphere, Qt::CaseInsensitive) == 0) + { + m_plwMorphereAdd->item(i)->setHidden(false); + } + } + } + } + + { + int nThread = json.Get(strJson, "Thread").toInt(); + for(int i = 0; i < m_pcbThread->count(); i++) + { + //qDebug() << m_pcbThread->itemData(i).toInt(); + if(m_pcbThread->itemText(i).trimmed().toInt() == nThread) + { + m_pcbThread->setCurrentIndex(i); + break; + } + } + } + + { + QString strCountMethod = json.Get(strJson, "CountMethod").trimmed(); + for(int i = 0; i < m_pcbCountMethod->count(); i++) + { + //qDebug() << m_pcbThread->itemData(i).toInt(); + if(m_pcbCountMethod->itemText(i).trimmed().compare(strCountMethod) == 0) + { + m_pcbCountMethod->setCurrentIndex(i); + break; + } + } + } + + { + QString strRecentPeriod = json.Get(strJson, "RecentPeriod").trimmed(); + for(int i = 0; i < m_pcbDuring->count(); i++) + { + //qDebug() << m_pcbThread->itemData(i).toInt(); + if(m_pcbDuring->itemText(i).trimmed().compare(strRecentPeriod) == 0) + { + m_pcbDuring->setCurrentIndex(i); + break; + } + } + } + { + int nPeriod = json.Get(strJson, "Period").toInt(); + m_pcbPeriod->setCurrentIndex(nPeriod); + } + { + int nBodyTitle = json.Get(strJson, "TitleBody").toInt(); + m_pcbData->setCurrentIndex(nBodyTitle); + } + { + QString strDateAll = json.Get(strJson, "DateALL").trimmed(); + if(strDateAll.compare("true",Qt::CaseInsensitive) == 0) + { + m_pcbDate->setCurrentIndex(0); + } + else + { + m_pcbDate->setCurrentIndex(1); + } + } + { + QString strRecentDate = json.Get(strJson, "RecentDate"); + m_pleDates->setText(strRecentDate); + } + { + m_pdeStart->setDate(QDate::fromString(json.Get(strJson,"DateStart"),"yyyyMMdd")); + m_pdeEnd->setDate(QDate::fromString(json.Get(strJson,"DateEnd"),"yyyyMMdd")); + } + { + QString userdict = json.Get(strJson, "UserDict"); + if(!userdict.isEmpty()) + { + + m_pcbDictionary->clear(); + QStringList sluserdict = userdict.split(","); + foreach(QString dict, sluserdict) + { + m_pcbDictionary->addItem(dict); + } + } + else + { + m_pcbDictionary->clear(); + } + } + { + QString extractor = json.Get(strJson, "Extractor"); + m_pleFilterExtractor->setText(extractor); + } + { + QString keywordfilter = json.Get(strJson, "KeywordFilter"); + m_pleFilterKeyword->setText(keywordfilter); + } + { + QString keywordlengthfilter = json.Get(strJson, "KeywordLengthFilter"); + m_pleFilterKeywordLength->setText(keywordlengthfilter); + } + { + QString RankFilterAll = json.Get(strJson, "RankFilterAll"); + m_pleFilterRankALL->setText(RankFilterAll); + } + { + QString RankSeparated = json.Get(strJson, "RankFilterSeparated"); + m_pleFilterRankSeparated->setText(RankSeparated); + } + { + QString CenterKeyword = json.Get(strJson, "CenterKeyword"); + m_pleCKeyword->setText(CenterKeyword); + } + { + QString extractor = json.Get(strJson, "Extractor2"); + m_pleFilterExtractor2->setText(extractor); + } + { + QString keywordfilter = json.Get(strJson, "KeywordFilter2"); + m_pleFilterKeyword2->setText(keywordfilter); + } + { + QString keywordlengthfilter = json.Get(strJson, "KeywordLengthFilter2"); + m_pleFilterKeywordLength2->setText(keywordlengthfilter); + } + { + QString RankFilterAll = json.Get(strJson, "RankFilterAll2"); + m_pleFilterRankALL2->setText(RankFilterAll); + } + { + QString RankSeparated = json.Get(strJson, "RankFilterSeparated2"); + m_pleFilterRankSeparated2->setText(RankSeparated); + } + +} + +QString YMPlatformWidget::getCenterKeyword() +{ + return m_pleCKeyword->text().trimmed(); +} + +QMap YMPlatformWidget::convertToParam() +{ + QMap mapParam; + mapParam.insert("Algorithm", "platform"); + + { + QString strMorphereList = getMorphereList().join(" "); + mapParam.insert("MorphereList",strMorphereList); + } + { + int nThread = getThread(); + mapParam.insert("Thread", QString::number(nThread)); + } + { + QString strUserDict = getUserDictList(); + if(strUserDict.trimmed().length() > 0) + mapParam.insert("UserDict", strUserDict); + } + { + if(getDateAll()) + mapParam.insert("DateALL", "true"); + else + mapParam.insert("DateALL", "false"); + } + { + mapParam.insert("DateStart", QString::number(getDateStart())); + mapParam.insert("DateEnd", QString::number(getDateEnd())); + } + { + mapParam.insert("Period", QString::number(getPeriod())); + } + { + mapParam.insert("CenterKeyword", getCenterKeyword()); + } + { + mapParam.insert("CountMethod", m_pcbCountMethod->currentText().trimmed()); + } + + { + if(!m_pleFilterExtractor->text().trimmed().isEmpty()) + mapParam.insert("Extractor", m_pleFilterExtractor->text().trimmed()); + } + { + if(!m_pleFilterKeyword->text().trimmed().isEmpty()) + mapParam.insert("KeywordFilter",m_pleFilterKeyword->text().trimmed()); + } + { + if(!m_pleFilterKeywordLength->text().trimmed().isEmpty()) + mapParam.insert("KeywordLengthFilter", m_pleFilterKeywordLength->text().trimmed()); + } + { + if(!m_pleFilterRankALL->text().trimmed().isEmpty()) + mapParam.insert("RankFilterAll", m_pleFilterRankALL->text().trimmed()); + } + + { + if(!m_pleFilterRankSeparated->text().trimmed().isEmpty()) + mapParam.insert("RankFilterSeparated", m_pleFilterRankSeparated->text().trimmed()); + } + + { + if(!m_pleFilterExtractor2->text().trimmed().isEmpty()) + mapParam.insert("Extractor2", m_pleFilterExtractor2->text().trimmed()); + } + { + if(!m_pleFilterKeyword2->text().trimmed().isEmpty()) + mapParam.insert("KeywordFilter2",m_pleFilterKeyword2->text().trimmed()); + } + { + if(!m_pleFilterKeywordLength2->text().trimmed().isEmpty()) + mapParam.insert("KeywordLengthFilter2", m_pleFilterKeywordLength2->text().trimmed()); + } + { + if(!m_pleFilterRankALL2->text().trimmed().isEmpty()) + mapParam.insert("RankFilterAll2", m_pleFilterRankALL2->text().trimmed()); + } + { + if(!m_pleFilterRankSeparated2->text().trimmed().isEmpty()) + mapParam.insert("RankFilterSeparated2", m_pleFilterRankSeparated2->text().trimmed()); + } + { + mapParam.insert("RecentDate", m_pleDates->text().trimmed()); + mapParam.insert("RecentPeriod", m_pcbDuring->currentText().trimmed()); + } + { + mapParam.insert("TitleBody", QString::number(m_pcbData->currentIndex())); + } + { + mapParam.insert("Article",QString::number(((STable*)(((Widget*)(m_pTabWidget->currentWidget()))->GetTabWidget()->currentWidget()))->getArticleSelect())); + } + return mapParam; +} diff --git a/MorphereAnalyzer/ymplatformwidget.h b/MorphereAnalyzer/ymplatformwidget.h new file mode 100644 index 0000000..7162e41 --- /dev/null +++ b/MorphereAnalyzer/ymplatformwidget.h @@ -0,0 +1,163 @@ +#ifndef YMPLATFORMWIDGET +#define YMPLATFORMWIDGET + +#include "ymorpherewidget.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "stable.h" +#include + + +class YMPlatformWidget:public YMorphereWidget +{ + Q_OBJECT + +public: + YMPlatformWidget(QWidget *parent = 0); + ~YMPlatformWidget(); + void clearViewResult(); + void clearView(); + void ViewResult(); + QMap convertToParam(); + + //Morphere List + int getThread(); + unsigned int getDateStart(); + unsigned int getDateEnd(); + int getPeriod(); + QStringList getMorphereList(); + bool getDateAll(); + QString getUserDictList(); + QString getCenterKeyword(); + void SaveFile(); + void SaveFileSimple(); + QMap getResult(); + void TestUpload(); + void D3View(); + void D3ViewTree(); + void setParam(QString strJson); +private: + // Data + QListWidget *m_plwData; + // Date + QCalendarWidget *m_pcw; + QDateEdit *m_pdeStart; + QDateEdit *m_pdeEnd; + QLineEdit *m_pleDates; + QComboBox *m_pcbDuring; + //QPushButton *m_ppbInsertCalc; + //QComboBox *m_pcbDateCatalog; + // + QTabWidget *m_ptwData; + // + QProgressBar *m_pProgress; + // Column + QVector m_vecColumn; + // MorphereList + QListWidget *m_plwMorphereList; + QListWidget *m_plwMorphereAdd; + + QComboBox *m_pcbDate; + QComboBox *m_pcbPeriod; + + QLineEdit *m_pleFilterRankALL; + QLineEdit *m_pleFilterRankSeparated; + QLineEdit *m_pleFilterKeyword; + QLineEdit *m_pleFilterKeywordLength; + QLineEdit *m_pleFilterExtractor; + + + QLineEdit *m_pleFilterRankALL2; + QLineEdit *m_pleFilterRankSeparated2; + QLineEdit *m_pleFilterKeyword2; + QLineEdit *m_pleFilterKeywordLength2; + QLineEdit *m_pleFilterExtractor2; + + + QComboBox *m_pcbThread; + QComboBox *m_pcbSort; + + QListWidgetItem **m_plwiMorphere; + QStringList m_strlistMorphere; + QStringList m_strlistMorphereko; + + QRadioButton *m_rbDateMorphere; + QRadioButton *m_rbMorphereDate; + QButtonGroup *m_bgRadioGroup; + + QComboBox *m_pcbDictionary; + QList m_lTable; + QList m_lTabWidget; + QTabWidget* m_ptwTable; + + + QMap > > m_mapViewResult; + QMap > > m_mapViewResult2; + + QString m_strCKeyword; + QLineEdit *m_pleCKeyword; + QComboBox *m_pcbCountMethod; + QWebViewChild m_WVD3View; + QComboBox* m_pcbData; + +public: + struct m_mapKey + { + QString strDate; + QString strMorphere; + QString strKeyword; + }; + + + +private: + QGroupBox *setMorphereList(); + QGroupBox *setDate(); + QGroupBox *setFilter(); + QGroupBox *setFilter2(); + + QGroupBox *setOther(); + QGroupBox *setSort(); + QGroupBox *setDictionary(); + QGroupBox *setCenterKeyword(); + QGroupBox *setData(); + void SortViewResult(); + + QTableWidget *AddTable(QString _str); + + +public slots: + void CloseTab(int index); + void DoubleClickTab(int index); + void FileImport(); + void FileExport(); + void RawFileExport(); + void MemClear(); + void MorphereListAdd(); + void MorphereListDel(); + void AddDictionary(); + void DelDictionary(); + bool setListMorphere(QStringList& MorphereEN, QStringList& MorphereKO); + QTabWidget* getQTabWidget(); + bool isSortMorphereDateChecked(); + bool isSortDateMorphereChecked(); + QString Json(); + +}; + +#endif // YMPLATFORMWIDGET + diff --git a/MorphereAnalyzer/ymtwodepthwidget.cpp b/MorphereAnalyzer/ymtwodepthwidget.cpp index 8fff14d..45187f4 100644 --- a/MorphereAnalyzer/ymtwodepthwidget.cpp +++ b/MorphereAnalyzer/ymtwodepthwidget.cpp @@ -1241,8 +1241,8 @@ void YMTwoDepthWidget::D3View() QString strHtml; - strHtml = "" - "\n" + strHtml = "" + "\n" "\n" + "\n" + "\n " + "\n" + "\n " + "\n" + "\n " + "\n" + "\n " + "\n" + "\n " + "\n " + "\n"; + + qDebug() << strHtml; + + QFile file("d3twodepthtree.html"); + if(!file.open(QFile::WriteOnly | QFile::Text)) return; + + QTextStream out(&file); + + out << strHtml; + + file.close(); + + m_WVD3View.setHtml(strHtml.toUtf8()); + //m_WVD3View.settings()->setObjectCacheCapacities(0,0,0); + m_WVD3View.repaint(); + m_WVD3View.show(); +} + + +QString YMTwoDepthWidget::Json() +{ + QMap > mapResult; + + QString strCKeyword = getCenterKeyword(); + //qDebug() << "executed"; + { + STable* pTable = (STable*)((QTabWidget*)(m_ptwTable->currentWidget()))->currentWidget(); + if(pTable->columnCount() < 4) + return QString(); + int nCountIndex = pTable->columnCount() - 1; + int nTDKeywordIndex = pTable->columnCount() - 2; + int nODKeywordIndex = pTable->columnCount() - 4; + + for (int i = 0; i < pTable->rowCount(); i++) + { + QString strODKeyword = pTable->item(i, nODKeywordIndex)->text().trimmed(); + QString strTDKeyword = pTable->item(i, nTDKeywordIndex)->text().trimmed(); + int nCount = pTable->item(i, nCountIndex)->text().trimmed().toInt(); + + if(mapResult.contains(strODKeyword)) + { + mapResult[strODKeyword].insert(strTDKeyword, nCount); + } + else + { + QMap qLast; + qLast.insert(strTDKeyword, nCount); + mapResult.insert(strODKeyword, qLast); + } + } + } + + QString strjson = "{\n\t\"name\":\" " + strCKeyword + "\",\n"; + strjson += ("\t\"children\": [\n"); + + for(QMap >::iterator iterPos1 = mapResult.begin(); iterPos1 != mapResult.end(); iterPos1++) + { + int sum = 0; + for(QMap::iterator iterPos2 = iterPos1.value().begin(); iterPos2 != iterPos1.value().end(); iterPos2++) + { + sum += iterPos2.value(); + } + strjson += "\t{\n"; + + strjson += ("\t\t\"name\":\"" + iterPos1.key() + "\",\"size\":" + QString::number(sum) + ",\n"); + strjson += "\t\t\"children\": [\n"; + + + for(QMap::iterator iterPos2 = iterPos1.value().begin(); iterPos2 != iterPos1.value().end(); iterPos2++) + { + strjson += ("\t\t\t{\"name\": \"" + iterPos2.key() + "\", \"size\": " + QString::number(iterPos2.value()) + "},\n"); + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t\t]\n\t},\n"; + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "\n\t]\n}"; + mapResult.clear(); + return strjson; + +} void YMTwoDepthWidget::TestUpload() { diff --git a/MorphereAnalyzer/ymtwodepthwidget.h b/MorphereAnalyzer/ymtwodepthwidget.h index 63d5863..21cba9b 100644 --- a/MorphereAnalyzer/ymtwodepthwidget.h +++ b/MorphereAnalyzer/ymtwodepthwidget.h @@ -48,7 +48,9 @@ public: QMap getResult(); void TestUpload(); void D3View(); + void D3ViewTree(); void setParam(QString strJson); + private: // Data QListWidget *m_plwData; @@ -155,6 +157,7 @@ public slots: bool isSortMorphereDateChecked(); bool isSortDateMorphereChecked(); + QString Json(); };