| New file |
| | |
| | | /** |
| | | * 加载专题图widget |
| | | * @author Wenyb |
| | | * @date 2015/6/30 |
| | | */ |
| | | define([ |
| | | "dojo", |
| | | "dojo/_base/declare", |
| | | "dijit/_WidgetBase", |
| | | "dijit/_TemplatedMixin", |
| | | "dojo/text!controls/page/template.html", |
| | | "dojo/_base/lang", |
| | | "dojo/query", |
| | | "dojo/dom-construct", |
| | | "dojo/dom-style", |
| | | "dojo/on", |
| | | "dojo/dom-class", |
| | | "dojo/window", |
| | | "dojo/_base/array", |
| | | "dojo/dom-attr", |
| | | "dojo/aspect", |
| | | "dojo/domReady!" |
| | | ], function ( |
| | | dojo, |
| | | declare, |
| | | _WidgetBase, |
| | | _TemplatedMixin, |
| | | template, |
| | | lang, |
| | | query, |
| | | domConstruct, |
| | | domStyle, |
| | | on, |
| | | domClass, |
| | | win, |
| | | array, |
| | | domAttr, |
| | | aspect |
| | | ){ |
| | | var Widget = declare([_WidgetBase,_TemplatedMixin], |
| | | { |
| | | templateString: template, |
| | | |
| | | /** |
| | | * 一共的页数 |
| | | */ |
| | | totalCount:10, |
| | | /** |
| | | * 一次显示的页码数 |
| | | */ |
| | | pageCount:5, |
| | | _refNode:null, |
| | | pageSpanlist:[], |
| | | pageSpanEventHandlers:[], |
| | | currentPage:1, |
| | | constructor:function(options,srcNodeRef) |
| | | { |
| | | //this._refNode=refNode; |
| | | var csspath = require.toUrl("controls/page/PageControl.css"); |
| | | lang.mixin(this, options); |
| | | dojo.create("link", |
| | | {href:csspath, type:'text/css', rel:'stylesheet'}, |
| | | document.getElementsByTagName('head')[0]); |
| | | }, |
| | | postCreate:function() |
| | | { |
| | | //this.placeAt(this._refNode); |
| | | this.createPage(); |
| | | }, |
| | | createPage:function(option) |
| | | { |
| | | if(option !== undefined && option != null) |
| | | { |
| | | this.totalCount = option.totalCount; |
| | | this.pageCount=option.pageCount; |
| | | } |
| | | domConstruct.empty(this.pagelist); |
| | | if(this.totalCount < 1) |
| | | { |
| | | this.switchPreButton(false); |
| | | this.switchNextButton(false); |
| | | return; |
| | | } |
| | | this.pageSpanlist=[]; |
| | | this.pageSpanlist.push(this.createPageSpan("1",true)); |
| | | var tmpTotal; |
| | | if(this.totalCount<this.pageCount) |
| | | { |
| | | tmpTotal=this.totalCount+1; |
| | | } |
| | | else |
| | | { |
| | | tmpTotal=this.pageCount+1; |
| | | } |
| | | for(var i=2;i<tmpTotal;i++) |
| | | { |
| | | this.pageSpanlist.push(this.createPageSpan(i.toString(),false)); |
| | | } |
| | | this.currentPage=1; |
| | | this.switchPreButton(false); |
| | | if(this.totalCount==1) |
| | | { |
| | | this.switchNextButton(false); |
| | | } |
| | | else |
| | | { |
| | | this.switchNextButton(true); |
| | | } |
| | | }, |
| | | createPageSpan:function(page,selected) |
| | | { |
| | | var pageDom = domConstruct.create("li",{innerHTML:page},this.pagelist); |
| | | domAttr.set(pageDom,"page",page); |
| | | if(selected) |
| | | { |
| | | domClass.add(pageDom,"pagecontrol-selectpage"); |
| | | } |
| | | this.own(on(pageDom,"click",lang.hitch(this,this._onPageClick))); |
| | | //this.pageSpanEventHandlers.push(on(pageDom,"click",lang.hitch(this,this._onPageClick))); |
| | | return pageDom; |
| | | }, |
| | | _onPageClick:function(evt) |
| | | { |
| | | if(evt.target.innerHTML == this.currentPage.toString()) |
| | | { |
| | | return; |
| | | } |
| | | this.currentPage = parseInt(evt.target.innerHTML); |
| | | this.updateControl(this.currentPage); |
| | | }, |
| | | _onNextClick:function(evt) |
| | | { |
| | | if(domAttr.get(this.nextbutton,"enable") == "false") |
| | | { |
| | | return; |
| | | } |
| | | this.currentPage++; |
| | | this.updateControl(this.currentPage); |
| | | }, |
| | | _onPreClick:function(evt) |
| | | { |
| | | if(domAttr.get(this.prebutton,"enable") == "false") |
| | | { |
| | | return; |
| | | } |
| | | this.currentPage--; |
| | | this.updateControl(this.currentPage); |
| | | }, |
| | | /** |
| | | * 让上一页按钮可用 |
| | | */ |
| | | switchPreButton:function(flag) |
| | | { |
| | | if(flag) |
| | | { |
| | | domClass.remove(this.prebutton,"pagecontrol-pre-disable"); |
| | | domAttr.set(this.prebutton, "enable","true"); |
| | | } |
| | | else |
| | | { |
| | | domClass.add(this.prebutton,"pagecontrol-pre-disable"); |
| | | domAttr.set(this.prebutton, "enable","false"); |
| | | } |
| | | |
| | | |
| | | }, |
| | | /** |
| | | * 让下一页按钮可用 |
| | | */ |
| | | switchNextButton:function(flag) |
| | | { |
| | | if(flag) |
| | | { |
| | | domClass.remove(this.nextbutton,"pagecontrol-next-disable"); |
| | | domAttr.set(this.nextbutton, "enable","true"); |
| | | } |
| | | else |
| | | { |
| | | domClass.add(this.nextbutton,"pagecontrol-next-disable"); |
| | | domAttr.set(this.nextbutton, "enable","false"); |
| | | } |
| | | |
| | | }, |
| | | updateControl:function(nPage) |
| | | { |
| | | //首先移除所有页码控件 |
| | | domConstruct.empty(this.pagelist); |
| | | // for(var i=0;i<this.pageSpanEventHandlers.length;i++) |
| | | // { |
| | | // this.pageSpanEventHandlers[i].remove(); |
| | | // } |
| | | // this.pageSpanEventHandlers=[]; |
| | | //记录是否点击的是第一个或者最后一页 |
| | | var strFlag = ""; |
| | | var i=0; |
| | | //var ctl:LinkButton = null; |
| | | this.currentPage = nPage; |
| | | //需要显示上一页 |
| | | if(this.currentPage>1) |
| | | { |
| | | this.switchPreButton(true); |
| | | } |
| | | //如果点击的是第一项,那么把点击的按钮移到中间 |
| | | if(domAttr.get(this.pageSpanlist[this.pageSpanlist.length-1],"page") == nPage.toString()) |
| | | { |
| | | strFlag = "last"; |
| | | } |
| | | //如果点击的是最后一项,那么把点击的按钮移到中间 |
| | | else if(domAttr.get(this.pageSpanlist[0],"page") == nPage.toString()) |
| | | { |
| | | strFlag = "first"; |
| | | } |
| | | switch(strFlag) |
| | | { |
| | | case "last": |
| | | var thisPageCount = -1; |
| | | if(this.pageCount>this.totalCount) |
| | | thisPageCount = this.totalCount; |
| | | else |
| | | thisPageCount = this.pageCount; |
| | | var step = parseInt((thisPageCount-1)/2); |
| | | this.pageSpanlist = []; |
| | | //当前按钮可以放到中间 |
| | | if(step<(this.totalCount-this.currentPage)) |
| | | { |
| | | for(i=step;i>=0;i--) |
| | | { |
| | | if(i == 0) |
| | | { |
| | | this.pageSpanlist.push(this.createPageSpan((this.currentPage - i).toString(),true)); |
| | | } |
| | | else |
| | | { |
| | | this.pageSpanlist.push(this.createPageSpan((this.currentPage - i).toString(),false)); |
| | | } |
| | | } |
| | | //如果页面数是偶数,则需要再加1 |
| | | if(this.pageCount%2 == 0) |
| | | { |
| | | step++; |
| | | } |
| | | for(i=1;i<=step;i++) |
| | | { |
| | | this.pageSpanlist.push(this.createPageSpan((this.currentPage + i).toString(),false)); |
| | | } |
| | | } |
| | | //当前按钮不可放在中间 |
| | | else |
| | | { |
| | | for(i = this.totalCount-thisPageCount+1;i<=this.totalCount;i++) |
| | | { |
| | | if(i == this.currentPage) |
| | | { |
| | | this.pageSpanlist.push(this.createPageSpan(i.toString(),true)); |
| | | } |
| | | else |
| | | { |
| | | this.pageSpanlist.push(this.createPageSpan(i.toString(),false)); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case "first": |
| | | thisPageCount= -1; |
| | | if(this.pageCount>this.totalCount) |
| | | thisPageCount = this.totalCount; |
| | | else |
| | | thisPageCount = this.pageCount; |
| | | step = parseInt((thisPageCount-1)/2); |
| | | |
| | | this.pageSpanlist = []; |
| | | //当前按钮可以放到中间 |
| | | if(step<this.currentPage) |
| | | { |
| | | for(i=step;i>=0;i--) |
| | | { |
| | | if(i == 0) |
| | | { |
| | | this.pageSpanlist.push(this.createPageSpan((this.currentPage - i).toString(),true)); |
| | | } |
| | | else |
| | | { |
| | | this.pageSpanlist.push(this.createPageSpan((this.currentPage - i).toString(),false)); |
| | | } |
| | | } |
| | | //如果页面数是偶数,则需要再加1 |
| | | if(thisPageCount%2 == 0) |
| | | { |
| | | step++; |
| | | } |
| | | for(i=1;i<=step;i++) |
| | | { |
| | | this.pageSpanlist.push(this.createPageSpan((this.currentPage + i).toString(),false)); |
| | | } |
| | | } |
| | | //当前按钮不可放在中间 |
| | | else |
| | | { |
| | | for(i = 1;i<=thisPageCount;i++) |
| | | { |
| | | if(i == this.currentPage) |
| | | { |
| | | this.pageSpanlist.push(this.createPageSpan(i.toString(),true)); |
| | | } |
| | | else |
| | | { |
| | | this.pageSpanlist.push(this.createPageSpan(i.toString(),false)); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | default: |
| | | //array.forEach(this.pageSpanlist,this.updatePageSpan,this); |
| | | break; |
| | | } |
| | | for(i=0;i< this.pageSpanlist.length;i++) |
| | | { |
| | | var pagevalue = domAttr.get(this.pageSpanlist[i],"page"); |
| | | this.pageSpanlist[i].innerHTML=pagevalue; |
| | | domConstruct.place(this.pageSpanlist[i],this.pagelist); |
| | | } |
| | | array.forEach(this.pageSpanlist,this.updatePageSpan,this); |
| | | //需要显示“下一页” |
| | | if(this.currentPage<this.totalCount) |
| | | { |
| | | this.switchNextButton(true) |
| | | } |
| | | else |
| | | { |
| | | this.switchNextButton(false) |
| | | } |
| | | if(this.currentPage == 1) |
| | | { |
| | | this.switchPreButton(false); |
| | | } |
| | | else |
| | | { |
| | | this.switchPreButton(true); |
| | | } |
| | | //触发事件 |
| | | this.onpagechange(); |
| | | // var e:PageChangeEvent = new PageChangeEvent(); |
| | | // e.currentPage = this._currentPage; |
| | | // this.dispatchEvent(e); |
| | | }, |
| | | onpagechange:function() |
| | | { |
| | | return this.currentPage; |
| | | }, |
| | | updatePageSpan:function(span) |
| | | { |
| | | if(span.innerHTML == this.currentPage.toString()) |
| | | { |
| | | domClass.add(span,"pagecontrol-selectpage"); |
| | | } |
| | | else |
| | | { |
| | | if(domClass.contains(span,"pagecontrol-selectpage")) |
| | | { |
| | | domClass.remove(span,"pagecontrol-selectpage"); |
| | | } |
| | | } |
| | | }, |
| | | _onMouseMove:function(evt) |
| | | { |
| | | var newtop = evt.clientY-this._refNode.offsetTop-this._ystart; |
| | | var newleft = evt.clientX-this._refNode.offsetLeft-this._xstart; |
| | | domStyle.set(this.domNode,"top",newtop.toString()+"px"); |
| | | domStyle.set(this.domNode,"left",newleft.toString()+"px"); |
| | | }, |
| | | _onMouseUp:function(evt) |
| | | { |
| | | if(this._movehandler != null){ |
| | | this._movehandler.remove(); |
| | | this._uphandler.remove(); |
| | | this._movehandler = null; |
| | | domStyle.set(this.controlbar,"cursor","default"); |
| | | } |
| | | }, |
| | | _setModalAttr:function(modal) |
| | | { |
| | | if(modal !== undefined && modal !== null) |
| | | { |
| | | this.modal = modal; |
| | | } |
| | | if(this.modal === true) |
| | | { |
| | | if(this._modalDiv == null){ |
| | | this._modalDiv = domConstruct.create("div"); |
| | | domClass.add(this._modalDiv,"custom-popupwindow-modal"); |
| | | } |
| | | var body = query("body")[0]; |
| | | domConstruct.place(this._modalDiv,body,"last"); |
| | | } |
| | | }, |
| | | _getModalAttr:function() |
| | | { |
| | | return this.modal; |
| | | }, |
| | | _onCloseButtonClick:function(evt) |
| | | { |
| | | evt.stopPropagation(); |
| | | this.close(); |
| | | }, |
| | | _onCloseButtonMouseDown:function(evt) |
| | | { |
| | | evt.stopPropagation(); |
| | | }, |
| | | close:function() |
| | | { |
| | | this._refNode.removeChild(this.domNode); |
| | | if(this.modal) |
| | | { |
| | | var body = query("body")[0]; |
| | | body.removeChild(this._modalDiv); |
| | | } |
| | | }, |
| | | setContent:function(contentDom) |
| | | { |
| | | domConstruct.empty(this.content); |
| | | domConstruct.place(contentDom,this.content); |
| | | }, |
| | | setInnerHTML:function(htmlText) |
| | | { |
| | | domConstruct.empty(this.content); |
| | | this.content.innerHTML = htmlText; |
| | | }, |
| | | show:function() |
| | | { |
| | | domStyle.set(this.domNode, "display", "block"); |
| | | }, |
| | | hide:function() |
| | | { |
| | | domStyle.set(this.domNode, "display", "none"); |
| | | } |
| | | }); |
| | | return Widget; |
| | | }); |