quoslibero
Version:
FusionCharts JavaScript charting framework
1 lines • 8.5 kB
JavaScript
import{SmartRenderer}from'../../../../../fc-core/src/component-interface';import Calendar from'../../../vendors/fc-calendar/dist/fc-calendar';import{PXSTRING,DEFAULT_FT_FONT}from'../../../../../fc-core/src/lib';import DateBox from'./date-box';import TimeBox from'./time-box';import Button from'./button';const DEFAULT_CALENDAR_GAP=25,DEFAULT_VERTICAL_PADDING=8,DEFAULT_HORIZONTAL_PADDING=5,DEFAULT_WIDGET_FONT_SIZE=11,formatDate=a=>(10>a?'0'+a:a)+'',isWithinDate=(a,b,c)=>{var d=new Date(b.year,b.month,b.day),e=new Date(c.year,c.month,c.day),f=new Date(a.year,a.month,a.day);return!!(+f>=+d&&+f<=+e)};class CustomRangeManager extends SmartRenderer{constructor(a){super(a);let b=this;b.addToEnv('fontParser',a=>(a=parseFloat(a),isNaN(a)?DEFAULT_WIDGET_FONT_SIZE:a))}__setDefaultConfig(){let a=this.config;a.marginLeft=10,a.marginRight=10,a.marginTop=15,a.marginBottom=15,a.contextStart={year:1970,month:1,day:1},a.contextEnd={year:2070,month:1,day:1},a.calendarDim={height:191,width:163},this._calendars={},a._backgroundStyle={"font-size":DEFAULT_WIDGET_FONT_SIZE+PXSTRING,"font-family":'Verdana,sans-serif',border:'1px solid #cdcdcd',"background-color":'#ffffff'},a._pointerStyle={"font-size":DEFAULT_WIDGET_FONT_SIZE+PXSTRING,"font-family":'Verdana,sans-serif',"border-left":'1px solid #cdcdcd',"border-right":'0px solid #cdcdcd',"border-top":'1px solid #cdcdcd',"border-bottom":'0px solid #cdcdcd',transform:'rotate(45deg)',"background-color":'#ffffff'}}configureAttributes(a={}){let b,c,d,e=this,f=e.config,g=e.getCalendars(),h=e.getFromEnv('getStyleDef'),i=e.getFromEnv('baseTextStyle');return Object.keys(a).forEach(b=>f[b]=a[b]),b=f.extStyle,'visible'===f.visibility?void(e.attachChild(DateBox,'left-date','left-date').configure({label:'From: ',date:f.startDate,id:'left',labelStyle:b.label,inputStyle:b.input}),e.attachChild(DateBox,'right-date','right-date').configure({label:'To: ',date:f.endDate,id:'right',labelStyle:b.label,inputStyle:b.input}),f.showTime&&(e.attachChild(TimeBox,'left-time','left-time').configure({time:f.startDate,labelStyle:b.label,selectStyle:b.select}),e.attachChild(TimeBox,'right-time','right-time').configure({time:f.endDate,labelStyle:b.label,selectStyle:b.select})),c=b.button&&b.button.apply?Object.assign({},i,b.button.apply):Object.assign({color:'#ffffff',"font-size":DEFAULT_WIDGET_FONT_SIZE+PXSTRING},i),e.attachChild(Button,'apply','apply').configure({label:'Apply',type:'submit',customStyle:c,buttonStyle:c,"button:hoverout":c,"button:hover":b['button:hover']&&b['button:hover'].apply||{}}),d=b.button&&b.button.cancel?Object.assign({},i,b.button.cancel):Object.assign({backgroundColor:'#ffffff',color:'#7A7A7A',border:'0px',"font-size":DEFAULT_WIDGET_FONT_SIZE+PXSTRING},i),e.attachChild(Button,'cancel','cancel').configure({label:'Cancel',type:'cancel',customStyle:d,buttonStyle:d,"button:hoverout":d,"button:hover":b['button:hover']&&b['button:hover'].cancel||{}}),f._finalBackgroundStyle=Object.assign(f._backgroundStyle,h(b.background)),f._finalPointerStyle=Object.assign(f._pointerStyle,h(b.background)),f._finalPointerStyle.border&&(f._finalPointerStyle['border-left']=f._finalPointerStyle['border-top']=f._finalPointerStyle.border),f._finalPointerStyle['border-right']=f._finalPointerStyle['border-bottom']='0px',delete f._finalPointerStyle.border):(g.left&&(g.left.dispose(),delete g.left),void(g.right&&(g.right.dispose(),delete g.right)))}manageSpace(){var a=Math.max;let b,c,d,e,f,g,h,i,j,k,l=this,m=l.config,n=4,o=0,p=0,q={height:0,width:0},r={height:0,width:0},s=m.calendarDim;'visible'!==m.visibility||(d=l.getChildren('left-date')[0],e=l.getChildren('right-date')[0],f=l.getChildren('left-time'),g=l.getChildren('right-time'),h=l.getChildren('apply')[0],i=l.getChildren('cancel')[0],f&&(f=f[0],q=f.getDimension()),g&&(g=g[0],r=g.getDimension()),!q.height&&(n=2),b=d.getDimension(),c=e.getDimension(),j=h.getDimension(),k=i.getDimension(),o=a(q.width,b.width,s.width),m.leftCalendarPosition={x:m.marginLeft,y:m.marginTop+b.height+DEFAULT_VERTICAL_PADDING},m.rightCalendarPosition={x:m.marginLeft+o+DEFAULT_CALENDAR_GAP,y:m.marginTop+c.height+DEFAULT_VERTICAL_PADDING},d.setTranslation(m.marginLeft,m.marginTop),e.setTranslation(m.marginLeft+o+DEFAULT_CALENDAR_GAP,m.marginTop),f&&f.setTranslation(m.marginLeft,m.leftCalendarPosition.y+s.height+16),g&&g.setTranslation(m.marginLeft+o+DEFAULT_CALENDAR_GAP,m.rightCalendarPosition.y+s.height+16),h.setTranslation(m.marginLeft,m.leftCalendarPosition.y+s.height+n*DEFAULT_VERTICAL_PADDING+q.height),i.setTranslation(m.marginLeft+j.width+DEFAULT_HORIZONTAL_PADDING,m.leftCalendarPosition.y+s.height+n*DEFAULT_VERTICAL_PADDING+q.height),p=a(m.marginLeft+j.width+DEFAULT_HORIZONTAL_PADDING+k.width,m.rightCalendarPosition.x+s.width,m.marginLeft+o+DEFAULT_CALENDAR_GAP+r.width,m.marginLeft+o+DEFAULT_CALENDAR_GAP+c.width),m.width=p+m.marginRight,m.height=m.leftCalendarPosition.y+s.height+j.height+n*DEFAULT_VERTICAL_PADDING+q.height+m.marginBottom)}isWithinWidget(a,b){let c=this.config,d=c.x,e=c.y,f=e+c.height,g=d+c.width;return a>d&&a<g&&b>e&&b<f}draw(){this.manageSpace();let a=this,b=a.getLinkedParent(),c=a.config,d=b.config.containerPos;c.x=d.x-c.width/2,c.y=d.y+4,a.addGraphicalElement({el:'html',attr:{x:c.x,y:c.y,width:c.width,height:c.height,type:'div',fill:'ffffff',display:'block',class:'fc-crs-widget',visibility:c.visibility},css:c._backgroundStyle,component:a,label:'box-container',id:'box-container'}),a.addGraphicalElement({el:'html',attr:{x:c.width/2-10,y:-8,width:15,height:15,type:'div',display:'block',visibility:c.visibility},css:c._finalPointerStyle,container:{label:'box-container',id:'box-container'},component:a,label:'box-pointer',id:'box-pointer'}),c.drawCalendars&&a.drawCalendars()}getCalendars(){return this._calendars}drawCalendars(){let a,b=this,c=b.config,d=c.extStyle,e=b.getCalendars(),f=c.leftCalendarPosition,g=c.rightCalendarPosition,h=b.getGraphicalElement('box-container','box-container').element;e.left?e.left.configure({weekLabel:['S','M','T','W','T','F','S'],selectedDate:c.startDate,posX:f.x,posY:f.y,rangeStart:c.contextStart,rangeEnd:c.contextEnd,customCssClass:d.calendar||{},showInactiveMonths:!0,container:h}):e.left=new Calendar({weekLabel:['S','M','T','W','T','F','S'],selectedDate:c.startDate,posX:f.x,posY:f.y,container:h,id:'left',rangeStart:c.contextStart,rangeEnd:c.contextEnd,showInactiveMonths:!0,customCssClass:d.calendar||{},events:{onDateChange:function(a){b.updateDate(a,'left')},onMonthChange:function(a){b.updateDate(a,'left')},onYearChange:function(a){b.updateDate(a,'left')}},"font-family":DEFAULT_FT_FONT+' !important'}),e.right?e.right.configure({weekLabel:['S','M','T','W','T','F','S'],selectedDate:c.endDate,posX:g.x,posY:g.y,rangeStart:c.contextStart,rangeEnd:c.contextEnd,customCssClass:d.calendar||{},showInactiveMonths:!0,container:h}):e.right=new Calendar({weekLabel:['S','M','T','W','T','F','S'],selectedDate:c.endDate,posX:g.x,posY:g.y,rangeStart:c.contextStart,rangeEnd:c.contextEnd,showInactiveMonths:!0,customCssClass:d.calendar||{},container:h,id:'right',events:{onDateChange:function(a){b.updateDate(a,'right')},onMonthChange:function(a){b.updateDate(a,'right')},onYearChange:function(a){b.updateDate(a,'right')}},"font-family":DEFAULT_FT_FONT+' !important'}),a=e.left.getDimension(),(a.width!==c.calendarDim.width||a.height!==c.calendarDim.height)&&(c.calendarDim=a,b.asyncDraw())}updateDate(a,b){let c=this,d=c.getChildren(b+'-date')[0],e=d.getGraphicalElement('box','box');d.configure({date:a}),e.element.value=`${formatDate(a.day)}/${formatDate(a.month)}/${formatDate(a.year)}`}updateCalendar(a,b){let c=this,d=c.config,e=c.getCalendars();isWithinDate(a,d.contextStart,d.contextEnd)?e[b]&&e[b].configure({selectedDate:a}):c.getChildren(b+'-date')[0].setData({},!0)}submitData(a='cancel'){let b,c,d=this,e=d.getLinkedParent(),f=e.getFromEnv('chart'),g=[],h=d.getCalendars(),i=f.getFromEnv('UTC'),j=h.left.getDate(),k=h.right.getDate(),l=d.getChildren('left-time'),m=d.getChildren('right-time'),n={hours:0,minutes:0,seconds:0},o={hours:0,minutes:0,seconds:0};l&&(n=l[0].getTime()),m&&(o=m[0].getTime()),e.setData({},!0),'submit'===a&&(b=i?Date.UTC(j.year,j.month-1,j.day,n.hours,n.minutes,n.seconds):new Date(j.year,j.month-1,j.day,n.hours,n.minutes,n.seconds),c=i?Date.UTC(k.year,k.month-1,k.day,o.hours,o.minutes,o.seconds):new Date(k.year,k.month-1,k.day,o.hours,o.minutes,o.seconds),g.push(+b),g.push(+c),f.setFocusLimit(g)),e.removeDocumentListener()}}export{formatDate};export default CustomRangeManager;