refreshHelper.js
4.85 KB
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
/**
* Created by xueyin on 2016/10/29.
* 支持页面刷新
* 本工具将页面指定对象的值保存到cookie或localstorage中
* 同时支持从缓存获取对应的参数
*/
var $ = require('jquery'),
util = require('./util');
var toast = function(id) {
this.cache = {};
}
toast.prototype.constructor = toast;
toast.prototype.init = function(refreshButton) {
var __self = this;
__self.cache = __self.getQueryString();
// $(window).on("load", function () {
// $(refreshButton).on("click", function (event) {
// __self.setQueryString(__self.cache);
// });
// });
// 因为当前通过一个helper方法,无法判断是取值还是设置值
// 1、注册在筛选按钮真正处理事件之前,把从url中获取到的数据全部清空
$(refreshButton).on("click", function (event) {
__self.cache = {};
// 2、设置定时器,当刷新事件完成后,再将当前筛选条件设置到url中
var timer_id = window.setTimeout(function () {
window.clearTimeout(timer_id);
__self.setQueryString(__self.cache);
}, 500);
});
}
/**
* 支持Input筛选项
*/
toast.prototype.inputHelper = function (id) {
var new_value = util.__input(id);
if (this.cache[id] != undefined && this.cache[id] != "") {
util.__setInput(id, this.cache[id]);
}
else {
if (new_value != undefined) {
this.cache[id] = new_value;
}
}
return this.cache[id];
}
/**
* 强制刷新缓存中的值
*/
toast.prototype.inputFocusHelper = function (id, value) {
util.__setInput(id, value);
this.cache[id] = value;
return this.cache[id];
}
/**
* 支持Select筛选项
* @param eles_id
*/
toast.prototype.dropDownHelper = function(obj) {
var new_value = obj.getValue();
var ret_id = -1;
if (this.cache[new_value.name] && this.cache[new_value.name] != "") {
// 使用缓存的值
var obj_value = JSON.parse(this.cache[new_value.name]);
obj.setValue(obj_value);
ret_id = obj_value.id;
}
else {
if (new_value && new_value.name && new_value.id != -1) {
// 使用新值替换缓存中的值
this.cache[new_value.name] = JSON.stringify(new_value);
ret_id = new_value.id;
}
}
return ret_id;
}
/**
* 支持类目选择控件
* @param tabTree 类目筛选对象
* @param sort 类目级别: 0 - 一级 1 - 二级 2 - 三级 3 - 四级
*/
toast.prototype.tabTreeHelper = function (tabTree, sort) {
if (0 >= sort && 3 <= sort) {
// 最多支持四级类目
return 0;
}
var ret_val = "";
var sortName = "sortTree" + sort;
var value = tabTree.selected[sort] ? tabTree.selected[sort].id : "";
if (this.cache[sortName] && this.cache[sortName] != "") {
// 使用缓存的值
ret_val = this.cache[sortName];
tabTree.setDisplayName(this.cache["sortTreeName"]);
}
else {
if (value != "") {
this.cache[sortName] = value;
this.cache["sortTreeName"] = tabTree.getDisplayName();
}
ret_val = value;
}
return ret_val;
}
/**
* 获取url上配置的page参数,如果没有则返回1
* @returns {number}
*/
toast.prototype.pageHelper = function () {
var page = 1;
if (location.hash.search(/page=(\d+)/g) > -1) {
page = /page=(\d+)/g.exec(location.hash)[1];
}
return page;
}
/**
* 获取url上配置的pageSize参数,如果没有则返回1
* pageSize 平台端全部默认10条
* @returns {number}
*/
toast.prototype.pageSizeHelper = function (g) {
var pageSize = 10;
if (location.hash.search(/size=(\d+)/g) > -1) {
pageSize = /size=(\d+)/g.exec(location.hash)[1];
}
return pageSize;
}
/**
* 获取url上的查询串,通过数据返回
* @returns 包含所有查询参数的对象,可以通过returnValue["xxx"]方式获取
*/
toast.prototype.getQueryString = function() {
var splitUrl = window.location.href.split("?");
var strUrl = (splitUrl.length>1) ? splitUrl[1].split("&") : 0;
var i = 0,
iLen = strUrl.length,
str = '',
obj = {};
for(i = 0; i < iLen; i++) {
str = strUrl[i].split("=");
obj[str[0]] = str[1];
}
return Array.prototype.sort.call(obj);
}
/**
* 设置所有查询参数到url
* @param params
*/
toast.prototype.setQueryString = function(params) {
var url = window.location.href;
var splitUrl = url.split("?");
url = (splitUrl.length > 1) ? splitUrl[0] : url;
url += "?";
$.each(params, function (id, value) {
splitUrl = url.split("?");
var has_params = splitUrl[1].split("=");
if (has_params.length > 1) {
url += "&";
}
url += (id + "=" + value);
})
window.location.href = url;
}
module.exports = toast;