显示查询速度等级

This commit is contained in:
木鱼(iFish) 2015-11-20 14:53:52 +08:00
parent ba9d32164c
commit 676770dd4d
6 changed files with 201 additions and 82 deletions

View File

@ -74,3 +74,47 @@
.cancel-button {
}
/*查询速度表*/
#speed-meter {
position: fixed;
left: 0;
bottom: 0;
padding: 5px;
border: 1px solid #C2DEC2;
background: #EEF9EE;
font-size: 12px;
color: #50A050;
transition: all linear 0.5s;
opacity: 0;
}
#speed-meter.visible {
opacity: 1;
}
#speed-meter.visible:hover {
opacity: 0.3;
}
#speed-meter span {
font-weight: bold;
}
#speed-meter.speed-good {
border-color: #C2DEC2;
background-color: #EEF9EE;
color: #50A050;
}
#speed-meter.speed-normal {
border-color: #C2C8DE;
background-color: #EEF2F9;
color: #506CA0;
}
#speed-meter.speed-bad {
border-color: #DEC2C2;
background-color: #F9EEEE;
color: #A05050;
}

View File

@ -1315,6 +1315,10 @@
(关注微信后按提醒输入的哦)
</p>
</section>
<section id="speed-meter">
<i class="fa fa-clock-o"></i>
当前查询网速为 <span>1</span>级 (<span></span>毫秒)
</section>
<script src="js/modules/jquery/jquery.js"></script>
<script src="js/modules/underscore/underscore.js"></script>
<script src="js/modules/colorbox/jquery.colorbox.js"></script>

View File

@ -21,7 +21,9 @@
while (lastQueryTimes.length > 20)
lastQueryTimes.shift();
averageQueryTime = lastQueryTimes.length > 0 ? _.reduce(lastQueryTimes, function (x, y) { return x + y; }) / lastQueryTimes : 0;
averageQueryTime = lastQueryTimes.length > 0 ? _.reduce(lastQueryTimes, function (x, y) {
return x + y;
}) / lastQueryTimes.length : 0;
};
Object.defineProperty(exports, "averageQueryTime", {
get: function () {
@ -36,7 +38,9 @@
var detectSuggest = function (result) {
result.suggestTransit = result.available.length > 0 && result.available.length <= 3;
var notFeCount = _.count(result.available, function (t) { return t.from.endpoint && t.to.endpoint; });
var notFeCount = _.count(result.available, function (t) {
return t.from.endpoint && t.to.endpoint;
});
result.suggestMoreStat = notFeCount < 4 && notFeCount < result.available.length / 3;
result.hasSuggest = result.suggestMoreStat | result.suggestTransit;
@ -72,7 +76,8 @@
data.push(seat);
}
}
};
}
;
return data;
};
@ -80,10 +85,20 @@
var result = data;
if (!Array.isArray(result.data) || !result.data.length || !result.data[0].queryLeftNewDTO) {
exports.events.fireEvent("requestFailed");
};
}
;
var date = query.date;
var trainData = { query: query, raw: result, rawTrainMap: {}, trainMap: {}, auto: null, nextTime: null, noProcess: noProcess, noAction: noAction };
var trainData = {
query: query,
raw: result,
rawTrainMap: {},
trainMap: {},
auto: null,
nextTime: null,
noProcess: noProcess,
noAction: noAction
};
var messages = (result.messages || []).join("");
trainData.notInSellTime = messages.indexOf("在预售日期范围") !== -1;
@ -133,7 +148,9 @@
};
var kp = getTicketInfo(t.queryLeftNewDTO.yp_info);
train.tickets = kp;
train.ticketMap = _.mapObject(kp, function (e) { return e.code; });
train.ticketMap = _.mapObject(kp, function (e) {
return e.code;
});
//起售时间
var selltimem = /(0*(\d+)月0*(\d+)日)?(\d+)\s*点\s*((\d+)分)?\s*起售/i.exec(t.buttonTextInfo.replace(/<.*?>/g, ''));
@ -266,7 +283,9 @@
};
var cookie = (function (obj) {
var arr = [];
_.forEach(obj, function (v, k) { arr.push(k + '=' + v); });
_.forEach(obj, function (v, k) {
arr.push(k + '=' + v);
});
return arr.join("; ");
})(extensionVersion >= 720 ? {
"_jc_save_fromStation": escape(fromName + "," + from),

View File

@ -229,7 +229,9 @@
ui_result.resetStatus();
//检查学生票是否对应
if (cp.studentTicket && cp.passengers && cp.passengers.length) {
if (_.some(cp.passengers, function (p) { return p.passenger_type !== '3'; })) {
if (_.some(cp.passengers, function (p) {
return p.passenger_type !== '3';
})) {
mp.confirm("确认", "您选择的是学生票,但是添加的联系人并不全是学生,将无法提交订单,确定继续查票吗?", ui_result.load);
} else {
//ui_result.load();
@ -310,6 +312,9 @@
//服务器加速
require("./ui-dnsspeeding.js");
//速度表
require("./widget-queryspeedmeter.js");
//暂时屏蔽
//$.showModalDialog("由于12306的验证码调整请暂时使用官网购票。助手会回来的感谢您的关注。这是12306的进步请为12306点赞 :-)", {
// image: "/images/cat.png",

View File

@ -0,0 +1,25 @@
define(function (require, exports, module) {
var queryTicket = require("../otn/queryticket.js");
var utility = require("../otn/utility.js");
var container = $("#speed-meter");
var refreshMeter = function () {
container.removeClass();
var speed = queryTicket.averageQueryTime;
if (speed == null || isNaN(speed)) {
return;
}
var level = speed / 50;
var star = level <= 2 ? 1 : level <= 6 ? 2 : level <= 10 ? 3 : level <= 14 ? 4 : 5;
var cssClass = star === 1 ? "good" : star < 4 ? "normal" : "bad";
container.show();
container.find("span:eq(0)").html(star);
container.find("span:eq(1)").html(Math.round(speed));
container.removeClass().addClass("visible speed-" + cssClass);
};
setInterval(refreshMeter, 1000);
});

View File

@ -7,6 +7,28 @@
return new Date(d.getFullYear(), d.getMonth(), d.getDate());
};
/**
* 格式化数字显示
* @param {number} number 要格式化的数字
* @param {number} digits 要保留的数字位数
*/
exports.formatNumber = function (number, digits) {
digits = digits || 2;
var str = '' + Math.round(number * (10 ^ digits)) / (10 ^ digits);
var fc = digits;
var idx = str.indexOf(".");
if (idx != -1) fc = digits - str.length - idx - 1;
else str += ".";
var ab = [];
for (var i = 0; i < fc; i++) {
ab.push("0");
}
return str + ab.join("");
};
//exports.addDays = function (date, days) {
// var x = new Date();
// x.setTime(date.getTime() - date.getTime() % (1000 * 3600 * 24) + 1000 * 3600 * 24 * days);