bh组件之日期选择器

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">&lt;</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">&gt;</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">&lt;</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">&gt;</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),

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值