UNPKG

cejs

Version:

A JavaScript module framework that is simple to use.

287 lines 13.7 kB
�� /** * @name CeL bank account function * @fileoverview * ,g�jHhS+T�N8�eQ bank account �v functions0 * @since */ 'use strict'; if (typeof CeL === 'function') CeL.run({ name:'interact.form.bank_account.TW', require : 'interact.form.select_input.|data.CSV.parse_CSV', code : function(library_namespace) { // requiring var parse_CSV = this.r('parse_CSV'); // =================================================== /* used for bank account & bank id input form TODO: HISTORY: 2008/7/26 14:46:14 create */ var // class private ----------------------------------- module_name = this.id, // X[>e data �v path path = library_namespace.get_module_path(this.id, 'bank_id/'), // =~�UMO3^_�w��^ mainLen=3, // /e�UMO3^_�w��^ branchLen=7, /* // and, select_input (u bank[Number(id)]={ id:'\d' // �/Sё���N_�, ��@\b/f��L��N�x name:'', // =~�UMO T1z digital:\d || [\d,..], // 3^_�w��^KN�c�� maxD:\d, // max w��^ minD:\d, // min w��^ branch:{ // RL� �/Sё���N_:/e�UMO T1z,.. } } */ bank=[], bankNow,bankIdNow, getBankID=function(id,force){ var o=bank[id=Math.floor(id)],l,d,i; if(!o)return; if(!force&&('branch' in o))return o.branch; library_namespace.debug('load ['+path+'id'+(id>99?'':id>9?'0':'00')+id+'.csv]',2, module_name+'.getBankID'); try{ d=library_namespace.get_file(path+'id'+(id>99?'':id>9?'0':'00')+id+'.csv'); }catch(e){ library_namespace.warn(module_name+'getBankID: <em>Cannot load data: ['+url+']!</em> '+e.message); return; } if(!d||!(d=parse_CSV(d))||!d.length){ library_namespace.warn(module_name+'getBankID: Cannot read data from ['+url+']!'); return; } library_namespace.debug(d.length+' data',2, module_name+'.getBankID'); for(i=0,l=o.branch={};i<d.length;i++){ library_namespace.debug('data ['+d[i][0]+'] '+d[i][1],4, module_name+'.getBankID'); if(!isNaN(d[i][0])){ library_namespace.debug('branch ['+d[i][0]+'] '+d[i][1],3, module_name+'.getBankID'); l[d[i][0]]=d[i][1]; }else if(library_namespace.is_debug()){ library_namespace.debug('unknown data ['+d[i][0]+'] '+d[i][1],2, module_name+'.getBankID'); } } return l; }, // \3^_�w��^KN�c��I�b3^_�w��^ � return max digital getDigital=function(id){ var o=bank[id=Math.floor(id)],d,a,i=0,m,max=0,min=Number.MAX_VALUE; if(!o)return; // error if('maxD' in o)return o.maxD; // \ON��N library_namespace.debug('get id '+id+', parse ['+o.digital+']', 2, module_name+'.getDigital'); d=o.digital,a=d.replace(/\n/g,'').match(/\d{1,2}MO/g); if(a) // g�S��nj�e/��� �!q�l�S�_0 for(d=[];i<a.length;i++) if(m=a[i].match(/\d{1,2}/)){ d.push(m=Math.floor(m[0])); if(min>m)min=m; if(max<m)max=m; } if(!d.length)d=max=min=0; else if(d.length===1)d=max=min=d[0]; library_namespace.debug(o.name+' '+min+'-'+max, 2, module_name+'.getDigital'); o.maxD=max; o.minD=min; return max; }, /** * inherit select_input * @class 8�eQ bank account �v functions */ _ = function() { // applies the parent's constructor. library_namespace.select_input.apply(this, arguments); if (!this.loaded) return; this.setClassName('bank_account_input'); this.setSearch(function(i,k){ if(k)library_namespace.debug('['+k+'], ['+(typeof i)+']'+i, 5, module_name+'.compare function'); return typeof i=='object'? // bank i.id.slice(0,k.length)==k||i.name.indexOf(k)!=-1 // bank.branch :i.length<k.length?0/*i==k.slice(0,i.length)*/:i.slice(0,k.length)==k; }); this.setInputType(1); var _t=this,i=this.onInput; (this.onInput=function(k){ if(k) library_namespace.debug('input ['+k+'] - '+k.slice(0,3), 2, module_name+'.onInput'); if(_t.inputAs!=2&&k&&k.length>=mainLen){ var id=Math.floor(k.slice(0,mainLen)),l; if((bank[id])&&(l=getBankID(id))&&l!==_t.setAllList()) bankNow=bank[bankIdNow=id].name,_t.setInputType(0,id),_t.setAllList(l); }else if(bank!==_t.setAllList()){ bankNow=0; bankIdNow=-1; _t.setInputType(0,-1); _t.setAllList(bank); } // �WL�;N���R��0 i.apply(_t, arguments); // �T�0Rjj�n �GR toggleToInput0 if(!_t.clickNow&&k&&(_t.inputAs==2&&k.length==mainLen||_t.inputAs==3&&k.length==branchLen||k.length==getDigital(bankIdNow))) _t.toggleToInput(0); else _t.focus(); })(); // show arrow. this.toggleToInput(1); this.focus(0); }, _p = _.prototype; // class public interface --------------------------- // R�Y-��[&N���S bank id data // ��ar�(W@b g new KNMRHQ\O� _.readData = function(url) { if (!url) return; path = url.match(/^(.+\/)?([^\/]+)$/)[1]; var data, i = 0, a, b; try { a = library_namespace.get_file(url); } catch (e) { library_namespace.warn( [ module_name+'.readData: Cannot load data: [', url, ']! ', { em : [ ',g module [', module_name, '] ��N Ajax �eQnj�e� ' ] }, e.message ]); return; } if (!a || !(data = parse_CSV(a)) || data.length < 9 || data[0].length < 3) { library_namespace.warn(module_name+'.TW.readData: Cannot read data from [' + url + ']!'); return; } library_namespace.debug('Read ' + data.length + ' items from [' + url + ']', 1, module_name+'.readData'); // reset bank = []; for (; i < data.length; i++) { a = data[i]; bank[Math.floor(a[0])] = { // �/Sё���N_�0 id : a[0], // =~�UMO T1z0 name : a[1], // 3^_�w��^KN�c��0 digital : a[2] }; } }; // class constructor --------------------------- _.readData(path + 'id.csv'); // N�QO|~b0 delete _.clone; // instance public interface ------------------- // 1: all, 2: 0R=~�UMO, 3: 0R/e�UMO _p.setInputType=function(t,i){ // (type,id) var _t=this; if(t)_t.inputAs=t,i=i||-1; t=_t.inputAs; // mainLen+getDigital(i): w�O<ONN�_�R N�S�O��L��N_� mainLen �x0gw��x��@\/f�#j0 if(i)_t.setMaxLength(t==2?mainLen:t==3?branchLen:i<0?20:getDigital(i)?mainLen+getDigital(i):20); return t; }; // input: (list, index), return [value, title[, key=title||value]] _p.onList=function(l,i){ if(bankNow)return [l[i],i+' '+bankNow]; else if(i in l)return [l[i].name,l[i].id]; }; // input: (list, index), return value to set as input key _p.onSelect=function(l,i){ return bankNow?i:l[i].id; }; _p.verify = function(k) { library_namespace.debug('verify ['+k+']', 2, module_name+'.verify'); var m; if (!k && k !== 0) return 1; if (!library_namespace.is_digits(k)) return 2; if (k.length >= mainLen) if (!bank[m = Math.floor(k.slice(0, mainLen))] || k.length >= branchLen && (m = bank[m].branch) && !(k.slice(0, branchLen) in m) // �p��@\(branch length:10)yr-� && (k.slice(0, 3) !== '700' || !((k.slice(0, 10) in m)))) return 1; }; library_namespace.inherit(_, 'interact.form.select_input'); return _; }, // this is a sub module. no_extend : '*,this' });