Develop and Download Open Source Software

Browse Subversion Repository

Diff of /js/domain.js

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 12 by berupon, Thu Dec 10 17:45:25 2009 UTC revision 14 by berupon, Tue Dec 22 15:50:45 2009 UTC
# Line 82  behaviourAssignors['sales_code'] = funct Line 82  behaviourAssignors['sales_code'] = funct
82          );          );
83  }  }
84    
   
85  function setAutoFocus() {  function setAutoFocus() {
86          var cnt = document.forms.length;          var cnt = document.forms.length;
87          for (var i=0; i<cnt; ++i) {          for (var i=0; i<cnt; ++i) {
# Line 117  Event.observe(window, "load", setAutoFoc Line 116  Event.observe(window, "load", setAutoFoc
116    
117  function toDateFormat(num) {  function toDateFormat(num) {
118          if (num.match(/\d{8,8}/)) {          if (num.match(/\d{8,8}/)) {
119                  var year = Math.floor(num / 10000);                  var year = "00" + Math.floor(num / 10000);
120                  var remain = num % 10000;                  var remain = num % 10000;
121                  var month = Math.floor(remain / 100);                  var month = "00" + Math.floor(remain / 100);
122                  var day = remain % 100;                  var day = "00" + remain % 100;
123                  return "" // damn Automatic Semicolon Insertion ;;                  var ret = "" // damn Automatic Semicolon Insertion ;;
124                          + ("00" + year).substr(-4)                          + year.substr(year.length-4, 4)
125                          + "/"                          + "/"
126                          + ("00" + month).substr(-2)                          + month.substr(month.length-2, 2)
127                          + "/"                          + "/"
128                          + ("00" + day).substr(-2)                          + day.substr(day.length-2, 2)
129                  ;                  ;
130                    return ret;
131          }else {          }else {
132                  return num;                  return num;
133          }          }
# Line 147  Ajax.Responders.register({ Line 147  Ajax.Responders.register({
147          }          }
148  });  });
149    
 function ajaxRequest(url, method, parameters, onSuccess, onFailure) {  
         new Ajax.Request(  
                 url,  
                 {  
                         "method" : method,  
                         "parameters" : parameters,  
                         "onSuccess": function(transport) {  
                                 try {  
                                         onSuccess(transport);  
                                 }catch (e) {  
                                         alert(e);  
                                 }  
                         },  
                         "onFailure": function () {  
                                 if (onFailure) {  
                                         try {  
                                                 onFailure();  
                                         }catch (e) {  
                                                 alert(e);  
                                         }  
                                 }  
                         }  
                 }  
         );  
 }  
   
150  // cookie中の指定した名前の値をObjectとして取り出し。JSON形式で格納されている事前提。  // cookie中の指定した名前の値をObjectとして取り出し。JSON形式で格納されている事前提。
151  function digestCookie(key) {  function digestCookie(key) {
152          var pieces = document.cookie.split('; ');          var pieces = document.cookie.split('; ');
# Line 232  function getGridSetting(visibles) { Line 206  function getGridSetting(visibles) {
206          return collectMember(visibles.options, 'value');          return collectMember(visibles.options, 'value');
207  }  }
208    
209  function renderDoubleList(lhs, rhs)  renderDoubleList = (function () {
210  {          var tmp = new EJS({url: 'js/doublelist.ejs'});
211          var str = new EJS({url: 'js/doublelist.ejs'}).render(          return function (lhs, rhs) {
212                  {                  var str = tmp.render(
213                          'lhs' : lhs,                          {
214                          'rhs' : rhs                                  'lhs' : lhs,
215                  }                                  'rhs' : rhs
216          );                          }
217          return str;                  );
218  }                  return str;
219            }
220    })();
221    
222  var app = (function () {  var app = (function () {
223                    
# Line 249  var app = (function () { Line 225  var app = (function () {
225          Application = function () {          Application = function () {
226                                    
227                  this.title = "SimpleLightWeb";                  this.title = "SimpleLightWeb";
228                    this.pageTitle = "";
229                                    
230                  // 擬似ページの読込時に呼び出すコールバック。                  // 擬似ページの読込時に呼び出すコールバック。
231                  this.pageLoadHandler = null;                  this.pageLoadHandler = null;
# Line 282  var app = (function () { Line 259  var app = (function () {
259                          return url.substr(1, url.length);                          return url.substr(1, url.length);
260                  };                  };
261                                    
262                    // prototype.js の String.toQueryParams は = で右辺に値を設定していないとパラメータとして拾ってくれないので自作。
263                    this.getHashParams = function () {
264                            var hash = this.getPathFromLocationHash();
265                            var paraPos = hash.indexOf('?');
266                            if (paraPos < 1) {
267                                    return {}
268                            }else {
269                                    var paraStr = hash.substr(paraPos+1, hash.length);
270                                    var params = paraStr.split('&');
271                                    var ret = {};
272                                    for (var i=0; i<params.length; ++i) {
273                                            var para = params[i];
274                                            var pair = para.split('=');
275                                            for (var j=0; j<pair.length; ++j) {
276                                                    pair[j] = decodeURIComponent(pair[j]);
277                                            }
278                                            if (pair.length == 1) {
279                                                    ret[pair[0]] = null;
280                                            }else if (pair.length == 2) {
281                                                    ret[pair[0]] = pair[1];
282                                            }
283                                    }
284                                    return ret;
285                            }
286                    }
287                    
288                  // hash指定によるページ切り替え処理                  // hash指定によるページ切り替え処理
289                  // this routine understands relative path                  // this routine understands relative path
290                  this.moveLocation = function (path) {                  this.moveLocation = function (path) {
# Line 311  var app = (function () { Line 314  var app = (function () {
314                          }                          }
315                  };                  };
316                                    
317                    this.ajaxRequest = function (url, method, parameters, onSuccess, onFailure) {
318                            ajaxRequest(url, method, parameters, onSuccess, onFailure);
319                    };
320                    
321                  // postによるデータ登録処理。エラー時にメッセージ表示を行うElementを用意する事。                  // postによるデータ登録処理。エラー時にメッセージ表示を行うElementを用意する事。
322                  var okToPost = true;                  var okToPost = true;
323                  this.postRequest = function (params) {                  this.postRequest = function (params, newLocation) {
324                          if (!okToPost) {                          if (!okToPost) {
325                                  alert("ただいま結果待ちな為送信出来ません。");                                  alert("ただいま結果待ちな為送信出来ません。");
326                                  return;                                  return;
# Line 321  var app = (function () { Line 328  var app = (function () {
328                          if (params instanceof HTMLFormElement) {                          if (params instanceof HTMLFormElement) {
329                                  params = Form.serialize(params, true);                                  params = Form.serialize(params, true);
330                          }                          }
331                  //      alert(Object.toJSON(params));  //                      alert(Object.toJSON(params));
332                          ajaxRequest(                          this.ajaxRequest(
333                                  this.getPathFromLocationHash(),                                  null,
334                                  'post',                                  'post',
335                                  params,                                  params,
336                                  function(transport) {                                  function(transport) {
337                                          var ret = transport.responseJSON;                                          var ret = transport.responseJSON;
338                                          if (!ret) {                                          if (!ret)
339                                            {
340                                                  alert(transport.responseText);                                                  alert(transport.responseText);
341                                          }                                          }
342                                          if (ret.errors.length) {                                          if (ret.errors.length) {
343                                                  $("messages").innerHTML = ret.errors.join("<BR>");                                                  $("messages").innerHTML = ret.errors.join("<BR>");
344                                                  $("error").appear({ duration: 0.6 });                                                  $("error").appear({ duration: 0.6 });
345                                          }else {                                          }else {
346                                                  this.moveLocation("list");                                                  if (Object.isFunction(newLocation)) {
347                                                            newLocation(ret);
348                                                    }else {
349                                                            if (newLocation == undefined) {
350                                                                    newLocation = "list";
351                                                            }
352                                                            this.moveLocation(newLocation);
353                                                    }
354                                          }                                          }
355                                          okToPost = true;                                          okToPost = true;
356                                  }.bind(this),                                  }.bind(this),
# Line 348  var app = (function () { Line 363  var app = (function () {
363                  };                  };
364                                    
365                  // template文字列は指定要素の最初の要素であるHTML comment中にあるという前提。                  // template文字列は指定要素の最初の要素であるHTML comment中にあるという前提。
366                  this.templateUpdate = function (templateEl, updateEl, data) {                  this.templateUpdate = function (templateEl, updateEl, data, setupFunc) {
367                            if (!templateEl || !updateEl) {
368                                    return;
369                            }
370    var st = new Date();
371                            // to workaround IE and WebKit bug. do not directly set innerHTML.
372                            while (updateEl.firstChild) {
373                                    updateEl.removeChild(updateEl.firstChild);
374                            }
375                          var comment = templateEl.firstChild;                          var comment = templateEl.firstChild;
376                          var src = comment.data;                          var src = comment.data;
377                          src = modifyTemplate(src, data);                          src = modifyTemplate(src, data);
378                          var template = new EJS({text: src});                          var template = new EJS({text: src});
379                          template.update(updateEl, data);                          var newdiv = document.createElement("div");
380                  };                          newdiv.innerHTML = template.render(data);
381                            // setupFunc can process newly created elements before rendering. (this speeds up page redndering)
382                            if (setupFunc) {
383                                    setupFunc(newdiv);
384                            }
385                            updateEl.appendChild(newdiv);
386    //                      updateEl.appear({ duration: 0.1 });
387    var et = new Date();
388    //a(et-st);
389    
390                    };
391                    
392          };          };
393          var self = new Application();          var self = new Application();
394                    
# Line 363  var app = (function () { Line 396  var app = (function () {
396          var contents = null;          var contents = null;
397          Event.observe(window, "load", function () {          Event.observe(window, "load", function () {
398                  contents = $('contents');                  contents = $('contents');
399                    var timerID = setInterval(checkLocationHash, 10);
400          });          });
401          var draggable = new Draggable();          var draggable = new Draggable();
402          var popup = new ModalPopUp();          var popup = new ModalPopUp();
403                    
404          // AJAXによる擬似ページ読込処理          var pageUrl = null;
405          function loadPage(dest, params) {          function ajaxRequest(url, method, parameters, onSuccess, onFailure) {
406                  ajaxRequest(                  if (url == null) {
407                          dest,                          url = self.getPathFromLocationHash();
408                          'get',                  }
409                          params,                  var launchURL = pageUrl;
410                          function(transport) {                  new Ajax.Request(
411                                  self.pageLoadHandler = null;                          url,
412                                  box = document.createElement("div");                          {
413                                  box.innerHTML = transport.responseText;                                  "method" : method,
414                                  contents.appendChild(box);                                  "parameters" : parameters,
415                                  var title = $("pageTitle").innerHTML;                                  "onSuccess": function(transport) {
416                                  document.title = self.title + ' ' + title;                                          try {
417                                  var loc = self.getPathFromLocationHash();                                                  if (pageUrl == launchURL) {
418                                  $("title").innerHTML = title;                                                          onSuccess(transport);
419                          //      $("breadcrumbs").innerHTML = loc.split('/').join(' / ');                                                  }
420                                  if (Prototype.Browser.IE || Prototype.Browser.WebKit || Prototype.Browser.Opera) {                                          }catch (e) {
421                                          var texts = new Array();                                                  a(e);
422                                          var scripts = box.getElementsByTagName("script");                                          }
423                                          for (var i=0; i<scripts.length; ++i) {                                  },
424                                                  var script = scripts[i];                                  "onFailure": function () {
425                                                  texts.push(script.text);                                          if (onFailure) {
426                                                    try {
427                                                            onFailure();
428                                                    }catch (e) {
429                                                            alert(e);
430                                                    }
431                                          }                                          }
                                         var script = document.createElement("script");  
                                         script.text = texts.join("\r");  
                                         box.appendChild(script);  
                                 }  
                                 if (self.pageLoadHandler) {  
                                         self.pageLoadHandler();  
432                                  }                                  }
                                 self.setHelpers();  
                         },  
                         function () {  
                                 alert("ページ読み込み失敗");  
433                          }                          }
434                  );                  );
435          }          }
436                    
437          // location.hash を監視して変更されていたらpathに相当する擬似ページをAJAXで読み込む。          // 画面設定処理
438            function setPage(html) {
439                    self.pageLoadHandler = null;
440                    box = document.createElement("div");
441                    box.innerHTML = html;
442                    contents.appendChild(box);
443                    var loc = self.getPathFromLocationHash();
444                    if (Prototype.Browser.IE || Prototype.Browser.WebKit || Prototype.Browser.Opera) {
445                            var texts = new Array();
446                            var scripts = box.getElementsByTagName("script");
447                            for (var i=0; i<scripts.length; ++i) {
448                                    var script = scripts[i];
449                                    texts.push(script.text);
450                            }
451                            var script = document.createElement("script");
452                            script.text = texts.join("\r");
453                            box.appendChild(script);
454                    }
455                    if (self.pageLoadHandler) {
456                            self.pageLoadHandler();
457                    }
458                    document.title = self.title + ' ' + self.pageTitle;
459                    $("title").innerHTML = self.pageTitle;
460            //      $("breadcrumbs").innerHTML = loc.split('/').join(' / ');
461                    var navisrc = $("navisrc");
462                    $("navi").innerHTML = navisrc.innerHTML;
463                    navisrc.innerHTML = '';
464                    self.setHelpers();
465            }
466            
467            // AJAXによる画面データ読込処理
468            var pageCache = {};
469            function loadPage(dest, params) {
470                    if (dest in pageCache) {
471                            var html = pageCache[dest];
472                            pageUrl = dest;
473                            setPage(html);
474                    }else {
475                            self.ajaxRequest(
476                                    dest,
477                                    'get',
478                                    params,
479                                    function(transport) {
480                                            var html = transport.responseText;
481                                            pageCache[dest] = html;
482                                            pageUrl = dest;
483                                            setPage(html);
484                                    },
485                                    function () {
486                                            alert("ページ読み込み失敗");
487                                    }
488                            );
489                    }
490            }
491            
492            // location.hash を監視して変更されていたらpathに相当する画面のデータを設定する。
493          var prevHash = "nullpo";          var prevHash = "nullpo";
         var timerID = setInterval(checkLocationHash, 10);  
494          function checkLocationHash() {          function checkLocationHash() {
495                  if (location.hash != prevHash) {                  if (location.hash != prevHash) {
496                          if (box) {                          if (box) {
# Line 424  var app = (function () { Line 507  var app = (function () {
507                          }                          }
508                          prevHash = location.hash;                          prevHash = location.hash;
509                          if (location.hash == "" || location.hash == "#") {                          if (location.hash == "" || location.hash == "#") {
510                                  loadPage("menu", {});                                  loadPage("menu" + ".html", {});
511                          }else {                          }else {
512                                  var pagePath = location.hash.substr(1, location.hash.length);                                  var pagePath = location.hash.substr(1, location.hash.length);
513                                  loadPage(pagePath, {});                                  var paraPos = pagePath.indexOf('?');
514                                    if (paraPos >= 1) {
515                                            pagePath = pagePath.substr(0, paraPos);
516                                    }
517                                    loadPage(pagePath + ".html", {});
518                          }                          }
519                  }                  }
520          }          }
# Line 445  function a(p) { Line 532  function a(p) {
532          }          }
533  }  }
534    
535    var prefectures = {
536            1 : '北海道',
537            2 : '青森県',
538            3 : '岩手県',
539            4 : '宮城県',
540            5 : '秋田県',
541            6 : '山形県',
542            7 : '福島県',
543            8 : '茨城県',
544            9 : '栃木県',
545            10 : '群馬県',
546            11 : '埼玉県',
547            12 : '千葉県',
548            13 : '東京都',
549            14 : '神奈川県',
550            15 : '新潟県',
551            16 : '富山県',
552            17 : '石川県',
553            18 : '福井県',
554            19 : '山梨県',
555            20 : '長野県',
556            21 : '岐阜県',
557            22 : '静岡県',
558            23 : '愛知県',
559            24 : '三重県',
560            25 : '滋賀県',
561            26 : '京都府',
562            27 : '大阪府',
563            28 : '兵庫県',
564            29 : '奈良県',
565            30 : '和歌山県',
566            31 : '鳥取県',
567            32 : '島根県',
568            33 : '岡山県',
569            34 : '広島県',
570            35 : '山口県',
571            36 : '徳島県',
572            37 : '香川県',
573            38 : '愛媛県',
574            39 : '高知県',
575            40 : '福岡県',
576            41 : '佐賀県',
577            42 : '長崎県',
578            43 : '熊本県',
579            44 : '大分県',
580            45 : '宮崎県',
581            46 : '鹿児島県',
582            47 : '沖縄県'
583    };

Legend:
Removed from v.12  
changed lines
  Added in v.14

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26