Merge pull request #22 from apeng0406/main

系统语言中英切换优化
This commit is contained in:
戒酒的李白
2025-03-10 12:39:23 +08:00
committed by GitHub
21 changed files with 5725 additions and 5364 deletions
+15 -3
View File
@@ -142,15 +142,27 @@ def not_found_error(error):
@app.errorhandler(500) @app.errorhandler(500)
def internal_error(error): def internal_error(error):
return render_template('500.html'), 500 return render_template('error.html',
error_code=500,
error_title='服务器错误',
error_message='服务器遇到了一个问题,请稍后再试。',
error_i18n_key='serverError'), 500
@app.errorhandler(403) @app.errorhandler(403)
def forbidden_error(error): def forbidden_error(error):
return render_template('403.html'), 403 return render_template('error.html',
error_code=403,
error_title='禁止访问',
error_message='您没有权限访问此页面。',
error_i18n_key='forbidden'), 403
@app.errorhandler(400) @app.errorhandler(400)
def bad_request_error(error): def bad_request_error(error):
return render_template('400.html'), 400 return render_template('error.html',
error_code=400,
error_title='错误请求',
error_message='服务器无法理解您的请求。',
error_i18n_key='badRequest'), 400
# 数据库配置 # 数据库配置
DB_CONFIG = { DB_CONFIG = {
+239
View File
@@ -0,0 +1,239 @@
// 多语言支持文件
const translations = {
'zh': {
// 导航菜单
'home': '首页',
'hotWord': '热词统计',
'tableData': '微博舆情统计',
'articleChar': '文章分析',
'ipChar': 'IP分析',
'commentChar': '评论分析',
'yuqingChar': '舆情分析',
'yuqingpredict': '舆情预测',
'articleCloud': '文章内容词云图',
'dataVisualization': '数据可视化',
'weiboSystem': '微博舆情分析系统',
'wordCloud': '词云图',
// 首页
'articleCount': '文章个数',
'articleCrawlRule': '文章爬取规则',
'nextCrawlTime': '下次爬取时间',
'articlePublishTimeCount': '文章发布时间个数',
'commentLikeCountTopFore': '评论点赞量 Top Fore',
'viewAll': '查看全部',
'articleTypeRatio': '文章类型占比',
'commentUserWordCloud': '评论用户名词云图',
'commentUserTimeRatio': '评论用户时间占比',
// 热词页面
'hotWordStatistics': '热词统计页',
'hotWordCloud': '热词词云图',
'hotWordRanking': '热词查询表格',
'wordFrequency': '词频',
'hotWordSelection': '热词选择',
'hotWordName': '热词名称',
'occurrenceCount': '出现次数',
'hotWordSentiment': '热词情感',
'hotWordYearTrend': '热词年份变化趋势',
'queryCommentsByHotWord': '根据选择的热词从而查询出评论数据',
'hotWordTimeDistribution': '热词出现时间分布个数',
// 舆情分析页面
'hotWordSentimentTrendBar': '热词情感趋势柱状图',
'hotWordSentimentTrendTree': '热词情感趋势树形图',
'articleCommentSentimentTrendPie': '文章内容与评论内容舆情趋势饼状图',
// 舆情预测页面
'topicStatisticsPage': '话题统计页',
// 文章分析页面
'articleCharPage': '文章分析页',
'typeSelection': '类型选择',
'articleLikeAnalysis': '文章点赞量分析 👍',
'articleCommentAnalysis': '文章评论量分析 🔥',
'articleForwardAnalysis': '文章转发量分析 🥇',
'likeRangeStatistics': '点赞区间统计',
'rangeCount': '区间个数',
// 评论分析页面
'commentLikeRangeChart': '评论点赞次数区间图',
'commentUserGenderRatio': '评论用户性别占比',
'userCommentWordCloud': '用户评论词云图',
// IP分析页面
'articleIpLocationAnalysis': '文章IP位置分析图',
'commentIpLocationAnalysis': '评论IP位置分析图',
// 评论相关
'commentUser': '评论用户',
'commentGender': '评论性别',
'commentAddress': '评论地址',
'commentContent': '评论内容',
'likeCount': '点赞量',
// 微博舆情统计页面
'weiboArticleStatTable': '微博文章统计表格 - 舆情 情感分类',
'sentimentClassification': '情感分类',
'articleId': '文章ID',
'articleIp': '文章IP',
'articleTitle': '文章标题',
'articleLike': '点赞量',
'articleForward': '转发量',
'articleComment': '评论量',
'articleType': '类型',
'articleContent': '内容',
'articleTime': '发布时间',
// 通用
'switchToEnglish': '切换到英文',
'switchToChinese': '切换到中文',
'semester': '网安小学期',
// 错误页面
'pageNotFound': '页面未找到',
'backToHome': '返回首页',
'serverError': '服务器错误',
'forbidden': '禁止访问',
'badRequest': '错误请求'
},
'en': {
// Navigation menu
'home': 'Home',
'hotWord': 'Hot Words',
'tableData': 'Weibo Public Opinion Stats',
'articleChar': 'Article Analysis',
'ipChar': 'IP Analysis',
'commentChar': 'Comment Analysis',
'yuqingChar': 'Public Opinion Analysis',
'yuqingpredict': 'Opinion Prediction',
'articleCloud': 'Article Content Word Cloud',
'dataVisualization': 'Data Visualization',
'weiboSystem': 'Weibo Public Opinion Analysis System',
'wordCloud': 'Word Cloud',
// Home page
'articleCount': 'Article Count',
'articleCrawlRule': 'Article Crawl Rule',
'nextCrawlTime': 'Next Crawl Time',
'articlePublishTimeCount': 'Article Publish Time Count',
'commentLikeCountTopFore': 'Comment Like Count Top Four',
'viewAll': 'View All',
'articleTypeRatio': 'Article Type Ratio',
'commentUserWordCloud': 'Comment User Word Cloud',
'commentUserTimeRatio': 'Comment User Time Ratio',
// Hot word page
'hotWordStatistics': 'Hot Word Statistics',
'hotWordCloud': 'Hot Word Cloud',
'hotWordRanking': 'Hot Word Ranking',
'wordFrequency': 'Word Frequency',
'hotWordSelection': 'Hot Word Selection',
'hotWordName': 'Hot Word Name',
'occurrenceCount': 'Occurrence Count',
'hotWordSentiment': 'Hot Word Sentiment',
'hotWordYearTrend': 'Hot Word Year Trend',
'queryCommentsByHotWord': 'Query comments based on selected hot word',
'hotWordTimeDistribution': 'Hot Word Time Distribution Count',
// Public opinion analysis page
'hotWordSentimentTrendBar': 'Hot Word Sentiment Trend Bar Chart',
'hotWordSentimentTrendTree': 'Hot Word Sentiment Trend Tree Chart',
'articleCommentSentimentTrendPie': 'Article and Comment Sentiment Trend Pie Chart',
// Opinion prediction page
'topicStatisticsPage': 'Topic Statistics Page',
// Article analysis page
'articleCharPage': 'Article Analysis Page',
'typeSelection': 'Type Selection',
'articleLikeAnalysis': 'Article Like Analysis 👍',
'articleCommentAnalysis': 'Article Comment Analysis 🔥',
'articleForwardAnalysis': 'Article Forward Analysis 🥇',
'likeRangeStatistics': 'Like Range Statistics',
'rangeCount': 'Range Count',
// Comment analysis page
'commentLikeRangeChart': 'Comment Like Range Chart',
'commentUserGenderRatio': 'Comment User Gender Ratio',
'userCommentWordCloud': 'User Comment Word Cloud',
// IP analysis page
'articleIpLocationAnalysis': 'Article IP Location Analysis',
'commentIpLocationAnalysis': 'Comment IP Location Analysis',
// Comment related
'commentUser': 'Comment User',
'commentGender': 'Gender',
'commentAddress': 'Address',
'commentContent': 'Content',
'likeCount': 'Likes',
// Weibo public opinion stats page
'weiboArticleStatTable': 'Weibo Article Statistics Table - Sentiment Classification',
'sentimentClassification': 'Sentiment Classification',
'articleId': 'Article ID',
'articleIp': 'Article IP',
'articleTitle': 'Article Title',
'articleLike': 'Likes',
'articleForward': 'Forwards',
'articleComment': 'Comments',
'articleType': 'Type',
'articleContent': 'Content',
'articleTime': 'Publish Time',
// Common
'switchToEnglish': 'Switch to English',
'switchToChinese': 'Switch to Chinese',
'semester': 'Network Security Semester',
// Error pages
'pageNotFound': 'Page Not Found',
'backToHome': 'Back to Home',
'serverError': 'Server Error',
'forbidden': 'Forbidden',
'badRequest': 'Bad Request'
}
};
// 获取当前语言
function getCurrentLanguage() {
return localStorage.getItem('language') || 'zh';
}
// 设置语言
function setLanguage(lang) {
localStorage.setItem('language', lang);
location.reload();
}
// 翻译函数
function t(key) {
const lang = getCurrentLanguage();
return translations[lang][key] || key;
}
// 页面加载时应用翻译
document.addEventListener('DOMContentLoaded', function() {
// 应用当前语言
applyTranslations();
// 添加语言切换按钮事件
const langSwitcher = document.getElementById('language-switcher');
if (langSwitcher) {
langSwitcher.addEventListener('click', function() {
const currentLang = getCurrentLanguage();
const newLang = currentLang === 'zh' ? 'en' : 'zh';
setLanguage(newLang);
});
}
});
// 应用翻译到页面元素
function applyTranslations() {
const elements = document.querySelectorAll('[data-i18n]');
elements.forEach(el => {
const key = el.getAttribute('data-i18n');
el.textContent = t(key);
});
}
+55 -26
View File
@@ -1,29 +1,58 @@
<!doctype html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>404页面</title> <title>404 - 页面未找到</title>
<link rel="stylesheet" href="/static/css/backend-plugin.min.css"> <link rel="stylesheet" href="/static/css/backend.css">
<link rel="stylesheet" href="/static/css/backend.css"> </head> <!-- 添加语言支持脚本 -->
<body class=" "> <script src="/static/js/i18n.js"></script>
<style>
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f8f9fa;
}
.error-container {
text-align: center;
padding: 2rem;
}
.error-code {
font-size: 6rem;
font-weight: bold;
color: #dc3545;
}
.error-message {
font-size: 1.5rem;
margin: 1rem 0;
}
.back-link {
display: inline-block;
margin-top: 1rem;
padding: 0.5rem 1rem;
background-color: #007bff;
color: white;
text-decoration: none;
border-radius: 0.25rem;
}
</style>
</head>
<body>
<div class="error-container">
<div class="error-code">404</div>
<div class="error-message" data-i18n="pageNotFound">页面未找到</div>
<p>您请求的页面不存在或已被移除。</p>
<a href="/" class="back-link" data-i18n="backToHome">返回首页</a>
</div>
<!-- 初始化语言支持 -->
<div class="wrapper"> <script>
<div class="container"> document.addEventListener('DOMContentLoaded', function() {
<div class="row no-gutters height-self-center"> applyTranslations();
<div class="col-sm-12 text-center align-self-center"> });
<div class="iq-error position-relative"> </script>
<img src="/static/picture/Datum_404.png" class="img-fluid iq-error-img iq-error-img-dark mx-auto" alt=""> </body>
<img src="/static/picture/Datum_404.png" class="img-fluid iq-error-img mb-0" alt="">
<h2 class="mb-0">噢!该页面没有找到..</h2>
<p>本次请求没有任何反应.</p>
<a class="btn btn-primary d-inline-flex align-items-center mt-3" href="/user/login"><i class="ri-home-4-line mr-2"></i>回到登录页</a>
</div>
</div>
</div>
</div>
</div>
/
</body>
</html> </html>
+54 -29
View File
@@ -1,33 +1,58 @@
<!doctype html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>错误页面</title> <title>{{ error_code }} - {{ error_title }}</title>
<link rel="stylesheet" href="/static/css/backend.css">
<link rel="stylesheet" href="/static/css/backend-plugin.min.css"> <!-- 添加语言支持脚本 -->
<link rel="stylesheet" href="/static/css/backend.css"> </head> <script src="/static/js/i18n.js"></script>
<body class=" "> <style>
body {
display: flex;
<div class="wrapper"> justify-content: center;
<div class="mt-5 iq-maintenance"> align-items: center;
<div class="container-fluid p-0"> height: 100vh;
<div class="row no-gutters"> margin: 0;
<div class="col-sm-12 text-center"> background-color: #f8f9fa;
<div class="iq-maintenance"> }
<img src="/static/picture/maintenance.png" class="img-fluid" alt=""> .error-container {
<h3 class="mt-4 mb-2">{{ errorMsg }}</h3> text-align: center;
<p class="mb-2">请回去再次检查问题并且修改问题.</p> padding: 2rem;
<p><a href="/user/login" class="btn btn-primary">回到登录页</a></p> }
</div> .error-code {
</div> font-size: 6rem;
</div> font-weight: bold;
</div> color: #dc3545;
</div> }
.error-message {
font-size: 1.5rem;
margin: 1rem 0;
}
.back-link {
display: inline-block;
margin-top: 1rem;
padding: 0.5rem 1rem;
background-color: #007bff;
color: white;
text-decoration: none;
border-radius: 0.25rem;
}
</style>
</head>
<body>
<div class="error-container">
<div class="error-code">{{ error_code }}</div>
<div class="error-message" data-i18n="{{ error_i18n_key }}">{{ error_title }}</div>
<p>{{ error_message }}</p>
<a href="/" class="back-link" data-i18n="backToHome">返回首页</a>
</div> </div>
<!-- Backend Bundle JavaScript --> <!-- 初始化语言支持 -->
<script>
</body> document.addEventListener('DOMContentLoaded', function() {
applyTranslations();
});
</script>
</body>
</html> </html>
Binary file not shown.
+11 -11
View File
@@ -1,13 +1,13 @@
{% extends 'base_page.html' %} {% extends 'base_page.html' %}
{% block title %} {% block title %}
文章分析 <span data-i18n="articleChar">文章分析</span>
{% endblock %} {% endblock %}
{% block nav %} {% block nav %}
<nav class="iq-sidebar-menu"> <nav class="iq-sidebar-menu">
<ul id="iq-sidebar-toggle" class="side-menu"> <ul id="iq-sidebar-toggle" class="side-menu">
<li class="px-3 pt-3 pb-2 "> <li class="px-3 pt-3 pb-2 ">
<span class="text-uppercase small font-weight-bold">首页</span> <span class="text-uppercase small font-weight-bold" data-i18n="home">首页</span>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
<a href="/page/home" class="svg-icon"> <a href="/page/home" class="svg-icon">
@@ -16,7 +16,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">首页</span> <span class="ml-2" data-i18n="home">首页</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -101,7 +101,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor"> <svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path>
</svg> </svg>
</i><span class="ml-2">文章内容词云图</span> </i><span class="ml-2" data-i18n="articleCloud">文章内容词云图</span>
</a> </a>
</li> </li>
</ul> </ul>
@@ -113,7 +113,7 @@
<div class="row"> <div class="row">
<div class="col-md-12 mb-4 mt-1"> <div class="col-md-12 mb-4 mt-1">
<div class="d-flex flex-wrap justify-content-between align-items-center"> <div class="d-flex flex-wrap justify-content-between align-items-center">
<h4 class="font-weight-bold">文章分析页</h4> <h4 class="font-weight-bold" data-i18n="articleCharPage">文章分析页</h4>
</div> </div>
</div> </div>
</div> </div>
@@ -122,7 +122,7 @@
<div class="card card-block card-stretch card-height"> <div class="card card-block card-stretch card-height">
<div class="card-body"> <div class="card-body">
<div class="form-group"> <div class="form-group">
<label>类型选择</label> <label data-i18n="typeSelection">类型选择</label>
<select onchange="typeChange(event)" class="form-control mb-3"> <select onchange="typeChange(event)" class="form-control mb-3">
{% for i in typeList %} {% for i in typeList %}
{% if defaultType == i %} {% if defaultType == i %}
@@ -147,7 +147,7 @@
<div class="card card-block"> <div class="card card-block">
<div class="card-header d-flex justify-content-between pb-0"> <div class="card-header d-flex justify-content-between pb-0">
<div class="header-title"> <div class="header-title">
<h4 class="card-title mb-0">文章点赞量分析 👍</h4> <h4 class="card-title mb-0" data-i18n="articleLikeAnalysis">文章点赞量分析 👍</h4>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -159,7 +159,7 @@
<div class="card card-block"> <div class="card card-block">
<div class="card-header d-flex justify-content-between pb-0"> <div class="card-header d-flex justify-content-between pb-0">
<div class="header-title"> <div class="header-title">
<h4 class="card-title mb-0">文章评论量分析 🔥</h4> <h4 class="card-title mb-0" data-i18n="articleCommentAnalysis">文章评论量分析 🔥</h4>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -171,7 +171,7 @@
<div class="card card-block"> <div class="card card-block">
<div class="card-header d-flex justify-content-between pb-0"> <div class="card-header d-flex justify-content-between pb-0">
<div class="header-title"> <div class="header-title">
<h4 class="card-title mb-0">文章转发量分析 🥇</h4> <h4 class="card-title mb-0" data-i18n="articleForwardAnalysis">文章转发量分析 🥇</h4>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -191,13 +191,13 @@
var colors = ['#66cc99','#ffcc66','#ff6666','#6699cc'] var colors = ['#66cc99','#ffcc66','#ff6666','#6699cc']
option = { option = {
title: { title: {
text: '点赞区间统计' text: t('likeRangeStatistics')
}, },
tooltip: { tooltip: {
trigger: 'axis' trigger: 'axis'
}, },
legend: { legend: {
data: ['区间个数'] data: [t('rangeCount')]
}, },
toolbox: { toolbox: {
show: true, show: true,
+10 -10
View File
@@ -1,13 +1,13 @@
{% extends 'base_page.html' %} {% extends 'base_page.html' %}
{% block title %} {% block title %}
文章内容词云图 <span data-i18n="articleCloud">文章内容词云图</span>
{% endblock %} {% endblock %}
{% block nav %} {% block nav %}
<nav class="iq-sidebar-menu"> <nav class="iq-sidebar-menu">
<ul id="iq-sidebar-toggle" class="side-menu"> <ul id="iq-sidebar-toggle" class="side-menu">
<li class="px-3 pt-3 pb-2 "> <li class="px-3 pt-3 pb-2 ">
<span class="text-uppercase small font-weight-bold">首页</span> <span class="text-uppercase small font-weight-bold" data-i18n="home">首页</span>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
<a href="/page/home" class="svg-icon"> <a href="/page/home" class="svg-icon">
@@ -16,7 +16,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">首页</span> <span class="ml-2" data-i18n="home">首页</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -26,7 +26,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">热词统计</span> <span class="ml-2" data-i18n="hotWord">热词统计</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -36,11 +36,11 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">微博舆情统计</span> <span class="ml-2" data-i18n="tableData">微博舆情统计</span>
</a> </a>
</li> </li>
<li class="px-3 pt-3 pb-2 "> <li class="px-3 pt-3 pb-2 ">
<span class="text-uppercase small font-weight-bold">数据可视化</span> <span class="text-uppercase small font-weight-bold" data-i18n="dataVisualization">数据可视化</span>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
<a href="/page/articleChar" class="svg-icon"> <a href="/page/articleChar" class="svg-icon">
@@ -49,7 +49,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">文章分析</span> <span class="ml-2" data-i18n="articleChar">文章分析</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -101,7 +101,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor"> <svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path>
</svg> </svg>
</i><span class="ml-2">文章内容词云图</span> </i><span class="ml-2" data-i18n="articleCloud">文章内容词云图</span>
</a> </a>
</li> </li>
</ul> </ul>
@@ -113,7 +113,7 @@
<div class="row"> <div class="row">
<div class="col-md-12 mb-4 mt-1"> <div class="col-md-12 mb-4 mt-1">
<div class="d-flex flex-wrap justify-content-between align-items-center"> <div class="d-flex flex-wrap justify-content-between align-items-center">
<h4 class="font-weight-bold">文章分析页</h4> <h4 class="font-weight-bold" data-i18n="articleCharPage">文章分析页</h4>
</div> </div>
</div> </div>
</div> </div>
@@ -122,7 +122,7 @@
<div class="card card-block"> <div class="card card-block">
<div class="card-header d-flex justify-content-between pb-0"> <div class="card-header d-flex justify-content-between pb-0">
<div class="header-title"> <div class="header-title">
<h4 class="card-title mb-0">文章内容词云图</h4> <h4 class="card-title mb-0" data-i18n="articleCloud">文章内容词云图</h4>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
+49 -22
View File
@@ -1,4 +1,3 @@
<!doctype html> <!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
@@ -9,6 +8,7 @@
<link rel="stylesheet" href="/static/css/backend-plugin.min.css"> <link rel="stylesheet" href="/static/css/backend-plugin.min.css">
<link rel="stylesheet" href="/static/css/backend.css"> <link rel="stylesheet" href="/static/css/backend.css">
<meta name="referrer" content="no-referrer" /> <meta name="referrer" content="no-referrer" />
<script src="/static/js/i18n.js"></script>
</head> </head>
<body class=" "> <body class=" ">
<!-- loader Start --> <!-- loader Start -->
@@ -23,7 +23,7 @@
<div class="iq-sidebar-logo d-flex align-items-end justify-content-between"> <div class="iq-sidebar-logo d-flex align-items-end justify-content-between">
<a href="" class="header-logo"> <a href="" class="header-logo">
<img src="https://lovexl-oss.oss-cn-beijing.aliyuncs.com/bed/202407051027268.png" class="img-fluid rounded-normal light-logo" alt="logo"> <img src="https://lovexl-oss.oss-cn-beijing.aliyuncs.com/bed/202407051027268.png" class="img-fluid rounded-normal light-logo" alt="logo">
<span>微博舆情分析系统</span> <span data-i18n="weiboSystem">微博舆情分析系统</span>
</a> </a>
<div class="side-menu-bt-sidebar-1"> <div class="side-menu-bt-sidebar-1">
<svg xmlns="http://www.w3.org/2000/svg" class="text-light wrapper-menu" width="30" fill="none" viewbox="0 0 24 24" stroke="currentColor"> <svg xmlns="http://www.w3.org/2000/svg" class="text-light wrapper-menu" width="30" fill="none" viewbox="0 0 24 24" stroke="currentColor">
@@ -42,7 +42,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">首页</span> <span class="ml-2" data-i18n="home">首页</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -52,7 +52,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">热词统计</span> <span class="ml-2" data-i18n="hotWord">热词统计</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -62,7 +62,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">微博舆情统计</span> <span class="ml-2" data-i18n="tableData">微博舆情统计</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -72,7 +72,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">文章分析</span> <span class="ml-2" data-i18n="articleChar">文章分析</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -83,7 +83,7 @@
<line x1="8" y1="10" x2="12" y2="10" style="fill: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2;"></line> <line x1="8" y1="10" x2="12" y2="10" style="fill: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2;"></line>
</svg> </svg>
</i> </i>
<span class="ml-2">IP分析</span> <span class="ml-2" data-i18n="ipChar">IP分析</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -92,7 +92,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor"> <svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path>
</svg> </svg>
</i><span class="ml-2">评论分析</span> </i><span class="ml-2" data-i18n="commentChar">评论分析</span>
</a> </a>
</li> </li>
<li class="active sidebar-layout"> <li class="active sidebar-layout">
@@ -102,7 +102,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">舆情分析</span> <span class="ml-2" data-i18n="yuqingChar">舆情分析</span>
</a> </a>
</li> </li>
<li class="active sidebar-layout"> <li class="active sidebar-layout">
@@ -112,7 +112,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">舆情预测</span> <span class="ml-2" data-i18n="yuqingpredict">舆情预测</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -121,7 +121,17 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor"> <svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path>
</svg> </svg>
</i><span class="ml-2">文章内容词云图</span> </i><span class="ml-2" data-i18n="articleCloud">文章内容词云图</span>
</a>
</li>
<li class="sidebar-layout">
<a href="javascript:void(0)" id="language-switcher" class="svg-icon">
<i class="">
<svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 5h12M9 3v2m1.048 9.5A18.022 18.022 0 016.412 9m6.088 9h7M11 21l5-10 5 10M12.751 5C11.783 10.77 8.07 15.61 3 18.129"></path>
</svg>
</i>
<span class="ml-2" id="language-text">切换语言</span>
</a> </a>
</li> </li>
</ul> </ul>
@@ -136,7 +146,7 @@
<div class="row"> <div class="row">
<div class="col-md-12 mb-4 mt-1"> <div class="col-md-12 mb-4 mt-1">
<div class="d-flex flex-wrap justify-content-between align-items-center"> <div class="d-flex flex-wrap justify-content-between align-items-center">
<h4 class="font-weight-bold">首页</h4> <h4 class="font-weight-bold" data-i18n="home">首页</h4>
</div> </div>
</div> </div>
<div class="col-lg-8 col-md-12"> <div class="col-lg-8 col-md-12">
@@ -146,7 +156,7 @@
<div class="card-body"> <div class="card-body">
<div class="d-flex align-items-center"> <div class="d-flex align-items-center">
<div class=""> <div class="">
<p class="mb-2 text-secondary">文章个数</p> <p class="mb-2 text-secondary" data-i18n="articleCount">文章个数</p>
<div class="d-flex flex-wrap justify-content-start align-items-center"> <div class="d-flex flex-wrap justify-content-start align-items-center">
<h5 class="mb-0 font-weight-bold">{{ articleLenMax }}个</h5> <h5 class="mb-0 font-weight-bold">{{ articleLenMax }}个</h5>
</div> </div>
@@ -160,7 +170,7 @@
<div class="card-body"> <div class="card-body">
<div class="d-flex align-items-center"> <div class="d-flex align-items-center">
<div class=""> <div class="">
<p class="mb-2 text-secondary">文章爬取规则</p> <p class="mb-2 text-secondary" data-i18n="articleCrawlRule">文章爬取规则</p>
<div class="d-flex flex-wrap justify-content-start align-items-center"> <div class="d-flex flex-wrap justify-content-start align-items-center">
<h5 class="mb-0 font-weight-bold">每 5 小时更新一次爬取内容</h5> <h5 class="mb-0 font-weight-bold">每 5 小时更新一次爬取内容</h5>
</div> </div>
@@ -174,7 +184,7 @@
<div class="card-body"> <div class="card-body">
<div class="d-flex align-items-center"> <div class="d-flex align-items-center">
<div class=""> <div class="">
<p class="mb-2 text-secondary">下次爬取时间</p> <p class="mb-2 text-secondary" data-i18n="nextCrawlTime">下次爬取时间</p>
<div class="d-flex flex-wrap justify-content-start align-items-center"> <div class="d-flex flex-wrap justify-content-start align-items-center">
<h5 class="mb-0 font-weight-bold">7-5-18:00</h5> <h5 class="mb-0 font-weight-bold">7-5-18:00</h5>
</div> </div>
@@ -187,7 +197,7 @@
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
<div class="d-flex justify-content-between align-items-center flex-wrap"> <div class="d-flex justify-content-between align-items-center flex-wrap">
<h4 class="font-weight-bold">文章发布时间个数</h4> <h4 class="font-weight-bold" data-i18n="articlePublishTimeCount">文章发布时间个数</h4>
</div> </div>
<div id="main" style="width:100%;height: 350px" class="custom-chart"></div> <div id="main" style="width:100%;height: 350px" class="custom-chart"></div>
</div> </div>
@@ -199,7 +209,7 @@
<div class="card card-block card-stretch card-height"> <div class="card card-block card-stretch card-height">
<div class="card-header card-header-border d-flex justify-content-between"> <div class="card-header card-header-border d-flex justify-content-between">
<div class="header-title"> <div class="header-title">
<h4 class="card-title">评论点赞量 Top Fore</h4> <h4 class="card-title" data-i18n="commentLikeCountTopFore">评论点赞量 Top Fore</h4>
</div> </div>
</div> </div>
<div class="card-body-list"> <div class="card-body-list">
@@ -220,7 +230,7 @@
</li> </li>
{% endfor %} {% endfor %}
<div class="d-flex justify-content-end align-items-center border-top-table p-3"> <div class="d-flex justify-content-end align-items-center border-top-table p-3">
<a href="/page/tableData" class="btn btn-secondary btn-sm">查看全部</a> <a href="/page/tableData" class="btn btn-secondary btn-sm" data-i18n="viewAll">查看全部</a>
</div> </div>
</ul> </ul>
</div> </div>
@@ -231,7 +241,7 @@
<div class="card card-block card-stretch card-height"> <div class="card card-block card-stretch card-height">
<div class="card-header d-flex justify-content-between"> <div class="card-header d-flex justify-content-between">
<div class="header-title"> <div class="header-title">
<h4 class="card-title">文章类型占比</h4> <h4 class="card-title" data-i18n="articleTypeRatio">文章类型占比</h4>
</div> </div>
</div> </div>
<div class="card-body p-0"> <div class="card-body p-0">
@@ -245,7 +255,7 @@
<div class="card card-block card-stretch card-height"> <div class="card card-block card-stretch card-height">
<div class="card-header d-flex justify-content-between"> <div class="card-header d-flex justify-content-between">
<div class="header-title"> <div class="header-title">
<h4 class="card-title">评论用户名词云图</h4> <h4 class="card-title" data-i18n="commentUserWordCloud">评论用户名词云图</h4>
</div> </div>
</div> </div>
<div class="card-body p-0"> <div class="card-body p-0">
@@ -259,7 +269,7 @@
<div class="card card-block card-stretch card-height"> <div class="card card-block card-stretch card-height">
<div class="card-header d-flex justify-content-between"> <div class="card-header d-flex justify-content-between">
<div class="header-title"> <div class="header-title">
<h4 class="card-title">评论用户时间占比</h4> <h4 class="card-title" data-i18n="commentUserTimeRatio">评论用户时间占比</h4>
</div> </div>
</div> </div>
<div class="card-body p-0"> <div class="card-body p-0">
@@ -281,13 +291,30 @@
<div class="col-lg-6"> <div class="col-lg-6">
</div> </div>
<div class="col-lg-6 text-right"> <div class="col-lg-6 text-right">
<span class="mr-1">网安小学期 &copy; 2024.<a target="_blank" href="#">郭航江</a></span> <span class="mr-1"><span data-i18n="semester">网安小学期</span> &copy; 2024.<a target="_blank" href="#">郭航江</a></span>
</div> </div>
</div> </div>
</div> </div>
</footer> </footer>
<script src="/static/echarts.min.js"></script> <script src="/static/echarts.min.js"></script>
<script src="/static/china.js"></script> <script src="/static/china.js"></script>
<!-- 添加语言切换脚本 -->
<script>
// 页面加载完成后初始化语言切换功能
document.addEventListener('DOMContentLoaded', function() {
// 更新语言切换按钮文本
updateLanguageSwitcherText();
});
// 更新语言切换按钮文本
function updateLanguageSwitcherText() {
const currentLang = getCurrentLanguage();
const langText = document.getElementById('language-text');
if (langText) {
langText.textContent = currentLang === 'zh' ? '切换到英文' : 'Switch to Chinese';
}
}
</script>
{% block echarts %} {% block echarts %}
<script> <script>
var chartDom = document.getElementById('main'); var chartDom = document.getElementById('main');
+12 -12
View File
@@ -1,13 +1,13 @@
{% extends 'base_page.html' %} {% extends 'base_page.html' %}
{% block title %} {% block title %}
评论分析 <span data-i18n="commentChar">评论分析</span>
{% endblock %} {% endblock %}
{% block nav %} {% block nav %}
<nav class="iq-sidebar-menu"> <nav class="iq-sidebar-menu">
<ul id="iq-sidebar-toggle" class="side-menu"> <ul id="iq-sidebar-toggle" class="side-menu">
<li class="px-3 pt-3 pb-2 "> <li class="px-3 pt-3 pb-2 ">
<span class="text-uppercase small font-weight-bold">首页</span> <span class="text-uppercase small font-weight-bold" data-i18n="home">首页</span>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
<a href="/page/home" class="svg-icon"> <a href="/page/home" class="svg-icon">
@@ -16,7 +16,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">首页</span> <span class="ml-2" data-i18n="home">首页</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -26,7 +26,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">热词统计</span> <span class="ml-2" data-i18n="hotWord">热词统计</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -36,11 +36,11 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">微博舆情统计</span> <span class="ml-2" data-i18n="tableData">微博舆情统计</span>
</a> </a>
</li> </li>
<li class="px-3 pt-3 pb-2 "> <li class="px-3 pt-3 pb-2 ">
<span class="text-uppercase small font-weight-bold">数据可视化</span> <span class="text-uppercase small font-weight-bold" data-i18n="dataVisualization">数据可视化</span>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
<a href="/page/articleChar" class="svg-icon"> <a href="/page/articleChar" class="svg-icon">
@@ -49,7 +49,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">文章分析</span> <span class="ml-2" data-i18n="articleChar">文章分析</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -101,7 +101,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor"> <svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path>
</svg> </svg>
</i><span class="ml-2">文章内容词云图</span> </i><span class="ml-2" data-i18n="articleCloud">文章内容词云图</span>
</a> </a>
</li> </li>
</ul> </ul>
@@ -112,7 +112,7 @@
<div class="row"> <div class="row">
<div class="col-md-12 mb-4 mt-1"> <div class="col-md-12 mb-4 mt-1">
<div class="d-flex flex-wrap justify-content-between align-items-center"> <div class="d-flex flex-wrap justify-content-between align-items-center">
<h4 class="font-weight-bold">评论分析</h4> <h4 class="font-weight-bold" data-i18n="commentChar">评论分析</h4>
</div> </div>
</div> </div>
</div> </div>
@@ -121,7 +121,7 @@
<div class="card card-block"> <div class="card card-block">
<div class="card-header d-flex justify-content-between pb-0"> <div class="card-header d-flex justify-content-between pb-0">
<div class="header-title"> <div class="header-title">
<h4 class="card-title mb-0">评论点赞次数区间图</h4> <h4 class="card-title mb-0" data-i18n="commentLikeRangeChart">评论点赞次数区间图</h4>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -133,7 +133,7 @@
<div class="card card-block"> <div class="card card-block">
<div class="card-header d-flex justify-content-between pb-0"> <div class="card-header d-flex justify-content-between pb-0">
<div class="header-title"> <div class="header-title">
<h4 class="card-title mb-0">评论用户性别占比</h4> <h4 class="card-title mb-0" data-i18n="commentUserGenderRatio">评论用户性别占比</h4>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -145,7 +145,7 @@
<div class="card card-block"> <div class="card card-block">
<div class="card-header d-flex justify-content-between pb-0"> <div class="card-header d-flex justify-content-between pb-0">
<div class="header-title"> <div class="header-title">
<h4 class="card-title mb-0">用户评论词云图</h4> <h4 class="card-title mb-0" data-i18n="userCommentWordCloud">用户评论词云图</h4>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
+29 -29
View File
@@ -1,12 +1,12 @@
{% extends 'base_page.html' %} {% extends 'base_page.html' %}
{% block title %} {% block title %}
热词统计 <span data-i18n="hotWord">热词统计</span>
{% endblock %} {% endblock %}
{% block nav %} {% block nav %}
<nav class="iq-sidebar-menu"> <nav class="iq-sidebar-menu">
<ul id="iq-sidebar-toggle" class="side-menu"> <ul id="iq-sidebar-toggle" class="side-menu">
<li class="px-3 pt-3 pb-2 "> <li class="px-3 pt-3 pb-2 ">
<span class="text-uppercase small font-weight-bold">首页</span> <span class="text-uppercase small font-weight-bold" data-i18n="home">首页</span>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
<a href="/page/home" class="svg-icon"> <a href="/page/home" class="svg-icon">
@@ -15,7 +15,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">首页</span> <span class="ml-2" data-i18n="home">首页</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -25,7 +25,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">热词统计</span> <span class="ml-2" data-i18n="hotWord">热词统计</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -35,11 +35,11 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">微博舆情统计</span> <span class="ml-2" data-i18n="tableData">微博舆情统计</span>
</a> </a>
</li> </li>
<li class="px-3 pt-3 pb-2 "> <li class="px-3 pt-3 pb-2 ">
<span class="text-uppercase small font-weight-bold">数据可视化</span> <span class="text-uppercase small font-weight-bold" data-i18n="dataVisualization">数据可视化</span>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
<a href="/page/articleChar" class="svg-icon"> <a href="/page/articleChar" class="svg-icon">
@@ -48,7 +48,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">文章分析</span> <span class="ml-2" data-i18n="articleChar">文章分析</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -59,7 +59,7 @@
<line x1="8" y1="10" x2="12" y2="10" style="fill: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2;"></line> <line x1="8" y1="10" x2="12" y2="10" style="fill: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2;"></line>
</svg> </svg>
</i> </i>
<span class="ml-2">IP分析</span> <span class="ml-2" data-i18n="ipChar">IP分析</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -68,7 +68,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor"> <svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path>
</svg> </svg>
</i><span class="ml-2">评论分析</span> </i><span class="ml-2" data-i18n="commentChar">评论分析</span>
</a> </a>
</li> </li>
<li class="active sidebar-layout"> <li class="active sidebar-layout">
@@ -78,7 +78,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">舆情分析</span> <span class="ml-2" data-i18n="yuqingChar">舆情分析</span>
</a> </a>
</li> </li>
<li class="active sidebar-layout"> <li class="active sidebar-layout">
@@ -88,11 +88,11 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">舆情预测</span> <span class="ml-2" data-i18n="yuqingpredict">舆情预测</span>
</a> </a>
</li> </li>
<li class="px-3 pt-3 pb-2"> <li class="px-3 pt-3 pb-2">
<span class="text-uppercase small font-weight-bold">词云图</span> <span class="text-uppercase small font-weight-bold" data-i18n="wordCloud">词云图</span>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
<a href="/page/articleCloud" class="svg-icon"> <a href="/page/articleCloud" class="svg-icon">
@@ -100,7 +100,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor"> <svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path>
</svg> </svg>
</i><span class="ml-2">文章内容词云图</span> </i><span class="ml-2" data-i18n="articleCloud">文章内容词云图</span>
</a> </a>
</li> </li>
</ul> </ul>
@@ -111,7 +111,7 @@
<div class="row"> <div class="row">
<div class="col-md-12 mb-4 mt-1"> <div class="col-md-12 mb-4 mt-1">
<div class="d-flex flex-wrap justify-content-between align-items-center"> <div class="d-flex flex-wrap justify-content-between align-items-center">
<h4 class="font-weight-bold">热词统计页</h4> <h4 class="font-weight-bold" data-i18n="hotWordStatistics">热词统计页</h4>
</div> </div>
</div> </div>
</div> </div>
@@ -151,7 +151,7 @@
</code></pre></kbd></div> </code></pre></kbd></div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label>热词选择</label> <label data-i18n="hotWordSelection">热词选择</label>
<select onchange="hotWordChange(event)" class="form-control mb-3"> <select onchange="hotWordChange(event)" class="form-control mb-3">
{% for i in hotWordList %} {% for i in hotWordList %}
{% if defaultHotWord == i[0] %} {% if defaultHotWord == i[0] %}
@@ -179,9 +179,9 @@
<h4 class="card-title font-size-16 mt-0">{{ defaultHotWord }}</h4> <h4 class="card-title font-size-16 mt-0">{{ defaultHotWord }}</h4>
</div> </div>
<ul class="list-group list-group-flush"> <ul class="list-group list-group-flush">
<li class="list-group-item">热词名称{{ defaultHotWord }}</li> <li class="list-group-item"><span data-i18n="hotWordName">热词名称</span>{{ defaultHotWord }}</li>
<li class="list-group-item">出现次数{{ hotWordLen }}次</li> <li class="list-group-item"><span data-i18n="occurrenceCount">出现次数</span>{{ hotWordLen }}次</li>
<li class="list-group-item">热词情感{{ sentences }}</li> <li class="list-group-item"><span data-i18n="hotWordSentiment">热词情感</span>{{ sentences }}</li>
</ul> </ul>
</div> </div>
@@ -191,7 +191,7 @@
<div class="col-lg-12"> <div class="col-lg-12">
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
<h4 class="card-title font-size-16 mt-0">热词年份变化趋势</h4> <h4 class="card-title font-size-16 mt-0" data-i18n="hotWordYearTrend">热词年份变化趋势</h4>
</div> </div>
<div id="main" style="width:100%;height: 450px"></div> <div id="main" style="width:100%;height: 450px"></div>
</div> </div>
@@ -202,7 +202,7 @@
<div class="card"> <div class="card">
<div class="card-header d-flex justify-content-between"> <div class="card-header d-flex justify-content-between">
<div class="header-title"> <div class="header-title">
<h4 class="card-title">热词查询表格</h4> <h4 class="card-title" data-i18n="hotWordRanking">热词查询表格</h4>
</div> </div>
<div class="header-action"> <div class="header-action">
<i data-toggle="collapse" data-target="#datatable-1" aria-expanded="false"> <i data-toggle="collapse" data-target="#datatable-1" aria-expanded="false">
@@ -391,18 +391,18 @@
&lt;/table&gt; &lt;/table&gt;
</code></pre></kbd></div> </code></pre></kbd></div>
</div> </div>
<p>根据选择的热词从而查询出评论数据</p> <p data-i18n="queryCommentsByHotWord">根据选择的热词从而查询出评论数据</p>
<div class="table-responsive"> <div class="table-responsive">
<div id="datatable-1_wrapper" class="dataTables_wrapper dt-bootstrap4"> <div id="datatable-1_wrapper" class="dataTables_wrapper dt-bootstrap4">
<div class="row"><div class="col-sm-12"><table id="datatable-1" class="table data-table table-striped table-bordered dataTable" role="grid" aria-describedby="datatable-1_info"> <div class="row"><div class="col-sm-12"><table id="datatable-1" class="table data-table table-striped table-bordered dataTable" role="grid" aria-describedby="datatable-1_info">
<thead> <thead>
<tr role="row"> <tr role="row">
<th class="sorting sorting_asc" tabindex="0" aria-controls="datatable-1" rowspan="1" colspan="1" aria-sort="ascending" aria-label="Name: activate to sort column descending" style="width: 250.844px;">文章ID</th> <th class="sorting sorting_asc" tabindex="0" aria-controls="datatable-1" rowspan="1" colspan="1" aria-sort="ascending" aria-label="Name: activate to sort column descending" style="width: 250.844px;" data-i18n="articleId">文章ID</th>
<th class="sorting" tabindex="0" aria-controls="datatable-1" rowspan="1" colspan="1" aria-label="Position: activate to sort column ascending" style="width: 392.094px;">评论用户</th> <th class="sorting" tabindex="0" aria-controls="datatable-1" rowspan="1" colspan="1" aria-label="Position: activate to sort column ascending" style="width: 392.094px;" data-i18n="commentUser">评论用户</th>
<th class="sorting" tabindex="0" aria-controls="datatable-1" rowspan="1" colspan="1" aria-label="Office: activate to sort column ascending" style="width: 190.75px;">评论性别</th> <th class="sorting" tabindex="0" aria-controls="datatable-1" rowspan="1" colspan="1" aria-label="Office: activate to sort column ascending" style="width: 190.75px;" data-i18n="commentGender">评论性别</th>
<th class="sorting" tabindex="0" aria-controls="datatable-1" rowspan="1" colspan="1" aria-label="Age: activate to sort column ascending" style="width: 84.2656px;">评论地址</th> <th class="sorting" tabindex="0" aria-controls="datatable-1" rowspan="1" colspan="1" aria-label="Age: activate to sort column ascending" style="width: 84.2656px;" data-i18n="commentAddress">评论地址</th>
<th class="sorting" tabindex="0" aria-controls="datatable-1" rowspan="1" colspan="1" aria-label="Start date: activate to sort column ascending" style="width: 172.594px;">评论内容</th> <th class="sorting" tabindex="0" aria-controls="datatable-1" rowspan="1" colspan="1" aria-label="Start date: activate to sort column ascending" style="width: 172.594px;" data-i18n="commentContent">评论内容</th>
<th class="text-right sorting" tabindex="0" aria-controls="datatable-1" rowspan="1" colspan="1" aria-label="Salary: activate to sort column ascending" style="width: 158.453px;">点赞量</th></tr> <th class="text-right sorting" tabindex="0" aria-controls="datatable-1" rowspan="1" colspan="1" aria-label="Salary: activate to sort column ascending" style="width: 158.453px;" data-i18n="likeCount">点赞量</th></tr>
</thead> </thead>
<tbody> <tbody>
{% for i in comments %} {% for i in comments %}
@@ -443,7 +443,7 @@
trigger: 'axis' trigger: 'axis'
}, },
legend: { legend: {
data: ['热词出现时间分布个数'] data: [t('hotWordTimeDistribution')]
}, },
toolbox: { toolbox: {
show: true, show: true,
@@ -481,7 +481,7 @@
], ],
series: [ series: [
{ {
name: '热词出现时间分布个数', name: t('hotWordTimeDistribution'),
type: 'bar', type: 'bar',
data: {{ yData }}, data: {{ yData }},
markPoint: { markPoint: {
+3
View File
@@ -25,3 +25,6 @@
--> -->
{% extends 'base_page.html' %} {% extends 'base_page.html' %}
{% block title %}
<span data-i18n="home">首页</span>
{% endblock %}
+11 -11
View File
@@ -1,14 +1,14 @@
{% extends 'base_page.html' %} {% extends 'base_page.html' %}
{% block title %} {% block title %}
IP分析 <span data-i18n="ipChar">IP分析</span>
{% endblock %} {% endblock %}
{% block nav %} {% block nav %}
<nav class="iq-sidebar-menu"> <nav class="iq-sidebar-menu">
<ul id="iq-sidebar-toggle" class="side-menu"> <ul id="iq-sidebar-toggle" class="side-menu">
<li class="px-3 pt-3 pb-2 "> <li class="px-3 pt-3 pb-2 ">
<span class="text-uppercase small font-weight-bold">首页</span> <span class="text-uppercase small font-weight-bold" data-i18n="home">首页</span>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
<a href="/page/home" class="svg-icon"> <a href="/page/home" class="svg-icon">
@@ -17,7 +17,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">首页</span> <span class="ml-2" data-i18n="home">首页</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -27,7 +27,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">热词统计</span> <span class="ml-2" data-i18n="hotWord">热词统计</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -37,11 +37,11 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">微博舆情统计</span> <span class="ml-2" data-i18n="tableData">微博舆情统计</span>
</a> </a>
</li> </li>
<li class="px-3 pt-3 pb-2 "> <li class="px-3 pt-3 pb-2 ">
<span class="text-uppercase small font-weight-bold">数据可视化</span> <span class="text-uppercase small font-weight-bold" data-i18n="dataVisualization">数据可视化</span>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
<a href="/page/articleChar" class="svg-icon"> <a href="/page/articleChar" class="svg-icon">
@@ -50,7 +50,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">文章分析</span> <span class="ml-2" data-i18n="articleChar">文章分析</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -102,7 +102,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor"> <svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path>
</svg> </svg>
</i><span class="ml-2">文章内容词云图</span> </i><span class="ml-2" data-i18n="articleCloud">文章内容词云图</span>
</a> </a>
</li> </li>
</ul> </ul>
@@ -113,7 +113,7 @@
<div class="row"> <div class="row">
<div class="col-md-12 mb-4 mt-1"> <div class="col-md-12 mb-4 mt-1">
<div class="d-flex flex-wrap justify-content-between align-items-center"> <div class="d-flex flex-wrap justify-content-between align-items-center">
<h4 class="font-weight-bold">IP分析</h4> <h4 class="font-weight-bold" data-i18n="ipChar">IP分析</h4>
</div> </div>
</div> </div>
</div> </div>
@@ -122,7 +122,7 @@
<div class="card card-block"> <div class="card card-block">
<div class="card-header d-flex justify-content-between pb-0"> <div class="card-header d-flex justify-content-between pb-0">
<div class="header-title"> <div class="header-title">
<h4 class="card-title mb-0">文章IP位置分析图</h4> <h4 class="card-title mb-0" data-i18n="articleIpLocationAnalysis">文章IP位置分析图</h4>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -134,7 +134,7 @@
<div class="card card-block"> <div class="card card-block">
<div class="card-header d-flex justify-content-between pb-0"> <div class="card-header d-flex justify-content-between pb-0">
<div class="header-title"> <div class="header-title">
<h4 class="card-title mb-0">评论IP位置分析图</h4> <h4 class="card-title mb-0" data-i18n="commentIpLocationAnalysis">评论IP位置分析图</h4>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
+24 -21
View File
@@ -1,13 +1,13 @@
{% extends 'base_page.html' %} {% extends 'base_page.html' %}
{% block title %} {% block title %}
微博舆情统计页 <span data-i18n="tableData">微博舆情统计页</span>
{% endblock %} {% endblock %}
{% block nav %} {% block nav %}
<nav class="iq-sidebar-menu"> <nav class="iq-sidebar-menu">
<ul id="iq-sidebar-toggle" class="side-menu"> <ul id="iq-sidebar-toggle" class="side-menu">
<li class="px-3 pt-3 pb-2 "> <li class="px-3 pt-3 pb-2 ">
<span class="text-uppercase small font-weight-bold">首页</span> <span class="text-uppercase small font-weight-bold" data-i18n="home">首页</span>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
<a href="/page/home" class="svg-icon"> <a href="/page/home" class="svg-icon">
@@ -16,7 +16,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">首页</span> <span class="ml-2" data-i18n="home">首页</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -26,7 +26,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">热词统计</span> <span class="ml-2" data-i18n="hotWord">热词统计</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -36,11 +36,11 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">微博舆情统计</span> <span class="ml-2" data-i18n="tableData">微博舆情统计</span>
</a> </a>
</li> </li>
<li class="px-3 pt-3 pb-2 "> <li class="px-3 pt-3 pb-2 ">
<span class="text-uppercase small font-weight-bold">数据可视化</span> <span class="text-uppercase small font-weight-bold" data-i18n="dataVisualization">数据可视化</span>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
<a href="/page/articleChar" class="svg-icon"> <a href="/page/articleChar" class="svg-icon">
@@ -49,7 +49,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">文章分析</span> <span class="ml-2" data-i18n="articleChar">文章分析</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -101,7 +101,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor"> <svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path>
</svg> </svg>
</i><span class="ml-2">文章内容词云图</span> </i><span class="ml-2" data-i18n="articleCloud">文章内容词云图</span>
</a> </a>
</li> </li>
</ul> </ul>
@@ -112,7 +112,7 @@
<div class="row"> <div class="row">
<div class="col-md-12 mb-4 mt-1"> <div class="col-md-12 mb-4 mt-1">
<div class="d-flex flex-wrap justify-content-between align-items-center"> <div class="d-flex flex-wrap justify-content-between align-items-center">
<h4 class="font-weight-bold">微博舆情统计页</h4> <h4 class="font-weight-bold" data-i18n="tableData">微博舆情统计页</h4>
</div> </div>
</div> </div>
</div> </div>
@@ -122,8 +122,7 @@
<div class="card"> <div class="card">
<div class="card-header d-flex justify-content-between"> <div class="card-header d-flex justify-content-between">
<div class="header-title"> <div class="header-title">
<h4 class="card-title">微博文章统计表格 - 舆情 情感分类 <h4 class="card-title" data-i18n="weiboArticleStatTable">微博文章统计表格 - 舆情 情感分类</h4>
</h4>
</div> </div>
<div class="header-action"> <div class="header-action">
<i data-toggle="collapse" data-target="#datatable-1" aria-expanded="false"> <i data-toggle="collapse" data-target="#datatable-1" aria-expanded="false">
@@ -134,39 +133,42 @@
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
<p><a href="/page/tableData?flag=True" class="btn btn-primary btn-sm">情感分类</a></p> <p><a href="/page/tableData?flag=True" class="btn btn-primary btn-sm" data-i18n="sentimentClassification">情感分类</a></p>
<div class="table-responsive"> <div class="table-responsive">
<div id="datatable-1_wrapper" class="dataTables_wrapper dt-bootstrap4"> <div id="datatable-1_wrapper" class="dataTables_wrapper dt-bootstrap4">
<div class="row"> <div class="row">
<table id="datatable-1" class="table data-table table-striped table-bordered dataTable" role="grid" aria-describedby="datatable-1_info"> <table id="datatable-1" class="table data-table table-striped table-bordered dataTable" role="grid" aria-describedby="datatable-1_info">
<thead> <thead>
<tr> <tr>
<th style="font-weight: bold"> <th style="font-weight: bold" data-i18n="articleId">
文章ID 文章ID
</th> </th>
<th style="font-weight: bold"> <th style="font-weight: bold" data-i18n="articleIp">
文章IP 文章IP
</th> </th>
<th style="font-weight: bold"> <th style="font-weight: bold" data-i18n="articleTitle">
文章标题
</th>
<th style="font-weight: bold" data-i18n="articleLike">
点赞量 点赞量
</th> </th>
<th style="font-weight: bold"> <th style="font-weight: bold" data-i18n="articleForward">
转发量 转发量
</th> </th>
<th style="font-weight: bold"> <th style="font-weight: bold" data-i18n="articleComment">
评论量 评论量
</th> </th>
<th style="font-weight: bold"> <th style="font-weight: bold" data-i18n="articleType">
类型 类型
</th> </th>
<th style="font-weight: bold"> <th style="font-weight: bold" data-i18n="articleContent">
内容 内容
</th> </th>
<th style="font-weight: bold"> <th style="font-weight: bold" data-i18n="articleTime">
发布时间 发布时间
</th> </th>
{% if defaultFlag %} {% if defaultFlag %}
<th style="font-weight: bold"> <th style="font-weight: bold" data-i18n="sentimentClassification">
情感分类 情感分类
</th> </th>
{% endif %} {% endif %}
@@ -181,6 +183,7 @@
</a> </a>
</td> </td>
<td style="width:90px">{{ article[4] }}</td> <td style="width:90px">{{ article[4] }}</td>
<td style="width:90px" class="text-right">{{ article[5] }}</td>
<td style="width:90px">👍{{ article[1] }}</td> <td style="width:90px">👍{{ article[1] }}</td>
<td style="width:90px">🥇{{ article[2] }}</td> <td style="width:90px">🥇{{ article[2] }}</td>
<td style="width:90px">🔥{{ article[3] }}</td> <td style="width:90px">🔥{{ article[3] }}</td>
+12 -12
View File
@@ -1,12 +1,12 @@
{% extends 'base_page.html' %} {% extends 'base_page.html' %}
{% block title %} {% block title %}
舆情分析 <span data-i18n="yuqingChar">舆情分析</span>
{% endblock %} {% endblock %}
{% block nav %} {% block nav %}
<nav class="iq-sidebar-menu"> <nav class="iq-sidebar-menu">
<ul id="iq-sidebar-toggle" class="side-menu"> <ul id="iq-sidebar-toggle" class="side-menu">
<li class="px-3 pt-3 pb-2 "> <li class="px-3 pt-3 pb-2 ">
<span class="text-uppercase small font-weight-bold">首页</span> <span class="text-uppercase small font-weight-bold" data-i18n="home">首页</span>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
<a href="/page/home" class="svg-icon"> <a href="/page/home" class="svg-icon">
@@ -15,7 +15,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">首页</span> <span class="ml-2" data-i18n="home">首页</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -25,7 +25,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">热词统计</span> <span class="ml-2" data-i18n="hotWord">热词统计</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -35,11 +35,11 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">微博舆情统计</span> <span class="ml-2" data-i18n="tableData">微博舆情统计</span>
</a> </a>
</li> </li>
<li class="px-3 pt-3 pb-2 "> <li class="px-3 pt-3 pb-2 ">
<span class="text-uppercase small font-weight-bold">数据可视化</span> <span class="text-uppercase small font-weight-bold" data-i18n="dataVisualization">数据可视化</span>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
<a href="/page/articleChar" class="svg-icon"> <a href="/page/articleChar" class="svg-icon">
@@ -48,7 +48,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">文章分析</span> <span class="ml-2" data-i18n="articleChar">文章分析</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -100,7 +100,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor"> <svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path>
</svg> </svg>
</i><span class="ml-2">文章内容词云图</span> </i><span class="ml-2" data-i18n="articleCloud">文章内容词云图</span>
</a> </a>
</li> </li>
</ul> </ul>
@@ -112,7 +112,7 @@
<div class="row"> <div class="row">
<div class="col-md-12 mb-4 mt-1"> <div class="col-md-12 mb-4 mt-1">
<div class="d-flex flex-wrap justify-content-between align-items-center"> <div class="d-flex flex-wrap justify-content-between align-items-center">
<h4 class="font-weight-bold">舆情分析</h4> <h4 class="font-weight-bold" data-i18n="yuqingChar">舆情分析</h4>
</div> </div>
</div> </div>
</div> </div>
@@ -121,7 +121,7 @@
<div class="card card-block"> <div class="card card-block">
<div class="card-header d-flex justify-content-between pb-0"> <div class="card-header d-flex justify-content-between pb-0">
<div class="header-title"> <div class="header-title">
<h4 class="card-title mb-0">热词情感趋势柱状图</h4> <h4 class="card-title mb-0" data-i18n="hotWordSentimentTrendBar">热词情感趋势柱状图</h4>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -133,7 +133,7 @@
<div class="card card-block"> <div class="card card-block">
<div class="card-header d-flex justify-content-between pb-0"> <div class="card-header d-flex justify-content-between pb-0">
<div class="header-title"> <div class="header-title">
<h4 class="card-title mb-0">热词情感趋势树形图</h4> <h4 class="card-title mb-0" data-i18n="hotWordSentimentTrendTree">热词情感趋势树形图</h4>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
@@ -145,7 +145,7 @@
<div class="card card-block"> <div class="card card-block">
<div class="card-header d-flex justify-content-between pb-0"> <div class="card-header d-flex justify-content-between pb-0">
<div class="header-title"> <div class="header-title">
<h4 class="card-title mb-0">文章内容与评论内容舆情趋势饼状图</h4> <h4 class="card-title mb-0" data-i18n="articleCommentSentimentTrendPie">文章内容与评论内容舆情趋势饼状图</h4>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
+9 -9
View File
@@ -1,12 +1,12 @@
{% extends 'base_page.html' %} {% extends 'base_page.html' %}
{% block title %} {% block title %}
舆情预测 <span data-i18n="yuqingpredict">舆情预测</span>
{% endblock %} {% endblock %}
{% block nav %} {% block nav %}
<nav class="iq-sidebar-menu"> <nav class="iq-sidebar-menu">
<ul id="iq-sidebar-toggle" class="side-menu"> <ul id="iq-sidebar-toggle" class="side-menu">
<li class="px-3 pt-3 pb-2 "> <li class="px-3 pt-3 pb-2 ">
<span class="text-uppercase small font-weight-bold">首页</span> <span class="text-uppercase small font-weight-bold" data-i18n="home">首页</span>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
<a href="/page/home" class="svg-icon"> <a href="/page/home" class="svg-icon">
@@ -15,7 +15,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">首页</span> <span class="ml-2" data-i18n="home">首页</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -25,7 +25,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">热词统计</span> <span class="ml-2" data-i18n="hotWord">热词统计</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -35,11 +35,11 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">微博舆情统计</span> <span class="ml-2" data-i18n="tableData">微博舆情统计</span>
</a> </a>
</li> </li>
<li class="px-3 pt-3 pb-2 "> <li class="px-3 pt-3 pb-2 ">
<span class="text-uppercase small font-weight-bold">数据可视化</span> <span class="text-uppercase small font-weight-bold" data-i18n="dataVisualization">数据可视化</span>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
<a href="/page/articleChar" class="svg-icon"> <a href="/page/articleChar" class="svg-icon">
@@ -48,7 +48,7 @@
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
</svg> </svg>
</i> </i>
<span class="ml-2">文章分析</span> <span class="ml-2" data-i18n="articleChar">文章分析</span>
</a> </a>
</li> </li>
<li class=" sidebar-layout"> <li class=" sidebar-layout">
@@ -100,7 +100,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor"> <svg xmlns="http://www.w3.org/2000/svg" width="18" fill="none" viewbox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path>
</svg> </svg>
</i><span class="ml-2">文章内容词云图</span> </i><span class="ml-2" data-i18n="articleCloud">文章内容词云图</span>
</a> </a>
</li> </li>
</ul> </ul>
@@ -111,7 +111,7 @@
<div class="row"> <div class="row">
<div class="col-md-12 mb-4 mt-1"> <div class="col-md-12 mb-4 mt-1">
<div class="d-flex flex-wrap justify-content-between align-items-center"> <div class="d-flex flex-wrap justify-content-between align-items-center">
<h4 class="font-weight-bold">话题统计页</h4> <h4 class="font-weight-bold" data-i18n="topicStatisticsPage">话题统计页</h4>
</div> </div>
</div> </div>
</div> </div>
Binary file not shown.
@@ -5,6 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>微博舆情分析系统 | 登录</title> <title>微博舆情分析系统 | 登录</title>
<link rel="icon" href="../../../static/原神启动/favicon.ico" /> <link rel="icon" href="../../../static/原神启动/favicon.ico" />
<script src="/static/js/i18n.js"></script>
</head> </head>
<style> <style>
@@ -287,9 +288,31 @@
.yanzhengma:hover { .yanzhengma:hover {
color: #aa863e; color: #aa863e;
} }
/* 添加语言切换按钮样式 */
.language-switcher {
position: absolute;
top: 20px;
right: 20px;
background-color: rgba(255, 255, 255, 0.8);
padding: 8px 15px;
border-radius: 20px;
cursor: pointer;
z-index: 1000;
font-size: 14px;
transition: all 0.3s ease;
}
.language-switcher:hover {
background-color: rgba(255, 255, 255, 1);
}
</style> </style>
<body onclick="playAudio()"> <body onclick="playAudio()">
<div class="language-switcher" id="language-switcher">
<span id="language-text">切换语言</span>
</div>
<audio id="audio-player" autoplay class="hide-player"> <audio id="audio-player" autoplay class="hide-player">
<source <source
src="https://lovexl-oss.oss-cn-beijing.aliyuncs.com/bed/%E5%8E%9F%E7%A5%9E%E9%A6%96%E9%A1%B5%E8%83%8C%E6%99%AF%E9%9F%B3.mp4" src="https://lovexl-oss.oss-cn-beijing.aliyuncs.com/bed/%E5%8E%9F%E7%A5%9E%E9%A6%96%E9%A1%B5%E8%83%8C%E6%99%AF%E9%9F%B3.mp4"