チェンジセット 330
- 更新日時:
- 2009/11/19 00:27:00 (9 か月 前)
- ファイル:
-
- 1 変更
凡例:
- 変更なし
- 追加
- 削除
-
trunk/jspreadsheet/jspreadsheet.js
r329 r330 4 4 * @copyright Copyright © 2009 Atsushi Nagase 5 5 * @license Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php 6 * @7 6 */ 8 7 ;(function($){ 9 8 10 var RANDOM_BASE = "abcdefghijklmnopqrstuvwxyz0123456789"; 11 var CALLBACK_PREFIX = "sscallback"; 12 var DEFAULT_PARAM = { 13 version : "0.6" 14 }; 15 var reqId = 0; 16 var cache = {}; 9 var 10 PLUGIN_NAMESPACE = "ss", 11 CALLBACK_PREFIX = "sscallback_", 12 DEFAULT_PARAM = { version : "0.6" }; 13 14 var reqId = 0, cache = {}; 17 15 18 16 function getRandom(length) { 19 17 length = length || 10; 20 var r = ""; 18 var r = "",A=65,Z=90,c,i; 19 var fc = function(a,b) { 20 var c = String.fromCharCode(a); 21 return b ? c.toUpperCase():c.toLowerCase(); 22 } 21 23 while(r.length<length) { 22 r += RANDOM_BASE.charAt(Math.floor(RANDOM_BASE.length*Math.random()))||""; 24 i = A+Math.floor((Z-A)*Math.random())+(i>Z?0:10); 25 c = i>Z?String(i-Z-1):fc(i,Math.random()<0.5); 26 if(c&&r[r.length-1]!=c) r+=c; 23 27 } 24 28 return r; … … 36 40 function ss(url,param) { 37 41 param = $.extend(DEFAULT_PARAM,param); 38 var _query; 39 var _field; 42 var _query,_field; 40 43 41 44 function setQuery(query) { 42 45 _query = query; 43 return rtn;46 return self; 44 47 } 45 48 46 49 function setField(field) { 47 50 _field = field; 48 return rtn;51 return self; 49 52 } 50 53 51 54 function complete(res,callback) { 52 55 if(/^(ok|warning)$/.test(res.status)) { 53 var tbl = res.table; 54 var rows = []; 55 var fld = _field || []; 56 var tbl = res.table, rows = [], fld = _field||[]; 56 57 if(typeof fld == "string") fld = fld.split(",") 57 58 $.each(tbl.rows,function(){ 58 var obj = {}; 59 var row = this; 60 var cols = row.c; 59 var obj = {}, row = this, cols = row.c; 61 60 $.each(cols,function(i){ 62 61 obj[fld[i]||i] = (this||{}).v; … … 74 73 75 74 function send(callback,nocache) { 76 var cacheKey1 = encodeURIComponent(url); 77 var cacheKey2 = encodeURIComponent(_query||"__NO_QUERY__"); 75 var 76 cacheKey1 = encodeURIComponent(url), 77 cacheKey2 = encodeURIComponent(_query||"__NO_QUERY__"); 78 78 79 cache[cacheKey1] = cache[cacheKey1]||{}; 79 var tqx = "";80 var rid = reqId++;81 do {82 var handlerName = CALLBACK_PREFIX+getRandom(20);83 } while(window[handlerName]);84 function cb(res){85 if(res.reqId==rid.toString()) {86 if(res.table) {87 cache[cacheKey1][cacheKey2] = res;88 }89 complete(res,callback);90 }91 setTimeout(function(){92 try {93 delete window[handlerName];94 } catch(e) {};95 },1);96 };97 80 if(!nocache&&cache[cacheKey1][cacheKey2]) { 98 81 complete(cache[cacheKey1][cacheKey2],callback); 99 82 return; 100 83 } 84 var rid = reqId++; 85 do { var handlerName = CALLBACK_PREFIX+getRandom(20); } while(window[handlerName]); 86 function cb(res){ 87 if(res.reqId==rid.toString()) { 88 if(res.table) cache[cacheKey1][cacheKey2] = res; 89 complete(res,callback); 90 } 91 setTimeout(function(){ 92 try { delete window[handlerName]; } catch(e) {}; 93 },1); 94 }; 101 95 window[handlerName] = cb; 102 96 param.responseHandler = handlerName; … … 105 99 } 106 100 107 var rtn= {101 var self = { 108 102 setQuery : setQuery, 109 103 setField : setField, … … 111 105 } 112 106 113 return rtn;107 return self; 114 108 } 115 116 $ .extend({"ss":ss});109 110 $[PLUGIN_NAMESPACE] = ss; 117 111 118 112 })(jQuery);