1. 程式人生 > >移動web app開發必備

移動web app開發必備

   /**
     * 初始化操作
     * @return 
     */
    proto.initProcess = function(){
        var self = this,
            prev = null ,
            curr = null ,
            next = null ;
        debug.group("start of init process");
        var idx = self.chapterIndex;
        debug.info("PageBase: 執行初始化之前的操作!");
        self.initProcessBefore();

        if(idx == 0){
            debug.info("PageBase: 初始化入口點從第一章開始進入");
            debug.info("PageBase: 解析器解析第一章資料!");
            curr = self.process(self.chapters[idx]);
            curr.then(function(pages){
                debug.info(self.format("PageBase: 第一章資料解析完成,解析頁面數為{0}" , pages.length));
                self.cPages = pages;
                if(self.isChangeFont){
                  self.idx = Math.ceil((pages.length - 1) * self.idx);                  
                }

                self.cPages.idx = idx;

                /////////////////////////////////////////////////
                //
                // 2013.1.10修改
                //   如果只有一個章節的情況下
                //
                if(1 === self.chapters.length){
                  deferred.all([curr]).then(self.steup.bind(self));   
                }else{
                  debug.info("PageBase:解析器解析後一章資料!");
                  next = self.loadNextData(idx + 1);
                  next.then(function(args){
                      debug.info(self.format("PageBase: 後一章資料解析完成,解析頁面數為{0}" , args.pages.length));
                      self.nPages = args.pages;
                      self.nPages.idx = idx + args.index;
                      debug.info(self.format("PageBase: 初始化資料解析完成, 當章索引{0} 當章頁數{1} 下章索引{2}  下章頁數{3}" 
                              , self.cPages.idx , self.cPages.length , self.nPages.idx , self.nPages.length));
                
                      debug.info("PageBase: 初始化資料解析完成,即將生成結構操作!");
                  });
                  deferred.all([curr , next]).then(self.steup.bind(self));   
                }

            });
        }else if(idx == self.chapters.length -1){
            debug.info("PageBase: 初始化入口點從最後一章開始進入");
            debug.info("PageBase:解析器解析最後一章資料!");
            prev = self.loadPrevData(idx - 1);
            prev.then(function(args){
                self.pPages = args.pages;
                self.pPages.idx = args.index + 1;
                debug.info(self.format("PageBase: 最後一章的前一章資料解析完成,解析頁面數為{0}" , args.pages.length));
                curr = self.process(self.chapters[idx]);
                curr.then(function(pages , data){
                    if(self.isChangeFont){
                      self.idx = Math.ceil((pages.length - 1) * self.idx);                  
                    }
                    self.cPages = pages ;
                    self.cPages.idx = idx;
                    debug.info(self.format("PageBase: 最後一章資料解析完成,解析頁面數為{0}" , pages.length));
                    debug.info(self.format("PageBase: 初始化資料解析完成, 前章索引{0} 前章頁數{1} 當章索引{2} 當章頁數{3} " 
                            , self.pPages.idx , self.pPages.length , self.cPages.idx , self.cPages.length ));
              
                    debug.info("PageBase: 初始化資料解析完成,即將生成結構操作!");
                });
                deferred.all([prev , curr]).then(self.steup.bind(self));
            });
        }else{
            debug.info("PageBase: 初始化入口點從中間章開始進入");
            prev = self.loadPrevData(idx - 1);
            debug.info("PageBase:解析器解析中間章的前一章資料!");
            prev.then(function(args){
                self.pPages = args.pages ;
                self.pPages.idx = args.index;
                debug.info(self.format("PageBase: 中間章前一章資料解析完成,解析頁面數為{0}" , args.pages.length));
                debug.info("PageBase:解析器解析中間章資料!");
                curr = self.process(self.chapters[idx]);
                curr.then(function(pages , data){
                    if(self.isChangeFont){
                        self.idx = Math.ceil((pages.length) * self.idx); 
                        // console.log("spages.length - 1",pages.length)      
                        // console.log("self.idx",self.idx)             
                    }
                    self.cPages = pages ;
                    self.cPages.idx = idx;
                    debug.info(self.format("PageBase: 中間章資料解析完成,解析頁面數為{0}" ,pages.length));
                    debug.info("PageBase:解析器解析中間章的後一章資料!");
                    next = self.loadNextData(idx + 1);
                    next.then(function(args){
                        self.nPages = args.pages ;
                        self.nPages.idx = idx + args.index;
                        debug.info(self.format("PageBase: 中間章後一章資料解析完成,解析頁面數為{0}" , args.pages.length));
                        debug.info(self.format("PageBase: 初始化資料解析完成, 前章索引{0} 前章頁數{1} 當章索引{2} 當章頁數{3} 下章索引{4}  下章頁數{5}" 
                            , self.pPages.idx , self.pPages.length , self.cPages.idx , self.cPages.length , self.nPages.idx , self.nPages.length));
                        debug.info("PageBase: 初始化資料解析完成,即將生成結構操作!")
                    });
                    deferred.all([prev , curr , next]).then(self.steup.bind(self));  
                });
            });
       }