sogo/UI/WebServerResources/js/Scheduler.js

3 lines
48 KiB
JavaScript
Raw Normal View History

2015-12-10 00:55:04 +01:00
(function(){"use strict";angular.module("SOGo.SchedulerUI",["ngSanitize","ui.router","angularFileUpload","SOGo.Common","SOGo.PreferencesUI","SOGo.ContactsUI","SOGo.MailerUI"]).config(configure).run(runBlock);configure.$inject=["$stateProvider","$urlRouterProvider"];function configure($stateProvider,$urlRouterProvider){$stateProvider.state("calendars",{url:"/calendar",views:{calendars:{templateUrl:"UIxCalMainView",controller:"CalendarsController",controllerAs:"app"}},resolve:{stateCalendars:stateCalendars}}).state("calendars.view",{url:"/{view:(?:day|week|month|multicolumnday)}/:day",views:{calendarView:{templateUrl:function($stateParams){return $stateParams.view+"view?day="+$stateParams.day},controller:"CalendarController",controllerAs:"calendar"}},resolve:{stateEventsBlocks:stateEventsBlocks}});$urlRouterProvider.when("/calendar/day",function(){var now=new Date;return"/calendar/day/"+now.getDayString()});$urlRouterProvider.when("/calendar/multicolumnday",function(){var now=new Date;return"/calendar/multicolumnday/"+now.getDayString()});$urlRouterProvider.when("/calendar/week",function(){var now=new Date;return"/calendar/week/"+now.getDayString()});$urlRouterProvider.when("/calendar/month",function(){var now=new Date;return"/calendar/month/"+now.getDayString()});$urlRouterProvider.otherwise("/calendar")}stateCalendars.$inject=["Calendar"];function stateCalendars(Calendar){return Calendar.$calendars||Calendar.$findAll(window.calendarsData)}stateEventsBlocks.$inject=["$stateParams","Component","Calendar"];function stateEventsBlocks($stateParams,Component,Calendar){return Component.$eventsBlocksForView($stateParams.view,$stateParams.day.asDate()).then(function(views){_.forEach(views,function(view){if(view.id){view.calendar=new Calendar({id:view.id,name:view.calendarName})}});return views})}runBlock.$inject=["$rootScope","$log","$location","$state","Preferences"];function runBlock($rootScope,$log,$location,$state,Preferences){$rootScope.$on("$stateChangeError",function(event,toState,toParams,fromState,fromParams,error){$log.error(error);$state.go("calendar")});$rootScope.$on("$routeChangeError",function(event,current,previous,rejection){$log.error(event,current,previous,rejection)});if($location.url().length===0){Preferences.ready().then(function(){var url="/calendar/",view=/(.+)view/.exec(Preferences.settings.Calendar.View);if(view)url+=view[1];else url+="week";$location.replace().url(url)})}}})();(function(){"use strict";CalendarController.$inject=["$scope","$rootScope","$state","$stateParams","Calendar","Component","stateEventsBlocks"];function CalendarController($scope,$rootScope,$state,$stateParams,Calendar,Component,stateEventsBlocks){var vm=this,deregisterCalendarsList;vm.views=stateEventsBlocks;vm.changeView=changeView;deregisterCalendarsList=$rootScope.$on("calendars:list",updateView);$scope.$on("$destroy",deregisterCalendarsList);function updateView(){Component.$eventsBlocksForView($stateParams.view,$stateParams.day.asDate()).then(function(data){vm.views=data;_.forEach(vm.views,function(view){if(view.id){view.calendar=new Calendar({id:view.id,name:view.calendarName})}})})}function changeView($event){var date=angular.element($event.currentTarget).attr("date");$state.go("calendars.view",{view:$stateParams.view,day:date})}}angular.module("SOGo.SchedulerUI").controller("CalendarController",CalendarController)})();(function(){"use strict";CalendarListController.$inject=["$rootScope","$timeout","$state","$mdDialog","Dialog","Preferences","Calendar","Component"];function CalendarListController($rootScope,$timeout,$state,$mdDialog,Dialog,Preferences,Calendar,Component){var vm=this;vm.component=Component;vm.componentType="events";vm.selectedList=0;vm.selectComponentType=selectComponentType;vm.unselectComponents=unselectComponents;vm.selectAll=selectAll;vm.toggleComponentSelection=toggleComponentSelection;vm.confirmDeleteSelectedComponents=confirmDeleteSelectedComponents;vm.openEvent=openEvent;vm.openTask=openTask;vm.newComponent=newComponent;vm.filter=filter;vm.filteredBy=filteredBy;vm.sort=sort;vm.sortedBy=sortedBy;vm.rel
element.off("mouseover",updateFromPointerHandler);angular.element($window).off("resize",updateCoordinates)});function initView(){var quarterHeight;quarterHeight=getQuarterHeight();view={type:type,quarterHeight:quarterHeight,scrollStep:6*quarterHeight,maxX:getMaxColumns(),element:scrollView};angular.element($window).on("resize",updateCoordinates);updateCoordinates();if(type!="monthly")Preferences.ready().then(function(){var time,hourCell,quartersOffset;if(Preferences.defaults.SOGoDayStartTime){time=Preferences.defaults.SOGoDayStartTime.split(":");hourCell=document.getElementById("hour"+parseInt(time[0]));quartersOffset=parseInt(time[1])*quarterHeight;scrollView.scrollTop=hourCell.offsetTop+quartersOffset}})}function getQuarterHeight(){var hour0,hour23,height=null;hour0=document.getElementById("hour0");hour23=document.getElementById("hour23");if(hour0&&hour23)height=(hour23.offsetTop-hour0.offsetTop)/(23*4);return height}function getDayDimensions(viewLeft){var width,height,leftOffset,topOffset,nodes,domRect,tileHeader;height=width=leftOffset=topOffset=0;nodes=scrollView.getElementsByClassName("day0");if(nodes.length>0){domRect=nodes[0].getBoundingClientRect();height=domRect.height;width=domRect.width;leftOffset=domRect.left-viewLeft;tileHeader=nodes[0].getElementsByClassName("sg-calendar-tile-header");if(tileHeader.length>0)topOffset=tileHeader[0].clientHeight}return{height:height,width:width,offset:{left:leftOffset,top:topOffset}}}function getMaxColumns(){var max=0;max=scrollView.getElementsByClassName("day").length-1;return max}function updateCoordinates(){var domRect,dayDimensions;domRect=scrollView.getBoundingClientRect();dayDimensions=getDayDimensions(domRect.left);angular.extend(view,{coordinates:{x:domRect.left,y:domRect.top},dayHeight:dayDimensions.height,dayWidth:dayDimensions.width,daysOffset:dayDimensions.offset.left,topOffset:dayDimensions.offset.top})}function onDragStart(){element.on("mouseover",updateFromPointerHandler);updateFromPointerHandler()}function onDragEnd(){element.off("mouseover",updateFromPointerHandler);Calendar.$view=null}function updateFromPointerHandler(){var scrollStep,pointerHandler,pointerCoordinates,now,scrollY,minY,delta;scrollStep=view.scrollStep;pointerHandler=Component.$ghost.pointerHandler;if(pointerHandler){pointerCoordinates=pointerHandler.getContainerBasedCoordinates(view);if(pointerCoordinates){Calendar.$view=view;now=(new Date).getTime();if(!lastScroll||now>lastScroll+100){lastScroll=now;scrollY=pointerCoordinates.y-scrollStep;if(scrollY<0){minY=-scrollView.scrollTop;if(scrollY<minY)scrollY=minY;scrollView.scrollTop+=scrollY}else{scrollY=pointerCoordinates.y+scrollStep;delta=scrollY-scrollView.clientHeight;if(delta>0){scrollView.scrollTop+=delta}}}}}}}}}sgCalendarScrollViewController.$inject=["$scope"];function sgCalendarScrollViewController($scope){this.type=$scope.type}angular.module("SOGo.SchedulerUI").directive("sgCalendarScrollView",sgCalendarScrollView)})();(function(){"use strict";function sgCalendarTable(){return{restrict:"E",scope:{calendars:"=sgCalendars",calendar:"@sgCalendar",blocksType:"@sgBlocksType",day:"@sgDay",clickBlock:"&sgClick"},template:["<sg-calendar-day-table",' sg-blocks="calendars[calendar][blocksType]"',' sg-day="day"',' sg-click="clickBlock({event: clickEvent, component: clickComponent})"/>'].join("")}}angular.module("SOGo.SchedulerUI").directive("sgCalendarTable",sgCalendarTable)})();(function(){"use strict";function sgCategoryStylesheet(){return{restrict:"E",require:"ngModel",scope:{ngModel:"="},replace:true,template:['<style type="text/css">'," .bg-category{{ ngModel.id }} {"," background-color: {{ ngModel.color }} !important;"," }"," .bdr-category{{ ngModel.id }} {"," border-color: {{ ngModel.color }} !important;"," }","</style>"].join("")}}angular.module("SOGo.SchedulerUI").directive("sgCategoryStylesheet",sgCategoryStylesheet)})();(function(){"use strict";sgDraggableCalendarBlock.$inject=["$rootScope","$timeout","$log","Calendar","CalendarSettings","Component"];function sgDraggableCalendarBlock($rootScope,$timeout,$log,Calendar,Cal
//# sourceMappingURL=Scheduler.js.map