bh组件
bhTimePicker
e.fn.bhTimePicker = function(t, a) {
var n;
return n = this.data("bhTimePicker"),
n ? !0 === t ? n : "string" === e.type(t) ? n[t](a) : this : this.each(function() {
return e(this).data("bhTimePicker", new R(this,t))
})
}
对外开放接口
R = function() {
function a(a, n) {
var i = {
defaultType: "custom",
width: "",
isFixTime: !1,
format: "YYYY-MM-DD",
range: {
max: "",
min: ""
},
time: {
start: "",
end: ""
},
isDisable: !1,
selectedTime: null,
ready: null
};
this.settings = e.extend({}, i, n),
this.settings.format && (this.settings.format = this.settings.format.replace("yyyy", "YYYY"),
this.settings.format = this.settings.format.replace("-dd", "-DD")),
this.$rootElement = e(a),
t(this)
}
return a.prototype.getValue = function() {
var e = null
, t = null
, a = this.startTimeDom.children("input")
, n = this.endTimeDom.children("input");
a.attr("disabled") || (e = a.data("DateTimePicker").date() ? a.data("DateTimePicker").date()._d : ""),
n.attr("disabled") || (t = n.data("DateTimePicker").date() ? n.data("DateTimePicker").date()._d : "");
var i = this.popupBoxDom.find('div[bh-time-picker-role="selectType"]').jqxDropDownList("getSelectedItem")
, o = i.value;
return 10 === this.settings.format.length && this.settings.isFixTime ? {
startTime: e ? moment(e).format(this.settings.format) + " 00:00:00" : "",
endTime: t ? moment(t).format(this.settings.format) + " 23:59:59" : "",
type: o
} : {
startTime: e ? moment(e).format(this.settings.format) : "",
endTime: t ? moment(t).format(this.settings.format) : "",
type: o
}
}
,
a.prototype.setValue = function(e) {
v(this, e.startTime ? $(e.startTime) : this.startTimeDom.children("input").data("DateTimePicker").date()._d, e.endTime ? $(e.endTime) : this.endTimeDom.children("input").data("DateTimePicker").date()._d),
B(this, this.popupBoxDom.find('div[bh-time-picker-role="selectCustom"]'))
}
,
a.prototype.setDisable = function() {
this.$rootElement.children('div[bh-time-picker-role="rangeBox"]').append('<div class="bh-timePick-disable" bh-time-picker-role="disableBlock"></div>')
}
,
a.prototype.setEnable = function() {
this.$rootElement.find('div[bh-time-picker-role="disableBlock"]').remove()
}
,
a.prototype.setType = function(e) {
this.popupBoxDom.find('div[bh-time-picker-role="selectType"]').jqxDropDownList("selectItem", e)
}
,
a.prototype.remove = function() {
this.$selectType.jqxDropDownList("destroy"),
this.popupBoxDom.remove(),
this.$rootElement.remove()
}
,
a
}(),
全部源码
function(e) {
"use strict";
function t(t) {
var i = new Date
, o = a(t, i)
, s = e(o);
t.rangeBoxDom = s,
t.$rootElement.html(s),
r(s, t);
var l = n(t, i)
, h = e(l);
t.popupBoxDom = h;
var u = e("body");
u.append(h),
c(t, i),
d(t),
u.on("click", function(a) {
var n = e(a.target || a.srcElement);
if (n.closest('div[bh-time-picker-role="rangeBox"]').length > 0 || n.closest('div[bh-time-picker-role="selectBoxCont"]').length > 0 || n.closest("div.jqx-calendar").length > 0 || n.closest("div.jqx-listbox").length > 0)
return void u.removeData("bhTimePick");
var i = t.rangeBoxDom;
if (i.hasClass("bh-active")) {
if (u.data("bhTimePick"))
return void u.removeData("bhTimePick");
i.find('div[bh-time-picker-role="rangeBoxSelectTime"]').click()
}
})
}
function a(e, t) {
var a, n;
a = e.settings.time.start && "today" !== e.settings.time.start ? $(e.settings.time.start) : t,
n = e.settings.time.end && "today" !== e.settings.time.end ? $(e.settings.time.end) : t;
var i = P(a, e)
, o = P(n, e)
, r = i + "-" + o
, s = "";
e.settings.width && (s = "width: " + parseInt(e.settings.width, 10) + "px;");
var l = "";
return e.settings.isDisable && (l = '<div class="bh-timePick-disable" bh-time-picker-role="disableBlock"></div>'),
'<div class="bh-timePicker-rangeBox bh-clearfix" bh-time-picker-role="rangeBox" style="' + s + '"><div class="bh-timePicker-rangeBox-selectIcon bh-left" bh-time-picker-role="rangeBoxPre"><</div><div class="bh-timePicker-rangeBox-time" bh-time-picker-role="rangeBoxSelectTime">' + r + '</div><div class="bh-timePicker-rangeBox-selectIcon bh-right" bh-time-picker-role="rangeBoxNext">></div>' + l + '</div><div class="bh-clearfix"></div>'
}
function n(t, a) {
var n = o(t, a)
, r = 0
, s = a.getFullYear()
, l = t.settings.range.max && "today" !== t.settings.range.max ? $(t.settings.range.max).getFullYear() : s
, d = t.settings.range.min && "today" !== t.settings.range.min ? $(t.settings.range.min).getFullYear() : s
, c = t.settings.range.max && s >= l
, h = t.settings.range.min && s <= d;
return r = l,
r > s && (r = s),
'<div class="bh-timePick-selectBoxCont" bh-time-picker-role="selectBoxCont"><div class="bh-timePick-selectBox bh-card bh-card-lv2" bh-time-picker-role="selectBox"><ul class="bh-timePick-tab" bh-time-picker-role="selectTab"><li class="bh-timePick-tabItem bh-active">' + e.i18n("bha-ticker2-customSelection") + '</li><li class="bh-timePick-tabItem">' + e.i18n("bha-ticker2-chooseMonthly") + '</li></ul><div class="bh-timePick-tabContent" bh-time-picker-role="selectTabContent"><div class="bh-timePick-custom bh-active"><div class="bh-timePick-customTime bh-clearfix" bh-time-picker-role="selectCustom"><div class="bh-timePick-selectType" bh-time-picker-role="selectType"></div><div class="bhtc-input-group" bh-time-picker-role="selectStart">' + i() + '</div><div class="bh-timePick-selectConnect"></div><div class="bhtc-input-group" bh-time-picker-role="selectEnd">' + i() + '</div></div><a class="bh-btn bh-btn-primary bh-btn-block" bh-time-picker-role="selectOk" href="javascript:void(0);">' + e.i18n("bha-ticker2-confirm") + '</a></div><div class="bh-timePick-selectMonthCont" bh-time-picker-role="selectMonthBlock"><div class="bh-timePick-selectMonth bh-timePicker-rangeBox bh-clearfix"><div class="bh-timePicker-rangeBox-selectIcon bh-left ' + (h ? "bh-disabled" : "") + '" bh-time-picker-role="selectMonthPre"><</div><div class="bh-timePicker-rangeBox-time" bh-time-picker-role="selectMonthYear">' + r + e.i18n("bha-ticker2-year") + '</div><div class="bh-timePicker-rangeBox-selectIcon bh-right ' + (c ? "bh-disabled" : "") + '" bh-time-picker-role="selectMonthNext">></div></div><div class="bh-timePicker-selectMonthList bh-clearfix" bh-time-picker-role="selectMonthList">' + n + "</div></div></div></div></div>"
}
function i() {
return '<input type="text" class="bh-form-control"/><span class="bhtc-input-group-addon"><i class="iconfont icon-daterange"></i></span>'
}
function o(t, a, n) {
var i = ""
, o = a.getFullYear()
, r = 0
, s = 0
, l = 0
, d = 0;
if (t.settings.range.max)
if ("today" !== t.settings.range.max) {
var c = $(t.settings.range.max);
r = c.getFullYear(),
s = c.getMonth()
} else {
var h = new Date;
r = h.getFullYear(),
s = h.getMonth()
}
if (t.settings.range.min)
if ("today" !== t.settings.range.min) {
var u = $(t.settings.range.min);
l = u.getFullYear(),
d = u.getMonth()
} else {
var h = new Date;
l = h.getFullYear(),
d = h.getMonth()
}
for (var p = 0; p < 12; p++) {
var f = p + 1
, b = "";
r && l ? l !== r ? l < o && o < r ? b = "bh-pre" : l === o ? p >= d && (b = "bh-pre") : o === r && p <= s && (b = "bh-pre") : d <= p && p <= s && (b = "bh-pre") : r ? r > o ? b = "bh-pre" : p <= s && (b = "bh-pre") : l ? l < o ? b = "bh-pre" : p >= d && (b = "bh-pre") : b = "bh-pre",
"en" === e.i18n().locale ? i += '<div class="bh-timePick-monthItem ' + b + '" data-month="' + f + '" bh-time-picker-role="selectMonthItem">' + e.i18n("bha-ticker1-month" + f) + "</div>" : i += '<div class="bh-timePick-monthItem ' + b + '" data-month="' + f + '" bh-time-picker-role="selectMonthItem">' + f + e.i18n("bha-ticker1-month") + "</div>"
}
return i
}
function r(t, a) {
t.on("click", function(n) {
switch (a.$rootElement.removeData("selectType"),
e(n.target || n.srcElement).attr("bh-time-picker-role")) {
case "rangeBoxPre":
L("pre", a);
break;
case "rangeBoxNext":
L("next", a);
break;
case "rangeBoxSelectTime":
s(a, t)
}
})
}
function s(t, a) {
var n = t.popupBoxDom
, i = n.children('div[bh-time-picker-role="selectBox"]');
if (a.hasClass("bh-active"))
l(t);
else {
var o = BH_UTILS.getElementPosition(a)
, r = {
top: o.bottom,
left: o.left + 20,
display: "block"
}
, s = 0;
e("body").find(".jqx-window").each(function() {
var t = parseInt(e(this).css("z-index"), 10);
t > s && (s = t)
}),
s > 9999 && (r["z-index"] = s),
n.css(r),
a.addClass("bh-active"),
setTimeout(function() {
i.addClass("bh-active")
}, 10)
}
}
function l(e) {
var t = e.popupBoxDom
, a = t.children('div[bh-time-picker-role="selectBox"]');
a.find('div[bh-time-picker-role="rangeBoxSelectTime"]').click(),
a.removeClass("bh-active"),
setTimeout(function() {
t.hide()
}, 450),
e.rangeBoxDom.removeClass("bh-active")
}
function d(t) {
t.popupBoxDom.on("click", ".bh-timePick-tabItem", function() {
var a = e(this);
if (!a.hasClass("bh-active")) {
var n = a.index();
a.closest("ul").find("li").removeClass("bh-active"),
a.addClass("bh-active");
var i = t.popupBoxDom.children('div[bh-time-picker-role="selectBox"]').children('div[bh-time-picker-role="selectTabContent"]').children();
i.removeClass("bh-active"),
i.eq(n).addClass("bh-active")
}
});
var a = t.popupBoxDom.find('div[bh-time-picker-role="selectCustom"]')
, n = a.children('div[bh-time-picker-role="selectStart"]').children("input")
, i = a.children('div[bh-time-picker-role="selectEnd"]').children("input")
, o = a.find('div[bh-time-picker-role="selectType"]');
n.on("dp.change", function(e) {
B(t, a),
A(a, "start", t)
}),
i.on("dp.change", function(e) {
B(t, a),
A(a, "end", t)
}),
n.on("mouseover", function(e) {
t.$rootElement.removeData("selectType")
}),
i.on("mouseover", function(e) {
t.$rootElement.removeData("selectType")
}),
o.on("change", function(e) {
var a = e.args;
if (a) {
var n = a.item.value;
t.$rootElement.data("selectType", n),
p({
value: n
}, t)
}
}),
t.popupBoxDom.on("click", '[bh-time-picker-role="selectOk"]', function() {
var e = n.data("DateTimePicker").date() ? n.data("DateTimePicker").date()._d : ""
, o = i.data("DateTimePicker").date() ? i.data("DateTimePicker").date()._d : ""
, r = t.getValue()
, s = r.startTime
, d = r.endTime;
S(t, e, o),
l(t);
var c = a.find('div[bh-time-picker-role="selectType"]').jqxDropDownList("getSelectedItem").value;
t.$rootElement.trigger("selectedTime", [s, d, c]),
void 0 !== t.settings.selectedTime && t.settings.selectedTime instanceof Function && t.settings.selectedTime(s, d, c)
}),
t.popupBoxDom.on("click", '[bh-time-picker-role="selectMonthPre"]', function() {
e(this).hasClass("bh-disabled") || D(e(this).closest('div[bh-time-picker-role="selectMonthBlock"]'), "pre", t)
}),
t.popupBoxDom.on("click", '[bh-time-picker-role="selectMonthNext"]', function() {
e(this).hasClass("bh-disabled") || D(e(this).closest('div[bh-time-picker-role="selectMonthBlock"]'), "next", t)
}),
t.popupBoxDom.on("click", '[bh-time-picker-role="selectMonthItem"]', function() {
I(e(this), t)
})
}
function c(e, t) {
var a = e.popupBoxDom.find('div[bh-time-picker-role="selectCustom"]')
, n = a.find('div[bh-time-picker-role="selectType"]')
, i = a.find('div[bh-time-picker-role="selectStart"]')
, o = a.find('div[bh-time-picker-role="selectEnd"]');
e.startTimeDom = i,
e.endTimeDom = o,
e.$selectType = n,
h(n, e),
u(i, t, "start", e),
u(o, t, "end", e),
p({
value: e.settings.defaultType
}, e)
}
function h(t, a) {
var n = [{
name: e.i18n("bha-ticker2-custom"),
value: "custom"
}, {
name: e.i18n("bha-ticker2-all"),
value: "all"
}, {
name: e.i18n("bha-ticker2-startEmpty"),
value: "startEmpty"
}, {
name: e.i18n("bha-ticker2-endEmpty"),
value: "endEmpty"
}, {
name: e.i18n("bha-ticker2-today"),
value: "today"
}, {
name: e.i18n("bha-ticker2-currentWeek"),
value: "currentWeek"
}, {
name: e.i18n("bha-ticker2-lastWeek"),
value: "lastWeek"
}, {
name: e.i18n("bha-ticker2-currentMonth"),
value: "currentMonth"
}, {
name: e.i18n("bha-ticker2-lastMonth"),
value: "lastMonth"
}, {
name: e.i18n("bha-ticker2-currentQuarter"),
value: "currentQuarter"
}, {
name: e.i18n("bha-ticker2-lastQuarter"),
value: "lastQuarter"
}, {
name: e.i18n("bha-ticker2-currentYear"),
value: "currentYear"
}, {
name: e.i18n("bha-ticker2-lastYear"),
value: "lastYear"
}, {
name: e.i18n("bha-ticker2-last7Day"),
value: "last7Day"
}, {
name: e.i18n("bha-ticker2-last30Day"),
value: "last30Day"
}]
, i = 0;
e.grep(n, function(e, t) {
if (a.settings.defaultType === e.value)
return i = t,
!0
}),
a.settings.format && a.settings.format.match(/MM$/) && (n = n.filter(function(e) {
return -1 === ["today", "currentWeek", "lastWeek"].indexOf(e.value)
})),
t.jqxDropDownList({
width: "80px",
source: n,
selectedIndex: i,
autoDropDownHeight: !0,
valueMember: "value",
displayMember: "name"
})
}
function u(e, t, a, n) {
var i;
i = "start" === a ? n.settings.time.start && "today" !== n.settings.time.start ? $(n.settings.time.start) : t : n.settings.time.end && "today" !== n.settings.time.end ? $(n.settings.time.end) : t;
var o = n.settings && n.settings.range && n.settings.range.max
, r = n.settings && n.settings.range && n.settings.range.min;
e.children("input").datetimepicker({
format: n.settings.format,
maxDate: !!o && new Date(o),
minDate: !!r && new Date(o),
defaultDate: i
})
}
function p(e, t) {
var a = new Date
, n = m(a)
, i = 0
, o = 0;
switch (e.value) {
case "custom":
var r = t.settings.time.start;
i = r && "today" !== r ? $(r) : a;
var s = t.settings.time.end;
o = s && "today" !== s ? $(s) : a;
break;
case "all":
i = null,
o = null;
break;
case "startEmpty":
i = null;
var s = t.settings.time.end;
o = s && "today" !== s ? $(s) : a;
break;
case "endEmpty":
var r = t.settings.time.start;
i = r && "today" !== r ? $(r) : a,
o = null;
break;
case "today":
i = f(),
o = b();
break;
case "currentWeek":
i = f(n.time - 864e5 * (n.week - 1)),
o = b(n.time + 864e5 * (7 - n.week));
break;
case "lastWeek":
var l = n.time - 864e5 * (n.week - 1);
i = f(l - 6048e5),
o = b(l - 864e5);
break;
case "currentMonth":
i = f(n.time - 864e5 * (n.day - 1)),
o = b(g());
break;
case "lastMonth":
var d = k(n);
i = d.startTime,
o = d.endTime;
break;
case "currentQuarter":
var c = x(n);
i = c.startTime,
o = c.endTime;
break;
case "lastQuarter":
var h = T(n);
i = h.startTime,
o = h.endTime;
break;
case "currentYear":
i = $(n.year + "/1/1"),
o = $(n.year + "/12/31 23:59:59");
break;
case "lastYear":
i = $(parseInt(n.year - 1) + "/1/1"),
o = $(parseInt(n.year - 1) + "/12/31 23:59:59");
break;
case "last7Day":
i = new Date(n.time - 6048e5),
o = a;
break;
case "last30Day":
i = new Date(n.time - 2592e6),
o = a
}
v(t, i, o)
}
function f(e) {
return e ? new Date(new Date(new Date(e).toLocaleDateString()).getTime()) : new Date(new Date((new Date).toLocaleDateString()).getTime())
}
function b(e) {
return e ? new Date(new Date(new Date(e).toLocaleDateString()).getTime() + 864e5 - 1) : new Date(new Date((new Date).toLocaleDateString()).getTime() + 864e5 - 1)
}
function g(e) {
if (e)
var t = new Date(e);
else
var t = new Date;
var a = t.getMonth()
, n = ++a
, i = new Date(t.getFullYear(),n,1)
, o = new Date(i - 864e5)
, r = parseInt(o.getMonth() + 1)
, s = o.getDate();
return r < 10 && (r = "0" + r),
s < 10 && (s = "0" + s),
t.getFullYear() + "-" + r + "-" + s
}
function v(e, t, a, n) {
var i = e.popupBoxDom.find('div[bh-time-picker-role="selectCustom"]')
, o = i.children('div[bh-time-picker-role="selectStart"]').children("input")
, r = i.children('div[bh-time-picker-role="selectEnd"]').children("input")
, s = r.data("DateTimePicker").date() ? r.data("DateTimePicker").date()._d : ""
, l = e.$rootElement.find('div[bh-time-picker-role="rangeBoxSelectTime"]')
, d = e.popupBoxDom.find('div[bh-time-picker-role="selectCustom"] div[bh-time-picker-role="selectType"]')
, c = d.jqxDropDownList("getSelectedItem");
if (!(t && a || (null === t ? (o.attr("disabled", !0),
o.data("DateTimePicker").disable()) : (o.removeAttr("disabled"),
o.data("DateTimePicker").enable()),
null === a ? (r.attr("disabled", !0),
r.data("DateTimePicker").disable()) : (r.removeAttr("disabled"),
r.data("DateTimePicker").enable()),
t || a || "all" !== c.value)))
return void l.html(c.label);
o.attr("disabled") && (o.removeAttr("disabled"),
o.data("DateTimePicker").enable()),
r.attr("disabled") && (r.removeAttr("disabled"),
r.data("DateTimePicker").enable()),
"startEmpty" === c.value || "endEmpty" === c.value ? "startEmpty" === c.value ? (t = "",
o.attr("disabled", !0),
o.data("DateTimePicker").disable()) : "endEmpty" === c.value && (a = "",
r.attr("disabled", !0),
r.data("DateTimePicker").disable()) : (a = a || new Date,
t = t || new Date),
e.settings.time.start = t,
e.settings.time.end = a,
"startEmpty" === c.value || "endEmpty" === c.value ? (r.data("DateTimePicker").date(a),
o.data("DateTimePicker").date(t)) : t > s ? (r.data("DateTimePicker").date(a),
o.data("DateTimePicker").date(t)) : (o.data("DateTimePicker").date(t),
r.data("DateTimePicker").date(a));
var h = o.data("DateTimePicker").date() ? o.data("DateTimePicker").date()._d : ""
, u = r.data("DateTimePicker").date() ? r.data("DateTimePicker").date()._d : ""
, p = e.getValue()
, f = p.startTime
, b = p.endTime;
if (S(e, h, u),
n) {
var g = i.find('div[bh-time-picker-role="selectType"]').jqxDropDownList("getSelectedItem").value;
e.$rootElement.trigger("selectedTime", [f, b, g]),
void 0 !== e.settings.selectedTime && e.settings.selectedTime instanceof Function && e.settings.selectedTime(f, b, g)
}
}
function m(e) {
var t = new Date(e)
, a = {};
return a.year = t.getFullYear(),
a.month = t.getMonth(),
a.day = t.getDate(),
a.hour = t.getHours(),
a.minute = t.getMinutes(),
a.second = t.getSeconds(),
a.week = t.getDay(),
a.time = t.getTime(),
a
}
function y(e) {
return 0 == e % 4 && (e % 100 != 0 || e % 400 == 0)
}
function k(e) {
var t = e.month
, a = e.year
, n = t - 1;
0 === t && (a -= 1,
n = 11);
var i = w(a, n + 1)
, o = new Date(C({
year: a,
month: n + 1,
day: 1
}))
, r = C({
year: a,
month: n + 1,
day: i
});
return {
startTime: o,
endTime: new Date(new Date(r).getTime() + 864e5 - 1)
}
}
function C(e) {
return e.year + "/" + e.month + "/" + e.day
}
function w(e, t) {
return 1 === t || 3 === t || 5 === t || 7 === t || 8 === t || 10 === t || 12 === t ? 31 : 4 === t || 6 === t || 9 === t || 11 === t ? 30 : y(e) ? 29 : 28
}
function x(e) {
var t = N(e.month)
, a = new Date(C({
year: e.year,
month: t.startMonth + 1,
day: 1
}))
, n = w(e.year, t.endMonth + 1)
, i = C({
year: e.year,
month: t.endMonth + 1,
day: n
});
return {
startTime: a,
endTime: new Date(new Date(i).getTime() + 864e5 - 1)
}
}
function T(e) {
var t = N(e.month).startMonth
, a = t - 1
, n = e.year;
0 === t && (a = 11,
n -= 1);
var i = N(a)
, o = w(n, i.endMonth + 1)
, r = new Date(C({
year: n,
month: i.startMonth + 1,
day: 1
}))
, s = C({
year: n,
month: i.endMonth + 1,
day: o
});
return {
startTime: r,
endTime: new Date(new Date(s).getTime() + 864e5 - 1)
}
}
function N(e) {
var t = 0
, a = 2;
return e >= 9 ? (t = 9,
a = 11) : e >= 6 ? (t = 6,
a = 8) : e >= 3 && (t = 3,
a = 5),
{
startMonth: t,
endMonth: a
}
}
function D(t, a, n) {
var i = t.find('[bh-time-picker-role="selectMonthPre"]').removeClass("bh-disabled")
, r = t.find('[bh-time-picker-role="selectMonthNext"]').removeClass("bh-disabled")
, s = t.find('div[bh-time-picker-role="selectMonthYear"]')
, l = parseInt(s.text(), 10)
, d = 0;
n.settings.range.max && (d = "today" === n.settings.range.max ? (new Date).getFullYear() : new Date(n.settings.range.max).getFullYear());
var c = 0;
n.settings.range.min && (c = "today" === n.settings.range.min ? (new Date).getFullYear() : new Date(n.settings.range.min).getFullYear()),
"pre" === a ? l-- : l++,
s.html(l + e.i18n("bha-ticker2-year"));
var h = o(n, $(l + "/12/1"), a);
t.find('div[bh-time-picker-role="selectMonthList"]').html(h),
"pre" === a ? l === c && i.addClass("bh-disabled") : l === d && r.addClass("bh-disabled")
}
function I(e, t) {
if (e.hasClass("bh-pre")) {
var a = e.closest('div[bh-time-picker-role="selectMonthBlock"]')
, n = parseInt(a.find('div[bh-time-picker-role="selectMonthYear"]').text(), 10)
, i = parseInt(e.attr("data-month"), 10)
, o = w(n, i);
t.$rootElement.removeData("selectType"),
t.rangeBoxDom.find('div[bh-time-picker-role="rangeBoxSelectTime"]').click(),
t.$rootElement.data("selectType", "custom"),
v(t, new Date(n + "/" + i + "/1"), new Date(n + "/" + i + "/" + o), !0)
}
}
function S(e, t, a) {
var n = e.$rootElement.find('div[bh-time-picker-role="rangeBoxSelectTime"]')
, i = e.popupBoxDom.find('div[bh-time-picker-role="selectCustom"] div[bh-time-picker-role="selectType"]')
, o = i.jqxDropDownList("getSelectedItem");
if ("all" === o.value)
return void n.html(o.label);
var r = "startEmpty" !== o.value ? P(t, e) : ""
, s = "endEmpty" !== o.value ? P(a, e) : "";
n.html(r + "-" + s)
}
function P(t, a) {
return t ? /dd/i.test(a.settings.format) ? t.getFullYear() + e.i18n("bha-ticker2-Y") + E(t.getMonth() + 1) + e.i18n("bha-ticker2-M") + t.getDate() + e.i18n("bha-ticker2-D") : t.getFullYear() + e.i18n("bha-ticker2-year") + E(t.getMonth() + 1) + e.i18n("bha-ticker2-month") : ""
}
function E(e) {
return e < 10 ? "0" + e : e
}
function B(e, t) {
var a = e.$rootElement.data("selectType");
"custom" !== a && void 0 !== a || t.find('div[bh-time-picker-role="selectType"]').jqxDropDownList("selectIndex", 0)
}
function A(t, a, n) {
e("body").data("bhTimePick", "selectTime");
var i = t.children('div[bh-time-picker-role="selectStart"]').children("input")
, o = t.children('div[bh-time-picker-role="selectEnd"]').children("input")
, r = i.data("DateTimePicker").date() ? i.data("DateTimePicker").date()._d : ""
, s = o.data("DateTimePicker").date() ? o.data("DateTimePicker").date()._d : "";
if (r > s)
if ("end" === a)
s && o.data("DateTimePicker").date(r);
else {
var l = m(s);
i.data("DateTimePicker").date(new Date(l.year,l.month,l.day))
}
else if ("start" === a) {
if (n.settings.range.min) {
var d;
d = "today" !== n.settings.range.min ? new Date(n.settings.range.min) : new Date,
r < d && i.data("DateTimePicker").date(d)
}
} else if (n.settings.range.max) {
var c;
c = "today" !== n.settings.range.max ? new Date(n.settings.range.max) : new Date,
s > c && o.data("DateTimePicker").date(c)
}
}
function L(e, t) {
var a = t.popupBoxDom.find('div[bh-time-picker-role="selectBox"]')
, n = t.$rootElement.find('div[bh-time-picker-role="rangeBox"]');
n.hasClass("bh-active") && n.find('div[bh-time-picker-role="rangeBoxSelectTime"]').click();
var i;
i = "pre" === e ? a.find('div[bh-time-picker-role="selectStart"]').children("input").data("DateTimePicker").date()._d : a.find('div[bh-time-picker-role="selectEnd"]').children("input").data("DateTimePicker").date()._d;
var o, r = m(i);
if ("pre" === e) {
if (0 === r.month ? (r.month = 11,
r.year = r.year - 1) : r.month = r.month - 1,
t.settings.range.min) {
var s = "today" === t.settings.range.min ? new Date : $(t.settings.range.min);
o = m(s),
s > new Date(i.getTime() - 2592e6) && (r = o)
}
} else if (11 === r.month ? (r.month = 0,
r.year = r.year + 1) : r.month = r.month + 1,
t.settings.range.max) {
var l = "today" === t.settings.range.max ? new Date : $(t.settings.range.max);
o = m(l),
l < new Date(i.getTime() + 2592e6) && (r = o)
}
var d = {}
, c = {};
o && r.year === o.year ? r.month !== o.month ? (d = {
year: r.year,
month: r.month,
day: 1
},
c = {
year: r.year,
month: r.month,
day: w(r.year, r.month + 1)
}) : "pre" === e ? (d = {
year: r.year,
month: r.month,
day: o.day
},
c = {
year: r.year,
month: r.month,
day: w(r.year, r.month + 1)
}) : (d = {
year: r.year,
month: r.month,
day: 1
},
c = {
year: r.year,
month: r.month,
day: o.day
}) : (d = {
year: r.year,
month: r.month,
day: 1
},
c = {
year: r.year,
month: r.month,
day: w(r.year, r.month + 1)
});
var h = r.month + 1 < 10 ? "0" + parseInt(r.month + 1, 10) : r.month + 1
, u = d.year + "/" + h + "/" + E(d.day)
, p = c.year + "/" + h + "/" + c.day;
v(t, $(u), $(p), !0)
}
function $(e) {
if ("string" == typeof e) {
var t = Date.parse(e)
, a = new Date(t);
if (isNaN(a)) {
var n = e.split("-");
a = new Date(n[0],--n[1],n[2])
}
return a
}
return e
}
var R;
R = function() {
function a(a, n) {
var i = {
defaultType: "custom",
width: "",
isFixTime: !1,
format: "YYYY-MM-DD",
range: {
max: "",
min: ""
},
time: {
start: "",
end: ""
},
isDisable: !1,
selectedTime: null,
ready: null
};
this.settings = e.extend({}, i, n),
this.settings.format && (this.settings.format = this.settings.format.replace("yyyy", "YYYY"),
this.settings.format = this.settings.format.replace("-dd", "-DD")),
this.$rootElement = e(a),
t(this)
}
return a.prototype.getValue = function() {
var e = null
, t = null
, a = this.startTimeDom.children("input")
, n = this.endTimeDom.children("input");
a.attr("disabled") || (e = a.data("DateTimePicker").date() ? a.data("DateTimePicker").date()._d : ""),
n.attr("disabled") || (t = n.data("DateTimePicker").date() ? n.data("DateTimePicker").date()._d : "");
var i = this.popupBoxDom.find('div[bh-time-picker-role="selectType"]').jqxDropDownList("getSelectedItem")
, o = i.value;
return 10 === this.settings.format.length && this.settings.isFixTime ? {
startTime: e ? moment(e).format(this.settings.format) + " 00:00:00" : "",
endTime: t ? moment(t).format(this.settings.format) + " 23:59:59" : "",
type: o
} : {
startTime: e ? moment(e).format(this.settings.format) : "",
endTime: t ? moment(t).format(this.settings.format) : "",
type: o
}
}
,
a.prototype.setValue = function(e) {
v(this, e.startTime ? $(e.startTime) : this.startTimeDom.children("input").data("DateTimePicker").date()._d, e.endTime ? $(e.endTime) : this.endTimeDom.children("input").data("DateTimePicker").date()._d),
B(this, this.popupBoxDom.find('div[bh-time-picker-role="selectCustom"]'))
}
,
a.prototype.setDisable = function() {
this.$rootElement.children('div[bh-time-picker-role="rangeBox"]').append('<div class="bh-timePick-disable" bh-time-picker-role="disableBlock"></div>')
}
,
a.prototype.setEnable = function() {
this.$rootElement.find('div[bh-time-picker-role="disableBlock"]').remove()
}
,
a.prototype.setType = function(e) {
this.popupBoxDom.find('div[bh-time-picker-role="selectType"]').jqxDropDownList("selectItem", e)
}
,
a.prototype.remove = function() {
this.$selectType.jqxDropDownList("destroy"),
this.popupBoxDom.remove(),
this.$rootElement.remove()
}
,
a
}(),
e.fn.bhTimePicker = function(t, a) {
var n;
return n = this.data("bhTimePicker"),
n ? !0 === t ? n : "string" === e.type(t) ? n[t](a) : this : this.each(function() {
return e(this).data("bhTimePicker", new R(this,t))
})
}
}(jQuery),