niying
2024-01-25 ccc63cdefe54bd500c509c4dc4436ce8830467a3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
/**
 * Created by LinJ on 2015/11/5.
 * 初始化页面模块js
 */
 
//初始化各类元素以及监听
$(function () {
    inition();
});
 
//页面所有的页签名称
var itemList = ["second", "min", "hour", "day", "month", "week"];
 
//初始化各个页签自主选择的最大值
var max_second = 59;
var max_min = 59;
var max_hour = 23;
var max_day = 31;
var max_month = 12;
var max_quarter = 12;
var max_week = 7;
 
function inition() {
    //初始化checkbox
    initCheckBox("l_second", 0, 59);
    initCheckBox("l_min", 0, 59);
    initCheckBox("l_hour", 0, 23);
    initCheckBox("l_day", 1, 31);
    initCheckBox("l_month", 1, 12);
    initCheckBox("l_quarter", 1, 12);
    initCheckBox("l_week", 1, 7);
 
 
    //初始化单选、复选框
    $('input').iCheck({
        checkboxClass: 'icheckbox_square-blue',
        radioClass: 'iradio_square-blue',
        increaseArea: '20%' // optional
    });
 
    //解析按钮绑定函数
    $('#explain').click(function () {
        reverseExp();
    });
 
    initFirstRadio();
    initNoConfirmRadio();
    initRadio();
    initRadioCheckDiv();
    initSpinner();
    initCronFromTable();
    initListChange();
    initMonthByQuarter();
 
    //如果已有传输过来的值,那么放入cron字段并且反解析
    var instr = $("#transCron").val();
    if (instr) {
        $("#cron").val(instr);
        reverseExp();
    }
 
}
 
//初始化大量的复选框 根据div的id以及数量进行初始化 每个复选框占1/12宽度
function initCheckBox(divid, start, cnt) {
    if (cnt != null && cnt > 0) {
        for (dc = start; dc <= cnt; dc++) {
            $("#" + divid).append(" <div class='col-xs-1 col-sm-1 col-md-1'> <label><input type='checkbox' value=" + dc + "> &nbsp;" + dc + "</label></div>");
        }
    }
}
 
//初始化每个页签第一排的radio,即*条件
function initFirstRadio() {
    $('.firstradio').on('ifChecked', function () {
        everyTime(this);
    });
    $('.unselectradio').on('ifChecked', function () {
        clearSpan(this);
    });
 
    //季度的第一排radio,需要指定为month
    $('.firstradioreactor').on('ifChecked', function () {
        everyTimeByName("v_month");
    });
}
 
//初始化不指定的radio 即?条件 以及最后一日条件
function initNoConfirmRadio() {
    $('.noconfirmradio').on('ifChecked', function () {
        unAppoint(this);
    });
    $('.lastdayradio').on('ifChecked', function () {
        lastDay(this);
    });
 
}
 
//初始化每个页签选择的的radio
function initRadio() {
    //周期选择的radio
    $('.cycleradio').on('ifChecked', function () {
        writeStartAndEnd(this, "-");
    });
    //循环选择的radio
    $('.loopradio').on('ifChecked', function () {
        writeStartAndEnd(this, "/");
    });
 
    //指定选择的radio 即#
    $('.designradio').on('ifChecked', function () {
        writeStartAndEnd(this, "#");
    });
 
 
    //自主选择的radio
    $('.choiceradio').on('ifChecked', function () {
 
        var spanname = this.name;
        var theList = $("." + spanname + "List").find(':checkbox');
        var maxvalue = eval("max_" + this.name);
        changeSpanFromCheckList(theList, maxvalue, spanname);
    });
 
    //最近工作日的radio
    $('.nearradio').on('ifChecked', function () {
        writeEnd(this, "W");
    });
 
    //最后一个周几的radio
    $('.lastradio').on('ifChecked', function () {
        writeEnd(this, "L");
    });
 
 
}
 
//初始化div内容监听绑定函数,即点击div,对应radio被选中
function initRadioCheckDiv() {
    $('.radiocheck').click(function () {
        radioCheckByClick(this);
    });
 
    $.each(itemList, function (n, value) {
        var checkList = $("." + value + "List");
        checkList.click(function () {
            var theRadio = this.closest('.radiocheck').find(':radio');
            theRadio.eq(0).iCheck('check');
        });
    });
}
 
 
//绑定数字微调器
function initSpinner() {
    //绑定数字微调器
    $(".cyclespin").spinner('changing', function (e, newVal, oldVal) {
        //trigger immediately
        writeStartAndEnd(this, "-");
    });
    $(".loopspin").spinner('changing', function (e, newVal, oldVal) {
        //trigger immediately
        writeStartAndEnd(this, "/");
    });
    $(".designspin").spinner('changing', function (e, newVal, oldVal) {
        //trigger immediately
        writeStartAndEnd(this, "#");
    });
    $(".nearspin").spinner('changing', function (e, newVal, oldVal) {
        //trigger immediately
        writeEnd(this, "W");
    });
    $(".lastspin").spinner('changing', function (e, newVal, oldVal) {
        //trigger immediately
        writeEnd(this, "L");
    });
}
 
//表达式结果由表格生成到cron表达式
function initCronFromTable() {
    //查找所有name以v_开头的span元素
    var vals = $("span[name^='v_']");
    var cron = $("#cron");
    vals.change(function () {
        var item = [];
        vals.each(function () {
            item.push(this.innerHTML);
        });
        cron.val(item.join(" "));
    });
}
 
//定义checkbox在被点击的时候的绑定函数  循环遍历页签数组
function initListChange() {
    $.each(itemList, function (n, value) {
        var checkList = $("." + value + "List").find(':checkbox');
        var maxvalue = eval("max_" + value);
        initChangeOnCheckboxList(checkList, maxvalue, value);
    });
}
 
//给list的checkbox绑定点击方法 入参是list,最大值,指定输出的span名称
function initChangeOnCheckboxList(checkList, maxvalue, spanname) {
    checkList.on('ifChanged', function () {
        //模拟div被点击过一次
        $(this).closest('.radiocheck').click();
        changeSpanFromCheckList(checkList, maxvalue, spanname);
    });
}
 
//定义季度的月份选择监听
function initMonthByQuarter() {
    var checkList = $("#quarter_spe").find(':checkbox');
    checkList.on('ifChanged', function () {
        var vals = [];
        checkList.each(function () {
            if (this.checked) {
                vals.push(this.value);
            }
        });
        var val = "?";
        val = vals.join(",");
        ary = val.split(",");
        unselectAll('l_quarter');
        for (var i = 0; i < ary.length; i++) {
            $("#l_quarter input[value='" + ary[i] + "']").iCheck('check');
        }
    });
}
 
//清除选中状态
function unselectAll(listId) {
    for (var i = 1; i <= 12; i++) {
        $("#l_quarter input[value='" + i + "']").iCheck('uncheck');
    }
}