一个日期范围选择框的设计

时间:2024-12-20 17:26:02

一个日期范围选择框的设计 

一个日期范围选择框

这是一个日期范围选择框的设计,除了可以选择开始日期、结束日期之外。还要一些按钮用于快速选择日期范围:

Today 今天
Yesterday 昨天
Today & Yesterday 今天和昨天
This month 当月
Last month 上个月
Last week 上周
Last 2 days 最近2天
Last 3 days 最近3天
Last 7 days 最近7天
Last 14 days 最近14天
Last 30 days 最近30天
Last 90 days 最近90天
1st to 15th of month 当月1日到15日
15th to end of month 当月15日到月底
Last 3 full months 最近3个月
Last 6 full months 最近6个月

源码

win_select_DateRange = Ext.extend(Ext.Window, {
    xtype: "window",
    title: "Date Range",
    width: 328,
    autoScroll: false,
    height: 360,
    bodyStyle: 'background:#DFE6F6;',
    modal: true,
    layout: "absolute",
    listeners: {
        'beforeshow': function () { },
        "afterrender": function () {
        }
    },
    set_param: function (param) {

    },
    buttonAlign: 'left',

    initComponent: function () {
        var winid = this.id;
        var x = 10;
        var y = 10;
        var lw = 90;
        var tw = 135;
        var rh = 28;
        var items_tmp = [];
        items_tmp.push({ xtype: "label", text: "Start Date:", x: x, y: y, width: tw });
        x = x + tw + 20;
        items_tmp.push({ xtype: "label", text: "End Date:", x: x, y: y, width: tw });
        x = 10;
        y = y + rh;
        items_tmp.push({ xtype: "datefield", id: winid + "StartDate", x: x, y: y - 3, width: tw });
        x = x + tw + 20;
        items_tmp.push({ xtype: "datefield", id: winid + "EndDate", x: x, y: y - 3, width: tw });

        var ss = ['Today', 'Yesterday', 'Today & Yesterday', 'This month', 'Last month', 'Last week', 'Last 2 days', 'Last 3 days', 'Last 7 days', 'Last 14 days', 'Last 30 days', 'Last 90 days', '1st to 15th of month', '15th to end of month', 'Last 3 full months', 'Last 6 full months'];

        var rowcount = Math.floor((ss.length - 1) / 2) + 1;
        x = 10;
        y = y + rh;
        var y_row_0 = y;
        for (var i = 0; i < ss.length; i++) {
            items_tmp.push({
                xtype: "button", text: ss[i], x: x, y: y - 3, width: tw, handler: function (btn) {
                    var win = Ext.getCmp(winid);
                    win.input.setValue(this.text);
                    win.close();
                }
            });
            y = y + rh;
            if (i == (rowcount - 1)) {
                x = x + tw + 20;
                y = y_row_0;
            }
        }

        this.items = items_tmp;
        this.buttons = [];
        this.buttons.push({
            text: "Clear", handler: function () {
                var win = Ext.getCmp(winid);
                win.input.setValue("");
            }
        }, "->", {
            text: "OK", handler: function () {
                var win = Ext.getCmp(winid);
                var d1 = Ext.getCmp(winid + "StartDate").getValue();
                var d2 = Ext.getCmp(winid + "EndDate").getValue();

                if (d1) {
                }
                else {
                    messagebox_show("Please input start date");
                    return;
                }
                if (d2) {
                }
                else {
                    messagebox_show("Please input end date");
                    return;
                }
                var s = d1.format("m/d/Y") + '-' + d2.format("m/d/Y");
                win.input.setValue(s);
                win.close();
            }
        }, {
            text: "Cancel", handler: function () {
                var win = Ext.getCmp(winid);
                win.close();
            }
        });
        win_select_DateRange.superclass.initComponent.call(this);
    }
})

 

相关文章