チェンジセット 330

差分発生行の前後
無視リスト:
更新日時:
2009/11/19 00:27:00 (9 か月 前)
更新者:
ngs
ログメッセージ:
 
ファイル:
1 変更

凡例:

変更なし
追加
削除
  • trunk/jspreadsheet/jspreadsheet.js

    r329 r330  
    44 * @copyright Copyright © 2009 Atsushi Nagase 
    55 * @license   Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php 
    6  * @ 
    76*/ 
    87;(function($){ 
    98 
    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 = {}; 
    1715         
    1816        function getRandom(length) { 
    1917                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                } 
    2123                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; 
    2327                } 
    2428                return r; 
     
    3640        function ss(url,param) { 
    3741                param = $.extend(DEFAULT_PARAM,param); 
    38                 var _query; 
    39                 var _field; 
     42                var _query,_field; 
    4043 
    4144                function setQuery(query) { 
    4245                        _query = query; 
    43                         return rtn; 
     46                        return self; 
    4447                } 
    4548                 
    4649                function setField(field) { 
    4750                        _field = field; 
    48                         return rtn; 
     51                        return self; 
    4952                } 
    5053                 
    5154                function complete(res,callback) { 
    5255                        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||[]; 
    5657                                if(typeof fld == "string") fld = fld.split(",") 
    5758                                $.each(tbl.rows,function(){ 
    58                                         var obj = {}; 
    59                                         var row = this; 
    60                                         var cols = row.c; 
     59                                        var obj = {}, row = this, cols = row.c; 
    6160                                        $.each(cols,function(i){ 
    6261                                                obj[fld[i]||i] = (this||{}).v; 
     
    7473                 
    7574                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 
    7879                        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                         }; 
    9780                        if(!nocache&&cache[cacheKey1][cacheKey2]) { 
    9881                                complete(cache[cacheKey1][cacheKey2],callback); 
    9982                                return; 
    10083                        } 
     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                        }; 
    10195                        window[handlerName] = cb; 
    10296                        param.responseHandler = handlerName; 
     
    10599                } 
    106100                 
    107                 var rtn = { 
     101                var self = { 
    108102                        setQuery : setQuery, 
    109103                        setField : setField, 
     
    111105                } 
    112106         
    113                 return rtn; 
     107                return self; 
    114108        } 
    115          
    116         $.extend({"ss":ss}); 
     109 
     110        $[PLUGIN_NAMESPACE] = ss; 
    117111         
    118112})(jQuery);