Show
Ignore:
Timestamp:
08/15/10 14:10:00 (21 months ago)
Author:
mszopinski
Message:

calendar, one-dat/week display + refresh

Files:
1 modified

Legend:

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

    r4042 r4043  
    2929        backgroundGradientAlphas="[0, 0]" 
    3030        loadUserEntity="true" 
    31         currentState="day" 
     31        currentState="{ DAY_STATE }" 
     32        stateChanged="onStateChanged(event);" 
    3233        > 
    3334 
    3435    <!-- ========================================================= --> 
    35     <components:states> 
     36    <components:states>     
    3637        <mx:State name="day" > 
    37             <mx:SetProperty target="{ canvas_2 }" name="visible" value="false" /> 
    38             <mx:SetProperty target="{ canvas_3 }" name="visible" value="false" /> 
    39             <mx:SetProperty target="{ canvas_4 }" name="visible" value="false" /> 
    40             <mx:SetProperty target="{ canvas_5 }" name="visible" value="false" /> 
    41             <mx:SetProperty target="{ canvas_6 }" name="visible" value="false" /> 
    42             <mx:SetProperty target="{ canvas_7 }" name="visible" value="false" /> 
    43             <mx:SetProperty target="{ canvas_2 }" name="includeInLayout" value="false" /> 
    44             <mx:SetProperty target="{ canvas_3 }" name="includeInLayout" value="false" /> 
    45             <mx:SetProperty target="{ canvas_4 }" name="includeInLayout" value="false" /> 
    46             <mx:SetProperty target="{ canvas_5 }" name="includeInLayout" value="false" /> 
    47             <mx:SetProperty target="{ canvas_6 }" name="includeInLayout" value="false" /> 
    48             <mx:SetProperty target="{ canvas_7 }" name="includeInLayout" value="false" />             
    4938        </mx:State> 
    5039        <mx:State name="week" > 
    51             <mx:SetProperty target="{ canvas_2 }" name="visible" value="true" /> 
    52             <mx:SetProperty target="{ canvas_3 }" name="visible" value="true" /> 
    53             <mx:SetProperty target="{ canvas_4 }" name="visible" value="true" /> 
    54             <mx:SetProperty target="{ canvas_5 }" name="visible" value="true" /> 
    55             <mx:SetProperty target="{ canvas_6 }" name="visible" value="true" /> 
    56             <mx:SetProperty target="{ canvas_7 }" name="visible" value="true" /> 
    57             <mx:SetProperty target="{ canvas_2 }" name="includeInLayout" value="true" /> 
    58             <mx:SetProperty target="{ canvas_3 }" name="includeInLayout" value="true" /> 
    59             <mx:SetProperty target="{ canvas_4 }" name="includeInLayout" value="true" /> 
    60             <mx:SetProperty target="{ canvas_5 }" name="includeInLayout" value="true" /> 
    61             <mx:SetProperty target="{ canvas_6 }" name="includeInLayout" value="true" /> 
    62             <mx:SetProperty target="{ canvas_7 }" name="includeInLayout" value="true" />  
    6340        </mx:State> 
    64         <mx:State name="month" /> 
     41        <mx:State name="month" > 
     42        </mx:State>             
    6543    </components:states> 
    6644    <!-- ========================================================= --> 
     
    8361                <mx:Resize target="{ monthBox }" heightTo="{ canvasContainer.height }" /> 
    8462            </mx:Parallel> 
    85         </mx:Transition>          
     63        </mx:Transition> 
    8664    </components:transitions> 
    87     <!-- ========================================================= -->     
    88     <mx:Fade id="fadeIn" duration="500" alphaFrom="0" alphaTo="1.0" /> 
    89     <mx:Fade id="fadeOut" duration="500" alphaFrom="1.0" alphaTo="0" /> 
    9065    <!-- ========================================================= --> 
    91  
    92  
     66    <mx:Fade id="fadeIn" duration="300" alphaFrom="0" alphaTo="1.0" /> 
     67    <mx:Fade id="fadeOut" duration="300" alphaFrom="1.0" alphaTo="0" /> 
     68    <!-- ========================================================= --> 
     69    <mx:DateFormatter id="dateFormatter" formatString="DD.MM.YYYY" /> 
     70    <!-- ========================================================= --> 
    9371    <mx:Style source="assets/calendar.css" /> 
     72    <!-- ========================================================= --> 
    9473 
    9574    <components:HeaderlessPanel 
     
    10685 
    10786            <mx:DateField id="chosenDate" 
     87                    formatString="DD-MM-YYYY" 
    10888                    firstDayOfWeek="1" 
    109                     dayNames="[ 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun' ]" 
    110                     formatString="DD-MM-YYYY" 
     89                    dayNames="[ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ]"                     
    11190                    yearNavigationEnabled="true" 
    11291                    editable="false" 
    11392                    /> 
     93 
     94            <mx:Button id="calendar_reload" 
     95                        styleName="calendarReload" 
     96                        click="{ loadEvents(event); }" 
     97                        width="20" height="20" 
     98                        useHandCursor="true" 
     99                        mouseChildren="false" 
     100                        enabled="true"/> 
     101 
     102            <mx:Label id="errorLabel" color="red" text="" width="100%"/> 
    114103 
    115104            <mx:ToggleButtonBar id="state" itemClick="{ toggleClicked(event); }"> 
     
    121110                    </mx:Array> 
    122111                </mx:dataProvider> 
    123             </mx:ToggleButtonBar> 
    124  
    125             <mx:Button id="calendar_reload" 
    126                         styleName="calendarReload" 
    127                         click="{ loadEvents(event); }" 
    128                         width="20" height="20" 
    129                         useHandCursor="true" 
    130                         mouseChildren="false" 
    131                         enabled="true"/> 
    132  
    133             <mx:Label id="errorLabel" color="red" text="" /> 
     112            </mx:ToggleButtonBar>             
    134113 
    135114        </mx:HBox> 
     
    140119             
    141120            <mx:HBox id="dayBox" width="100%" height="{ canvasContainer.height }" maxHeight="{ canvasContainer.height }" paddingTop="10" paddingBottom="10" horizontalScrollPolicy="off" verticalScrollPolicy="off"> 
    142  
    143                 <components:VerticalLabelsList id="v_list" 
    144                         verticalMargin="10" showHourLabels="true" 
    145                         width="50" height="100%" minHeight="400" 
    146                         outerBorderThickness="1" 
    147                         innerBorderThicknesses="2" 
    148                         backgroundColor="0xffffff" backgroundAlpha="0" 
    149                         visible="true" includeInLayout="true" 
    150                         cornerRadius="0"> 
    151                 </components:VerticalLabelsList> 
    152  
    153                 <components:DayCanvas id="canvas_1" 
    154                         verticalMargin="10" leftHorizontalMargin="5" 
    155                         width="100%" height="100%" minHeight="400" 
    156                         outerBorderColor="0x000000" outerBorderAlpha="1.0" outerBorderThickness="1" 
    157                         innerBorderColors="[ 0x000000, 0x888888 ]" innerBorderAlphas="[ 0.5, 0.3 ]" innerBorderThicknesses="[ 2, 1 ]" 
    158                         backgroundColor="0xffffff" backgroundAlpha="0" 
    159                         rows="[ 24, 96 ]" columns="[ 1 ]" 
    160                         visible="true" includeInLayout="true" 
    161                         cornerRadius="0"> 
    162                 </components:DayCanvas> 
    163  
    164                 <components:DayCanvas id="canvas_2" 
    165                         verticalMargin="10" leftHorizontalMargin="5" 
    166                         width="100%" height="100%" minHeight="400" 
    167                         outerBorderColor="0x000000" outerBorderAlpha="1.0" outerBorderThickness="1" 
    168                         innerBorderColors="[ 0x000000, 0x888888 ]" innerBorderAlphas="[ 0.5, 0.3 ]" innerBorderThicknesses="[ 2, 1 ]" 
    169                         backgroundColor="0xffffff" backgroundAlpha="0" 
    170                         rows="[ 24, 96 ]" columns="[ 1 ]" 
    171                         showEffect="{ fadeIn }" hideEffect="{ fadeOut }" 
    172                         cornerRadius="0"> 
    173                 </components:DayCanvas> 
    174  
    175                 <components:DayCanvas id="canvas_3" 
    176                         verticalMargin="10" leftHorizontalMargin="5" 
    177                         width="100%" height="100%" minHeight="400" 
    178                         outerBorderColor="0x000000" outerBorderAlpha="1.0" outerBorderThickness="1" 
    179                         innerBorderColors="[ 0x000000, 0x888888 ]" innerBorderAlphas="[ 0.5, 0.3 ]" innerBorderThicknesses="[ 2, 1 ]" 
    180                         backgroundColor="0xffffff" backgroundAlpha="0" 
    181                         rows="[ 24, 96 ]" columns="[ 1 ]" 
    182                         showEffect="{ fadeIn }" hideEffect="{ fadeOut }" 
    183                         cornerRadius="0"> 
    184                 </components:DayCanvas> 
    185  
    186                 <components:DayCanvas id="canvas_4" 
    187                         verticalMargin="10" leftHorizontalMargin="5" 
    188                         width="100%" height="100%" minHeight="400" 
    189                         outerBorderColor="0x000000" outerBorderAlpha="1.0" outerBorderThickness="1" 
    190                         innerBorderColors="[ 0x000000, 0x888888 ]" innerBorderAlphas="[ 0.5, 0.3 ]" innerBorderThicknesses="[ 2, 1 ]" 
    191                         backgroundColor="0xffffff" backgroundAlpha="0" 
    192                         rows="[ 24, 96 ]" columns="[ 1 ]" 
    193                         showEffect="{ fadeIn }" hideEffect="{ fadeOut }" 
    194                         cornerRadius="0"> 
    195                 </components:DayCanvas> 
    196  
    197                 <components:DayCanvas id="canvas_5" 
    198                         verticalMargin="10" leftHorizontalMargin="5" 
    199                         width="100%" height="100%" minHeight="400" 
    200                         outerBorderColor="0x000000" outerBorderAlpha="1.0" outerBorderThickness="1" 
    201                         innerBorderColors="[ 0x000000, 0x888888 ]" innerBorderAlphas="[ 0.5, 0.3 ]" innerBorderThicknesses="[ 2, 1 ]" 
    202                         backgroundColor="0xffffff" backgroundAlpha="0" 
    203                         rows="[ 24, 96 ]" columns="[ 1 ]" 
    204                         showEffect="{ fadeIn }" hideEffect="{ fadeOut }" 
    205                         cornerRadius="0"> 
    206                 </components:DayCanvas> 
    207  
    208                 <components:DayCanvas id="canvas_6" 
    209                         verticalMargin="10" leftHorizontalMargin="5" 
    210                         width="100%" height="100%" minHeight="400" 
    211                         outerBorderColor="0x000000" outerBorderAlpha="1.0" outerBorderThickness="1" 
    212                         innerBorderColors="[ 0x000000, 0x888888 ]" innerBorderAlphas="[ 0.5, 0.3 ]" innerBorderThicknesses="[ 2, 1 ]" 
    213                         backgroundColor="0xffffff" backgroundAlpha="0" 
    214                         rows="[ 24, 96 ]" columns="[ 1 ]" 
    215                         showEffect="{ fadeIn }" hideEffect="{ fadeOut }" 
    216                         cornerRadius="0"> 
    217                 </components:DayCanvas> 
    218  
    219                 <components:DayCanvas id="canvas_7" 
    220                         verticalMargin="10" leftHorizontalMargin="5" 
    221                         width="100%" height="100%" minHeight="400" 
    222                         outerBorderColor="0x000000" outerBorderAlpha="1.0" outerBorderThickness="1" 
    223                         innerBorderColors="[ 0x000000, 0x888888 ]" innerBorderAlphas="[ 0.5, 0.3 ]" innerBorderThicknesses="[ 2, 1 ]" 
    224                         backgroundColor="0xffffff" backgroundAlpha="0" 
    225                         rows="[ 24, 96 ]" columns="[ 1 ]" 
    226                         showEffect="{ fadeIn }" hideEffect="{ fadeOut }"                         
    227                         cornerRadius="0"> 
    228                 </components:DayCanvas> 
    229  
     121                <mx:VBox id="dayBox0" width="50" height="100%" paddingLeft="0" paddingBottom="0" paddingRight="0" paddingTop="0" verticalGap="0"> 
     122                    <mx:Label height="20" id="labelCanvas0" width="100%" textAlign="center" /> 
     123                    <components:VerticalLabelsList id="v_list" 
     124                            verticalMargin="10" showHourLabels="true" 
     125                            width="50" height="100%" minHeight="400" 
     126                            outerBorderThickness="1" 
     127                            innerBorderThicknesses="2" 
     128                            backgroundColor="0xffffff" backgroundAlpha="0" 
     129                            visible="true" includeInLayout="true" 
     130                            cornerRadius="0"> 
     131                    </components:VerticalLabelsList> 
     132                </mx:VBox> 
     133                <mx:VBox id="dayBox1" width="100%" height="100%" paddingLeft="0" paddingBottom="0" paddingRight="0" paddingTop="0" verticalGap="0"> 
     134                    <mx:Label height="20" id="labelCanvas1" width="100%" textAlign="center" /> 
     135                    <components:DayCanvas id="canvas_1" 
     136                            verticalMargin="10" leftHorizontalMargin="5" 
     137                            width="100%" height="100%" minHeight="400" 
     138                            outerBorderColor="0x000000" outerBorderAlpha="1.0" outerBorderThickness="1" 
     139                            innerBorderColors="[ 0x000000, 0x888888 ]" innerBorderAlphas="[ 0.5, 0.3 ]" innerBorderThicknesses="[ 2, 1 ]" 
     140                            backgroundColor="0xffffff" backgroundAlpha="0" 
     141                            rows="[ 24, 96 ]" columns="[ 1 ]" 
     142                            visible="true" includeInLayout="true" 
     143                            cornerRadius="0"> 
     144                    </components:DayCanvas> 
     145                </mx:VBox> 
     146                <mx:VBox id="dayBox2" width="100%" height="100%" paddingLeft="0" paddingBottom="0" paddingRight="0" paddingTop="0" verticalGap="0"> 
     147                    <mx:Label height="20" id="labelCanvas2" width="100%" textAlign="center" /> 
     148                    <components:DayCanvas id="canvas_2" 
     149                            verticalMargin="10" leftHorizontalMargin="5" 
     150                            width="100%" height="100%" minHeight="400" 
     151                            outerBorderColor="0x000000" outerBorderAlpha="1.0" outerBorderThickness="1" 
     152                            innerBorderColors="[ 0x000000, 0x888888 ]" innerBorderAlphas="[ 0.5, 0.3 ]" innerBorderThicknesses="[ 2, 1 ]" 
     153                            backgroundColor="0xffffff" backgroundAlpha="0" 
     154                            rows="[ 24, 96 ]" columns="[ 1 ]" 
     155                            showEffect="{ fadeIn }" hideEffect="{ fadeOut }" 
     156                            cornerRadius="0"> 
     157                    </components:DayCanvas> 
     158                </mx:VBox> 
     159                <mx:VBox id="dayBox3" width="100%" height="100%" paddingLeft="0" paddingBottom="0" paddingRight="0" paddingTop="0" verticalGap="0"> 
     160                    <mx:Label height="20" id="labelCanvas3" width="100%" textAlign="center" /> 
     161                    <components:DayCanvas id="canvas_3" 
     162                            verticalMargin="10" leftHorizontalMargin="5" 
     163                            width="100%" height="100%" minHeight="400" 
     164                            outerBorderColor="0x000000" outerBorderAlpha="1.0" outerBorderThickness="1" 
     165                            innerBorderColors="[ 0x000000, 0x888888 ]" innerBorderAlphas="[ 0.5, 0.3 ]" innerBorderThicknesses="[ 2, 1 ]" 
     166                            backgroundColor="0xffffff" backgroundAlpha="0" 
     167                            rows="[ 24, 96 ]" columns="[ 1 ]" 
     168                            showEffect="{ fadeIn }" hideEffect="{ fadeOut }" 
     169                            cornerRadius="0"> 
     170                    </components:DayCanvas> 
     171                </mx:VBox> 
     172                <mx:VBox id="dayBox4" width="100%" height="100%" paddingLeft="0" paddingBottom="0" paddingRight="0" paddingTop="0" verticalGap="0"> 
     173                    <mx:Label height="20" id="labelCanvas4" width="100%" textAlign="center" /> 
     174                    <components:DayCanvas id="canvas_4" 
     175                            verticalMargin="10" leftHorizontalMargin="5" 
     176                            width="100%" height="100%" minHeight="400" 
     177                            outerBorderColor="0x000000" outerBorderAlpha="1.0" outerBorderThickness="1" 
     178                            innerBorderColors="[ 0x000000, 0x888888 ]" innerBorderAlphas="[ 0.5, 0.3 ]" innerBorderThicknesses="[ 2, 1 ]" 
     179                            backgroundColor="0xffffff" backgroundAlpha="0" 
     180                            rows="[ 24, 96 ]" columns="[ 1 ]" 
     181                            showEffect="{ fadeIn }" hideEffect="{ fadeOut }" 
     182                            cornerRadius="0"> 
     183                    </components:DayCanvas> 
     184                </mx:VBox> 
     185                <mx:VBox id="dayBox5" width="100%" height="100%" paddingLeft="0" paddingBottom="0" paddingRight="0" paddingTop="0" verticalGap="0"> 
     186                    <mx:Label height="20" id="labelCanvas5" width="100%" textAlign="center" /> 
     187                    <components:DayCanvas id="canvas_5" 
     188                            verticalMargin="10" leftHorizontalMargin="5" 
     189                            width="100%" height="100%" minHeight="400" 
     190                            outerBorderColor="0x000000" outerBorderAlpha="1.0" outerBorderThickness="1" 
     191                            innerBorderColors="[ 0x000000, 0x888888 ]" innerBorderAlphas="[ 0.5, 0.3 ]" innerBorderThicknesses="[ 2, 1 ]" 
     192                            backgroundColor="0xffffff" backgroundAlpha="0" 
     193                            rows="[ 24, 96 ]" columns="[ 1 ]" 
     194                            showEffect="{ fadeIn }" hideEffect="{ fadeOut }" 
     195                            cornerRadius="0"> 
     196                    </components:DayCanvas> 
     197                </mx:VBox> 
     198                <mx:VBox id="dayBox6" width="100%" height="100%" paddingLeft="0" paddingBottom="0" paddingRight="0" paddingTop="0" verticalGap="0"> 
     199                    <mx:Label height="20" id="labelCanvas6" width="100%" textAlign="center" /> 
     200                    <components:DayCanvas id="canvas_6" 
     201                            verticalMargin="10" leftHorizontalMargin="5" 
     202                            width="100%" height="100%" minHeight="400" 
     203                            outerBorderColor="0x000000" outerBorderAlpha="1.0" outerBorderThickness="1" 
     204                            innerBorderColors="[ 0x000000, 0x888888 ]" innerBorderAlphas="[ 0.5, 0.3 ]" innerBorderThicknesses="[ 2, 1 ]" 
     205                            backgroundColor="0xffffff" backgroundAlpha="0" 
     206                            rows="[ 24, 96 ]" columns="[ 1 ]" 
     207                            showEffect="{ fadeIn }" hideEffect="{ fadeOut }" 
     208                            cornerRadius="0"> 
     209                    </components:DayCanvas> 
     210                </mx:VBox> 
     211                <mx:VBox id="dayBox7" width="100%" height="100%" paddingLeft="0" paddingBottom="0" paddingRight="0" paddingTop="0" verticalGap="0"> 
     212                    <mx:Label height="20" id="labelCanvas7" width="100%" textAlign="center" /> 
     213                    <components:DayCanvas id="canvas_7" 
     214                            verticalMargin="10" leftHorizontalMargin="5" 
     215                            width="100%" height="100%" minHeight="400" 
     216                            outerBorderColor="0x000000" outerBorderAlpha="1.0" outerBorderThickness="1" 
     217                            innerBorderColors="[ 0x000000, 0x888888 ]" innerBorderAlphas="[ 0.5, 0.3 ]" innerBorderThicknesses="[ 2, 1 ]" 
     218                            backgroundColor="0xffffff" backgroundAlpha="0" 
     219                            rows="[ 24, 96 ]" columns="[ 1 ]" 
     220                            showEffect="{ fadeIn }" hideEffect="{ fadeOut }" 
     221                            cornerRadius="0"> 
     222                    </components:DayCanvas> 
     223                </mx:VBox> 
    230224            </mx:HBox> 
    231225 
     
    280274            calendarConnector.addEventListener(BasicQueuedConnector.EVENT_FAULT, onCalendarGetResponse); 
    281275 
    282             if(!userEntityLoaded) addEventListener("ssme_userLoaded", prepareCalendarList)                 
     276            if(!userEntityLoaded) addEventListener("ssme_userLoaded", prepareCalendarList) 
    283277 
    284278            currentState = "day"; 
    285             theDayCanvas = canvas_1; 
     279            dayCanvasLabels = [ labelCanvas1, labelCanvas2, labelCanvas3, labelCanvas4, labelCanvas5, labelCanvas6, labelCanvas7 ]; 
    286280            dayCanvas = [ canvas_1, canvas_2, canvas_3, canvas_4, canvas_5, canvas_6, canvas_7 ]; 
     281            dayCanvasBoxes = [ dayBox1, dayBox2, dayBox3, dayBox4, dayBox5, dayBox6, dayBox7 ]; 
    287282        } 
    288283 
     
    290285        private const WEEK:int = 1; 
    291286        private const MONTH:int = 2; 
    292  
    293287        private function toggleClicked(event:Event):void { 
    294             switch( state.selectedIndex ){ 
    295                 case DAY:   currentState="day"; break; 
    296                 case WEEK:  currentState="week"; break; 
    297                 case MONTH: currentState="month"; break; 
    298             } 
    299             loadEvents(event); 
    300         }         
     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);          
     295        } 
    301296 
    302297        private function prepareCalendarList(event:Event):void { 
     
    307302            calendarsList.sort( sortCalendars ); 
    308303            calendarsList.push( { uuid:null, name: "All" } ); 
    309             calendarCombo.selectedIndex = -1;                    
     304            calendarCombo.selectedIndex = -1; 
    310305        } 
    311306        private function sortCalendars(a:Object, b:Object):int { 
    312307            return ( a.name < b.name ) ? -1 : (( a.name > b.name ) ? 1 : 0 ); 
    313308        } 
     309        private function setDates():void { 
     310            currentDay = chosenDate.selectedDate; 
     311            weekBeginDay = (new DateUtil( currentDay )).weekBegin( 1 ).date; 
     312            monthBeginDay = (new DateUtil( currentDay )).monthBegin().date; 
     313            dayOfTheWeek = (currentDay.getDay() - weekBeginDay.getDay() + 7 ) % 7; 
     314            Logger.debug( "currentDay:["+currentDay+"] weekBeginDay:"+weekBeginDay+" monthBeginDay:"+monthBeginDay+" dayOfTheWeek:"+dayOfTheWeek 
     315                    +" ("+currentDay.getDay()+":"+weekBeginDay.getDay()+")" ); 
     316        }         
    314317 
    315318        private const EVENTS_RECURSION:int = 1; 
     
    319322                    && chosenDate.selectedDate          // date chosen 
    320323                    && state.selectedIndex>=0){         // state chosen 
     324 
     325                setDates(); 
    321326 
    322327                var date:Date = chosenDate.selectedDate;   // get chosen date 
     
    326331                            begin = DateUtil.dayBegin(date).timestamp; 
    327332                            end = DateUtil.dayEnd(date).timestamp; 
    328                             break; 
     333                            currentState = DAY_STATE; 
     334                            onDayStateEnter(); 
     335 
     336                            // reset previous display 
     337                            showDayEvents( true ); 
     338                            break;                         
    329339                        } 
    330340                    case WEEK: { 
    331341                            begin = DateUtil.weekBegin(1, date).timestamp; 
    332342                            end = DateUtil.weekEnd(1, date).timestamp; 
     343                            currentState = WEEK_STATE; 
     344                            onWeekStateEnter(); 
     345                         
     346                            // reset previous display 
     347                            showWeekEvents( true );                         
    333348                            break; 
    334349                        } 
     
    336351                            begin = DateUtil.monthBegin(date).timestamp; 
    337352                            end = DateUtil.monthEnd(date).timestamp; 
    338                             break;                         
     353                            currentState = MONTH_STATE;                         
     354                            break; 
    339355                        } 
    340                  
     356 
    341357                } 
    342                  
     358 
    343359                ModalSpinner.instance.showSpinner("Loading events for calendar '"+(calendarCombo.selectedItem.name)+"'...", 0x269926, panel, 0.2); 
    344360                errorLabel.text = ""; 
     
    348364                    calendarConnector.getCalendarRange( calendarCombo.selectedItem.uuid, begin, end, params ); 
    349365                } else { 
    350                     params[Params.DATA_RECURSION] = EVENTS_RECURSION;                     
     366                    params[Params.DATA_RECURSION] = EVENTS_RECURSION; 
    351367                    calendarConnector.getCalendarAll( begin, end, params ); 
    352368                } 
    353             } 
     369            }            
    354370        } 
    355371 
    356372        private var calendarEntity:CalendarEntity; 
    357         private var currentDay:Date, weekBeginDay:Date, monthBeginDay:Date, dayOfTheWeek:int = 0;  
     373        [Bindable] 
     374        private var currentDay:Date; 
     375        [Bindable] 
     376        private var weekBeginDay:Date; 
     377        [Bindable] 
     378        private var monthBeginDay:Date; 
     379        [Bindable] 
     380        private var dayOfTheWeek:int = 0; 
     381        [Bindable] 
     382        [ArrayElementType("DayCanvas")]         
     383        private var dayCanvas:Array; 
     384        [Bindable] 
     385        [ArrayElementType("Label")]         
     386        private var dayCanvasLabels:Array; 
     387        [ArrayElementType("VBox")] 
     388        private var dayCanvasBoxes:Array;                 
    358389        private function onCalendarGetResponse(event:Event):void { 
    359390            var result:ConnectorResult = (event as SsmeEvent).eventProperties['result']; 
     
    363394                if (result.resultType == ConnectorResult.SUCCESS) { 
    364395                    Logger.debug( result.lastResult as String, LoggingComponentsEnum.CAL ); 
    365                     calendarEntity = (new CalendarEntity()).parseJSONString( result.lastResult as String, EVENTS_RECURSION ); 
    366                     currentDay = chosenDate.selectedDate; 
    367                     weekBeginDay = (new DateUtil( currentDay )).weekBegin( 0 ).date; 
    368                     monthBeginDay = (new DateUtil( currentDay )).monthBegin().date; 
    369                     dayOfTheWeek = currentDay.getDay() - weekBeginDay.getDay(); 
     396                    calendarEntity = (new CalendarEntity()).parseJSONString( result.lastResult as String, EVENTS_RECURSION );                  
    370397                    switch( state.selectedIndex ){  // determine time range 
    371398                        case DAY: { 
    372399                                showDayEvents(); 
     400                                //currentState = DAY_STATE; 
    373401                                break; 
    374402                            } 
    375403                        case WEEK: { 
    376404                                showWeekEvents(); 
     405                                //currentState = WEEK_STATE; 
    377406                                break; 
    378407                            } 
    379408//                        case MONTH: { 
    380409//                                showMonthEvents(); 
     410//                                currentState = MONTH_STATE; 
    381411//                                break; 
    382412//                       } 
    383                     } 
     413                    }                 
    384414                } 
    385415                // error 
     
    397427        } 
    398428 
    399         private var theDayCanvas:DayCanvas; 
    400         private var dayCanvas:Array; 
    401         private function showDayEvents():void { 
    402             canvas_1.currentDay = currentDay; 
    403             canvas_1.dataProvider = calendarEntity.timeFramesEntitites; 
    404             //dayCanvas[ dayOfTheWeek ].currentDay = currentDay; 
    405             //dayCanvas[ dayOfTheWeek ].dataProvider = calendarEntity.timeFramesEntitites; 
    406         } 
    407  
    408         private function showWeekEvents():void { 
    409  
    410             // create data structure 
    411             var dataProviders:Array = [  ], i:int, timeFrame:TimeFrameEntity; 
    412             for(i=0; i<7; i++)  dataProviders.push( new HashArray() ); 
    413  
    414             // divide events among days             
    415             for each( timeFrame in calendarEntity.timeFramesEntitites ){ 
    416                 if( timeFrame.from.getDay() == timeFrame.to.getDay() ){ 
    417                     // starts and ends in the same day 
    418                     dataProviders[ timeFrame.from.getDay() ].put( timeFrame.UUID, timeFrame );     
    419                 } else { 
    420                     // split over some days so add it to all of them 
    421                     for(i=timeFrame.from.getDay(); i<=timeFrame.to.getDay();i++){ 
    422                         dataProviders[ i ].put( timeFrame.UUID, timeFrame );           
    423                     }                     
     429        private function showDayEvents(reset:Boolean = false):void { 
     430            dayCanvas[ dayOfTheWeek ].currentDay = (reset) ? new Date(-1) : currentDay; 
     431            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 ); 
     434        } 
     435 
     436        private function showWeekEvents(reset:Boolean = false):void { 
     437 
     438            if(!reset){ 
     439                // create data structure 
     440                var dataProviders:Array = [  ], i:int, timeFrame:TimeFrameEntity; 
     441                for(i=0; i<7; i++)  dataProviders.push( new HashArray() ); 
     442 
     443                // divide events among days 
     444                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 ){ 
     449                        // starts and ends in the same day 
     450                        dataProviders[ fromDay ].put( timeFrame.UUID, timeFrame ); 
     451                    } else { 
     452                        // 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 ); 
     455                        } 
     456                    } 
    424457                } 
    425458            } 
     
    428461            var weekBegin:DateUtil = new DateUtil( weekBeginDay ); 
    429462            for(i=0; i<7; i++){ 
    430                 (dayCanvas[ i ] as DayCanvas).currentDay = weekBegin.date; 
    431                 (dayCanvas[ i ] as DayCanvas).dataProvider = dataProviders[ i ]; 
     463                dayCanvas[ i ].currentDay = (reset) ? new Date(-1) : weekBegin.date; 
     464                dayCanvas[ i ].dataProvider = (reset) ? new HashArray() : dataProviders[ i ]; 
     465                dayCanvas[ i ].setStyle("backgroundAlpha", 0); 
     466                dayCanvasLabels[ i ].text = (reset) ? "" : dateFormatter.format( weekBegin.date ); 
    432467                weekBegin.add( DateProperty.DATE, 1 ); 
    433468            } 
    434         }         
     469            dayCanvas[ dayOfTheWeek ].setStyle("backgroundAlpha", (reset) ? 0 : 0.3); 
     470 
     471        } 
    435472 
    436473        private function onTimeFrameGetResponse(event:Event):void { 
     
    442479 
    443480 
     481        //----------------------------------------------------- 
     482        // states layout management 
     483        private const DAY_STATE:String = "day"; 
     484        private const WEEK_STATE:String = "week"; 
     485        private const MONTH_STATE:String = "month"; 
     486        private function onDayStateEnter():void { 
     487            var i:int; 
     488            for(i=0; i<7; i++){ 
     489                dayCanvasBoxes[ i ].visible = dayCanvasBoxes[ i ].includeInLayout = (i == dayOfTheWeek); 
     490            } 
     491        } 
     492        private function onWeekStateEnter():void { 
     493            var i:int; 
     494            for(i=0; i<7; i++){ 
     495                dayCanvasBoxes[ i ].visible = dayCanvasBoxes[ i ].includeInLayout = true;          
     496            } 
     497        }         
     498        private function onStateChanged(event:Event):void { 
     499 
     500//            if(currentState == DAY_STATE){ 
     501// 
     502//            } else if(currentState == WEEK_STATE){ 
     503// 
     504//            } else if(currentState == MONTH_STATE){ 
     505// 
     506//            } 
     507        } 
     508        //----------------------------------------------------- 
    444509 
    445510