Flask + Echarts 制作 仪表盘
下载
https://echarts.apache.org/examples/zh/index.html
代码展示
- html
{% extends 'layout.html' %}
{% block xx %}
<blockquote class="layui-elem-quote">
看板开发ing <a class="layui-font-blue" href="" target="_blank">other dashboards</a> 的页面,敬请期待。
</blockquote>
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
<legend> Dashboards</legend>
</fieldset>
<div class="layui-row">
<div class="layui-col-md6">
<div class="grid-demo grid-demo-bg1">
<div id="contest" style="width: 600px;height:400px;">
</div>
</div>
</div>
<div class="layui-col-md6">
<div class="grid-demo">
<div class="layui-bg-gray" style="padding: 30px;">
<div class="layui-row layui-col-space15">
<div class="layui-col-md6">
<div class="layui-card">
<div class="layui-card-header">在线人数 </div>
<div class="layui-card-body">
<br>
<br>
<br>
<h1 style="height: 90px;width: 90px;"> {{ login_count_online }}</h1>
<br>
<br>
<br>
<br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="layui-row">
<div class="layui-col-xs6">
<div id="main" style="width: 500px;height:400px;" class="grid-demo grid-demo-bg1"></div>
</div>
<div class="layui-col-xs6">
<div id='tests' style='width:500px;height:400px;' class="grid-demo"></div>
</div>
</div>
{% endblock %}
{% block js %}
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('contest'));
// 指定图表的配置项和数据
var option = {
title: {
text: 'Resource percentage analysis chart',
subtext: 'Resource Data',
left: 'center'
},
tooltip: {
trigger: 'item'
},
legend: {
orient: 'vertical',
left: 'left'
},
series: [
{
name: 'Access From',
type: 'pie',
radius: '50%',
data: [
{% for data in data_js %}
{value:{{ data.value }}, name: '{{data.name}}'},
{% endfor %}
],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
myChart.setOption(option);
</script>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: 'Resource histogram chart'
},
tooltip: {},
legend: {
data: ['数量']
},
xAxis: {
data: {{ data_name|safe }}
},
yAxis: {},
series: [{
name: '资产类型',
type: 'bar',
data: {{ data_value|safe }}
}]
};
myChart.setOption(option);
</script>
<script>
var myChart = echarts.init(document.getElementById('tests'));
var option = {
title: {text: '浏览量统计'},
tooltip: {},
legend: {data: ['浏览量']},
xAxis: {
data:{{ date|safe }}
},
yAxis: {},
series: [{
name: '浏览量',
type: 'line',
data:{{ value|safe }}
}]
};
myChart.setOption(option);
</script>
{% endblock %}
- flask
@dashboard.route('/', methods=['GET'])
@login_required
def index1():
login_count_online = get_keys_pattern_count('login')
print('/ wecome! hello', '##login_count_online:', login_count_online, type(login_count_online))
date_list1 = date_list(7)
count_login = []
for i in date_list1:
login_count = user_login.query.filter(user_login.date_time.like("%%{tdate}%%".format(tdate=i))).count()
count_login.append(login_count)
resource_dic = db.session.query(func.count(Resources.id), Select.select_name).filter(
Resources.parent_id == Select.select_id).group_by(Resources.parent_id).all()
# [(2, 'ip'), (5, 'conferenceroomname'), (1, 'server'), (1, 'printer')]
data_js = []
data_value = []
data_name = []
for j in resource_dic:
l2 = {}
l2['value'] = j[0]
data_value.append(j[0])
l2["name"] = j[1]
data_name.append(j[1])
data_js.append(l2)
print("###data_js:", data_js)
db.session.close()
print("##date_list1:", date_list1, "##count_login:", count_login)
print("##data_js", data_js)
print("##data_value", data_value)
print("##data_name", data_name)
print("##login_count_online", login_count_online)
return render_template('index.html', date=date_list1, value=count_login, data_js=data_js, data_value=data_value,
data_name=data_name, login_count_online=login_count_online)
/ wecome! hello ##login_count_online: 2 <class 'int'>
['2022-08-31', '2022-09-01', '2022-09-02', '2022-09-03', '2022-09-04', '2022-09-05', '2022-09-06']
###data_js: [{'value': 2, 'name': 'instancehost'}, {'value': 5, 'name': 'conferenceroomname'}, {'value': 1, 'name': 'server'}, {'value': 1, 'name': 'printer'}]
##date_list1: ['2022-08-31', '2022-09-01', '2022-09-02', '2022-09-03', '2022-09-04', '2022-09-05', '2022-09-06'] ##count_login: [1, 0, 1, 0, 0, 0, 0]
##data_js [{'value': 2, 'name': 'instancehost'}, {'value': 5, 'name': 'conferenceroomname'}, {'value': 1, 'name': 'server'}, {'value': 1, 'name': 'printer'}]
##data_value [2, 5, 1, 1]
##data_name ['instancehost', 'conferenceroomname', 'server', 'printer']
##login_count_online 2
推荐阅读
axure rp 9 安装AntDesign3.9.x_Axure
{代码...} {代码...}
台湾省委书记阅读 166
CSS 如何让auto height完美支持过渡动画?
欢迎关注我的公众号:前端侦探众所周知,高度在设置成auto关键词时是不会触发transition过渡动画的,下面是伪代码 {代码...} 效果如下如果希望展开时有过渡动画,例如这样通常是借助 JS 动态去获取元素的高度(还...
XboxYan赞 17阅读 1.3k评论 2
那些不用js也能实现的效果
本文首发于公众号:GitWeb,欢迎关注,接收首发推文本文列举几个不需要使用js也能实现的效果一、页面回到顶部回到顶部是页面开发中很常见的一个功能,一般的做法是对回到顶部组件做一个监听,当用户点击的时候,...
阿山赞 10阅读 601评论 4
前端开发工具
前端教程阿西河前端教程丨一个助你成为全栈开发的网站前端高手进阶JavaScript利用js实现表单的校验KeyCode 查询表现代 JavaScript 教程时间戳(Unix timestamp)转换工具HTML minifierJavaScript代码压缩-js代码压...
寒青赞 14阅读 2.6k
英雄联盟比赛选手的六芒星能力图动画是如何制作的?
最近,在看 LPL 比赛的时候,看到这样一个有意思的六芒星能力图动画:今天,我们就来使用纯 CSS 实现这样一个动画效果!实现背景网格对于如下这样一个背景网格,最好的方式当然肯定是切图。如果一定要使用 CSS,...
chokcoco赞 11阅读 476
你可能不知道的dialog弹窗
想必大家都知道 HTML5 中有 dialog 这样一个标签,顾名思义,就是“弹窗”。除了有良好的语义外,随着浏览器的不断更新迭代,还出现了许多你可能不知道的特性,快速了解一下吧~
XboxYan赞 9阅读 903
学会了slidev.js的开发者, 也许可以考虑不用ppt了?
    作为一个开发者, 每次使用PPT或者Word写简历或者述职都好痛苦啊, 这些App也不太适合展示代码, 但是今天来的家人们有福了, 一款叫做是slidev的库露出了邪魅的微笑 官网地址。
lulu_up赞 7阅读 762
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。