⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rico.js

📁 Ajax经典实例大全,关于ajax非常多的实例,适合下载学习
💻 JS
📖 第 1 页 / 共 5 页
字号:
Rico.Effect.FadeTo.prototype = {   initialize: function( element, opacity, duration, steps, options) {      this.element  = $(element);      this.opacity  = opacity;      this.duration = duration;      this.steps    = steps;      this.options  = arguments[4] || {};      this.fadeTo();   },   fadeTo: function() {      if (this.isFinished()) {         if(this.options.complete) this.options.complete(this);         return;      }      if (this.timer)         clearTimeout(this.timer);      var stepDuration = Math.round(this.duration/this.steps) ;      var currentOpacity = this.getElementOpacity();      var delta = this.steps > 0 ? (this.opacity - currentOpacity)/this.steps : 0;      this.changeOpacityBy(delta);      this.duration -= stepDuration;      this.steps--;      this.timer = setTimeout(this.fadeTo.bind(this), stepDuration);   },   changeOpacityBy: function(v) {      var currentOpacity = this.getElementOpacity();      var newOpacity = Math.max(0, Math.min(currentOpacity+v, 1));      this.element.ricoOpacity = newOpacity;      this.element.style.filter = "alpha(opacity:"+Math.round(newOpacity*100)+")";      this.element.style.opacity = newOpacity; /*//*/;   },   isFinished: function() {      return this.steps <= 0;   },   getElementOpacity: function() {      if ( this.element.ricoOpacity == undefined ) {         var opacity = RicoUtil.getElementsComputedStyle(this.element, 'opacity');         this.element.ricoOpacity = opacity != undefined ? opacity : 1.0;      }      return parseFloat(this.element.ricoOpacity);   }}Rico.Effect.AccordionSize = Class.create();Rico.Effect.AccordionSize.prototype = {   initialize: function(e1, e2, start, end, duration, steps, options) {      this.e1       = $(e1);      this.e2       = $(e2);      this.start    = start;      this.end      = end;      this.duration = duration;      this.steps    = steps;      this.options  = arguments[6] || {};      this.accordionSize();   },   accordionSize: function() {      if (this.isFinished()) {         // just in case there are round errors or such...         this.e1.style.height = this.start + "px";         this.e2.style.height = this.end + "px";         if(this.options.complete)            this.options.complete(this);         return;      }      if (this.timer)         clearTimeout(this.timer);      var stepDuration = Math.round(this.duration/this.steps) ;      var diff = this.steps > 0 ? (parseInt(this.e1.offsetHeight) - this.start)/this.steps : 0;      this.resizeBy(diff);      this.duration -= stepDuration;      this.steps--;      this.timer = setTimeout(this.accordionSize.bind(this), stepDuration);   },   isFinished: function() {      return this.steps <= 0;   },   resizeBy: function(diff) {      var h1Height = this.e1.offsetHeight;      var h2Height = this.e2.offsetHeight;      var intDiff = parseInt(diff);      if ( diff != 0 ) {         this.e1.style.height = (h1Height - intDiff) + "px";         this.e2.style.height = (h2Height + intDiff) + "px";      }   }};//-------------------- ricoLiveGrid.js// Rico.LiveGridMetaData -----------------------------------------------------Rico.LiveGridMetaData = Class.create();Rico.LiveGridMetaData.prototype = {   initialize: function( pageSize, totalRows, columnCount, options ) {      this.pageSize  = pageSize;      this.totalRows = totalRows;      this.setOptions(options);      this.ArrowHeight = 16;      this.columnCount = columnCount;   },   setOptions: function(options) {      this.options = {         largeBufferSize    : 7.0,   // 7 pages         nearLimitFactor    : 0.2    // 20% of buffer      };      Object.extend(this.options, options || {});   },   getPageSize: function() {      return this.pageSize;   },   getTotalRows: function() {      return this.totalRows;   },   setTotalRows: function(n) {      this.totalRows = n;   },   getLargeBufferSize: function() {      return parseInt(this.options.largeBufferSize * this.pageSize);   },   getLimitTolerance: function() {      return parseInt(this.getLargeBufferSize() * this.options.nearLimitFactor);   }};// Rico.LiveGridScroller -----------------------------------------------------Rico.LiveGridScroller = Class.create();Rico.LiveGridScroller.prototype = {   initialize: function(liveGrid, viewPort) {      this.isIE = navigator.userAgent.toLowerCase().indexOf("msie") >= 0;      this.liveGrid = liveGrid;      this.metaData = liveGrid.metaData;      this.createScrollBar();      this.scrollTimeout = null;      this.lastScrollPos = 0;      this.viewPort = viewPort;      this.rows = new Array();   },   isUnPlugged: function() {      return this.scrollerDiv.onscroll == null;   },   plugin: function() {      this.scrollerDiv.onscroll = this.handleScroll.bindAsEventListener(this);   },   unplug: function() {      this.scrollerDiv.onscroll = null;   },   sizeIEHeaderHack: function() {      if ( !this.isIE ) return;      var headerTable = $(this.liveGrid.tableId + "_header");      if ( headerTable )         headerTable.rows[0].cells[0].style.width =            (headerTable.rows[0].cells[0].offsetWidth + 1) + "px";   },   createScrollBar: function() {      var visibleHeight = this.liveGrid.viewPort.visibleHeight();      // create the outer div...      this.scrollerDiv  = document.createElement("div");      var scrollerStyle = this.scrollerDiv.style;      scrollerStyle.borderRight = this.liveGrid.options.scrollerBorderRight;      scrollerStyle.position    = "relative";      scrollerStyle.left        = this.isIE ? "-6px" : "-3px";      scrollerStyle.width       = "19px";      scrollerStyle.height      = visibleHeight + "px";      scrollerStyle.overflow    = "auto";      // create the inner div...      this.heightDiv = document.createElement("div");      this.heightDiv.style.width  = "1px";      this.heightDiv.style.height = parseInt(visibleHeight *                        this.metaData.getTotalRows()/this.metaData.getPageSize()) + "px" ;      this.scrollerDiv.appendChild(this.heightDiv);      this.scrollerDiv.onscroll = this.handleScroll.bindAsEventListener(this);     var table = this.liveGrid.table;     table.parentNode.parentNode.insertBefore( this.scrollerDiv, table.parentNode.nextSibling );  	  var eventName = this.isIE ? "mousewheel" : "DOMMouseScroll";	  Event.observe(table, eventName, 	                function(evt) {	                   if (evt.wheelDelta>=0 || evt.detail < 0) //wheel-up	                      this.scrollerDiv.scrollTop -= (2*this.viewPort.rowHeight);	                   else	                      this.scrollerDiv.scrollTop += (2*this.viewPort.rowHeight);	                   this.handleScroll(false);	                }.bindAsEventListener(this), 	                false);     },   updateSize: function() {      var table = this.liveGrid.table;      var visibleHeight = this.viewPort.visibleHeight();      this.heightDiv.style.height = parseInt(visibleHeight *                                  this.metaData.getTotalRows()/this.metaData.getPageSize()) + "px";   },   rowToPixel: function(rowOffset) {      return (rowOffset / this.metaData.getTotalRows()) * this.heightDiv.offsetHeight   },      moveScroll: function(rowOffset) {      this.scrollerDiv.scrollTop = this.rowToPixel(rowOffset);      if ( this.metaData.options.onscroll )         this.metaData.options.onscroll( this.liveGrid, rowOffset );   },   handleScroll: function() {     if ( this.scrollTimeout )         clearTimeout( this.scrollTimeout );    var scrollDiff = this.lastScrollPos-this.scrollerDiv.scrollTop;    if (scrollDiff != 0.00) {       var r = this.scrollerDiv.scrollTop % this.viewPort.rowHeight;       if (r != 0) {          this.unplug();          if ( scrollDiff < 0 ) {             this.scrollerDiv.scrollTop += (this.viewPort.rowHeight-r);          } else {             this.scrollerDiv.scrollTop -= r;          }          this.plugin();       }    }    var contentOffset = parseInt(this.scrollerDiv.scrollTop / this.viewPort.rowHeight);    this.liveGrid.requestContentRefresh(contentOffset);    this.viewPort.scrollTo(this.scrollerDiv.scrollTop);    if ( this.metaData.options.onscroll )       this.metaData.options.onscroll( this.liveGrid, contentOffset );    this.scrollTimeout = setTimeout(this.scrollIdle.bind(this), 1200 );    this.lastScrollPos = this.scrollerDiv.scrollTop;   },   scrollIdle: function() {      if ( this.metaData.options.onscrollidle )         this.metaData.options.onscrollidle();   }};// Rico.LiveGridBuffer -----------------------------------------------------Rico.LiveGridBuffer = Class.create();Rico.LiveGridBuffer.prototype = {   initialize: function(metaData, viewPort) {      this.startPos = 0;      this.size     = 0;      this.metaData = metaData;      this.rows     = new Array();      this.updateInProgress = false;      this.viewPort = viewPort;      this.maxBufferSize = metaData.getLargeBufferSize() * 2;      this.maxFetchSize = metaData.getLargeBufferSize();      this.lastOffset = 0;   },   getBlankRow: function() {      if (!this.blankRow ) {         this.blankRow = new Array();         for ( var i=0; i < this.metaData.columnCount ; i++ )             this.blankRow[i] = "&nbsp;";     }     return this.blankRow;   },   loadRows: function(ajaxResponse) {      var rowsElement = ajaxResponse.getElementsByTagName('rows')[0];      this.updateUI = rowsElement.getAttribute("update_ui") == "true"      var newRows = new Array()      var trs = rowsElement.getElementsByTagName("tr");      for ( var i=0 ; i < trs.length; i++ ) {         var row = newRows[i] = new Array();          var cells = trs[i].getElementsByTagName("td");         for ( var j=0; j < cells.length ; j++ ) {            var cell = cells[j];            var convertSpaces = cell.getAttribute("convert_spaces") == "true";            var cellContent = RicoUtil.getContentAsString(cell);            row[j] = convertSpaces ? this.convertSpaces(cellContent) : cellContent;            if (!row[j])                row[j] = '&nbsp;';         }      }      return newRows;   },         update: function(ajaxResponse, start) {     var newRows = this.loadRows(ajaxResponse);      if (this.rows.length == 0) { // initial load         this.rows = newRows;         this.size = this.rows.length;         this.startPos = start;         return;      }      if (start > this.startPos) { //appending         if (this.startPos + this.rows.length < start) {            this.rows =  newRows;            this.startPos = start;//         } else {              this.rows = this.rows.concat( newRows.slice(0, newRows.length));            if (this.rows.length > this.maxBufferSize) {               var fullSize = this.rows.length;               this.rows = this.rows.slice(this.rows.length - this.maxBufferSize, this.rows.length)               this.startPos = this.startPos +  (fullSize - this.rows.length);            }         }      } else { //prepending         if (start + newRows.length < this.startPos) {            this.rows =  newRows;         } else {            this.rows = newRows.slice(0, this.startPos).concat(this.rows);            if (this.rows.length > this.maxBufferSize)                this.rows = this.rows.slice(0, this.maxBufferSize)         }         this.startPos =  start;      }      this.size = this.rows.length;   },      clear: function() {      this.rows = new Array();      this.startPos = 0;      this.size = 0;   },   isOverlapping: function(start, size) {      return ((start < this.endPos()) && (this.startPos < start + size)) || (this.endPos() == 0)   },   isInRange: function(position) {      return (position >= this.startPos) && (position + this.metaData.getPageSize() <= this.endPos());              //&& this.size()  != 0;   },   isNearingTopLimit: function(position) {      return position - this.startPos < this.metaData.getLimitTolerance();   },   endPos: function() {      return this.startPos + this.rows.length;   },      isNearingBottomLimit: function(position) {      return this.endPos() - (position + this.metaData.getPageSize()) < this.metaData.getLimitTolerance();   },   isAtTop: function() {      return this.startPos == 0;   },   isAtBottom: function() {      return this.endPos() == this.metaData.getTotalRows();   },   isNearingLimit: function(position) {      return ( !this.isAtTop()    && this.isNearingTopLimit(position)) ||             ( !this.isAtBottom() && this.isNearingBottomLimit(position) )   },   getFetchSize: function(offset) {      var adjustedOffset = this.getFetchOffset(offset);      var adjustedSize = 0;      if (adjustedOffset >= this.startPos) { //apending         var endFetchOffset = this.maxFetchSize  + adjustedOffset;         if (endFetchOffset > this.metaData.totalRows)            endFetchOffset = this.metaData.totalRows;         adjustedSize = endFetchOffset - adjustedOffset;  			if(adjustedOffset == 0 && adjustedSize < this.maxFetchSize){			   adjustedSize = this.maxFetchSize;			}      } else {//prepending         var

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -