zoukankan      html  css  js  c++  java
  • 结对第二次作业——某次疫情统计可视化的实现

    这个作业属于哪个课程 2020春 S班(福州大学)
    这个作业要求在哪里 结对第二次作业—某次疫情统计可视化的实现
    结对学号 221701421 & 221701422
    这个作业的目标 学习GitHub的高级功能/优化代码规范
    作业正文 作业正文
    Github仓库地址 地址
    代码规范 代码规范
    其他参考文献 CSDN/知乎/百度

    展示成品

    全国界面一览

    日期选择
    日期选择
    全国地图的现有情况
    全国 现有

    详细界面一览

    详情页面 新增曲线图
    详情页面 新增
    详情页面 累计治愈/死亡曲线图
    详情页面 治愈死亡

    患者流动界面一览

    患者流动页面 热门迁入图
    热门迁入
    患者流动页面 热门迁出图
    热门迁出

    图表界面一览

    图表定制-曲线图
    图表定制-曲线
    图表定制-柱状图
    图表定制-柱状图
    导出图片
    导出图片

    预防指南界面一览

    预防指南
    预防指南

    结对讨论过程描述

    分工合作

    在拿到这次题目后,我们迅速展开讨论,使用javaEE进行编写并划分了前后端,由我进行前端的编写,队友进行后端的编写。

    前端内容

    在前端中,主要要实现五个页面,分别是全国页面(epidemicCase.jsp),地方详情页面(epidemicDetails.jsp),患者流动查询页面(migration.jsp),图表定制页面(chartOrder.jsp)以及预防指南页面(proventGuide.jsp)。于是要分别实现相关的JavaScript代码以及css样式。

    后端内容

    在后端中,主要负责给前端提供数据。数据主要是对log日志的处理分类,接受前端的要求并提供相应的数据,如某个省的近十天新增感染/疑似/累计死亡数据等,或是全国所有省份某一天的感染、疑似、治愈以及死亡数据。另外,在实现日历时也是通过后端给出当月的日期。

    讨论截图

    讨论
    讨论
    讨论
    讨论
    讨论

    设计实现过程

    为了将项目的代码进行拆分,在我们讨论后,我们将功能拆分。以全国页面的设计为例。由于有两张地图,即现有确诊地图和累计确诊地图,即后台将数据给到前端后,前端使用jsp循环的方式,赋值给地图echarts的data。在这里我们用了一个很巧妙的思维,即累计确诊=现有确诊+累计治愈+累计死亡。而由于要可以选择日期,则前端会将日历中被选择的日期通过window.onload的parameter的方式给到后端,后端接受到选择的日期后返回对应日期的全国四类数据,前端收到后放到echarts的data里。不过要注意,由于第一次进入全国页面的时候是不会有日期的,所以后端会直接初始化一个日期,由后端判断处理。而现有确诊地图和累计确诊地图的切换则由前端通过JavaScript代码实现。
    前端功能结构
    后端功能结构

    代码说明

    显示各项数据

    通过provinceSMap去获得各项数据,并输出到页面

    	<div id="situationDiv">
    		<table>
    			<tr>
    				<th>现有确诊</th>
    				<th>现有疑似</th>
    				<th>累计治愈</th>
    				<th>累计死亡</th>
    			</tr>
    			<tr>
    				<%
    					//provincesMap在navigator.jsp中声明
    				%>
    				<td class="infect"><%=provincesMap.get(provinceName).getInfectNum()%></td>
    				<td class="suspected"><%=provincesMap.get(provinceName).getSuspectedNum()%></td>
    				<td class="cure"><%=provincesMap.get(provinceName).getCureNum()%></td>
    				<td class="died"><%=provincesMap.get(provinceName).getDiedNum()%></td>
    			</tr>
    		</table>
    	</div>
    

    日历跳转

    日历跳转,点击跳转后端获得相应数据

        	function initCalanderDetail(dateList, currentMonth, currentDay,
    		provinceName) {
    	var calander = echarts.init(document.getElementById("calander"));
    
    	var heatmapData = [];
    	var lunarData = [];
    	for (var i = 0; i < dateList.length; i++) {
    		heatmapData.push([ dateList[i][0], Math.random() * 300 ]);
    		lunarData.push({
    			value : [ dateList[i][0], 1, dateList[i][1], dateList[i][2] ],
    			symbol : 'rect', // 核心1,这边长方形来填充
    			itemStyle : {
    				color : '#81D0F1' // 填充色颜色
    			}
    		});
    	}
    	var option = {
    		visualMap : {
    			show : false,
    			min : 0,
    			max : 300,
    			calculable : true,
    			seriesIndex : [ 2 ],
    			orient : 'horizontal',
    			left : 'center',
    			bottom : 0,
    			inRange : {
    				color : [ '#fff', '#fff' ]
    			}
    		},
    		calendar : [ {
    			left : 'center',
    			top : 'middle',
    			cellSize : [ '80', '40' ], // 设置日历格的大小,可支持设置不同高宽
    			yearLabel : {
    				show : false
    			}, // 显示年度
    			orient : 'vertical', // 
    			dayLabel : {
    				firstDay : 1, // 从1号开始
    				margin : 0, // 星期标签与轴线之间的距离
    				padding : [ 15, 22, 15, 22 ],
    				backgroundColor : '#FAFAFA', // 可以是直接的颜色值,例如:'#123234', 'red', rgba(0,23,11,0.3)'
    				color : '#85807C',
    				nameMap : [ '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六' ]
    			// cn或者en,也可以是数组
    			},
    			monthLabel : {
    				show : false, // 显示月度
    				margin : 100
    			// 月份和y轴的间距
    			},
    			range : currentMonth, // 当前日历显示的月份
    			itemStyle : {
    				borderColor : '#F0F0F0'
    			},
    			splitLine : {
    				show : false
    			}
    		} ],
    
    		series : [ {
    			type : 'scatter',
    			coordinateSystem : 'calendar',
    			symbolSize : function(param, e, m) { // 核心2,把需要高亮的日期,宽度高度设置成和单元格宽度高度一样
    				if (e.value[0] == currentDay) {
    					return [ 80, 40 ]
    				} else {
    					return 1
    				}
    			},
    			label : {
    				normal : {
    					show : true,
    					formatter : function(params) {
    						var d = echarts.number.parseDate(params.value[0]);
    						return '
    ' + d.getDate() + '
    ';
    					},
    					textStyle : {
    						color : '#000'
    					}
    				}
    			},
    			data : lunarData
    		}, {
    			type : 'scatter',
    			coordinateSystem : 'calendar',
    			symbolSize : 1,
    			label : {
    				normal : {
    					show : true,
    					formatter : function(params) {
    						return '
    
    
    ' + (params.value[3] || '');
    					},
    					textStyle : {
    						fontSize : 14,
    						fontWeight : 600,
    						color : '#a00'
    					}
    				}
    			},
    			data : lunarData
    		}, {
    			type : 'heatmap',
    			coordinateSystem : 'calendar',
    			data : heatmapData
    		} ]
    	};
    
    	calander.on('click', function(params) {
    		currentDay = params.value[0];
    		calander.setOption(option);
    		window.location.href = "PrepareServlet?currentDay=" + currentDay
    				+ "&currentMonth="
    		currentMonth + "&provinceName=" + provinceName;
    
    	});
    	calander.setOption(option);
    }
    

    心路历程与收获/评价结对队友

    这次作业增强了我对github的使用,以及多人push与pull对同一个项目的影响。同时,我也对javaEE的操作更加熟悉了,不论是JSP页面之间的跳转还是servlet的处理,我都能弄得还算有模有样了。
    队友评价:
    队友是很可靠的,尤其是处理我前端需要的数据时,给了很大帮助,下次结对作业见。

  • 相关阅读:
    [Step By Step]SAP HANA PAL多元线性回归预测分析Linear Regression实例FORECASTWITHLR(预测) 沧海
    [Step By Step]SAP HANA PAL多元指数回归预测分析Multiple Exponential Regression编程实例FORECASTWITHEXPR(预测) 沧海
    [PAL编程规范]SAP HANA PAL双变量几何回归预测分析Bi Variate Geometric Regression编程规范GEOREGRESSION(模型) 沧海
    [PAL编程规范]SAP HANA PAL指数回归预测分析Exponential Regression编程规范EXPREGRESSION(模型) 沧海
    [PAL编程规范]SAP HANA PAL多项式回归预测分析Polynomial Regression编程规范FORECASTWITHPOLYNOMIALR(预测) 沧海
    [PAL编程规范]SAP HANA PAL双变量自然对数回归预测分析BiVariate Natural Logarithmic Regression编程规范FORECASTWITHLNR(预测) 沧海
    [Step By Step]SAP HANA PAL指数回归预测分析Exponential Regression编程实例EXPREGRESSION(模型) 沧海
    [Step By Step]SAP HANA PAL双变量几何回归预测分析Bi Variate Geometric Regression编程实例FORECASTWITHGEOR(预测) 沧海
    [Step By Step]SAP HANA PAL多项式回归预测分析Polynomial Regression编程实例POLYNOMIALREGRESSION(模型) 沧海
    [Step By Step]SAP HANA PAL指数回归预测分析Exponential Regression编程实例FORECASTWITHEXPR(预测) 沧海
  • 原文地址:https://www.cnblogs.com/hjsblog/p/12503603.html
Copyright © 2011-2022 走看看