diff --git a/MorphereAnalyzer/MorphereAnalyzer.pro b/MorphereAnalyzer/MorphereAnalyzer.pro index 664a2d4..ae16449 100644 --- a/MorphereAnalyzer/MorphereAnalyzer.pro +++ b/MorphereAnalyzer/MorphereAnalyzer.pro @@ -4,15 +4,15 @@ # #------------------------------------------------- -QT += core gui sql network webenginewidgets +QT += core gui sql network webkit webkitwidgets greaterThan(QT_MAJOR_VERSION, 4): QT += widgets +DEFINES += NOMINMAX TARGET = MorphereAnalyzer TEMPLATE = app - SOURCES += main.cpp\ mainwindow.cpp \ widget.cpp \ @@ -35,7 +35,8 @@ SOURCES += main.cpp\ ymfilterchildren.cpp \ ymtwodepthwidget.cpp \ ymuploadwidget.cpp \ - ymplatformwidget.cpp + ymplatformwidget.cpp \ + ymtwodepthawidget.cpp HEADERS += mainwindow.h \ @@ -89,7 +90,8 @@ HEADERS += mainwindow.h \ ymfilterchildren.h \ ymtwodepthwidget.h \ ymuploadwidget.h \ - ymplatformwidget.h + ymplatformwidget.h \ + ymtwodepthawidget.h FORMS += mainwindow.ui diff --git a/MorphereAnalyzer/keywordthread.h b/MorphereAnalyzer/keywordthread.h index 30c8d21..dc526e9 100644 --- a/MorphereAnalyzer/keywordthread.h +++ b/MorphereAnalyzer/keywordthread.h @@ -2,7 +2,6 @@ #define KEYWORDTHREAD #include -#include #include "widget.h" #include #include diff --git a/MorphereAnalyzer/mainwindow.cpp b/MorphereAnalyzer/mainwindow.cpp index 21ca838..5bcf3d5 100644 --- a/MorphereAnalyzer/mainwindow.cpp +++ b/MorphereAnalyzer/mainwindow.cpp @@ -53,6 +53,7 @@ #include #include "ymtwodepthwidget.h" #include "ymplatformwidget.h" +#include "ymtwodepthawidget.h" #include #include #include @@ -70,6 +71,8 @@ MainWindow::MainWindow() m_pYMBasicWidget = new YMBasicWidget; m_pYMOneDepthWidget = new YMOneDepthWidget; m_pYMTwoDepthWidget = new YMTwoDepthWidget; + m_pYMTwoDepthAWidget = new YMTwoDepthAWidget; + m_pYMNxNMatrixWidget = new YMNxNMatrixWidget; m_pYMPlatformWidget = new YMPlatformWidget; p_qwDict = new SDictionary; @@ -94,6 +97,7 @@ MainWindow::MainWindow() m_ptwResult->addTab(m_pYMBasicWidget, "Basic"); m_ptwResult->addTab(m_pYMOneDepthWidget, "OneDepth"); m_ptwResult->addTab(m_pYMTwoDepthWidget, "TwoDepth"); + m_ptwResult->addTab(m_pYMTwoDepthAWidget, "TwoDepthAdv"); m_ptwResult->addTab(m_pYMNxNMatrixWidget, "NxNMatrix"); m_ptwResult->addTab(m_pYMPlatformWidget, "Platform"); @@ -102,6 +106,7 @@ MainWindow::MainWindow() m_pYMTwoDepthWidget->setTabWidget(m_ptwSource); m_pYMNxNMatrixWidget->setTabWidget(m_ptwSource); m_pYMPlatformWidget->setTabWidget(m_ptwSource); + m_pYMTwoDepthAWidget->setTabWidget(m_ptwSource); m_pUploadWidget->setResultTabWidget(m_ptwResult); m_pUploadWidget->setSourceTabWidget(m_ptwSource); @@ -177,6 +182,15 @@ void MainWindow::createActions() connect(actShowUpload, SIGNAL(triggered()), this, SLOT(slotShowUpload())); actD3ViewTree = new QAction(tr("D3View Tree"), this); connect(actD3ViewTree, SIGNAL(triggered()), this, SLOT(slotD3ViewTree())); + + actD3ViewTreeFile = new QAction(tr("D3ViewTree From File"), this); + connect(actD3ViewTreeFile, SIGNAL(triggered()), this, SLOT(slotD3ViewTreeFile())); + + actD3ViewFile = new QAction(tr("D3View From File"), this); + connect(actD3ViewFile, SIGNAL(triggered()), this, SLOT(slotD3ViewFile())); + + + } void MainWindow::slotShowUpload() @@ -197,6 +211,18 @@ void MainWindow::slotD3ViewTree() //qDebug() << "hide the D3View"; } +void MainWindow::slotD3ViewFile() +{ + ((YMorphereWidget*)(m_ptwResult->currentWidget()))->D3ViewFile(); + //qDebug() << "hide the D3View"; +} + +void MainWindow::slotD3ViewTreeFile() +{ + ((YMorphereWidget*)(m_ptwResult->currentWidget()))->D3ViewTreeFile(); + //qDebug() << "hide the D3View"; +} + void MainWindow::createMenus() { @@ -233,7 +259,10 @@ void MainWindow::createMenus() menuD3View = menuBar()->addMenu(tr("D3View")); menuD3View->addAction(actD3View); + menuD3View->addAction(actD3ViewFile); menuD3View->addAction(actD3ViewTree); + menuD3View->addAction(actD3ViewTreeFile); + } //! [12] diff --git a/MorphereAnalyzer/mainwindow.h b/MorphereAnalyzer/mainwindow.h index 0f52dca..cad6477 100644 --- a/MorphereAnalyzer/mainwindow.h +++ b/MorphereAnalyzer/mainwindow.h @@ -40,7 +40,6 @@ #ifndef MAINWINDOW_H #define MAINWINDOW_H - #include #include #include "widget.h" @@ -85,6 +84,8 @@ private slots: void slotD3View(); void slotShowUpload(); void slotD3ViewTree(); + void slotD3ViewFile(); + void slotD3ViewTreeFile(); protected: void closeEvent(QCloseEvent *); @@ -119,6 +120,7 @@ private: YMorphereWidget *m_pYMOneDepthWidget; YMorphereWidget *m_pYMNxNMatrixWidget; YMorphereWidget *m_pYMTwoDepthWidget; + YMorphereWidget *m_pYMTwoDepthAWidget; YMorphereWidget *m_pYMPlatformWidget; QAction *actDBNew; @@ -144,6 +146,10 @@ private: QAction *actD3View; QAction *actD3ViewTree; + + QAction *actD3ViewFile; + QAction *actD3ViewTreeFile; + QAction *actShowUpload; //AnalyzerThread m_pThread[16]; /* diff --git a/MorphereAnalyzer/mecab.h b/MorphereAnalyzer/mecab.h index e545bb1..e5e91e0 100644 --- a/MorphereAnalyzer/mecab.h +++ b/MorphereAnalyzer/mecab.h @@ -336,6 +336,7 @@ extern "C" { #endif #ifdef _WIN32 +#define NOMINMAX #include # ifdef DLL_EXPORT # define MECAB_DLL_EXTERN __declspec(dllexport) diff --git a/MorphereAnalyzer/yalgorithm.cpp b/MorphereAnalyzer/yalgorithm.cpp index efd9db1..23bf50f 100644 --- a/MorphereAnalyzer/yalgorithm.cpp +++ b/MorphereAnalyzer/yalgorithm.cpp @@ -83,6 +83,12 @@ YAlgorithm* YAFactory::getYAlgorithm(QMap mapParam) m_mapAlgorithm.insert("platform", new YPlatformAlgorithm()); Algorithm = m_mapAlgorithm.value("platform"); } + else if(mapParam.value("Algorithm").compare("twodeptha", Qt::CaseInsensitive) == 0) + { + if(!m_mapAlgorithm.contains("twodeptha")) + m_mapAlgorithm.insert("twodeptha", new YTwoDepthAAlgorithm()); + Algorithm = m_mapAlgorithm.value("twodeptha"); + } else { Algorithm = NULL; @@ -512,8 +518,130 @@ void YPlatformAlgorithm::Start() } delete ymfilter; - - - } +void YTwoDepthAAlgorithm::Start() +{ + if(m_mapParam.isEmpty()) + return; + + bool okThread = false; + int nThread = m_mapParam.value("Thread").trimmed().toInt(&okThread); + + if(!okThread) + setThreadNumber(1); + else + setThreadNumber(nThread); + + QMapmapParam = m_mapParam; + + mapParam["Algorithm"] = "onedepth"; + + + m_pYMThread = new YMorphereThread*[getThreadNumber()]; + for(int i = 0; i < getThreadNumber(); i++) + { + m_pYMThread[i] = ThreadFactory::getThread(mapParam); + m_pYMThread[i]->setDataAlgorithmInterface(m_pDAInterface); + m_pYMThread[i]->setMutex(&mutex); + m_pYMThread[i]->setParam(mapParam); + } + for(int i = 0;i < getThreadNumber(); i++) + { + m_pYMThread[i]->start(); + } + for(int i = 0;i < getThreadNumber(); i++) + { + m_pYMThread[i]->wait(); + } + + m_mapThreadResult = new QMap*[getThreadNumber()]; + for(int i = 0; i < getThreadNumber(); i++) + { + m_mapThreadResult[i] = new QMap(); + } + for(int i = 0; i < getThreadNumber(); i++) + { + *m_mapThreadResult[i] = m_pYMThread[i]->getResult(); + m_pYMThread[i]->clearResult(); + } + + for(int i = 0;i < getThreadNumber(); i++) + { + delete m_pYMThread[i]; + } + delete[] m_pYMThread; + + EmergeThreadResult(); + + YMFilter* ymfilter = YMFilterFactory::getFilter(mapParam); + //qDebug() << "EXEC"; + if(ymfilter != NULL) + { + ymfilter->setParam(m_mapParam); + m_mapTotalResult = ymfilter->Exec(m_mapTotalResult); + } + delete ymfilter; + + + QList listKeys = m_mapTotalResult.keys(); + + QString strKeys; + + for(int i = 0; i < listKeys.count(); i++) + { + strKeys += (listKeys.at(i).trimmed() + " "); + } + + strKeys = strKeys.trimmed(); + + m_mapTotalResult.clear(); + + m_mapParam.insert("OneDepthKeys", strKeys); + m_pDAInterface->reset(); + m_pYMThread = new YMorphereThread*[getThreadNumber()]; + for(int i = 0; i < getThreadNumber(); i++) + { + m_pYMThread[i] = ThreadFactory::getThread(m_mapParam); + m_pYMThread[i]->setDataAlgorithmInterface(m_pDAInterface); + m_pYMThread[i]->setMutex(&mutex); + m_pYMThread[i]->setParam(m_mapParam); + } + for(int i = 0;i < getThreadNumber(); i++) + { + m_pYMThread[i]->start(); + } + for(int i = 0;i < getThreadNumber(); i++) + { + m_pYMThread[i]->wait(); + } + + m_mapThreadResult = new QMap*[getThreadNumber()]; + for(int i = 0; i < getThreadNumber(); i++) + { + m_mapThreadResult[i] = new QMap(); + } + for(int i = 0; i < getThreadNumber(); i++) + { + *m_mapThreadResult[i] = m_pYMThread[i]->getResult(); + m_pYMThread[i]->clearResult(); + } + + for(int i = 0;i < getThreadNumber(); i++) + { + delete m_pYMThread[i]; + } + delete[] m_pYMThread; + + EmergeThreadResult(); + + ymfilter = YMFilterFactory::getFilter(m_mapParam); + //qDebug() << "EXEC"; + if(ymfilter != NULL) + { + ymfilter->setParam(m_mapParam); + m_mapTotalResult = ymfilter->Exec(m_mapTotalResult); + } + delete ymfilter; + +} diff --git a/MorphereAnalyzer/yalgorithm.h b/MorphereAnalyzer/yalgorithm.h index 6179c42..b7598e3 100644 --- a/MorphereAnalyzer/yalgorithm.h +++ b/MorphereAnalyzer/yalgorithm.h @@ -68,6 +68,13 @@ public: void Start(); }; +class YTwoDepthAAlgorithm:public YAlgorithm +{ +public: + void Start(); +}; + + class YPlatformAlgorithm:public YAlgorithm { public: diff --git a/MorphereAnalyzer/ychildrenthread.cpp b/MorphereAnalyzer/ychildrenthread.cpp index 2c5526e..cf54962 100644 --- a/MorphereAnalyzer/ychildrenthread.cpp +++ b/MorphereAnalyzer/ychildrenthread.cpp @@ -19,6 +19,10 @@ YMorphereThread* ThreadFactory::getThread(QMap mapParam) { return new YTwoDepthMThread(); } + else if(mapParam.value("Algorithm").trimmed().compare("twodeptha", Qt::CaseInsensitive) == 0) + { + return new YTwoDepthAMThread(); + } else if(mapParam.value("Algorithm").trimmed().compare("platformone", Qt::CaseInsensitive) == 0) { return new YPlatformOneMThread(); @@ -2080,3 +2084,382 @@ void YPlatformMThread::run() } mecab_destroy(mecab); } + + +void YTwoDepthAMThread::run() +{ + typedef mecab_t* (*mecab_new_fun)(int,char**); + typedef const char* (*mecab_sparse_tostr_fun)(mecab_t *mecab, const char *str); + typedef void (*mecab_destroy_fun)(mecab_t *mecab); + + mecab_t *mecab; + mecab_new_fun mecab_new = (mecab_new_fun)QLibrary::resolve("libmecab.dll","mecab_new"); + mecab_sparse_tostr_fun mecab_sparse_tostr = (mecab_sparse_tostr_fun)QLibrary::resolve("libmecab.dll","mecab_sparse_tostr"); + + parseParam(); + + if(userdict.length() < 1) + { + /* + char *t[] = {"RRR","-d","dic"}; + int int_t = 3; + */ + + char a[] = "RRR"; + char b[] = "-d"; + char c[] = "dic"; + char *t[3]; + t[0] = a; + t[1] = b; + t[2] = c; + int int_t = 3; + + mecab = mecab_new(int_t, t); + } + else + { + char *cstr = new char[userdict.toStdString().length() + 1]; + strcpy(cstr, userdict.toStdString().c_str()); + /* + char **t = {"RRR","-d","dic","-u",cstr}; + int int_t = 5; + */ + char a[] = "RRR"; + char b[] = "-d"; + char c[] = "dic"; + char d[] = "-u"; + + char *t[5]; + t[0] = a; + t[1] = b; + t[2] = c; + t[3] = d; + t[4] = cstr; + int int_t = 5; + + mecab = mecab_new(int_t, t); + delete[] cstr; + } + mecab_destroy_fun mecab_destroy = (mecab_destroy_fun)QLibrary::resolve("libmecab.dll","mecab_destroy"); + + + + //qDebug() << num; + + int nDate = 0; + while(true) + { + QString strTitle; + QString strBody; + QString strDate; + QString strData; + QString strPlatformTitle; + QString strArticle; + { + mutex->lock(); + if(!m_pDAInterface->hasNext()) + { + mutex->unlock(); + break; + } + strTitle = m_pDAInterface->getArticleTitle(); + strDate = m_pDAInterface->getArticleDate(); + strPlatformTitle = m_pDAInterface->getPlatformTitle(); + strBody = m_pDAInterface->getArticleData(); + strArticle = m_pDAInterface->getArticleForm(); + m_pDAInterface->next(); + mutex->unlock(); + } + + bool bContinue = true; + { + switch(m_nArticle) + { + case 0: + break; + case 1: + { + if(strArticle.trimmed().compare("reply", Qt::CaseInsensitive) == 0) + bContinue = false; + break; + } + case 2: + { + if(strArticle.trimmed().compare("body", Qt::CaseInsensitive) == 0) + bContinue = false; + break; + } + } + } + + if(!bContinue) + continue; + + + { + switch(m_nTitleBody) + { + case 0: + { + strData = strTitle; + break; + } + case 1: + { + strData = strBody; + break; + } + case 2: + { + strData = strTitle + "\n" + strBody; + break; + } + case 3: + strData = strPlatformTitle; + break; + } + strTitle.clear(); + strBody.clear(); + strPlatformTitle.clear(); + } + + //if(!strData.contains(m_strCKeyword, Qt::CaseInsensitive)) + if(!strData.contains(m_strCKeyword, Qt::CaseInsensitive)) + continue; + + if(strDate.length() < 11) + continue; + + strDate = strDate.left(11); + if(strDate.trimmed().length()<10) + { + nDate = 0; + } + else + { + strDate = strDate.replace("-","").trimmed(); + if(strDate.length() < 8) + { + nDate = 0; + } + else + nDate = strDate.toInt(); + } + + if(!m_bDateAll) + { + if(nDate < m_nDateStart || m_nDateEnd < nDate) + continue; + } + + QString m_strDate; + QString m_strKeyword; + QString m_strMorphere; + + switch(m_nPeriod) + { + case 0: + { + m_strDate = "ALL"; + break; + } + case 1: + { + m_strDate = "D" + QString::number(nDate); + break; + } + case 2: + { + /* + QDate tempdate = QDate(nDate/10000, (nDate%10000)/100, nDate%100); + mapkey.strDate = "W" + QString::number(nDate/10000); + if(tempdate.weekNumber() < 10) + mapkey.strDate += "0"; + mapkey.strDate += QString::number(tempdate.weekNumber()); + */ + m_strDate = getWeeksInMonth(nDate); + break; + } + case 3: + { + m_strDate = "M"; + if((nDate/100) < 10) + m_strDate += "0"; + m_strDate += QString::number(nDate/100); + break; + } + } + + QString strAnalyzedLine = QString::fromStdString(mecab_sparse_tostr(mecab, strData.toStdString().c_str())) + "\n"; + QStringList strListAll = strAnalyzedLine.split("\n",QString::SkipEmptyParts); + + QMap mapResult; + QMap mapCheck; + + foreach(QString strLine, strListAll) + { + QStringList strListLine = strLine.split("\t"); + if(strListLine.size() < 2) + continue; + QStringList strpumsa = strListLine.at(1).trimmed().split(","); + foreach(QString strMorphere, m_slMorphereListAll) + { + if(strpumsa.at(0).trimmed().contains(strMorphere,Qt::CaseInsensitive)) + { + m_strKeyword = strListLine.at(0).toLower(); + m_strMorphere = strMorphere; + QString strkey = m_strDate + "~!@" + m_strMorphere + "~!@" + m_strKeyword; + + if(m_slMorphereList.contains(strMorphere, Qt::CaseInsensitive)) + { + if(mapCheck.contains(strkey)) + { + (mapCheck)[strkey]++; + } + + else + { + mapCheck.insert(strkey,1); + } + + + } + if(m_slMorphereList2.contains(strMorphere, Qt::CaseInsensitive)) + { + if(mapResult.contains(strkey)) + { + (mapResult)[strkey]++; + } + + else + { + mapResult.insert(strkey,1); + } + } + strkey.clear(); + } + } + } + + if(!m_bDuplicate) + { + for(QMap::iterator iterPos = mapResult.begin(); iterPos != mapResult.end(); iterPos++) + { + mapResult[iterPos.key()] = 1; + } + } + + + + foreach(QString str, m_slOneDepthKeys) + { + if(mapCheck.contains(str)) + { + for(QMap::iterator iterPos = mapResult.begin(); iterPos != mapResult.end(); iterPos++) + { + if(iterPos.key() == str) + continue; + QString key = iterPos.key(); + QStringList slkey = key.split("~!@", QString::SkipEmptyParts); + int nLength = slkey.length(); + QString strkey = str + "~!@" + slkey.at(nLength - 2) + "~!@" + slkey.at(nLength - 1); + if(m_mapResult.contains(strkey)) + { + m_mapResult[strkey] += iterPos.value(); + } + else + { + m_mapResult.insert(strkey, iterPos.value()); + } + } + } + } + } + mecab_destroy(mecab); +} + +void YTwoDepthAMThread::parseParam() +{ + userdict = m_mapParam.value("UserDict"); + + m_nArticle = m_mapParam.value("Article").toInt(); + + m_nTitleBody = m_mapParam.value("TitleBody").toInt(); + m_nPeriod = m_mapParam.value("Period").toInt(); + + m_nDateStart = m_mapParam.value("DateStart").toInt(); + m_nDateEnd = m_mapParam.value("DateEnd").toInt(); + + m_bDateAll = true; + + if(m_mapParam.value("DateALL") == "true") + m_bDateAll = true; + else + m_bDateAll = false; + + m_slMorphereList = m_mapParam.value("MorphereList").split(" "); + m_slMorphereList2 = m_mapParam.value("MorphereList2").split(" "); + + + m_slMorphereListAll = m_slMorphereList + m_slMorphereList2; + m_slMorphereListAll.removeDuplicates(); + + m_strCKeyword = m_mapParam.value("CenterKeyword").trimmed(); + + m_slOneDepthKeys = m_mapParam.value("OneDepthKeys").split(" "); + if(m_mapParam.value("CountMethod") == "Duplicate") + m_bDuplicate = true; + else + m_bDuplicate = false; + + + m_strRecentPeriod = m_mapParam.value("RecentPeriod").trimmed(); + + if(m_strRecentPeriod == "None") + { + + } + else if(m_strRecentPeriod == "Days") + { + int nDate = m_mapParam.value("RecentDate").trimmed().toInt(); + QDateTime today = QDateTime::currentDateTime(); + QDateTime startday = today.addDays(-(nDate)); + startday = startday.addDays(1); + m_nDateStart = startday.toString("yyyyMMdd").trimmed().toInt(); + m_nDateEnd = today.toString("yyyyMMdd").trimmed().toInt(); + m_bDateAll = false; + } + else if(m_strRecentPeriod == "Weeks") + { + int nDate = m_mapParam.value("RecentDate").trimmed().toInt(); + QDateTime today = QDateTime::currentDateTime(); + QDateTime startday = today.addDays(-(nDate*7)); + startday = startday.addDays(1); + m_nDateStart = startday.toString("yyyyMMdd").trimmed().toInt(); + m_nDateEnd = today.toString("yyyyMMdd").trimmed().toInt(); + m_bDateAll = false; + } + else if(m_strRecentPeriod == "Months") + { + int nDate = m_mapParam.value("RecentDate").trimmed().toInt(); + QDateTime today = QDateTime::currentDateTime(); + QDateTime startday = today.addMonths(-(nDate)); + startday = startday.addDays(1); + m_nDateStart = startday.toString("yyyyMMdd").trimmed().toInt(); + m_nDateEnd = today.toString("yyyyMMdd").trimmed().toInt(); + m_bDateAll = false; + } + else if(m_strRecentPeriod == "Years") + { + int nDate = m_mapParam.value("RecentDate").trimmed().toInt(); + QDateTime today = QDateTime::currentDateTime(); + QDateTime startday = today.addYears(-(nDate)); + startday = startday.addDays(1); + m_nDateStart = startday.toString("yyyyMMdd").trimmed().toInt(); + m_nDateEnd = today.toString("yyyyMMdd").trimmed().toInt(); + m_bDateAll = false; + } + +} + + diff --git a/MorphereAnalyzer/ychildrenthread.h b/MorphereAnalyzer/ychildrenthread.h index 48a848f..4a774de 100644 --- a/MorphereAnalyzer/ychildrenthread.h +++ b/MorphereAnalyzer/ychildrenthread.h @@ -171,6 +171,33 @@ public: void parseParam(); }; +class YTwoDepthAMThread:public YMorphereThread +{ + Q_OBJECT +private: + //QString getWeeksInMonth(unsigned int _nDate); + + QString userdict; + int m_nTitleBody; + int m_nPeriod; + unsigned int m_nDateStart; + unsigned int m_nDateEnd; + bool m_bDateAll; + QStringList m_slMorphereList; + QStringList m_slMorphereList2; + QStringList m_slMorphereListAll; + QString m_strCKeyword; + QStringList m_slOneDepthKeys; + bool m_bDuplicate; + QString m_strRecentPeriod; + int m_nArticle; + +protected: + void run(); +public: + void parseParam(); +}; + #endif // YCHILDRENTHREAD_H diff --git a/MorphereAnalyzer/ymfilterchildren.cpp b/MorphereAnalyzer/ymfilterchildren.cpp index 39af2cc..2c49cf2 100644 --- a/MorphereAnalyzer/ymfilterchildren.cpp +++ b/MorphereAnalyzer/ymfilterchildren.cpp @@ -20,6 +20,8 @@ YMFilter* YMFilterFactory::getFilter(QMap mapParam) return new YMOneDepthFilter(); else if(mapParam.value("Algorithm").trimmed().compare("twodepth", Qt::CaseInsensitive) == 0) return new YMTwoDepthFilter(); + else if(mapParam.value("Algorithm").trimmed().compare("twodeptha", Qt::CaseInsensitive) == 0) + return new YMTwoDepthFilter(); else if(mapParam.value("Algorithm").trimmed().compare("platformone", Qt::CaseInsensitive) == 0) return new YMPlatformOneFilter(); else if(mapParam.value("Algorithm").trimmed().compare("platform", Qt::CaseInsensitive) == 0) @@ -28,11 +30,13 @@ YMFilter* YMFilterFactory::getFilter(QMap mapParam) return NULL; } + YMOneDepthFilter::YMOneDepthFilter() { } + YMOneDepthFilter::~YMOneDepthFilter() { diff --git a/MorphereAnalyzer/ymonedepthwidget.cpp b/MorphereAnalyzer/ymonedepthwidget.cpp index 9dd5da5..fa760b6 100644 --- a/MorphereAnalyzer/ymonedepthwidget.cpp +++ b/MorphereAnalyzer/ymonedepthwidget.cpp @@ -658,6 +658,205 @@ void YMOneDepthWidget::D3View() QString strHtml; + strHtml = "" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n"; + + QRegExp re("\\s{2,}"); + qDebug() << strHtml; + + strHtml = strHtml.replace(re,""); + /* + QFile file("d3onedepth.html"); + if(!file.open(QFile::WriteOnly | QFile::Text)) return; + + QTextStream out(&file); + + out << strHtml; + + file.close(); +*/ + m_WVD3View.setHtml(strHtml); + //QUrl url("https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/"); + //m_WVD3View.settings()->testAttribute( QWebEngineSetting::JavascriptEnabled ); + //m_WVD3View.setContent(strHtml.toUtf8(), "text/html; charset=utf-8", url); + //m_WVD3View.setHtml(strHtml, QUrl("file:///")); + //m_WVD3View.settings()->setObjectCacheCapacities(0,0,0); + m_WVD3View.repaint(); + m_WVD3View.show(); +} + +void YMOneDepthWidget::D3ViewFile() +{ + 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}"; + */ + QString strjson = "{\"name\":\" " + strCKeyword + "\","; + strjson += ("\"children\": ["); + + 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 += ("{\"name\": \"" + strKeyword + "\", \"size\": " + QString::number(nCount) + "},"); + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "]}"; + + QString strHtml; + strHtml = "" "\n" "\n" "\n" - "\n" + //"\n" + "\n" "\n" + "\n " + "\n" + "\n " + "\n " + "\n"; + qDebug() << strHtml; QFile file("d3onedepthtree.html"); @@ -1037,7 +1471,10 @@ void YMOneDepthWidget::D3ViewTree() out << strHtml; file.close(); - m_WVD3View.setHtml(strHtml); + QUrl url = QUrl::fromLocalFile(QDir::current().absoluteFilePath("d3onedepthtree.html")); + + m_WVD3View.load(url); + //m_WVD3View.setHtml(strHtml); //m_WVD3View.settings()->setObjectCacheCapacities(0,0,0); m_WVD3View.repaint(); m_WVD3View.show(); diff --git a/MorphereAnalyzer/ymonedepthwidget.h b/MorphereAnalyzer/ymonedepthwidget.h index 10eaa74..ccaf388 100644 --- a/MorphereAnalyzer/ymonedepthwidget.h +++ b/MorphereAnalyzer/ymonedepthwidget.h @@ -47,6 +47,8 @@ public: void TestUpload(); void D3View(); void D3ViewTree(); + void D3ViewFile(); + void D3ViewTreeFile(); void setParam(QString strJson); private: // Data diff --git a/MorphereAnalyzer/ymorpherewidget.cpp b/MorphereAnalyzer/ymorpherewidget.cpp index 85a5233..b45fb97 100644 --- a/MorphereAnalyzer/ymorpherewidget.cpp +++ b/MorphereAnalyzer/ymorpherewidget.cpp @@ -74,6 +74,19 @@ void YMorphereWidget::D3ViewTree() } + +void YMorphereWidget::D3ViewFile() +{ + +} + + +void YMorphereWidget::D3ViewTreeFile() +{ + +} + + void YMorphereWidget::setParam(QString strJson) { diff --git a/MorphereAnalyzer/ymorpherewidget.h b/MorphereAnalyzer/ymorpherewidget.h index e6ef44f..377d9ed 100644 --- a/MorphereAnalyzer/ymorpherewidget.h +++ b/MorphereAnalyzer/ymorpherewidget.h @@ -6,12 +6,12 @@ #include "yalgorithm.h" #include #include "widget.h" -#include -class QWebViewChild:public QWebEngineView +#include +class QWebViewChild:public QWebView { Q_OBJECT public: - QWebViewChild(QWidget *parent = 0):QWebEngineView(parent) + QWebViewChild(QWidget *parent = 0):QWebView(parent) { } @@ -53,6 +53,8 @@ public: virtual void TestUpload(); virtual void D3View(); virtual void D3ViewTree(); + virtual void D3ViewFile(); + virtual void D3ViewTreeFile(); void setTabWidget(QTabWidget* tabWidget); virtual void setParam(QString strJson); QString getName(); diff --git a/MorphereAnalyzer/ymplatformwidget.cpp b/MorphereAnalyzer/ymplatformwidget.cpp index f17291f..475e062 100644 --- a/MorphereAnalyzer/ymplatformwidget.cpp +++ b/MorphereAnalyzer/ymplatformwidget.cpp @@ -1610,12 +1610,14 @@ void YMPlatformWidget::D3View() strjson = strjson.trimmed(); strjson = strjson.left(strjson.length() - 1); strjson += "\n\t]\n}"; - QRegExp re("\\s"); - strjson = strjson.replace(re,""); - + { + QRegExp re("\\s"); + strjson = strjson.replace(re,""); + } QString strHtml; strHtml = "" + "\n" "\n" "\n" + "\n" "\n" - "\n" + "\n" "\n" "\n"; + QRegExp re("\\s{2,}"); + qDebug() << strHtml; + strHtml = strHtml.replace(re,""); +/* + 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::D3ViewFile() +{ + //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" + + strHtml = "" + "\n" "\n" "\n" + "\n" "\n" - "\n" + "\n" "\n"; - } - { - QString strHtml; - strHtml = "" - "\n " - "\n " + "\nfunction flatten(root) {" + "\n var nodes = [], i = 0;" "\n" - "\n Tree Example" - "\n" - "\n " - "\n" - "\n " - "\n" - "\n " - "\n" - "\n " - "\n" - "\n " - "\n" - "\n " - "\n " - "\n"; - } - + "\n" + "\n"; + QRegExp re("\\s{2,}"); qDebug() << strHtml; + strHtml = strHtml.replace(re,""); QFile file("d3platform.html"); if(!file.open(QFile::WriteOnly | QFile::Text)) return; @@ -2111,14 +2055,16 @@ void YMPlatformWidget::D3View() file.close(); - m_WVD3View.setHtml(strHtml.toUtf8()); + QUrl url = QUrl::fromLocalFile(QDir::current().absoluteFilePath("d3platform.html")); + + m_WVD3View.load(url); //m_WVD3View.settings()->setObjectCacheCapacities(0,0,0); m_WVD3View.repaint(); m_WVD3View.show(); - } + void YMPlatformWidget::D3ViewTree() { //QMap mapResult = m_mapResult; @@ -2253,317 +2199,334 @@ void YMPlatformWidget::D3ViewTree() 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 .link {" + "\n fill: none;" + "\n stroke: #ccc;" + "\n stroke-width: 2px;" + "\n }" + "\n " + "\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::D3ViewTreeFile() +{ + //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 " @@ -2740,7 +2703,7 @@ void YMPlatformWidget::D3ViewTree() qDebug() << strHtml; - QFile file("d3platform.html"); + QFile file("d3platformtree.html"); if(!file.open(QFile::WriteOnly | QFile::Text)) return; QTextStream out(&file); @@ -2749,13 +2712,15 @@ void YMPlatformWidget::D3ViewTree() file.close(); - m_WVD3View.setHtml(strHtml.toUtf8()); + + QUrl url = QUrl::fromLocalFile(QDir::current().absoluteFilePath("d3platformtree.html")); + + m_WVD3View.load(url); //m_WVD3View.settings()->setObjectCacheCapacities(0,0,0); m_WVD3View.repaint(); m_WVD3View.show(); } - void YMPlatformWidget::TestUpload() { //QMap mapResult = m_mapResult; diff --git a/MorphereAnalyzer/ymplatformwidget.h b/MorphereAnalyzer/ymplatformwidget.h index 7162e41..dd7fbb4 100644 --- a/MorphereAnalyzer/ymplatformwidget.h +++ b/MorphereAnalyzer/ymplatformwidget.h @@ -49,6 +49,8 @@ public: void TestUpload(); void D3View(); void D3ViewTree(); + void D3ViewFile(); + void D3ViewTreeFile(); void setParam(QString strJson); private: // Data diff --git a/MorphereAnalyzer/ymtwodepthwidget.cpp b/MorphereAnalyzer/ymtwodepthwidget.cpp index 45187f4..141079a 100644 --- a/MorphereAnalyzer/ymtwodepthwidget.cpp +++ b/MorphereAnalyzer/ymtwodepthwidget.cpp @@ -1242,6 +1242,7 @@ void YMTwoDepthWidget::D3View() QString strHtml; strHtml = "" + "\n" "\n" "\n" + "\n" "\n" - "\n" + "\n" "\n" "\n"; + QRegExp re("\\s{2,}"); + qDebug() << strHtml; + + strHtml = strHtml.replace(re,""); +/* + qDebug() << strHtml; + + QFile file("d3twodepth.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 YMTwoDepthWidget::D3ViewFile() +{ + 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; + + 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 = "{\"name\":\" " + strCKeyword + "\","; + strjson += ("\"children\": ["); + + 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 += "{"; + + strjson += ("\"name\":\"" + iterPos1.key() + "\",\"size\":" + QString::number(sum) + ","); + strjson += "\"children\": ["; + + + for(QMap::iterator iterPos2 = iterPos1.value().begin(); iterPos2 != iterPos1.value().end(); iterPos2++) + { + strjson += ("{\"name\": \"" + iterPos2.key() + "\", \"size\": " + QString::number(iterPos2.value()) + "},"); + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "]},"; + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "]}"; + + + QString strHtml; + + strHtml = "" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n"; + + QRegExp re("\\s{2,}"); + qDebug() << strHtml; + + strHtml = strHtml.replace(re,""); + qDebug() << strHtml; QFile file("d3twodepth.html"); @@ -1389,7 +1612,9 @@ void YMTwoDepthWidget::D3View() file.close(); - m_WVD3View.setHtml(strHtml.toUtf8()); + QUrl url = QUrl::fromLocalFile(QDir::current().absoluteFilePath("d3twodepth.html")); + + m_WVD3View.load(url); //m_WVD3View.settings()->setObjectCacheCapacities(0,0,0); m_WVD3View.repaint(); m_WVD3View.show(); @@ -1631,6 +1856,261 @@ void YMTwoDepthWidget::D3ViewTree() "\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(); +} + + + +void YMTwoDepthWidget::D3ViewTreeFile() +{ + 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; + + 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 = "{\"name\":\" " + strCKeyword + "\","; + strjson += ("\"children\": ["); + + 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 += "{"; + + strjson += ("\"name\":\"" + iterPos1.key() + "\",\"size\":" + QString::number(sum) + ","); + strjson += "\"children\": ["; + + + for(QMap::iterator iterPos2 = iterPos1.value().begin(); iterPos2 != iterPos1.value().end(); iterPos2++) + { + strjson += ("{\"name\": \"" + iterPos2.key() + "\", \"size\": " + QString::number(iterPos2.value()) + "},"); + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "]},"; + } + strjson = strjson.trimmed(); + strjson = strjson.left(strjson.length() - 1); + strjson += "]}"; + + + 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; @@ -1643,7 +2123,9 @@ void YMTwoDepthWidget::D3ViewTree() file.close(); - m_WVD3View.setHtml(strHtml.toUtf8()); + QUrl url = QUrl::fromLocalFile(QDir::current().absoluteFilePath("d3twodepthtree.html")); + + m_WVD3View.load(url); //m_WVD3View.settings()->setObjectCacheCapacities(0,0,0); m_WVD3View.repaint(); m_WVD3View.show(); diff --git a/MorphereAnalyzer/ymtwodepthwidget.h b/MorphereAnalyzer/ymtwodepthwidget.h index 21cba9b..0f4172c 100644 --- a/MorphereAnalyzer/ymtwodepthwidget.h +++ b/MorphereAnalyzer/ymtwodepthwidget.h @@ -49,6 +49,8 @@ public: void TestUpload(); void D3View(); void D3ViewTree(); + void D3ViewFile(); + void D3ViewTreeFile(); void setParam(QString strJson); private: diff --git a/MorphereAnalyzer/ymuploadwidget.cpp b/MorphereAnalyzer/ymuploadwidget.cpp index d4025c6..f190e16 100644 --- a/MorphereAnalyzer/ymuploadwidget.cpp +++ b/MorphereAnalyzer/ymuploadwidget.cpp @@ -17,11 +17,11 @@ #include YMUploadWidget::YMUploadWidget(QWidget *parent):QWidget(parent) { - m_pgbAnalysis = setUploadWidgets(); + m_pgbMorphere = setUploadWidgets(); QVBoxLayout *vMainLayout = new QVBoxLayout; - vMainLayout->addWidget(m_pgbAnalysis); - AnalysisGroupRefresh(); + vMainLayout->addWidget(m_pgbMorphere); + MorphereGroupRefresh(); setLayout(vMainLayout); } @@ -36,22 +36,22 @@ QGroupBox *YMUploadWidget::setUploadWidgets() QHBoxLayout *hMainlayout = new QHBoxLayout(); { QVBoxLayout *vlayout = new QVBoxLayout(); - m_plwAnalysisGroup = new QListWidget; - m_pleAnalysisGroup = new QLineEdit; - vlayout->addWidget(m_plwAnalysisGroup); - vlayout->addWidget(m_pleAnalysisGroup); + m_plwMorphereGroup = new QListWidget; + m_pleMorphereGroup = new QLineEdit; + vlayout->addWidget(m_plwMorphereGroup); + vlayout->addWidget(m_pleMorphereGroup); { QHBoxLayout *hlayout = new QHBoxLayout(); QPushButton *pbInsert = new QPushButton("Insert"); - connect(pbInsert, SIGNAL(released()),this, SLOT(AnalysisGroupInsert())); + connect(pbInsert, SIGNAL(released()),this, SLOT(MorphereGroupInsert())); QPushButton *pbDelete = new QPushButton("Delete"); - connect(pbDelete, SIGNAL(released()),this, SLOT(AnalysisGroupDelete())); + connect(pbDelete, SIGNAL(released()),this, SLOT(MorphereGroupDelete())); QPushButton *pbModify = new QPushButton("Modfiy"); - connect(pbModify, SIGNAL(released()),this, SLOT(AnalysisGroupModify())); + connect(pbModify, SIGNAL(released()),this, SLOT(MorphereGroupModify())); QPushButton *pbCopy_Paste = new QPushButton("Copy&Paste"); - connect(pbCopy_Paste, SIGNAL(released()),this, SLOT(AnalysisGroupCopyPaste())); + connect(pbCopy_Paste, SIGNAL(released()),this, SLOT(MorphereGroupCopyPaste())); QPushButton *pbRefresh = new QPushButton("Refresh"); - connect(pbRefresh, SIGNAL(released()),this, SLOT(AnalysisGroupRefresh())); + connect(pbRefresh, SIGNAL(released()),this, SLOT(MorphereGroupRefresh())); hlayout->addWidget(pbInsert); hlayout->addWidget(pbDelete); @@ -64,9 +64,9 @@ QGroupBox *YMUploadWidget::setUploadWidgets() } { QVBoxLayout *vlayout = new QVBoxLayout(); - m_plwAnalysis = new QListWidget; - vlayout->addWidget(m_plwAnalysis); - connect(m_plwAnalysis,SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),this,SLOT(currentAnalysisItemChanged(QListWidgetItem*,QListWidgetItem*))); + m_plwMorphere = new QListWidget; + vlayout->addWidget(m_plwMorphere); + connect(m_plwMorphere,SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),this,SLOT(currentMorphereItemChanged(QListWidgetItem*,QListWidgetItem*))); QHBoxLayout *hlayout = new QHBoxLayout(); QPushButton *pbAdd = new QPushButton("Add"); QPushButton *pbUp = new QPushButton("Up"); @@ -77,23 +77,23 @@ QGroupBox *YMUploadWidget::setUploadWidgets() hlayout->addWidget(pbDown); hlayout->addWidget(pbDelete); vlayout->addLayout(hlayout); - connect(pbAdd, SIGNAL(released()),this, SLOT(AnalysisAdd())); - connect(pbUp, SIGNAL(released()),this, SLOT(AnalysisUp())); - connect(pbDown, SIGNAL(released()),this, SLOT(AnalysisDown())); - connect(pbDelete, SIGNAL(released()),this, SLOT(AnalysisDelete())); + connect(pbAdd, SIGNAL(released()),this, SLOT(MorphereAdd())); + connect(pbUp, SIGNAL(released()),this, SLOT(MorphereUp())); + connect(pbDown, SIGNAL(released()),this, SLOT(MorphereDown())); + connect(pbDelete, SIGNAL(released()),this, SLOT(MorphereDelete())); hMainlayout->addLayout(vlayout); } - m_pgbAnalysis = new QGroupBox(tr("Upload")); - m_pgbAnalysis->setCheckable(true); - m_pgbAnalysis->setChecked(false); - m_pgbAnalysis->setLayout(hMainlayout); + m_pgbMorphere = new QGroupBox(tr("Upload")); + m_pgbMorphere->setCheckable(true); + m_pgbMorphere->setChecked(false); + m_pgbMorphere->setLayout(hMainlayout); - connect(m_plwAnalysisGroup,SIGNAL(currentItemChanged(QListWidgetItem *,QListWidgetItem *)),this,SLOT(currentGroupItemChanged(QListWidgetItem *, QListWidgetItem *))); - return m_pgbAnalysis; + connect(m_plwMorphereGroup,SIGNAL(currentItemChanged(QListWidgetItem *,QListWidgetItem *)),this,SLOT(currentGroupItemChanged(QListWidgetItem *, QListWidgetItem *))); + return m_pgbMorphere; } -void YMUploadWidget::AnalysisGroupInsert() +void YMUploadWidget::MorphereGroupInsert() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); @@ -108,14 +108,14 @@ void YMUploadWidget::AnalysisGroupInsert() return; } - QString strQuery = QString("insert into analysisgroup set " - "name = '" + m_pleAnalysisGroup->text() + "'"); + QString strQuery = QString("insert into morpheregroup set " + "name = '" + m_pleMorphereGroup->text() + "'"); db.exec(strQuery.toUtf8()); db.close(); - AnalysisGroupRefresh(); + MorphereGroupRefresh(); } -void YMUploadWidget::AnalysisGroupDelete() +void YMUploadWidget::MorphereGroupDelete() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); @@ -130,19 +130,19 @@ void YMUploadWidget::AnalysisGroupDelete() qDebug() << db.lastError().text(); return; } - foreach (QListWidgetItem *item,m_plwAnalysisGroup->selectedItems()) + foreach (QListWidgetItem *item,m_plwMorphereGroup->selectedItems()) { - QString strQuery = QString("delete from analysisgroup where id = " + item->data(Qt::UserRole).toString()); + QString strQuery = QString("delete from morpheregroup where id = " + item->data(Qt::UserRole).toString()); db.exec(strQuery.toUtf8()); - strQuery = QString("delete from analysis where analysisgroup_id = " + item->data(Qt::UserRole).toString()); + strQuery = QString("delete from morphere where morpheregroup_id = " + item->data(Qt::UserRole).toString()); db.exec(strQuery.toUtf8()); - RefreshAnalysis(item->data(Qt::UserRole).toInt()); + RefreshMorphere(item->data(Qt::UserRole).toInt()); } db.close(); - AnalysisGroupRefresh(); + MorphereGroupRefresh(); } -void YMUploadWidget::AnalysisGroupModify() +void YMUploadWidget::MorphereGroupModify() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); @@ -156,17 +156,17 @@ void YMUploadWidget::AnalysisGroupModify() qDebug() << db.lastError().text(); return; } - foreach (QListWidgetItem *item,m_plwAnalysisGroup->selectedItems()) + foreach (QListWidgetItem *item,m_plwMorphereGroup->selectedItems()) { - QString strQuery = QString("update analysisgroup set name = '" + m_pleAnalysisGroup->text() + "' where id = " + item->data(Qt::UserRole).toString()); + QString strQuery = QString("update morpheregroup set name = '" + m_pleMorphereGroup->text() + "' where id = " + item->data(Qt::UserRole).toString()); qDebug() << strQuery; db.exec(strQuery.toUtf8()); } db.close(); - AnalysisGroupRefresh(); + MorphereGroupRefresh(); } -void YMUploadWidget::AnalysisGroupCopyPaste() +void YMUploadWidget::MorphereGroupCopyPaste() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); @@ -181,28 +181,28 @@ void YMUploadWidget::AnalysisGroupCopyPaste() qDebug() << db.lastError().text(); return; } - foreach (QListWidgetItem *item,m_plwAnalysisGroup->selectedItems()) + foreach (QListWidgetItem *item,m_plwMorphereGroup->selectedItems()) { QSqlQuery query; - QString strQuery = QString("insert into analysisgroup set " + QString strQuery = QString("insert into morpheregroup set " "name = '" + item->text() + "-'"); query.exec(strQuery.toUtf8()); - query.exec("select max(id) from analysisgroup"); + query.exec("select max(id) from morpheregroup"); if (query.next()) { - strQuery = QString("insert into analysis (type,data,analysisgroup_id) select type,data,"); + strQuery = QString("insert into morphere (type,data,morpheregroup_id) select type,data,"); strQuery += query.value(0).toString(); - strQuery += " from analysis where analysisgroup_id = " + item->data(Qt::UserRole).toString(); + strQuery += " from morphere where morpheregroup_id = " + item->data(Qt::UserRole).toString(); qDebug() << strQuery; query.exec(strQuery.toUtf8()); } } db.close(); - AnalysisGroupRefresh(); + MorphereGroupRefresh(); } -void YMUploadWidget::AnalysisGroupRefresh() +void YMUploadWidget::MorphereGroupRefresh() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); @@ -217,18 +217,18 @@ void YMUploadWidget::AnalysisGroupRefresh() qDebug() << db.lastError().text(); return; } - m_plwAnalysisGroup->clear(); - QSqlQuery query("select id,name from analysisgroup"); + m_plwMorphereGroup->clear(); + QSqlQuery query("select id,name from morpheregroup"); while (query.next()) { - QListWidgetItem *pItem = new QListWidgetItem(query.value(1).toString(),m_plwAnalysisGroup); + QListWidgetItem *pItem = new QListWidgetItem(query.value(1).toString(),m_plwMorphereGroup); pItem->setData(Qt::UserRole, QVariant(query.value(0))); } db.close(); } -void YMUploadWidget::RefreshAnalysis(int _nGroup) +void YMUploadWidget::RefreshMorphere(int _nGroup) { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); @@ -243,10 +243,10 @@ void YMUploadWidget::RefreshAnalysis(int _nGroup) qDebug() << db.lastError().text(); return; } - QSqlQuery query("select id,type,data from analysis where analysisgroup_id = " + QString::number(_nGroup)); + QSqlQuery query("select id,type,data from morphere where morpheregroup_id = " + QString::number(_nGroup)); SJson json; - m_plwAnalysis->clear(); + m_plwMorphere->clear(); while (query.next()) { QString str; @@ -263,7 +263,7 @@ void YMUploadWidget::RefreshAnalysis(int _nGroup) str = str.left(str.length() - 1); - QListWidgetItem *pItem = new QListWidgetItem(str,m_plwAnalysis); + QListWidgetItem *pItem = new QListWidgetItem(str,m_plwMorphere); pItem->setData(Qt::UserRole, QVariant(query.value(0))); } db.close(); @@ -274,14 +274,14 @@ void YMUploadWidget::currentGroupItemChanged(QListWidgetItem *_pCurrent, QListWi { Q_UNUSED(_pPrev); if (_pCurrent == 0) return; - RefreshAnalysis(_pCurrent->data(Qt::UserRole).toInt()); - m_pleAnalysisGroup->setText(_pCurrent->text()); - m_pleAnalysisGroup->repaint(); + RefreshMorphere(_pCurrent->data(Qt::UserRole).toInt()); + m_pleMorphereGroup->setText(_pCurrent->text()); + m_pleMorphereGroup->repaint(); } -void YMUploadWidget::AnalysisDelete() +void YMUploadWidget::MorphereDelete() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); @@ -296,32 +296,32 @@ void YMUploadWidget::AnalysisDelete() qDebug() << db.lastError().text(); return; } - foreach (QListWidgetItem *item,m_plwAnalysis->selectedItems()) + foreach (QListWidgetItem *item,m_plwMorphere->selectedItems()) { - QString strQuery = QString("delete from analysis where id = '" + item->data(Qt::UserRole).toString() + "'"); + QString strQuery = QString("delete from morphere where id = '" + item->data(Qt::UserRole).toString() + "'"); db.exec(strQuery.toUtf8()); } db.close(); - foreach (QListWidgetItem *item,m_plwAnalysisGroup->selectedItems()) - RefreshAnalysis(item->data(Qt::UserRole).toInt()); + foreach (QListWidgetItem *item,m_plwMorphereGroup->selectedItems()) + RefreshMorphere(item->data(Qt::UserRole).toInt()); } -void YMUploadWidget::AnalysisAdd() +void YMUploadWidget::MorphereAdd() { - foreach (QListWidgetItem *item,m_plwAnalysisGroup->selectedItems()) + foreach (QListWidgetItem *item,m_plwMorphereGroup->selectedItems()) { int nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); - DataBaseMorphereAnalysis(((STable*)((Widget*)(m_ptwSource->currentWidget()))->GetTabWidget()->currentWidget())->getArticleSelect(), ((YMorphereWidget*)(m_ptwResult->currentWidget()))->convertToParam(), nCurrentFilterGroupID, E_DATABASE_COMMAND_INSERT); + DataBaseMorphereMorphere(((STable*)((Widget*)(m_ptwSource->currentWidget()))->GetTabWidget()->currentWidget())->getArticleSelect(), ((YMorphereWidget*)(m_ptwResult->currentWidget()))->convertToParam(), nCurrentFilterGroupID, E_DATABASE_COMMAND_INSERT); } - foreach (QListWidgetItem *item,m_plwAnalysisGroup->selectedItems()) - RefreshAnalysis(item->data(Qt::UserRole).toInt()); + foreach (QListWidgetItem *item,m_plwMorphereGroup->selectedItems()) + RefreshMorphere(item->data(Qt::UserRole).toInt()); } -void YMUploadWidget::AnalysisUp() +void YMUploadWidget::MorphereUp() { - int nSelect = m_plwAnalysis->currentRow(); + int nSelect = m_plwMorphere->currentRow(); if (nSelect <= 0) return; QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); @@ -337,22 +337,22 @@ void YMUploadWidget::AnalysisUp() return; } - QString strID1 = m_plwAnalysis->item(nSelect)->data(Qt::UserRole).toString(); - QString strID2 = m_plwAnalysis->item(nSelect-1)->data(Qt::UserRole).toString(); - QString strQuery = "UPDATE analysis t1 INNER JOIN analysis t2 ON (t1.id, t2.id) IN ((" + strID1 + ","+ strID2 +"),("+ strID2 + "," + strID1 + ")) SET t1.type = t2.type,t1.analysisgroup_id = t2.analysisgroup_id,t1.data = t2.data"; + QString strID1 = m_plwMorphere->item(nSelect)->data(Qt::UserRole).toString(); + QString strID2 = m_plwMorphere->item(nSelect-1)->data(Qt::UserRole).toString(); + QString strQuery = "UPDATE morphere t1 INNER JOIN Morphere t2 ON (t1.id, t2.id) IN ((" + strID1 + ","+ strID2 +"),("+ strID2 + "," + strID1 + ")) SET t1.type = t2.type,t1.morpheregroup_id = t2.morpheregroup_id,t1.data = t2.data"; db.exec(strQuery.toUtf8()); db.close(); - foreach (QListWidgetItem *item,m_plwAnalysisGroup->selectedItems()) - RefreshAnalysis(item->data(Qt::UserRole).toInt()); + foreach (QListWidgetItem *item,m_plwMorphereGroup->selectedItems()) + RefreshMorphere(item->data(Qt::UserRole).toInt()); - m_plwAnalysis->setCurrentRow(nSelect-1); + m_plwMorphere->setCurrentRow(nSelect-1); } -void YMUploadWidget::AnalysisDown() +void YMUploadWidget::MorphereDown() { - int nSelect = m_plwAnalysis->currentRow(); + int nSelect = m_plwMorphere->currentRow(); if (nSelect < 0) return; - if (nSelect >= (m_plwAnalysis->count() - 1)) return; + if (nSelect >= (m_plwMorphere->count() - 1)) return; qDebug() << nSelect; QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); @@ -367,18 +367,18 @@ void YMUploadWidget::AnalysisDown() qDebug() << db.lastError().text(); return; } - QString strID1 = m_plwAnalysis->item(nSelect)->data(Qt::UserRole).toString(); - QString strID2 = m_plwAnalysis->item(nSelect+1)->data(Qt::UserRole).toString(); - QString strQuery = "UPDATE analysis t1 INNER JOIN analysis t2 ON (t1.id, t2.id) IN ((" + strID1 + ","+ strID2 +"),("+ strID2 + "," + strID1 + ")) SET t1.type = t2.type,t1.analysisgroup_id = t2.analysisgroup_id,t1.data = t2.data"; + QString strID1 = m_plwMorphere->item(nSelect)->data(Qt::UserRole).toString(); + QString strID2 = m_plwMorphere->item(nSelect+1)->data(Qt::UserRole).toString(); + QString strQuery = "UPDATE morphere t1 INNER JOIN morphere t2 ON (t1.id, t2.id) IN ((" + strID1 + ","+ strID2 +"),("+ strID2 + "," + strID1 + ")) SET t1.type = t2.type,t1.morpheregroup_id = t2.morpheregroup_id,t1.data = t2.data"; db.exec(strQuery.toUtf8()); db.close(); - foreach (QListWidgetItem *item,m_plwAnalysisGroup->selectedItems()) - RefreshAnalysis(item->data(Qt::UserRole).toInt()); + foreach (QListWidgetItem *item,m_plwMorphereGroup->selectedItems()) + RefreshMorphere(item->data(Qt::UserRole).toInt()); - m_plwAnalysis->setCurrentRow(nSelect+1); + m_plwMorphere->setCurrentRow(nSelect+1); } -void YMUploadWidget::DataBaseMorphereAnalysis(int _nArticle,QMap mapParam ,int _nGroup,int _nCommand, QString _strFilterId) +void YMUploadWidget::DataBaseMorphereMorphere(int _nArticle,QMap mapParam ,int _nGroup,int _nCommand, QString _strFilterId) { QString strJson; SJson json; @@ -388,11 +388,11 @@ void YMUploadWidget::DataBaseMorphereAnalysis(int _nArticle,QMap mapParam ,int _nGroup,int _nCommand, QString _strFilterId = ""); + void DataBaseMorphere(int _nType, QString _strJson,int _nGroup,int _nCommand,QString _strFilterId); void setResultTabWidget(QTabWidget* tabWidget); void setSourceTabWidget(QTabWidget* tabWidget); };