原已实现从Jira平台抓取数据,并写人数据库中
因数据的直观性和可对比性,现需将数据绘制成曲线图的形式
计划将各个项目分别以Week为单位绘制新增bug数、关闭bug数以及遗留bug数的曲线图
在Jira平台数据自动化获取中,我们已实现了从Jira平台中抓取数据并写入Mysql中,但在实现的时候,是以当前时间Now为名称创建数据表格,现需要把每周的数据都写入在一个表格中,故增加一个“周”的表头,数据类型为INT
对于对应的日期,需要判断该日期的星期数
1. 通过分割字符串,获取输入日期的年、月、日的值
2. 判断是否为闰年,定义二月份的天数
3. 根据获取到的月份数,求和得到该日期在一年中的天数
4. 求得该日期的星期数
实现代码如下:
/** 输入日期,获得星期数 参数:Dateinput 日期,如:"2016-3-24" */
function theWeek(Dateinput) {
arr = Dateinput.split('-');
//必须转为数字类型
var intyears = parseInt(arr[0]);
var intmouths = parseInt(arr[1]);
var intdays = parseInt(arr[2]);
var totalDays = 0;
if (intyears < 1000)
intyears += 1900
var days = new Array(12);
days[0] = 31;
days[2] = 31;
days[3] = 30;
days[4] = 31;
days[5] = 30;
days[6] = 31;
days[7] = 31;
days[8] = 30;
days[9] = 31;
days[10] = 30;
days[11] = 31;
//判断是否为闰年,针对2月的天数进行计算
if (Math.round(intyears / 4) == intyears / 4) {
days[1] = 29
} else {
days[1] = 28
}
if (intmouths == 1) {
totalDays = totalDays + intdays;
} else {
for (var count = 1; count < intmouths; count++) {
totalDays = totalDays + days[count - 1];
}
totalDays = totalDays + intdays;
}
//得到第几周
var week = Math.round(totalDays / 7);
console.log("the week is "+week);
return week;
}
theWeek("2016-3-24");
运行后输出结果为:
the week is 12
如下:
数据表格:
创建读取数据库的jiraMysqlQuery.js文件
1.创建数据库连接
var connection = mysql.createConnection({
//主机
host: 'localhost',
//用户名
user: 'root',
//密码
password: '123456',
//端口号
port: '3306'
});
2.读取数据库对应表格的数据
connection.query('USE nodejs_mysql_test');
connection.query('select id', function (err, data) {
callback(err, data);
});
由于需要读取的是2016project表格中的项目名称、新增bug数、遗留bug数、关闭bug数、周等数据
connection.query('USE nodejs_mysql_test');
connection.query('select id,项目名称,新增bug数,遗留bug数,关闭bug数,周 from 2016project where 项目名称 = "SeewoLink" ;', function (err, data) {
callback(err, data);
connection.destroy();
});
order by 周 ASC
来实现升序排列 需要不断去调用读取数据库的函数,故将读取的函数封装并将值抛出
实现的代码如下:
var mysql = require('mysql');
var checkProjectBugNumber = function(projectName, callback) {
var connection = mysql.createConnection({
//主机
host: 'localhost',
//用户名
user: 'root',
//密码
password: '123456',
//端口号
port: '3306'
});
connection.query('USE nodejs_mysql_test');
connection.query('select id, 项目名称 as name, 新增bug数 as newBugsNumber, 遗留bug数 as remainBugsNumber,'
+ ' 关闭bug数 as closedBugsNumber, 周 as week from 2016project where 项目名称 = "' + projectName + '" '
+ ' order by 周 ASC;', function (err, data) {
callback(err, data);
connection.destroy();
});
};
exports.checkProjectBugNumber = checkProjectBugNumber;