utils.js


  1 /**
  2  *  //2.0檢測方式(目測,測量,專用儀器測試等)
  3     function GetCheckType() {
  4         $.ajax({
  5             url: '@Url.Action("GetCheckType", "SCM_RMInspection_Report")',
  6             type: "get",
  7             asycn: false,
  8             success: function (data) {
  9                 if (data) {
 10                     var list = utils.filterProperties(data, ['ID as id', 'ParentID as pid', 'Name as text']);
 11                     var treeData = utils.toTreeData(list, "id", "pid", "children");
 12                     $('#CheckTypeID').combotree('loadData', treeData);
 13                 }
 14             },
 15             error: function (err) {
 16                 parent.sy.messagerAlert('提示', '出錯!', err);
 17             }
 18         })
 19     }
 20 **/
 21 
 22 var utils = {};
 23  
 24 /**
 25 * 格式化字符串
 26 * 用法:
 27 .formatString("{0}-{1}","a","b");
 28 */
 29 utils.formatString = function () {
 30     for (var i = 1; i < arguments.length; i++) {
 31         var exp = new RegExp('\\{' + (i - 1) + '\\}', 'gm');
 32         arguments[0] = arguments[0].replace(exp, arguments[i]);
 33     }
 34     return arguments[0];
 35 };
 36 
 37 /**
 38 * 格式化時間顯示方式
 39 * 用法:format="yyyy-MM-dd hh:mm:ss";
 40 */
 41 utils.formatDate = function (v, format) {
 42     if (!v) return "";
 43     var d = v;
 44     if (typeof v === 'string') {
 45         if (v.indexOf("/Date(") > -1)
 46             d = new Date(parseInt(v.replace("/Date(", "").replace(")/", ""), 10));
 47         else
 48             d = new Date(Date.parse(v.replace(/-/g, "/").replace("T", " ").split(".")[0]));//.split(".")[0] 用來處理出現毫秒的情況,截取掉.xxx,否則會出錯
 49     }
 50     var o = {
 51         "M+": d.getMonth() + 1,  //month
 52         "d+": d.getDate(),       //day
 53         "h+": d.getHours(),      //hour
 54         "m+": d.getMinutes(),    //minute
 55         "s+": d.getSeconds(),    //second
 56         "q+": Math.floor((d.getMonth() + 3) / 3),  //quarter
 57         "S": d.getMilliseconds() //millisecond
 58     };
 59     if (/(y+)/.test(format)) {
 60         format = format.replace(RegExp.$1, (d.getFullYear() + "").substr(4 - RegExp.$1.length));
 61     }
 62     for (var k in o) {
 63         if (new RegExp("(" + k + ")").test(format)) {
 64             format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
 65         }
 66     }
 67     return format;
 68 };
 69 
 70 /**  
 71 * 格式化數字顯示方式   
 72 * 用法  
 73 * formatNumber(12345.999,'#,##0.00');  
 74 * formatNumber(12345.999,'#,##0.##');  
 75 * formatNumber(123,'000000');
 76 */
 77 utils.formatNumber = function (v, pattern) {
 78     if (v == null)
 79         return v;
 80     var strarr = v ? v.toString().split('.') : ['0'];
 81     var fmtarr = pattern ? pattern.split('.') : [''];
 82     var retstr = '';
 83     // 整數部分   
 84     var str = strarr[0];
 85     var fmt = fmtarr[0];
 86     var i = str.length - 1;
 87     var comma = false;
 88     for (var f = fmt.length - 1; f >= 0; f--) {
 89         switch (fmt.substr(f, 1)) {
 90             case '#':
 91                 if (i >= 0) retstr = str.substr(i--, 1) + retstr;
 92                 break;
 93             case '0':
 94                 if (i >= 0) retstr = str.substr(i--, 1) + retstr;
 95                 else retstr = '0' + retstr;
 96                 break;
 97             case ',':
 98                 comma = true;
 99                 retstr = ',' + retstr;
100                 break;
101         }
102     }
103     if (i >= 0) {
104         if (comma) {
105             var l = str.length;
106             for (; i >= 0; i--) {
107                 retstr = str.substr(i, 1) + retstr;
108                 if (i > 0 && ((l - i) % 3) == 0) retstr = ',' + retstr;
109             }
110         }
111         else retstr = str.substr(0, i + 1) + retstr;
112     }
113     retstr = retstr + '.';
114     // 處理小數部分   
115     str = strarr.length > 1 ? strarr[1] : '';
116     fmt = fmtarr.length > 1 ? fmtarr[1] : '';
117     i = 0;
118     for (var f = 0; f < fmt.length; f++) {
119         switch (fmt.substr(f, 1)) {
120             case '#':
121                 if (i < str.length) retstr += str.substr(i++, 1);
122                 break;
123             case '0':
124                 if (i < str.length) retstr += str.substr(i++, 1);
125                 else retstr += '0';
126                 break;
127         }
128     }
129     return retstr.replace(/^,+/, '').replace(/\.$/, '');
130 };
131  
132 /** 
133 * json格式轉樹狀結構 
134 * @param   {json}      json數據 
135 * @param   {String}    id的字符串 
136 * @param   {String}    父id的字符串 
137 * @param   {String}    children的字符串 
138 * @return  {Array}     數組 
139 */
140 utils.toTreeData = function (a, idStr, pidStr, childrenStr) {
141     var r = [], hash = {},len = (a||[]).length;
142     for (var i=0; i < len; i++) {
143         hash[a[i][idStr]] = a[i];
144     }
145     for (var j=0; j < len; j++) {
146         var aVal = a[j], hashVP = hash[aVal[pidStr]];
147         if (hashVP) {
148             !hashVP[childrenStr] && (hashVP[childrenStr] = []);
149             hashVP[childrenStr].push(aVal);
150         } else {
151             r.push(aVal);
152         }
153     }
154     return r;
155 };
156  
157 utils.eachTreeRow = function(treeData,eachHandler) {
158     for (var i in treeData) {
159         if (eachHandler(treeData[i]) == false) break;
160         if (treeData[i].children)
161             utils.eachTreeRow(treeData[i].children, eachHandler);
162     }
163 };
164 
165 utils.isInChild = function (treeData,pid,id) {
166     var isChild = false;
167     utils.eachTreeRow(treeData, function (curNode) {
168         if (curNode.id == pid) {
169             utils.eachTreeRow([curNode], function (row) {
170                 if (row.id == id) {
171                     isChild = true;
172                     return false;
173                 }
174             });
175             return false;
176         }
177     });
178     return isChild;
179 };
180  
181 utils.fnValueToText = function (list, value, text) {
182     var map = {};
183     for (var i in list) {
184         map[list[i][value || 'value']] = list[i][text || 'text'];
185     }
186     var fnConvert = function (v, r) {
187         return map[v];
188     };
189     return fnConvert;
190 };
191 
192 utils.compareObject = function (v1, v2) {
193     var countProps = function (obj) {
194         var count = 0;
195         for (k in obj) if (obj.hasOwnProperty(k)) count++;
196         return count;
197     };
198 
199     if (typeof (v1) !== typeof (v2)) {
200         return false;
201     }
202 
203     if (typeof (v1) === "function") {
204         return v1.toString() === v2.toString();
205     }
206 
207     if (v1 instanceof Object && v2 instanceof Object) {
208         if (countProps(v1) !== countProps(v2)) {
209             return false;
210         }
211         var r = true;
212         for (k in v1) {
213             r = utils.compareObject(v1[k], v2[k]);
214             if (!r) {
215                 return false;
216             }
217         }
218         return true;
219     } else {
220         return v1 === v2;
221     }
222 };
223 
224 utils.minusArray = function (arr1, arr2) {
225     var arr = [];
226     for (var i in arr1) {
227         var b = true;
228         for (var j in arr2) {
229             if (utils.compareObject(arr1[i],arr2[j])) {
230                 b = false;
231                 break;
232             }
233         }
234         if (b) {
235             arr.push(arr1[i]);
236         }
237     }
238     return arr;
239 };
240 
241 utils.diffrence = function (obj1, obj2, reserve,ignore) {
242     var obj = {}, reserve = reserve || [], ignore = ignore || [], reserveMap = {}, ignoreMap = {};
243     for (var i in reserve)
244         reserveMap[reserve[i]] = true;
245 
246     for (var i in ignore)
247         ignoreMap[ignore[i]] = true;
248 
249     for (var k in obj1) {
250         if (!ignoreMap[k] && (obj1[k] != obj2[k] || reserveMap[k])) {
251             obj[k] = obj1[k];
252         }
253     }
254     return obj;
255 };
256 
257 utils.filterProperties = function (obj, props, ignore) {
258     var ret;
259     if (obj instanceof Array || Object.prototype.toString.call(obj) === "[object Array]") {
260         ret = [];
261         for (var k in obj) {
262             ret.push(utils.filterProperties(obj[k], props, ignore));
263         }
264     }
265     else if (typeof obj === 'object') {
266         ret = {};
267         if (ignore) {
268             var map = {};
269             for (var k in props)
270                 map[props[k]] = true;
271 
272             for (var i in obj) {
273                 if (!map[i]) ret[i] = obj[i];
274             }
275         }
276         else {
277             for (var i in props) {
278                 var arr = props[i].split(" as ");
279                 ret[arr[1] || arr[0]] = obj[arr[0]];
280             }
281         }
282     }
283     else {
284         ret = obj;
285     }
286     return ret;
287 };
288 
289 
290 utils.copyProperty = function (obj, sourcePropertyName, newPropertyName, overWrite) {
291     if (obj instanceof Array || Object.prototype.toString.call(obj) === "[object Array]") {
292         for (var k in obj) 
293             utils.copyProperty(obj[k], sourcePropertyName, newPropertyName);
294     }
295     else if (typeof obj === 'object') {
296         if (sourcePropertyName instanceof Array || Object.prototype.toString.call(sourcePropertyName) === "[object Array]") {
297             for (var i in sourcePropertyName) {
298                 utils.copyProperty(obj, sourcePropertyName[i], newPropertyName[i]);
299             }
300         }
301         else if (typeof sourcePropertyName === 'string') {
302             if ((obj[newPropertyName] && overWrite) || (!obj[newPropertyName]))
303                 obj[newPropertyName] = obj[sourcePropertyName];
304         }
305     }
306     return obj;
307 };
308 
309 utils.clearIframe = function (context) {
310     var frame = $('iframe', context).add(parent.$('iframe', context));
311     if (frame.length > 0) {
312         frame[0].contentWindow.document.write('');
313         frame[0].contentWindow.close();
314         frame.remove();
315         if ($.browser.msie) {
316             CollectGarbage();
317         }
318     }
319 };
320 
321 utils.getThisIframe = function () {
322     if (!parent) return null;
323     var iframes = parent.document.getElementsByTagName('iframe');
324     if (iframes.length == 0) return null;
325     for (var i = 0; i < iframes.length; ++i) {
326         var iframe = iframes[i];
327         if (iframe.contentWindow === self) {
328             return iframe;
329         }
330     }
331     return null;
332 }
333 
334 utils.functionComment = function(fn){
335     return fn.toString().replace(/^.*\r?\n?.*\/\*|\*\/([.\r\n]*).+?$/gm,'');
336 };
337 
338 utils.uuid = (function () { var a = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""); return function (b, f) { var h = a, e = [], d = Math.random; f = f || h.length; if (b) { for (var c = 0; c < b; c++) { e[c] = h[0 | d() * f]; } } else { var g; e[8] = e[13] = e[18] = e[23] = "-"; e[14] = "4"; for (var c = 0; c < 36; c++) { if (!e[c]) { g = 0 | d() * 16; e[c] = h[(c == 19) ? (g & 3) | 8 : g & 15]; } } } return e.join("").toLowerCase(); }; })();
339 
340 utils.getRequest = function (name, url) {
341     var url = url|| window.location.href;
342     var theRequest = new Object();
343     if (url.indexOf("?") != -1) {
344         var str = url.split("?")[1];
345         strs = str.split("&");
346         for (var i = 0; i < strs.length; i++) {
347             theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
348         }
349     }
350     return theRequest[name];
351 };

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM