magix-components
Version:
1 lines • 6.3 kB
JavaScript
define("mx-calendar/range",["magix","$","./index"],function(t,e,a){var i=t("magix"),d=t("$"),n=t("./index"),r=n.parse,s=n.format;i.applyStyle("g",".bi{border:1px solid #e6e6e6;padding:10px 0;border-radius:4px;background-color:#fff;width:265px}.bj{padding:0 10px}.bk{height:24px;line-height:24px;border-radius:4px;margin:0 10px 10px 0;width:70px;float:left;text-align:center;display:inline-block;cursor:pointer}.bk:hover{background:#e6e6e6}.bl,.bl:hover{color:#fff;background:#6363e6}.bm{padding:0 10px;margin-bottom:15px}.bn{background-color:#f0f0f0;border:0;height:24px;width:117px;text-align:center;display:inline-block;color:#333;border-radius:4px;padding:6px 9px;cursor:text}.bo{border-top:1px solid #e6e6e6;margin-left:10px;padding-top:10px;width:92%}.bp{width:330px}.bp .bn{width:150px}");var c=function(t,e){e||(e=new Date);var a=new Date(e.getTime()+864e5*t);return a=a.getFullYear()+"/"+(a.getMonth()+1)+"/"+a.getDate(),new Date(a)},o=function(t){return(t=new Date(t)).setHours(23),t.setMinutes(59),t.setSeconds(59),t},_=function(t){return(t=new Date(t)).setHours(0),t.setMinutes(0),t.setSeconds(0),t},u=c(0),p=c(-1),l=function(t){var e=c(-7),a=t-e.getDay();return{start:c(a,e),end:o(c(a+6,e))}},g=l(0),m=l(1),h=function(){var t=new Date(u.getFullYear(),u.getMonth()-1,1),e=t.getFullYear(),a=t.getMonth(),i=32-new Date(e,a,32).getDate();return{start:t,end:o(new Date(e,a,i))}}();h.text="上月",g.text="上周(周日至周六)",m.text="上周(周一至周日)";for(var x={today:{text:"今天",start:u,end:o(u)},yesterday:{text:"昨天",start:p,end:o(p)},preMonth:h,preWeekSun:g,preWeekMon:m,passedThisMonth:{text:"本月",start:c(1-u.getDate()),end:o(p)},lastestThisMonth:{text:"本月",start:c(1-u.getDate()),end:o(u)}},v=[2,6,13,14,29,89],f=0,k=void 0,b=void 0;f<v.length;f++)x["passed"+(b=(k=v[f])+1)]={text:"过去"+b+"天",start:c(-b),end:o(p)},x["lastest"+b]={text:"最近"+b+"天",start:c(-k),end:o(u)};var $=["preMonth","preWeekMon","preWeekSun","passedThisMonth","lastestThisMonth"],D=i.View.extend({tmpl:{html:'<div mx-guid="g0" class="bi<%if($$.showTime){%> bp<%}%> ah" mx-contextmenu="__D()">1</div>',subs:[{keys:["showTime","quickDates"],path:'div[mx-guid="g0"]',tmpl:'<%if($$.quickDates.length){%><div class="bj"><div class="n">快捷日期</div><div mx-guid="g1" class="ag">2</div></div><%}%><div class="bm"><div class="n">日期范围</div><div class="ag"><input mx-guid="g2" readonly="readonly" class="bn" data-hidden="<%=$$.dates.startStr%>" value="<%=$$.dates.startStr%>" mx-click="__P({first:true})" id="start_<%=$$.id%>" mx-change="__O()">-<input mx-guid="g3" readonly="readonly" class="bn" data-hidden="<%=$$.dates.endStr%>" value="<%=$$.dates.endStr%>" mx-click="__P()" id="end_<%=$$.id%>" mx-change="__O()"></div></div><div class="bo ag"><button mx-click="__n()" type="button" class="al am">确定</button><button mx-click="__Q()" type="button" class="al s">取消</button></div>',s:"1",attr:'class="bi<%if($$.showTime){%> bp<%}%> ah"',attrs:[{n:"class",p:1,f:"className"}],mask:"21"},{keys:["quickDates","quickDatesMap","dates"],path:'div[mx-guid="g1"]',tmpl:'<%for(var a=0;a<$$.quickDates.length;a++){var b=$$.quickDates[a],c=$$.quickDatesMap[b]%><span class="bk aj<%if($$.dates.quickDateKey==b){%> bl<%}%>" mx-click="__n({quick:true,key:\'<%=$eq(b)%>\'})" title="<%=c?c.text:b%>"><%=c?c.text:b%></span><%}%>',s:"2"},{keys:["dates","id"],path:'input[mx-guid="g2"]',attr:'data-hidden="<%=$$.dates.startStr%>" value="<%=$$.dates.startStr%>" mx-click="__P({first:true})" id="start_<%=$$.id%>"',attrs:[{n:"data-hidden"},{n:"value",q:1,p:1},{n:"mx-click"},{n:"id",p:1}]},{keys:["dates","id"],path:'input[mx-guid="g3"]',attr:'data-hidden="<%=$$.dates.endStr%>" value="<%=$$.dates.endStr%>" mx-click="__P()" id="end_<%=$$.id%>"',attrs:[{n:"data-hidden"},{n:"value",q:1,p:1},{n:"mx-click"},{n:"id",p:1}]}]},init:function(t){var e=this;e.__E=t.min,e.__F=t.max,e.__G=t.dates,e.__H=t.quickDates||[],e.__I=t.placement,e.__J=t.align,e.__K=t.timeType,e.__L=t.dateType,e.__M=t.formatter},__i:function(t){var e=this,a=i.inside(t,e.id);if(!a)for(var d=e.owner.children(),n=d.length-1;n>=0;n--){var r=i.Vframe.get(d[n]);if(r&&(a=r.invoke("inside",t)),a)break}return a},render:function(){var t=this;t.updater.digest({id:t.id,showTime:t.__K,quickDatesMap:x,quickDates:t.__H,dates:t.__G}),t.__h=d("#"+t.id)},__N:function(){var t=this;t.updater.digest({dates:t.__G})},"__O<change>":function(t){var e=this;t.stopPropagation(),d(t.eventTarget).data("hidden",t.date+(t.time?" "+t.time:""));var a=d("#start_"+e.id).data("hidden"),i=d("#end_"+e.id).data("hidden"),n=e.updater.get("dates"),s=r(a,n.formatter);r(i,n.formatter).getTime()<s.getTime()&&(i=a,d("#end_"+e.id).data("hidden",i)),n=D.getDescription(a,i,e.__H,e.__M),e.updater.digest({dates:n})},"__P<click>":function(t){var e=this,a=t.eventTarget,i=t.params,n={max:e.__F,min:e.__E,timeType:e.__K,dateType:e.__L,selected:a.value,placement:e.__I,align:e.__J};i.first||(n.min=_(d("#start_"+e.id).data("hidden"))),a.vframe?a.vframe.invoke("update",n):e.owner.mountVframe(a.id,"mx-calendar/datepicker",n).invoke("__e")},"__n<click>":function(t){var e,a,i,n,r=this,c=t.params,o=r.updater,_=o.get("dates");if(c.quick){_.quickDateKey=c.key;var u=x[c.key];e=u.start,a=u.end,i=s(e,_.formatter),n=s(a,_.formatter),d("#start_"+r.id).data("hidden",i),d("#end_"+r.id).data("hidden",n),_.startStr=i,_.endStr=n,_.start=e,_.end=a,_.quickDateText=u.text,o.digest({dates:_})}else i=d("#start_"+r.id).data("hidden"),n=d("#end_"+r.id).data("hidden"),_=D.getDescription(i,n,r.__H,r.__M),o.digest({dates:_});r.__h.trigger({type:"change",dates:r.__G=_})},"__Q<click>":function(){var t=this;t.__h.trigger("cancel"),t.__N()},"__D<contextmenu>":function(t){t.preventDefault()}},{getSupportQuickDates:function(){return x},getDescription:function(t,e,a,d){t=r(t),e=r(e);var n,c={startStr:s(t,d),endStr:s(e,d),formatter:d},o=u.getTime(),_=p.getTime(),l=t.getTime(),g=e.getTime();if(l==g)o==g?n="today":_==g&&(n="yesterday");else{var m=(g-l)/864e5+1;_==g?x[n="passed"+m]||(n=0):o==g&&(x[n="lastest"+m]||(n=0))}if(!n)for(var h=$.length-1;h>-1;h--){var v=$[h],f=x[v];if(g==f.end.getTime()&&l==f.start.getTime()){n=v;break}}return n&&a&&(i.toMap(a)[n]||(n=0)),n&&(c.quickDateText=x[n].text,c.quickDateKey=n),c}});a.exports=D});