Show
Ignore:
Timestamp:
08/17/10 13:00:24 (21 months ago)
Author:
mszopinski
Message:

calendar, simple month display

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • ssme/trunk/flex/Calendar/src/Calendar.mxml

    r4043 r4044  
    6767    <mx:Fade id="fadeOut" duration="300" alphaFrom="1.0" alphaTo="0" /> 
    6868    <!-- ========================================================= --> 
    69     <mx:DateFormatter id="dateFormatter" formatString="DD.MM.YYYY" /> 
     69    <mx:DateFormatter id="dayDateFormatter" formatString="DD.MM.YYYY" /> 
     70    <mx:DateFormatter id="monthDateFormatter" formatString="MMMM YYYY" />     
    7071    <!-- ========================================================= --> 
    7172    <mx:Style source="assets/calendar.css" /> 
     
    8081            > 
    8182 
    82         <mx:HBox width="100%" id="select" height="35" backgroundColor="red" verticalAlign="middle"> 
     83        <mx:HBox width="100%" id="select" height="30" verticalAlign="middle"> 
    8384             
    8485            <mx:ComboBox id="calendarCombo" dataProvider="{ calendarsList }" labelField="name" /> 
     
    118119                horizontalScrollPolicy="off" verticalScrollPolicy="off"> 
    119120             
    120             <mx:HBox id="dayBox" width="100%" height="{ canvasContainer.height }" maxHeight="{ canvasContainer.height }" paddingTop="10" paddingBottom="10" horizontalScrollPolicy="off" verticalScrollPolicy="off"> 
     121            <mx:HBox id="dayBox" width="100%" height="{ canvasContainer.height }" maxHeight="{ canvasContainer.height }" 
     122                 paddingTop="10" paddingBottom="10" horizontalScrollPolicy="off" verticalScrollPolicy="off"> 
     123                 
    121124                <mx:VBox id="dayBox0" width="50" height="100%" paddingLeft="0" paddingBottom="0" paddingRight="0" paddingTop="0" verticalGap="0"> 
    122125                    <mx:Label height="20" id="labelCanvas0" width="100%" textAlign="center" /> 
     
    225228 
    226229            <mx:HBox id="monthBox" width="100%" height="0" maxHeight="{ canvasContainer.height }" 
    227                     horizontalScrollPolicy="off" verticalScrollPolicy="off"                      
    228                     paddingTop="10" paddingBottom="10"> 
    229  
    230                 <mx:Canvas backgroundColor="0xffff00" width="100%" height="100%" /> 
    231  
     230                    paddingTop="10" paddingBottom="10" horizontalScrollPolicy="off" verticalScrollPolicy="off"> 
     231                <mx:VBox id="monthCanvasBox" width="100%" height="100%" paddingLeft="0" paddingBottom="0" paddingRight="0" paddingTop="0" verticalGap="0"> 
     232                    <mx:Label height="20" id="labelMonthCanvas" width="100%" textAlign="center" />                     
     233                    <components:MonthCanvas id="monthCanvas" 
     234                            backgroundColor="0xFFFFFF" backgroundAlpha="0.3" cornerRadius="20"  
     235                            verticalMargin="0" leftHorizontalMargin="0" 
     236                            width="100%" height="100%" 
     237                            outerBorderColor="0x000000" outerBorderAlpha="0.0" outerBorderThickness="0" 
     238                            innerBorderColors="[ 0x888888 ]" innerBorderAlphas="[ 0.0 ]" innerBorderThicknesses="[ 4 ]" 
     239                            rows="[ 6 ]" columns="[ 7 ]" 
     240                            showEffect="{ fadeIn }" hideEffect="{ fadeOut }" 
     241                            /> 
     242                </mx:VBox> 
    232243            </mx:HBox> 
    233244        </mx:Box> 
     
    274285            calendarConnector.addEventListener(BasicQueuedConnector.EVENT_FAULT, onCalendarGetResponse); 
    275286 
    276             if(!userEntityLoaded) addEventListener("ssme_userLoaded", prepareCalendarList) 
     287            if (!userEntityLoaded) addEventListener("ssme_userLoaded", prepareCalendarList) 
    277288 
    278289            currentState = "day"; 
     
    285296        private const WEEK:int = 1; 
    286297        private const MONTH:int = 2; 
     298 
    287299        private function toggleClicked(event:Event):void { 
    288 //            setDates(); 
    289 //            switch( state.selectedIndex ){ 
    290 //                case DAY:   currentState = DAY_STATE; break; 
    291 //                case WEEK:  currentState = WEEK_STATE; break; 
    292 //                case MONTH: currentState = MONTH_STATE; break; 
    293 //            } 
    294             loadEvents(event);          
     300            //            setDates(); 
     301            //            switch( state.selectedIndex ){ 
     302            //                case DAY:   currentState = DAY_STATE; break; 
     303            //                case WEEK:  currentState = WEEK_STATE; break; 
     304            //                case MONTH: currentState = MONTH_STATE; break; 
     305            //            } 
     306            loadEvents(event); 
    295307        } 
    296308 
    297309        private function prepareCalendarList(event:Event):void { 
    298310            calendarsList = []; 
    299             for (var key:String in loggedUserEntity.calendarsNames){ 
    300                 calendarsList.push( { uuid:key, name:loggedUserEntity.calendarsNames[key] } ); 
    301             } 
    302             calendarsList.sort( sortCalendars ); 
    303             calendarsList.push( { uuid:null, name: "All" } ); 
     311            for (var key:String in loggedUserEntity.calendarsNames) { 
     312                calendarsList.push({ uuid:key, name:loggedUserEntity.calendarsNames[key] }); 
     313            } 
     314            calendarsList.sort(sortCalendars); 
     315            calendarsList.push({ uuid:null, name: "All" }); 
    304316            calendarCombo.selectedIndex = -1; 
    305317        } 
     318 
    306319        private function sortCalendars(a:Object, b:Object):int { 
    307320            return ( a.name < b.name ) ? -1 : (( a.name > b.name ) ? 1 : 0 ); 
    308321        } 
     322 
    309323        private function setDates():void { 
    310324            currentDay = chosenDate.selectedDate; 
    311             weekBeginDay = (new DateUtil( currentDay )).weekBegin( 1 ).date; 
    312             monthBeginDay = (new DateUtil( currentDay )).monthBegin().date; 
     325            weekBeginDay = (new DateUtil(currentDay)).weekBegin(1).date; 
     326            monthBeginDay = (new DateUtil(currentDay)).monthBegin().date; 
    313327            dayOfTheWeek = (currentDay.getDay() - weekBeginDay.getDay() + 7 ) % 7; 
    314             Logger.debug( "currentDay:["+currentDay+"] weekBeginDay:"+weekBeginDay+" monthBeginDay:"+monthBeginDay+" dayOfTheWeek:"+dayOfTheWeek 
    315                     +" ("+currentDay.getDay()+":"+weekBeginDay.getDay()+")" ); 
    316         }         
     328            Logger.debug("currentDay:[" + currentDay + "] weekBeginDay:" + weekBeginDay + " monthBeginDay:" + monthBeginDay + " dayOfTheWeek:" + dayOfTheWeek 
     329                    + " (" + currentDay.getDay() + ":" + weekBeginDay.getDay() + ")"); 
     330        } 
    317331 
    318332        private const EVENTS_RECURSION:int = 1; 
     333 
    319334        private function loadEvents(event:Event):void { 
    320335 
    321             if(calendarCombo.selectedItem               // calendar chosen 
     336            if (calendarCombo.selectedItem               // calendar chosen 
    322337                    && chosenDate.selectedDate          // date chosen 
    323                     && state.selectedIndex>=0){         // state chosen 
     338                    && state.selectedIndex >= 0) {         // state chosen 
    324339 
    325340                setDates(); 
     
    327342                var date:Date = chosenDate.selectedDate;   // get chosen date 
    328343                var begin:Number, end:Number; 
    329                 switch( state.selectedIndex ){  // determine time range 
     344                switch (state.selectedIndex) {  // determine time range 
    330345                    case DAY: { 
    331                             begin = DateUtil.dayBegin(date).timestamp; 
    332                             end = DateUtil.dayEnd(date).timestamp; 
    333                             currentState = DAY_STATE; 
    334                             onDayStateEnter(); 
    335  
    336                             // reset previous display 
    337                             showDayEvents( true ); 
    338                             break;                         
    339                         } 
     346                        begin = DateUtil.dayBegin(date).timestamp; 
     347                        end = DateUtil.dayEnd(date).timestamp; 
     348                        currentState = DAY_STATE; 
     349                        onDayStateEnter(); 
     350 
     351                        // reset previous display 
     352                        showDayEvents(true); 
     353                        break; 
     354                    } 
    340355                    case WEEK: { 
    341                             begin = DateUtil.weekBegin(1, date).timestamp; 
    342                             end = DateUtil.weekEnd(1, date).timestamp; 
    343                             currentState = WEEK_STATE; 
    344                             onWeekStateEnter(); 
    345                          
    346                             // reset previous display 
    347                             showWeekEvents( true );                         
    348                             break; 
    349                         } 
     356                        begin = DateUtil.weekBegin(1, date).timestamp; 
     357                        end = DateUtil.weekEnd(1, date).timestamp; 
     358                        currentState = WEEK_STATE; 
     359                        onWeekStateEnter(); 
     360 
     361                        // reset previous display 
     362                        showWeekEvents(true); 
     363                        break; 
     364                    } 
    350365                    case MONTH: { 
    351                             begin = DateUtil.monthBegin(date).timestamp; 
    352                             end = DateUtil.monthEnd(date).timestamp; 
    353                             currentState = MONTH_STATE;                         
    354                             break; 
    355                         } 
     366                        begin = DateUtil.monthBegin(date).timestamp; 
     367                        end = DateUtil.monthEnd(date).timestamp; 
     368                        currentState = MONTH_STATE; 
     369 
     370                        // reset previous display 
     371                        showMonthEvents(true); 
     372                        break; 
     373                    } 
    356374 
    357375                } 
    358376 
    359                 ModalSpinner.instance.showSpinner("Loading events for calendar '"+(calendarCombo.selectedItem.name)+"'...", 0x269926, panel, 0.2); 
     377                ModalSpinner.instance.showSpinner("Loading events for calendar '" + (calendarCombo.selectedItem.name) + "'...", 0x269926, panel, 0.2); 
    360378                errorLabel.text = ""; 
    361379                var params:Object = {}; 
    362                 if(calendarCombo.selectedItem.uuid){ 
     380                if (calendarCombo.selectedItem.uuid) { 
    363381                    params[Params.DATA_RECURSION] = EVENTS_RECURSION; 
    364                     calendarConnector.getCalendarRange( calendarCombo.selectedItem.uuid, begin, end, params ); 
     382                    calendarConnector.getCalendarRange(calendarCombo.selectedItem.uuid, begin, end, params); 
    365383                } else { 
    366384                    params[Params.DATA_RECURSION] = EVENTS_RECURSION; 
    367                     calendarConnector.getCalendarAll( begin, end, params ); 
     385                    calendarConnector.getCalendarAll(begin, end, params); 
    368386                } 
    369             }            
     387            } 
    370388        } 
    371389 
     
    380398        private var dayOfTheWeek:int = 0; 
    381399        [Bindable] 
    382         [ArrayElementType("DayCanvas")]         
     400        [ArrayElementType("DayCanvas")] 
    383401        private var dayCanvas:Array; 
    384402        [Bindable] 
    385         [ArrayElementType("Label")]         
     403        [ArrayElementType("Label")] 
    386404        private var dayCanvasLabels:Array; 
    387405        [ArrayElementType("VBox")] 
    388         private var dayCanvasBoxes:Array;                 
     406        private var dayCanvasBoxes:Array; 
     407 
    389408        private function onCalendarGetResponse(event:Event):void { 
    390409            var result:ConnectorResult = (event as SsmeEvent).eventProperties['result']; 
     
    393412                // success 
    394413                if (result.resultType == ConnectorResult.SUCCESS) { 
    395                     Logger.debug( result.lastResult as String, LoggingComponentsEnum.CAL ); 
    396                     calendarEntity = (new CalendarEntity()).parseJSONString( result.lastResult as String, EVENTS_RECURSION );                  
    397                     switch( state.selectedIndex ){  // determine time range 
     414                    Logger.debug(result.lastResult as String, LoggingComponentsEnum.CAL); 
     415                    calendarEntity = (new CalendarEntity()).parseJSONString(result.lastResult as String, EVENTS_RECURSION); 
     416                    switch (state.selectedIndex) {  // determine time range 
    398417                        case DAY: { 
    399                                 showDayEvents(); 
    400                                 //currentState = DAY_STATE; 
    401                                 break; 
    402                             } 
     418                            showDayEvents(); 
     419                            //currentState = DAY_STATE; 
     420                            break; 
     421                        } 
    403422                        case WEEK: { 
    404                                 showWeekEvents(); 
    405                                 //currentState = WEEK_STATE; 
    406                                 break; 
    407                             } 
    408 //                        case MONTH: { 
    409 //                                showMonthEvents(); 
    410 //                                currentState = MONTH_STATE; 
    411 //                                break; 
    412 //                       } 
    413                     }                 
     423                            showWeekEvents(); 
     424                            //currentState = WEEK_STATE; 
     425                            break; 
     426                        } 
     427                        case MONTH: { 
     428                            showMonthEvents(); 
     429                            //currentState = MONTH_STATE; 
     430                            break; 
     431                        } 
     432                    } 
    414433                } 
    415434                // error 
    416435                else if (result.resultType == ConnectorResult.ERROR) { 
    417                     var json:ErrorMessageEntity = (new ErrorMessageEntity()).parseJSONString( result.lastResult as String ); 
     436                    var json:ErrorMessageEntity = (new ErrorMessageEntity()).parseJSONString(result.lastResult as String); 
    418437                    errorLabel.text = json.errorMessage; 
    419438                } 
     
    430449            dayCanvas[ dayOfTheWeek ].currentDay = (reset) ? new Date(-1) : currentDay; 
    431450            dayCanvas[ dayOfTheWeek ].dataProvider = (reset) ? new HashArray() : calendarEntity.timeFramesEntitites; 
    432             dayCanvas[ dayOfTheWeek ].setStyle("backgroundAlpha", (reset) ? 0 : 0.3);             
    433             dayCanvasLabels[ dayOfTheWeek ].text = (reset) ? "" : dateFormatter.format( currentDay ); 
     451            dayCanvas[ dayOfTheWeek ].setStyle("backgroundAlpha", (reset) ? 0 : 0.3); 
     452            dayCanvasLabels[ dayOfTheWeek ].text = (reset) ? "" : dayDateFormatter.format(currentDay); 
    434453        } 
    435454 
    436455        private function showWeekEvents(reset:Boolean = false):void { 
    437456 
    438             if(!reset){ 
     457            if (!reset) { 
    439458                // create data structure 
    440459                var dataProviders:Array = [  ], i:int, timeFrame:TimeFrameEntity; 
    441                 for(i=0; i<7; i++)  dataProviders.push( new HashArray() ); 
     460                for (i = 0; i < 7; i++)  dataProviders.push(new HashArray()); 
    442461 
    443462                // divide events among days 
    444463                var fromDay:int, toDay:int; 
    445                 for each( timeFrame in calendarEntity.timeFramesEntitites ){ 
    446                     fromDay = (timeFrame.from.getDay() + 6)%7; 
    447                     toDay = (timeFrame.to.getDay() + 6)%7; 
    448                     if( fromDay == toDay ){ 
     464                for each(timeFrame in calendarEntity.timeFramesEntitites) { 
     465                    fromDay = (timeFrame.from.getDay() + 6) % 7; 
     466                    toDay = (timeFrame.to.getDay() + 6) % 7; 
     467                    if (fromDay == toDay) { 
    449468                        // starts and ends in the same day 
    450                         dataProviders[ fromDay ].put( timeFrame.UUID, timeFrame ); 
     469                        dataProviders[ fromDay ].put(timeFrame.UUID, timeFrame); 
    451470                    } else { 
    452471                        // splitted over more than one days, so add it to all of them 
    453                         for(i=fromDay; i<=toDay;i++){ 
    454                             dataProviders[ i ].put( timeFrame.UUID, timeFrame ); 
     472                        for (i = fromDay; i <= toDay; i++) { 
     473                            dataProviders[ i ].put(timeFrame.UUID, timeFrame); 
    455474                        } 
    456475                    } 
     
    459478 
    460479            // set dataProviders 
    461             var weekBegin:DateUtil = new DateUtil( weekBeginDay ); 
    462             for(i=0; i<7; i++){ 
     480            var weekBegin:DateUtil = new DateUtil(weekBeginDay); 
     481            for (i = 0; i < 7; i++) { 
    463482                dayCanvas[ i ].currentDay = (reset) ? new Date(-1) : weekBegin.date; 
    464483                dayCanvas[ i ].dataProvider = (reset) ? new HashArray() : dataProviders[ i ]; 
    465484                dayCanvas[ i ].setStyle("backgroundAlpha", 0); 
    466                 dayCanvasLabels[ i ].text = (reset) ? "" : dateFormatter.format( weekBegin.date ); 
    467                 weekBegin.add( DateProperty.DATE, 1 ); 
     485                dayCanvasLabels[ i ].text = (reset) ? "" : dayDateFormatter.format(weekBegin.date); 
     486                weekBegin.add(DateProperty.DATE, 1); 
    468487            } 
    469488            dayCanvas[ dayOfTheWeek ].setStyle("backgroundAlpha", (reset) ? 0 : 0.3); 
     
    471490        } 
    472491 
     492        private function showMonthEvents(reset:Boolean = false):void { 
     493            monthCanvas.currentDay = (reset) ? new Date(-1) : currentDay; 
     494            monthCanvas.dataProvider = (reset) ? new HashArray() : calendarEntity.timeFramesEntitites; 
     495            labelMonthCanvas.text = (reset) ? "" : monthDateFormatter.format(currentDay); 
     496        } 
     497 
    473498        private function onTimeFrameGetResponse(event:Event):void { 
    474 //            var result:ConnectorResult = (event as SsmeEvent).eventProperties['result']; 
    475 //            var json:Object = JSONObject.decode(result.lastResult as String); 
    476 //            loadUser(json); 
    477 //            ModalSpinner.instance.hideSpinner(); 
     499            //            var result:ConnectorResult = (event as SsmeEvent).eventProperties['result']; 
     500            //            var json:Object = JSONObject.decode(result.lastResult as String); 
     501            //            loadUser(json); 
     502            //            ModalSpinner.instance.hideSpinner(); 
    478503        } 
    479504 
     
    484509        private const WEEK_STATE:String = "week"; 
    485510        private const MONTH_STATE:String = "month"; 
     511 
    486512        private function onDayStateEnter():void { 
    487513            var i:int; 
    488             for(i=0; i<7; i++){ 
     514            for (i = 0; i < 7; i++) { 
    489515                dayCanvasBoxes[ i ].visible = dayCanvasBoxes[ i ].includeInLayout = (i == dayOfTheWeek); 
    490516            } 
    491517        } 
     518 
    492519        private function onWeekStateEnter():void { 
    493520            var i:int; 
    494             for(i=0; i<7; i++){ 
    495                 dayCanvasBoxes[ i ].visible = dayCanvasBoxes[ i ].includeInLayout = true;          
    496             } 
    497         }         
     521            for (i = 0; i < 7; i++) { 
     522                dayCanvasBoxes[ i ].visible = dayCanvasBoxes[ i ].includeInLayout = true; 
     523            } 
     524        } 
     525 
    498526        private function onStateChanged(event:Event):void { 
    499527 
    500 //            if(currentState == DAY_STATE){ 
    501 // 
    502 //            } else if(currentState == WEEK_STATE){ 
    503 // 
    504 //            } else if(currentState == MONTH_STATE){ 
    505 // 
    506 //            } 
    507         } 
     528            //            if(currentState == DAY_STATE){ 
     529            // 
     530            //            } else if(currentState == WEEK_STATE){ 
     531            // 
     532            //            } else if(currentState == MONTH_STATE){ 
     533            // 
     534            //            } 
     535        } 
     536 
    508537        //----------------------------------------------------- 
    509538