void frmEcharts::loadMap()
{
timer->stop();
Echarts::Instance()->reset();
Echarts::Instance()->setHeight(ui->widget->height());
QStringList cityName, cityValue, cityPoint;
cityName << "上海" << "北京" << "成都" << "武汉" << "厦门" << "广州";
cityPoint << "121.48,31.22" << "116.46,39.92" << "104.06,30.67" << "114.31,30.52" << "118.1,24.46" << "113.23,23.16";
Echarts::Instance()->setCityName(cityName);
Echarts::Instance()->setCityPoint(cityPoint);
Echarts::Instance()->setZoom(1.0);
//全国地图是 china 世界地图可以换成 world
Echarts::Instance()->setMapJsName("china");
Echarts::Instance()->setMapAreaName("china");
QString text = ui->cboxType->currentText();
if (text == "闪烁点图") {
cityValue << "250" << "220" << "150" << "180" << "140" << "170";
Echarts::Instance()->setCityValue(cityValue);
} else if (text == "迁徙图") {
cityValue << "1" << "0" << "0" << "0" << "0" << "0";
Echarts::Instance()->setCityValue(cityValue);
} else if (text == "仪表盘") {
} else if (text == "区域地图") {
QStringList cityName, cityValue, cityPoint;
QString dirName = ui->cboxDir->currentText();
QString areaName = ui->cboxJson->currentText();
QString jsName = dirName + "/" + areaName;
#if 1
//根据文件获取名称+经纬度集合
QString jsonFile = QString("%1/areajson/%2/%3.json").arg(AppPath).arg(dirName).arg(areaName);
QString jsFile = QString("%1/areajs/%2/%3.js").arg(AppPath).arg(dirName).arg(areaName);
//QStringList infos = EchartJs::getInfoFromJson(jsonFile);
QStringList infos = EchartJs::getInfoFromJs(jsFile);
foreach (QString info, infos) {
QStringList list = info.split("|");
cityName << list.at(0);
cityValue << QString("%1").arg((qrand() % 100) + 100);
cityPoint << list.at(1);
}
#else
//固定写死
if (areaName == "上海") {
cityName << "浦东新区" << "闵行区" << "金山区" << "奉贤区" << "嘉定区";
cityValue << "250" << "100" << "200" << "150" << "220";
cityPoint << "121.567706,31.245944" << "121.375972,31.111658" << "121.330736,30.724697" << "121.458472,30.912345" << "121.250333,31.383524";
}
#endif
Echarts::Instance()->setCityName(cityName);
Echarts::Instance()->setCityValue(cityValue);
Echarts::Instance()->setCityPoint(cityPoint);
Echarts::Instance()->setMapJsName(jsName);
Echarts::Instance()->setMapAreaName(areaName);
} else if (text == "世界地图") {
QStringList cityName, cityValue, cityPoint;
Echarts::Instance()->setCityName(cityName);
Echarts::Instance()->setCityValue(cityValue);
Echarts::Instance()->setCityPoint(cityPoint);
Echarts::Instance()->setMapJsName("world");
Echarts::Instance()->setMapAreaName("world");
}
loadMap(ui->cboxType->currentIndex());
}
void frmEcharts::loadMap(int type)
{
QString content;
QString fileName = QString("%1/map_echarts.html").arg(AppPath);
QString url = "file:///" + fileName;
//如果采用加载内容方式则需要先设置不存储文件
//在linux上需要用load的方式加载
#ifdef Q_OS_WIN
Echarts::Instance()->setSaveFile(false);
#else
Echarts::Instance()->setSaveFile(true);
#endif
Echarts::Instance()->setFileName(fileName);
if (type == 1) {
content = Echarts::Instance()->newChartMove("上海");
} else if (type == 2) {
content = Echarts::Instance()->newChartGauge("完成率", 65);
} else {
content = Echarts::Instance()->newChartPoint();
}
//下面为两种方式加载网页,如果内容为空则加载网页文件否则加载内容
//一般为了保密建议加载内容,这样看不到生成的网页文件
if (Echarts::Instance()->getSaveFile()) {
#ifdef webkit
webView->load(QUrl(url));
#elif webengine
webView->load(QUrl(url));
#elif webie
webView->dynamicCall("Navigate(const QString&)", url);
#endif
} else {
QUrl baseUrl(QString("%1/").arg(AppPath));
#ifdef webkit
webView->setHtml(content, baseUrl);
#elif webengine
webView->setHtml(content, baseUrl);
#endif
}
}
void frmEcharts::on_btnSaveJs_clicked()
{
QString dirName = ui->cboxDir->currentText();
QString cityName = ui->cboxJson->currentText();
QString jsonFile = QString("%1/areajson/%2/%3.json").arg(AppPath).arg(dirName).arg(cityName);
QString jsFile = QString("%1/areajs/%2/%3.js").arg(AppPath).arg(dirName).arg(cityName);
EchartJs::saveJs(jsonFile, jsFile, cityName);
}
void frmEcharts::on_btnSaveAll_clicked()
{
ui->btnSaveJs->setEnabled(false);
ui->btnSaveAll->setEnabled(false);
qApp->processEvents();
QString dirPath = QString("%1/areajson").arg(AppPath);
QDir dir(dirPath);
if (dir.exists()) {
QStringList dirNames = dir.entryList(QDir::Dirs | QDir::NoSymLinks | QDir::NoDotAndDotDot);
ui->progressBar->setValue(0);
ui->progressBar->setRange(0, dirNames.count());
foreach (QString dirName, dirNames) {
QString strPath = QString("%1/areajson/%2").arg(AppPath).arg(dirName);
QDir path(strPath);
if (path.exists()) {
QStringList fileNames = path.entryList(QDir::Files | QDir::NoSymLinks | QDir::NoDotAndDotDot);
foreach (QString fileName, fileNames) {
fileName = fileName.replace(".json", "");
QString jsonFile = QString("%1/areajson/%2/%3.json").arg(AppPath).arg(dirName).arg(fileName);
QString jsFile = QString("%1/areajs/%2/%3.js").arg(AppPath).arg(dirName).arg(fileName);
EchartJs::saveJs(jsonFile, jsFile, fileName);
}
}
ui->progressBar->setValue(ui->progressBar->value() + 1);
}
}
ui->btnSaveJs->setEnabled(true);
ui->btnSaveAll->setEnabled(true);
}
void frmEcharts::on_cboxType_currentIndexChanged(const QString &arg1)
{
if (isVisible()) {
this->loadMap();
}
}
void frmEcharts::on_cboxDir_currentIndexChanged(const QString &arg1)
{
//取出目录下的所有文件名称作为市
ui->cboxJson->clear();
QString dirPath = QString("%1/areajson/%2").arg(AppPath).arg(arg1);
QDir dir(dirPath);
if (dir.exists()) {
QStringList fileNames = dir.entryList(QDir::Files | QDir::NoSymLinks | QDir::NoDotAndDotDot);
foreach (QString fileName, fileNames) {
fileName = fileName.replace(".json", "");
ui->cboxJson->addItem(fileName);
}
}
}
void frmEcharts::on_cboxJson_currentIndexChanged(const QString &arg1)
{
if (isVisible() && ui->cboxType->currentText() == "区域地图") {
this->loadMap();
}
}
void frmEcharts::on_horizontalSlider_valueChanged(int value)
{
if (isVisible() && ui->cboxType->currentText() == "仪表盘") {
QString js = QString("setGaugeValue(%1)").arg(value);
#ifdef webkit
webView->page()->mainFrame()->eval(js);
#elif webengine
webView->page()->runJavaScript(js);
#endif
}
}