그래ㅍ
git-svn-id: svn://192.168.0.12/source@181 8346c931-da38-4b9b-9d4c-e48b93cbd075
This commit is contained in:
@@ -4,14 +4,13 @@
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
QT += core gui sql webkitwidgets
|
||||
QT += core gui sql webenginewidgets
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
TARGET = Analyzer
|
||||
TEMPLATE = app
|
||||
|
||||
|
||||
SOURCES += main.cpp\
|
||||
mainwindow.cpp \
|
||||
sloaddlg.cpp \
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <QProgressBar>
|
||||
#include <QSqlDatabase>
|
||||
#include <QTimer>
|
||||
#include <QWebEngineView>
|
||||
|
||||
#include "sloaddlg.h"
|
||||
#include "sdatadlg.h"
|
||||
@@ -51,7 +52,7 @@ public:
|
||||
SCountDlg *m_pCountDlg;
|
||||
SFilterObject *m_pFilterObjectDlg;
|
||||
SFilterDlg *m_pFilterDlg;
|
||||
QWebView m_graph;
|
||||
QWebEngineView m_graph;
|
||||
QSqlDatabase m_db;
|
||||
QProgressBar m_progress;
|
||||
private:
|
||||
|
||||
@@ -53,24 +53,130 @@ void SCountDlg::setWidgets()
|
||||
m_pCombo[i].addItem(strList.at(SColumn::E_NAME));
|
||||
}
|
||||
|
||||
QFile file(QApplication::applicationDirPath()+"/graph.html");
|
||||
if (!file.open(QIODevice::ReadOnly))
|
||||
return;
|
||||
//m_strGraph = file.readAll();
|
||||
|
||||
QTextStream batStream (&file);
|
||||
while(!batStream.atEnd())
|
||||
{
|
||||
m_strGraph += batStream.readLine();
|
||||
}
|
||||
QMessageBox msg;
|
||||
msg.setText(m_strGraph);
|
||||
msg.setModal(true);
|
||||
msg.exec();
|
||||
m_strGraph = "<html>"
|
||||
"\r\n<meta charset=\"utf8\">"
|
||||
"\r\n<style>"
|
||||
"\r\nbody {"
|
||||
"\r\n font: 10px sans-serif;"
|
||||
"\r\n}"
|
||||
"\r\n"
|
||||
"\r\n.axis path,"
|
||||
"\r\n.axis line {"
|
||||
"\r\n fill: none;"
|
||||
"\r\n stroke: #000;"
|
||||
"\r\n shape-rendering: crispEdges;"
|
||||
"\r\n}"
|
||||
"\r\n"
|
||||
"\r\n.x.axis path {"
|
||||
"\r\n display: none;"
|
||||
"\r\n}"
|
||||
"\r\n"
|
||||
"\r\n.line {"
|
||||
"\r\n fill: none;"
|
||||
"\r\n stroke: steelblue;"
|
||||
"\r\n stroke-width: 1.5px;"
|
||||
"\r\n}"
|
||||
"\r\n"
|
||||
"\r\n</style>"
|
||||
"\r\n<body>"
|
||||
"\r\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.6/d3.min.js\"></script>"
|
||||
"\r\n<script>"
|
||||
"\r\n"
|
||||
"\r\nvar margin = {top: 20, right: 80, bottom: 30, left: 50},"
|
||||
"\r\n width = 960 - margin.left - margin.right,"
|
||||
"\r\n height = 500 - margin.top - margin.bottom;"
|
||||
"\r\n"
|
||||
"\r\nvar parseDate = d3.time.format(\"%Y-%m-%d\").parse;"
|
||||
"\r\n"
|
||||
"\r\nvar x = d3.time.scale()"
|
||||
"\r\n .range([0, width]);"
|
||||
"\r\n"
|
||||
"\r\nvar y = d3.scale.linear()"
|
||||
"\r\n .range([height, 0]);"
|
||||
"\r\n"
|
||||
"\r\nvar color = d3.scale.category10();"
|
||||
"\r\n"
|
||||
"\r\nvar xAxis = d3.svg.axis()"
|
||||
"\r\n .scale(x)"
|
||||
"\r\n .orient(\"bottom\");"
|
||||
"\r\n"
|
||||
"\r\nvar yAxis = d3.svg.axis()"
|
||||
"\r\n .scale(y)"
|
||||
"\r\n .orient(\"left\");"
|
||||
"\r\n"
|
||||
"\r\nvar line = d3.svg.line()"
|
||||
"\r\n .interpolate(\"basis\")"
|
||||
"\r\n .x(function(d) { return x(d.date); })"
|
||||
"\r\n .y(function(d) { return y(d.temperature); });"
|
||||
"\r\n"
|
||||
"\r\nvar svg = d3.select(\"body\").append(\"svg\")"
|
||||
"\r\n .attr(\"width\", width + margin.left + margin.right)"
|
||||
"\r\n .attr(\"height\", height + margin.top + margin.bottom)"
|
||||
"\r\n .append(\"g\")"
|
||||
"\r\n .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");"
|
||||
"\r\n"
|
||||
"\r\nd3.tsv(\"file:///[!F*i!l*e!]\", function(error, data) {"
|
||||
"\r\n if (error) throw error;"
|
||||
"\r\n"
|
||||
"\r\n color.domain(d3.keys(data[0]).filter(function(key) { return key !== \"date\"; }));"
|
||||
"\r\n"
|
||||
"\r\n data.forEach(function(d) {"
|
||||
"\r\n d.date = parseDate(d.date);"
|
||||
"\r\n });"
|
||||
"\r\n"
|
||||
"\r\n var cities = color.domain().map(function(name) {"
|
||||
"\r\n return {"
|
||||
"\r\n name: name,"
|
||||
"\r\n values: data.map(function(d) {"
|
||||
"\r\n return {date: d.date, temperature: +d[name]};"
|
||||
"\r\n })"
|
||||
"\r\n };"
|
||||
"\r\n });"
|
||||
"\r\n"
|
||||
"\r\n x.domain(d3.extent(data, function(d) { return d.date; }));"
|
||||
"\r\n"
|
||||
"\r\n y.domain(["
|
||||
"\r\n d3.min(cities, function(c) { return d3.min(c.values, function(v) { return v.temperature; }); }),"
|
||||
"\r\n d3.max(cities, function(c) { return d3.max(c.values, function(v) { return v.temperature; }); })"
|
||||
"\r\n ]);"
|
||||
"\r\n"
|
||||
"\r\n svg.append(\"g\")"
|
||||
"\r\n .attr(\"class\", \"x axis\")"
|
||||
"\r\n .attr(\"transform\", \"translate(0,\" + height + \")\")"
|
||||
"\r\n .call(xAxis);"
|
||||
"\r\n"
|
||||
"\r\n svg.append(\"g\")"
|
||||
"\r\n .attr(\"class\", \"y axis\")"
|
||||
"\r\n .call(yAxis)"
|
||||
"\r\n .append(\"text\")"
|
||||
"\r\n .attr(\"transform\", \"rotate(-90)\")"
|
||||
"\r\n .attr(\"y\", 6)"
|
||||
"\r\n .attr(\"dy\", \".71em\")"
|
||||
"\r\n .style(\"text-anchor\", \"end\")"
|
||||
"\r\n .text(\"Buzzy\");"
|
||||
"\r\n"
|
||||
"\r\n var city = svg.selectAll(\".city\")"
|
||||
"\r\n .data(cities)"
|
||||
"\r\n .enter().append(\"g\")"
|
||||
"\r\n .attr(\"class\", \"city\");"
|
||||
"\r\n"
|
||||
"\r\n city.append(\"path\")"
|
||||
"\r\n .attr(\"class\", \"line\")"
|
||||
"\r\n .attr(\"d\", function(d) { return line(d.values); })"
|
||||
"\r\n .style(\"stroke\", function(d) { return color(d.name); });"
|
||||
"\r\n"
|
||||
"\r\n city.append(\"text\")"
|
||||
"\r\n .datum(function(d) { return {name: d.name, value: d.values[d.values.length - 1]}; })"
|
||||
"\r\n .attr(\"transform\", function(d) { return \"translate(\" + x(d.value.date) + \",\" + y(d.value.temperature) + \")\"; })"
|
||||
"\r\n .attr(\"x\", 3)"
|
||||
"\r\n .attr(\"dy\", \".35em\")"
|
||||
"\r\n .text(function(d) { return d.name; });"
|
||||
"\r\n});"
|
||||
"\r\n"
|
||||
"\r\n</script>"
|
||||
"\r\n";
|
||||
|
||||
m_strGraph = m_strGraph.replace("[!F*i!l*e!]",QApplication::applicationDirPath()+"/graph.tsv");
|
||||
|
||||
file.close();
|
||||
}
|
||||
|
||||
void SCountDlg::run()
|
||||
@@ -191,31 +297,30 @@ void SCountDlg::run()
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
void SCountDlg::graph()
|
||||
{
|
||||
QFile file(QApplication::applicationDirPath()+"/graph.tsv");
|
||||
if (!file.open(QIODevice::WriteOnly)) return;
|
||||
QTextStream out(&file);
|
||||
out << "date\t";
|
||||
out << QString("date\t").toUtf8();
|
||||
for (int i = 1; i < m_pTable->columnCount();i++)
|
||||
out << m_pTable->horizontalHeaderItem(i)->text() << "\t";
|
||||
out << "\n";
|
||||
out << m_pTable->horizontalHeaderItem(i)->text().toUtf8() << QString("\t").toUtf8();
|
||||
out << QString("\n").toUtf8();
|
||||
GetMainWindow()->m_progress.setRange(0,m_pTable->rowCount());
|
||||
for (int i = 0 ; i < m_pTable->rowCount() ; i++ )
|
||||
{
|
||||
for (int j = 0; j < m_pTable->columnCount();j++)
|
||||
{
|
||||
out << m_pTable->item(i,j)->text().trimmed().toUtf8() << "\t";
|
||||
out << m_pTable->item(i,j)->text().trimmed().toUtf8() << QString("\t").toUtf8();
|
||||
}
|
||||
out << "\n";
|
||||
out << QString("\n").toUtf8();
|
||||
GetMainWindow()->m_progress.setValue(i);
|
||||
GetMainWindow()->m_progress.repaint();
|
||||
}
|
||||
file.close();
|
||||
|
||||
GetMainWindow()->m_graph.setHtml(m_strGraph.toUtf8(),QUrl("file:///"));
|
||||
GetMainWindow()->m_graph.settings()->setObjectCacheCapacities(0,0,0);
|
||||
//GetMainWindow()->m_graph.settings()->setObjectCacheCapacities(0,0,0);
|
||||
GetMainWindow()->m_graph.repaint();
|
||||
GetMainWindow()->m_graph.show();
|
||||
}
|
||||
|
||||
@@ -530,15 +530,14 @@ void SFilterObject::DataBaseFilter(int _nType,QString _strJson,int _nGroup,int _
|
||||
switch(_nCommand)
|
||||
{
|
||||
case E_DATABASE_COMMAND_INSERT:
|
||||
sql = "INSERT INTO filter SET ";
|
||||
sql += QString("type=") + QString::number(_nType) + ",";
|
||||
sql = "INSERT INTO filter SET ";
|
||||
break;
|
||||
case E_DATABASE_COMMAND_UPDATE:
|
||||
sql = "UPDATE filter SET ";
|
||||
sql = "UPDATE filter SET ";
|
||||
break;
|
||||
}
|
||||
sql += QString("data='") + _strJson + "',";
|
||||
sql += QString("type=") + QString::number(_nType) + ",";
|
||||
sql += QString("data='") + _strJson + "',";
|
||||
sql += QString("filtergroup_id=" ) + QString::number(_nGroup);
|
||||
if (_nCommand == E_DATABASE_COMMAND_UPDATE)
|
||||
{
|
||||
@@ -546,7 +545,7 @@ void SFilterObject::DataBaseFilter(int _nType,QString _strJson,int _nGroup,int _
|
||||
sql += QString(" where id=") + QString::number(_nFilterID);
|
||||
}
|
||||
QSqlQuery query;
|
||||
query.exec(sql.toUtf8());
|
||||
if(query.exec(sql.toUtf8()) == false) { qDebug() << query.lastError().text();}
|
||||
}
|
||||
|
||||
void SFilterObject::DataBaseTimeFilter(int _nArticle ,QDate _dateStart ,QDate _dateEnd ,int _nGroup,int _nCommand,int _nFilterID )
|
||||
|
||||
Reference in New Issue
Block a user