Changeset 4037

Show
Ignore:
Timestamp:
08/09/10 10:51:45 (22 months ago)
Author:
mszopinski
Message:

calendar, simple display

Location:
ssme/trunk/flex
Files:
7 added
19 modified

Legend:

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

    r4036 r4037  
    2929        backgroundGradientAlphas="[0, 0]" 
    3030        loadUserEntity="true" 
     31        currentState="day" 
    3132        > 
    3233 
     34    <!-- ========================================================= --> 
     35    <components:states> 
     36        <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" />             
     49        </mx:State> 
     50        <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" />  
     63        </mx:State> 
     64        <mx:State name="month" /> 
     65    </components:states> 
     66    <!-- ========================================================= --> 
     67    <components:transitions> 
     68        <mx:Transition fromState="month" toState="day"> 
     69            <mx:Parallel duration="500"> 
     70                <mx:Resize target="{ dayBox }" heightTo="{ canvasContainer.height }"/> 
     71                <mx:Resize target="{ monthBox }" heightTo="0" /> 
     72            </mx:Parallel> 
     73        </mx:Transition> 
     74        <mx:Transition fromState="month" toState="week"> 
     75            <mx:Parallel duration="500"> 
     76                <mx:Resize target="{ dayBox }" heightTo="{ canvasContainer.height }"/> 
     77                <mx:Resize target="{ monthBox }" heightTo="0" /> 
     78            </mx:Parallel> 
     79        </mx:Transition> 
     80        <mx:Transition fromState="*" toState="month"> 
     81            <mx:Parallel duration="500"> 
     82                <mx:Resize target="{ dayBox }" heightTo="0"/> 
     83                <mx:Resize target="{ monthBox }" heightTo="{ canvasContainer.height }" /> 
     84            </mx:Parallel> 
     85        </mx:Transition>          
     86    </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" /> 
     90    <!-- ========================================================= --> 
     91 
     92 
     93    <mx:Style source="assets/calendar.css" /> 
     94 
    3395    <components:HeaderlessPanel 
    34             id="panel" width="100%" height="100%" dropShadowEnabled="true" 
     96            id="panel" width="100%" height="98%" dropShadowEnabled="true" 
    3597            horizontalAlign="left" verticalAlign="top" 
    3698            backgroundAlpha="0.4" 
    37             layout="vertical"> 
    38  
    39         <mx:HBox width="100%"> 
     99            layout="vertical" 
     100            horizontalScrollPolicy="off" verticalScrollPolicy="off" 
     101            > 
     102 
     103        <mx:HBox width="100%" id="select" height="35" backgroundColor="red" verticalAlign="middle"> 
    40104             
    41             <mx:ComboBox id="calendarCombo" dataProvider="{ calendarsList }" labelField="name" change="calendarSelected(event);" /> 
    42  
    43             <mx:DateField id="choosenDate" 
     105            <mx:ComboBox id="calendarCombo" dataProvider="{ calendarsList }" labelField="name" /> 
     106 
     107            <mx:DateField id="chosenDate" 
    44108                    firstDayOfWeek="1" 
    45                     dayNames="[ 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat','Sun' ]" 
     109                    dayNames="[ 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun' ]" 
    46110                    formatString="DD-MM-YYYY" 
    47111                    yearNavigationEnabled="true" 
    48                     editable="false" /> 
    49  
    50             <mx:ToggleButtonBar id="state"> 
     112                    editable="false" 
     113                    /> 
     114 
     115            <mx:ToggleButtonBar id="state" itemClick="{ toggleClicked(event); }"> 
    51116                <mx:dataProvider> 
    52117                    <mx:Array> 
     
    58123            </mx:ToggleButtonBar> 
    59124 
     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="" /> 
     134 
    60135        </mx:HBox> 
    61136 
    62  
    63         <components:DayCanvas id="canvas" 
    64                 width="100%" height="100%" 
    65                 outerBorderColor="0xff0000" outerBorderAlpha="0.5" outerBorderThickness="4" 
    66                 innerBorderColors="[ 0x000000, 0x444444, 0x888888 ]" innerBorderAlphas="[ 0.5, 0.3, 0.3 ]" innerBorderThicknesses="[ 2, 1, 1 ]" 
    67                 backgroundColor="0xffffff" backgroundAlpha="0" 
    68                 rows="[ 24, 48, 96 ]" columns="[ 1 ]" 
    69                 cornerRadius="10"> 
     137        <mx:Box id="canvasContainer" width="100%" height="600" 
     138                paddingLeft="0" paddingTop="0" paddingRight="0" paddingBottom="0" 
     139                horizontalScrollPolicy="off" verticalScrollPolicy="off"> 
    70140             
    71         </components:DayCanvas> 
    72  
    73         <components:Timetable id="timetable" >             
    74         </components:Timetable> 
    75  
     141            <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, 0x444444, 0x888888 ]" innerBorderAlphas="[ 0.5, 0.3, 0.3 ]" innerBorderThicknesses="[ 2, 1, 1 ]" 
     158                        backgroundColor="0xffffff" backgroundAlpha="0" 
     159                        rows="[ 24, 48, 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, 0x444444, 0x888888 ]" innerBorderAlphas="[ 0.5, 0.3, 0.3 ]" innerBorderThicknesses="[ 2, 1, 1 ]" 
     169                        backgroundColor="0xffffff" backgroundAlpha="0" 
     170                        rows="[ 24, 48, 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, 0x444444, 0x888888 ]" innerBorderAlphas="[ 0.5, 0.3, 0.3 ]" innerBorderThicknesses="[ 2, 1, 1 ]" 
     180                        backgroundColor="0xffffff" backgroundAlpha="0" 
     181                        rows="[ 24, 48, 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, 0x444444, 0x888888 ]" innerBorderAlphas="[ 0.5, 0.3, 0.3 ]" innerBorderThicknesses="[ 2, 1, 1 ]" 
     191                        backgroundColor="0xffffff" backgroundAlpha="0" 
     192                        rows="[ 24, 48, 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, 0x444444, 0x888888 ]" innerBorderAlphas="[ 0.5, 0.3, 0.3 ]" innerBorderThicknesses="[ 2, 1, 1 ]" 
     202                        backgroundColor="0xffffff" backgroundAlpha="0" 
     203                        rows="[ 24, 48, 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, 0x444444, 0x888888 ]" innerBorderAlphas="[ 0.5, 0.3, 0.3 ]" innerBorderThicknesses="[ 2, 1, 1 ]" 
     213                        backgroundColor="0xffffff" backgroundAlpha="0" 
     214                        rows="[ 24, 48, 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, 0x444444, 0x888888 ]" innerBorderAlphas="[ 0.5, 0.3, 0.3 ]" innerBorderThicknesses="[ 2, 1, 1 ]" 
     224                        backgroundColor="0xffffff" backgroundAlpha="0" 
     225                        rows="[ 24, 48, 96 ]" columns="[ 1 ]" 
     226                        showEffect="{ fadeIn }" hideEffect="{ fadeOut }"                         
     227                        cornerRadius="0"> 
     228                </components:DayCanvas> 
     229 
     230            </mx:HBox> 
     231 
     232            <mx:HBox id="monthBox" width="100%" height="0" maxHeight="{ canvasContainer.height }" 
     233                    horizontalScrollPolicy="off" verticalScrollPolicy="off"                      
     234                    paddingTop="10" paddingBottom="10"> 
     235 
     236                <mx:Canvas backgroundColor="0xffff00" width="100%" height="100%" /> 
     237 
     238            </mx:HBox> 
     239        </mx:Box> 
    76240 
    77241    </components:HeaderlessPanel> 
    78242    <mx:Script> 
    79243        <![CDATA[ 
    80         import com.adobe.utils.DateUtil; 
     244 
     245        import com.kh.ssme.components.ModalSpinner; 
    81246        import com.kh.ssme.connector.BasicQueuedConnector; 
    82247        import com.kh.ssme.connector.CalendarConnector; 
     248        import com.kh.ssme.connector.ConnectorResult; 
     249        import com.kh.ssme.connector.Params; 
    83250        import com.kh.ssme.connector.TimeFrameConnector; 
    84  
    85         import mx.controls.Alert; 
     251        import com.kh.ssme.entity.CalendarEntity; 
     252        import com.kh.ssme.entity.ErrorMessageEntity; 
     253        import com.kh.ssme.util.DateUtil; 
     254        import com.kh.ssme.util.Logger; 
     255 
     256        import com.kh.ssme.util.LoggingComponentsEnum; 
     257        import com.kh.ssme.util.SsmeEvent; 
     258 
    86259        import mx.events.FlexEvent; 
    87  
    88260 
    89261        private var timeFrameConnector:TimeFrameConnector; 
     
    107279            if(!userEntityLoaded) addEventListener("ssme_userLoaded", prepareCalendarList)                 
    108280 
     281            currentState = "day"; 
     282 
    109283        } 
    110284 
    111285        private const DAY:int = 0; 
    112286        private const WEEK:int = 1; 
    113         private const MONTH:int = 2;  
     287        private const MONTH:int = 2; 
     288 
     289        private function toggleClicked(event:Event):void { 
     290            switch( state.selectedIndex ){ 
     291                case DAY:   currentState="day"; break; 
     292                case WEEK:  currentState="week"; break; 
     293                case MONTH: currentState="month"; break; 
     294            } 
     295            loadEvents(event); 
     296        }         
    114297 
    115298        private function prepareCalendarList(event:Event):void { 
     
    122305        } 
    123306 
    124         private function calendarSelected(event:Event):void { 
    125             if(calendarCombo.selectedItem){ 
    126                 Alert.show(calendarCombo.selectedItem.uuid+' '+calendarCombo.selectedItem.name); 
    127  
    128                 var date:Date = choosenDate.selectedDate; 
    129 //                DateUtil. 
    130 //                ModalSpinner.instance.showSpinner("Loading calendar...", 0x269926, panel, 0.2); 
    131 //                if(calendarCombo.selectedItem.uuid){ 
    132 //                    calendarConnector.getCalendarRange( calendarCombo.selectedItem.uuid ); 
    133 //                } else { 
    134 //                    calendarConnector.getCalendarAll(  ); 
    135 //                } 
     307        private const EVENTS_RECURSION:int = 1; 
     308        private function loadEvents(event:Event):void { 
     309 
     310            if(calendarCombo.selectedItem               // calendar chosen 
     311                    && chosenDate.selectedDate          // date chosen 
     312                    && state.selectedIndex>=0){         // state chosen 
     313 
     314                var date:Date = chosenDate.selectedDate;   // get chosen date 
     315                var begin:Number, end:Number; 
     316                switch( state.selectedIndex ){  // determine time range 
     317                    case DAY: { 
     318                            begin = DateUtil.dayBegin(date).timestamp; 
     319                            end = DateUtil.dayEnd(date).timestamp; 
     320                            break; 
     321                        } 
     322                    case WEEK: { 
     323                            begin = DateUtil.weekBegin(1, date).timestamp; 
     324                            end = DateUtil.weekEnd(1, date).timestamp; 
     325                            break; 
     326                        } 
     327                    case MONTH: { 
     328                            begin = DateUtil.monthBegin(date).timestamp; 
     329                            end = DateUtil.monthEnd(date).timestamp; 
     330                            break;                         
     331                        } 
     332                 
     333                } 
     334                 
     335                ModalSpinner.instance.showSpinner("Loading events for calendar '"+(calendarCombo.selectedItem.name)+"'...", 0x269926, panel, 0.2); 
     336                errorLabel.text = ""; 
     337                var params:Object = {}; 
     338                if(calendarCombo.selectedItem.uuid){ 
     339                    params[Params.DATA_RECURSION] = EVENTS_RECURSION; 
     340                    calendarConnector.getCalendarRange( calendarCombo.selectedItem.uuid, begin, end, params ); 
     341                } else { 
     342                    params[Params.DATA_RECURSION] = EVENTS_RECURSION;                     
     343                    calendarConnector.getCalendarAll( begin, end, params ); 
     344                } 
    136345            } 
     346        } 
     347 
     348        private var calendarEntity:CalendarEntity; 
     349        private function onCalendarGetResponse(event:Event):void { 
     350            var result:ConnectorResult = (event as SsmeEvent).eventProperties['result']; 
     351 
     352            if (result) { 
     353                // success 
     354                if (result.resultType == ConnectorResult.SUCCESS) { 
     355                    Logger.debug( result.lastResult as String, LoggingComponentsEnum.CAL ); 
     356                    calendarEntity = (new CalendarEntity()).parseJSONString( result.lastResult as String, EVENTS_RECURSION ); 
     357                    switch( state.selectedIndex ){  // determine time range 
     358                        case DAY: { 
     359                                showDayEvents(); 
     360                                break; 
     361                            } 
     362                        case WEEK: { 
     363                                showWeekEvents(); 
     364                                break; 
     365                            } 
     366//                        case MONTH: { 
     367//                                showMonthEvents(); 
     368//                                break; 
     369//                       } 
     370                    } 
     371                } 
     372                // error 
     373                else if (result.resultType == ConnectorResult.ERROR) { 
     374                    var json:ErrorMessageEntity = (new ErrorMessageEntity()).parseJSONString( result.lastResult as String ); 
     375                    errorLabel.text = json.errorMessage; 
     376                } 
     377                // fault 
     378                else if (result.resultType == ConnectorResult.FAULT) { 
     379                    Logger.errorEvent("User error", event, LoggingComponentsEnum.USR); 
     380                    errorLabel.text = "Connection error, please try again."; 
     381                } 
     382            } 
     383            ModalSpinner.instance.hideSpinner(); 
     384        } 
     385 
     386        private var theDayCanvas:DayCanvas = canvas_1; 
     387        private var dayCanvas:Array = [ canvas_1, canvas_2, canvas_3, canvas_4, canvas_5, canvas_6, canvas_7 ]; 
     388        private function showDayEvents():void { 
     389            canvas_1.dataProvider = calendarEntity.timeFramesEntitites; 
     390        } 
     391 
     392        private function showWeekEvents():void { 
     393 
    137394        }         
    138395 
     
    145402 
    146403 
    147         private function onCalendarGetResponse(event:Event):void { 
    148         } 
     404 
    149405 
    150406 
  • ssme/trunk/flex/Calendar/src/com/kh/ssme/components/DayCanvas.as

    r4031 r4037  
    2929 
    3030import mx.containers.Canvas; 
     31import mx.controls.Label; 
    3132import mx.controls.TextArea; 
    3233 
     
    3738        } 
    3839 
    39         [ArrayElementType("com.kh.ssme.entity.TimeFrameEntity")] 
    40         private var dataProvider_:Array;  
    41         public function set dataProvider(value:Array):void{ 
    42             dataProvider_ = value; 
    43             removeAllChildren(); 
    44             createEvents(); 
    45             validateNow();             
    46         } 
    47         public function get dataProvider():Array{ 
    48             return dataProvider_; 
     40//        public var showHourLabels:Boolean = false; 
     41// 
     42//        private var hourLabels:HashArray = new HashArray(); 
     43// 
     44//        override protected function createChildren():void{ 
     45//            super.createChildren(); 
     46// 
     47//            if(showHourLabels){ 
     48//                var score:int; 
     49//                var el:Label; 
     50//                for(var i:int=0; i<=24; i++){ 
     51//                    el = new Label(); 
     52//                    el.id = el.text = ((i<10)?("0"+i):(i))+":00"; 
     53// 
     54//                    if( !hourLabels.containsKey(el.id) ){ 
     55// 
     56//                        this.addChild( el ); 
     57// 
     58//                        el.setStyle("textAlign","right"); 
     59//                        el.setStyle("color", 0x000000); 
     60//                        el.setStyle("fontSize", 11); 
     61//                        el.visible = el.includeInLayout = false;//((i%24) == 0); 
     62//                        score = 0x20; 
     63//                        if(i%24 == 0)    score |= 0x01; 
     64//                        if(i%12 == 0)    score |= 0x02; 
     65//                        if(i%6 == 0)     score |= 0x04; 
     66//                        if(i%3 == 0)     score |= 0x08; 
     67//                        if(i%2 == 0)     score |= 0x10; 
     68// 
     69//                        hourLabels.put( el.id, { score:score, element:el } ); 
     70// 
     71//                    } 
     72//                } 
     73//            } 
     74// 
     75//        } 
     76 
     77        override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{ 
     78 
     79            // call first in order to get grid drawn correctly 
     80            super.updateDisplayList(unscaledWidth, unscaledHeight); 
     81 
     82            // do not erase old drawings! 
     83            //graphics.clear();    
     84             
     85//            if(showHourLabels && hourLabels.size>0){ // added 
     86// 
     87//                var textHeight:int = (hourLabels.getValueAt(0).element as Label).textHeight;    // label text height 
     88//                var count:int = Math.floor( unscaledHeight / (textHeight*1.5) );    // determine number of labels 
     89//                var mark:int = 0x01; 
     90//                if(count <= 3)              mark = 0x02; 
     91//                else if (count <= 5)        mark = 0x04; 
     92//                else if (count <= 9)        mark = 0x08; 
     93//                else if (count <= 12)       mark = 0x10; 
     94//                else /*if (count <= 24)*/   mark = 0x20; 
     95// 
     96//                var item:Object; 
     97//                var inBorderThicknesses:Array = getStyle_("innerBorderThicknesses", [ 1 ]); 
     98//                var ystep:Number = (unscaledHeight - (2*outerBorderThickness_+2*verticalMargin_) - (23*inBorderThicknesses[0])) / 24; 
     99//                var y:Number = outerBorderThickness_+verticalMargin_; 
     100//                //graphics.lineStyle(1, 0x0000ff, 0.7, true);   // debug 
     101//                for (var row:int = 0; row <=24; row++ ){ 
     102//                    //graphics.drawRoundRect(0, y - (textHeight*0.66), leftHorizontalMargin_, Math.min( Math.floor( ystep ), textHeight), 0, 0);// debug 
     103// 
     104//                    item = hourLabels.getValueAt(row); 
     105//                    item.element.visible = item.element.includeInLayout = true;//(item.score & mark) > 0; 
     106//                    item.element.x = 0; 
     107//                    item.element.y = Math.floor( y - (textHeight*0.66) ); 
     108//                    item.element.width = leftHorizontalMargin_; 
     109//                    item.element.height = Math.min( Math.floor( ystep ), textHeight); 
     110// 
     111//                    y += (ystep + inBorderThicknesses[0]); 
     112//                } 
     113// 
     114//            } 
     115 
    49116        } 
    50117 
    51         private var eventsMap:Object = new Object(); 
     118        [ArrayElementType("com.kh.ssme.entity.TimeFrameEntity")] 
     119        private var dataProvider_:HashArray; 
     120        public function set dataProvider(value:HashArray):void{ 
     121            dataProvider_ = value; 
     122 
     123            for(var i:int = 0; i<eventsMap.size; i++){ 
     124                this.removeChild( eventsMap.getValueAt(i) ); 
     125            } 
     126            createEvents(); 
     127            validateNow(); 
     128        } 
     129        public function get dataProvider():HashArray{ 
     130            return dataProvider_; 
     131        }     
     132 
     133        private var eventsMap:HashArray = new HashArray(); 
    52134        public function createEvents():void{ 
    53135 
     
    57139            // create events 
    58140            var ev:EventField; 
     141            var i:int = 0; 
    59142            for each(var json:TimeFrameEntity in dataProvider_){                 
    60143                ev = new EventField(); 
    61                 eventsMap[json.UUID] = ev; 
     144                eventsMap.put(json.UUID, ev); 
    62145                //ev.setStyle("backgroundColor", 0xffff00); 
    63146                ev.setStyle("borderThickness", 5); 
     
    69152 
    70153                addChild( ev ); 
    71                 sizeEvent( ev ); 
     154                sizeEvent( ev, i ); 
     155                i += 100; 
    72156 
    73                 var c:Canvas = new Canvas(); 
    74                 c.width = 100; 
    75                 c.height = ev.height; 
    76                 c.x = 300; 
    77                 c.y = ev.y; 
    78                 c.setStyle("backgroundColor", 0xff0000); 
    79                 addChild( c ); 
     157//                var c:Canvas = new Canvas(); 
     158//                c.width = 100; 
     159//                c.height = ev.height; 
     160//                c.x = 300; 
     161//                c.y = ev.y; 
     162//                c.setStyle("backgroundColor", 0xff0000); 
     163//                addChild( c ); 
    80164 
    81165            } 
     
    83167        } 
    84168 
    85         private function sizeEvent(ev:EventField):void{ 
     169        private function sizeEvent(ev:EventField, i:int):void{ 
    86170            var data:TimeFrameEntity = ev.eventInfo.eventData; 
    87171            if(data){ 
     
    96180                ev.height = stepY * timeWidth; 
    97181                ev.width = 200;//XXX 
    98                 ev.x = 50;//XXX 
     182                ev.x = 50+i;//XXX 
    99183                ev.y = (data.from.getHours()*4 + timeBegin)*stepY + outerBorderThickness_; 
    100184                ev.invalidateSize(); 
  • ssme/trunk/flex/Common/src/com/kh/ssme/components/GridCanvas.as

    r4031 r4037  
    3131    [Style(name="outerBorderThickness", type="Number", format="Number")] 
    3232    [Style(name="outerBorderAlpha", type="Number", format="Number")] 
     33    [Style(name="verticalMargin", type="Number", format="Number")] 
     34    [Style(name="leftHorizontalMargin", type="Number", format="Number")] 
     35    [Style(name="rightHorizontalMargin", type="Number", format="Number")]     
    3336    public class GridCanvas extends StyledCanvas { 
    3437 
     
    4447                columns_ = value 
    4548                invalidateDisplayList(); 
    46             }             
     49            } 
    4750        } 
    4851 
     
    8588        public function get outerBorderAlpha_():Number{ 
    8689            return this.getStyle("outerBorderAlpha"); 
    87         }        
     90        } 
    8891        public function set innerBorderThicknesses_(value:Array):void{ 
    8992            this.setStyle("innerBorderThicknesses", value); 
     
    104107            return this.getStyle("innerBorderAlphas"); 
    105108        } 
    106         //---------------------------------------------         
     109 
     110        public function set verticalMargin_(value:Number):void{ 
     111            this.setStyle("verticalMargin", value); 
     112        } 
     113        public function get verticalMargin_():Number{ 
     114            return this.getStyle("verticalMargin"); 
     115        } 
     116        public function set leftHorizontalMargin_(value:Number):void{ 
     117            this.setStyle("leftHorizontalMargin", value); 
     118        } 
     119        public function get leftHorizontalMargin_():Number{ 
     120            return this.getStyle("leftHorizontalMargin"); 
     121        } 
     122        public function set rightHorizontalMargin_(value:Number):void{ 
     123            this.setStyle("rightHorizontalMargin", value); 
     124        } 
     125        public function get rightHorizontalMargin_():Number{ 
     126            return this.getStyle("rightHorizontalMargin"); 
     127        } 
     128        //--------------------------------------------- 
    107129 
    108130        /** 
     
    117139            [ArrayElementType("int")] 
    118140            var inBorderThicknesses:Array = getStyle_("innerBorderThicknesses", [ 0 ]); 
    119             [ArrayElementType("uint")]             
     141            [ArrayElementType("uint")] 
    120142            var inBorderColors:Array = getStyle_("innerBorderColors", [ 0x000000 ]); 
    121             [ArrayElementType("Number")]             
     143            [ArrayElementType("Number")] 
    122144            var inBorderAlphas:Array = getStyle_("innerBorderAlphas", [ 1.0 ]); 
    123             var cornerRadius:Number = getStyle_("cornerRadius", 0.0);  
     145            var cornerRadius:Number = getStyle_("cornerRadius", 0.0); 
     146            var verticalMargin:Number = getStyle_("verticalMargin",0); 
     147            var leftHorizontalMargin:Number = getStyle_("leftHorizontalMargin",0); 
     148            var rightHorizontalMargin:Number = getStyle_("rightHorizontalMargin",0);             
    124149 
    125150 
     
    133158                                   CapsStyle.NONE); 
    134159                graphics.beginFill(this.getStyle("backgroundColor"), this.getStyle("backgroundAlpha")); 
    135                 graphics.drawRoundRect(outBorderThickness, outBorderThickness, unscaledWidth-2*outBorderThickness, unscaledHeight-2*outBorderThickness, cornerRadius, cornerRadius); 
     160                graphics.drawRoundRect(outBorderThickness+leftHorizontalMargin, outBorderThickness+verticalMargin,  // x, y 
     161                        unscaledWidth-(2*outBorderThickness+leftHorizontalMargin+rightHorizontalMargin),            // width 
     162                        unscaledHeight-(2*outBorderThickness+2*verticalMargin),                                     // height 
     163                        cornerRadius, cornerRadius); 
    136164                graphics.endFill(); 
    137             }             
     165            } 
    138166 
    139167            //border 
     
    146174                                   LineScaleMode.NORMAL,    //scale 
    147175                                   CapsStyle.NONE); 
    148                 graphics.drawRoundRect(outBorderThickness*0.5, outBorderThickness*0.5, unscaledWidth-outBorderThickness, unscaledHeight-outBorderThickness, cornerRadius, cornerRadius);              
    149             }             
     176                graphics.drawRoundRect(leftHorizontalMargin+outBorderThickness*0.5, verticalMargin+outBorderThickness*0.5,  // x, y 
     177                        unscaledWidth-outBorderThickness-leftHorizontalMargin-rightHorizontalMargin,                        // width, 
     178                        unscaledHeight-outBorderThickness-2*verticalMargin,                                                 // height 
     179                        cornerRadius, cornerRadius); 
     180            } 
    150181 
    151182 
     
    163194 
    164195                    if(columns_.length>=i){ 
    165                         var xstep:Number = (unscaledWidth - 2*outBorderThickness - (columns_[i] - 1)*inBorderThickness) / columns_[i]; 
    166                         var x:Number = outBorderThickness 
     196                        var xstep:Number = (unscaledWidth - (2*outBorderThickness+leftHorizontalMargin+rightHorizontalMargin) - (columns_[i] - 1)*inBorderThickness) / columns_[i]; 
     197                        var x:Number = outBorderThickness+leftHorizontalMargin; 
    167198                        for ( var col:int = 1; col < columns_[i]; col++ ) 
    168199                        { 
    169200                            x += (xstep + inBorderThickness); 
    170                             graphics.moveTo(x - inBorderThickness*0.5, outBorderThickness);// + inBorderThickness*0.5); 
    171                             graphics.lineTo(x - inBorderThickness*0.5, unscaledHeight - outBorderThickness);// - inBorderThickness*0.5); 
     201                            graphics.moveTo(x - inBorderThickness*0.5, outBorderThickness + verticalMargin);// + inBorderThickness*0.5); 
     202                            graphics.lineTo(x - inBorderThickness*0.5, unscaledHeight - outBorderThickness - verticalMargin);// - inBorderThickness*0.5);                           
    172203                        } 
    173204                    } 
    174205                    if(rows_.length>=i){ 
    175                         var ystep:Number = (unscaledHeight - 2*outBorderThickness - (rows_[i] - 1)*inBorderThickness) / rows_[i];                         
    176                         var y:Number = outBorderThickness; 
     206                        var ystep:Number = (unscaledHeight - (2*outBorderThickness+2*verticalMargin) - (rows_[i] - 1)*inBorderThickness) / rows_[i]; 
     207                        var y:Number = outBorderThickness+verticalMargin; 
    177208                        for (var row:int = 1; row < rows_[i]; row++ ) 
    178209                        { 
    179210                            y += (ystep + inBorderThickness); 
    180                             graphics.moveTo(outBorderThickness,// + inBorderThickness*0.5, 
     211                            graphics.moveTo(outBorderThickness + leftHorizontalMargin,// + inBorderThickness*0.5, 
    181212                                    y - inBorderThickness*0.5); 
    182                             graphics.lineTo(unscaledWidth - outBorderThickness, // - inBorderThickness*0.5, 
     213                            graphics.lineTo(unscaledWidth - outBorderThickness - rightHorizontalMargin, // - inBorderThickness*0.5, 
    183214                                    y - inBorderThickness*0.5); 
    184215                        } 
     
    190221 
    191222 
    192  
    193223        } 
    194224 
  • ssme/trunk/flex/Common/src/com/kh/ssme/components/SSMEApplication.as

    r4035 r4037  
    9393            this.addEventListener( mx.events.FlexEvent.INITIALIZE, onInit ); 
    9494        } 
    95          
     95 
    9696 
    9797        private function onInit(event:Event):void { 
     
    101101            Application.application.height = "100%"; 
    102102 
    103             this.setStyle("paddingLeft", 5); 
    104             this.setStyle("paddingRight", 5); 
    105             this.setStyle("paddingTop", 5); 
    106             this.setStyle("paddingBottom", 10);             
     103            this.setStyle("paddingLeft", 0); 
     104            this.setStyle("paddingRight", 0); 
     105            this.setStyle("paddingTop", 0); 
     106            this.setStyle("paddingBottom", 5);             
    107107 
    108108            //--------------------------------------- 
  • ssme/trunk/flex/Common/src/com/kh/ssme/connector/BasicQueuedConnector.as

    r4035 r4037  
    208208                        } 
    209209                } 
    210                 //-------------------------------------------------              
     210                //------------------------------------------------- 
     211 
     212        protected function P(name:*, value:*):String{ 
     213            return name+"="+value; 
     214        } 
    211215                 
    212216        } 
  • ssme/trunk/flex/Common/src/com/kh/ssme/connector/CalendarConnector.as

    r4035 r4037  
    3333         * Path to proper servlet 
    3434         */ 
    35         private static const calendarServlet:String = "timeFrame/"; 
     35        private static const calendarServlet:String = "calendar/"; 
    3636        public override function get servlet():String{ 
    3737            return calendarServlet; 
  • ssme/trunk/flex/Common/src/com/kh/ssme/entity/CalendarEntity.as

    r4036 r4037  
    114114 
    115115        public override function parseJSONString(json:String, recursive:int = 0):* { 
    116             return parseJSONObject( JSONObject.decode(json) ); 
     116            var jsonEntity:Object = JSONObject.decode(json); 
     117            return parseJSONObject( jsonEntity, recursive ); 
    117118        } 
    118119 
    119120        public override function toJSONString():String { 
    120             return JSONObject.encode( toJSONObject() ); 
    121         } 
     121            var jsonObject:Object = toJSONObject(); 
     122            var result:String = JSONObject.encode( jsonObject ); 
     123            return result; 
     124        }     
    122125    } 
    123126} 
  • ssme/trunk/flex/Common/src/com/kh/ssme/entity/ErrorMessageEntity.as

    r4035 r4037  
    5555        public function toJSONString():String { 
    5656            return null; 
    57         }         
     57        } 
    5858 
    5959    } 
  • ssme/trunk/flex/Common/src/com/kh/ssme/entity/GroupEntity.as

    r4036 r4037  
    107107        public override function parseJSONString(json:String, recursive:int = 0):* { 
    108108            var jsonEntity:Object = JSONObject.decode(json); 
    109             return parseJSONObject( jsonEntity ); 
     109            return parseJSONObject( jsonEntity, recursive ); 
    110110        } 
    111111 
     
    114114            var result:String = JSONObject.encode( jsonObject ); 
    115115            return result; 
    116         }      
     116        }  
    117117 
    118118    } 
  • ssme/trunk/flex/Common/src/com/kh/ssme/entity/LocationEntity.as

    r4035 r4037  
    141141 
    142142        public override function parseJSONString(json:String, recursive:int = 0):* { 
    143              return parseJSONObject( JSONObject.decode(json) ); 
     143            var jsonEntity:Object = JSONObject.decode(json); 
     144            return parseJSONObject( jsonEntity, recursive ); 
    144145        } 
    145146 
    146147        public override function toJSONString():String { 
    147              return JSONObject.encode( toJSONObject() ); 
    148         } 
     148            var jsonObject:Object = toJSONObject(); 
     149            var result:String = JSONObject.encode( jsonObject ); 
     150            return result; 
     151        }  
    149152    } 
    150153} 
  • ssme/trunk/flex/Common/src/com/kh/ssme/entity/RepeatTypeEntity.as

    r4036 r4037  
    100100 
    101101        public override function parseJSONString(json:String, recursive:int = 0):* { 
    102              return parseJSONObject( JSONObject.decode(json) ); 
     102            var jsonEntity:Object = JSONObject.decode(json); 
     103            return parseJSONObject( jsonEntity, recursive ); 
    103104        } 
    104105 
    105106        public override function toJSONString():String { 
    106             return JSONObject.encode( toJSONObject() ); 
     107            var jsonObject:Object = toJSONObject(); 
     108            var result:String = JSONObject.encode( jsonObject ); 
     109            return result; 
    107110        } 
     111         
    108112    } 
     113 
    109114} 
  • ssme/trunk/flex/Common/src/com/kh/ssme/entity/RoleEntity.as

    r4036 r4037  
    5959        public override function parseJSONString(json:String, recursive:int = 0):* { 
    6060            var jsonEntity:Object = JSONObject.decode(json); 
    61             return parseJSONObject( jsonEntity ); 
     61            return parseJSONObject( jsonEntity, recursive ); 
    6262        } 
    6363 
     
    6666            var result:String = JSONObject.encode( jsonObject ); 
    6767            return result; 
    68         } 
    69          
     68        }          
    7069 
    7170    } 
    7271 
    73  
    74  
    7572} 
  • ssme/trunk/flex/Common/src/com/kh/ssme/entity/StayPlaceEntity.as

    r4035 r4037  
    7272 
    7373        public override function parseJSONString(json:String, recursive:int = 0):* { 
    74            return parseJSONObject( JSONObject.decode(json) ); 
     74            var jsonEntity:Object = JSONObject.decode(json); 
     75            return parseJSONObject( jsonEntity, recursive ); 
    7576        } 
    7677 
    7778        public override function toJSONString():String { 
    78             return JSONObject.encode( toJSONObject() ); 
     79            var jsonObject:Object = toJSONObject(); 
     80            var result:String = JSONObject.encode( jsonObject ); 
     81            return result; 
    7982        } 
     83 
    8084    } 
     85 
    8186} 
  • ssme/trunk/flex/Common/src/com/kh/ssme/entity/TimeFrameEntity.as

    r4036 r4037  
    184184 
    185185        public override function parseJSONString(json:String, recursive:int = 0):* { 
    186             return parseJSONObject( JSONObject.decode(json) ); 
    187         }         
     186            var jsonEntity:Object = JSONObject.decode(json); 
     187            return parseJSONObject( jsonEntity, recursive ); 
     188        } 
    188189 
    189190        public override function toJSONString():String { 
    190             return JSONObject.encode( toJSONObject() );     
     191            var jsonObject:Object = toJSONObject(); 
     192            var result:String = JSONObject.encode( jsonObject ); 
     193            return result; 
    191194        } 
     195         
    192196    } 
    193197 
  • ssme/trunk/flex/Common/src/com/kh/ssme/entity/TimeFrameStateEntity.as

    r4035 r4037  
    6464 
    6565        public override function parseJSONString(json:String, recursive:int = 0):* { 
    66             return parseJSONObject( JSONObject.decode(json) ); 
     66            var jsonEntity:Object = JSONObject.decode(json); 
     67            return parseJSONObject( jsonEntity, recursive ); 
    6768        } 
    6869 
    6970        public override function toJSONString():String { 
    70             return JSONObject.encode( toJSONObject() ); 
     71            var jsonObject:Object = toJSONObject(); 
     72            var result:String = JSONObject.encode( jsonObject ); 
     73            return result; 
    7174        } 
     75 
    7276    } 
     77 
    7378} 
  • ssme/trunk/flex/Common/src/com/kh/ssme/entity/UserEntity.as

    r4036 r4037  
    100100                    for(i = 0; i<json[ownedGroups_field].length; i++){ 
    101101                        ogrp = (new GroupEntity()).parseJSONObject( (json[ownedGroups_field][i]), recursive-1 ); 
    102                         groupsEntities.put( ogrp.UUID, ogrp ); 
    103                         groupsNames.put( ogrp.UUID, ogrp.name ); 
     102                        ownedGroupsEntities.put( ogrp.UUID, ogrp ); 
     103                        ownedGroupsNames.put( ogrp.UUID, ogrp.name ); 
    104104                    } 
    105105                } else { 
    106106                    for(i = 0; i<json[ownedGroups_field].length; i++){ 
    107                         groupsEntities.put( (json[ownedGroups_field][i])[uuid_field], null ); 
    108                         groupsNames.put( (json[ownedGroups_field][i])[uuid_field], (json[ownedGroups_field][i])[readableName_field] ); 
     107                        ownedGroupsEntities.put( (json[ownedGroups_field][i])[uuid_field], null ); 
     108                        ownedGroupsNames.put( (json[ownedGroups_field][i])[uuid_field], (json[ownedGroups_field][i])[readableName_field] ); 
    109109                    } 
    110110                } 
     
    118118                    for(i = 0; i<json[roles_field].length; i++){ 
    119119                        role = (new RoleEntity()).parseJSONObject( (json[roles_field][i]), recursive-1 ); 
    120                         groupsEntities.put( role.UUID, role ); 
    121                         groupsNames.put( role.UUID, role.role ); 
     120                        rolesEntities.put( role.UUID, role ); 
     121                        rolesNames.put( role.UUID, role.role ); 
    122122                    } 
    123123                } else { 
    124124                    for(i = 0; i<json[roles_field].length; i++){ 
    125                         groupsEntities.put( (json[roles_field][i])[uuid_field], null ); 
    126                         groupsNames.put( (json[roles_field][i])[uuid_field], (json[roles_field][i])[readableName_field] ); 
     125                        rolesEntities.put( (json[roles_field][i])[uuid_field], null ); 
     126                        rolesNames.put( (json[roles_field][i])[uuid_field], (json[roles_field][i])[readableName_field] ); 
    127127                    } 
    128128                } 
     
    136136                    for(i = 0; i<json[calendars_field].length; i++){ 
    137137                        cal = (new CalendarEntity()).parseJSONObject( (json[calendars_field][i]), recursive-1 ); 
    138                         groupsEntities.put( cal.UUID, cal ); 
    139                         groupsNames.put( cal.UUID, cal.name ); 
     138                        calendarsEntities.put( cal.UUID, cal ); 
     139                        calendarsNames.put( cal.UUID, cal.name ); 
    140140                    } 
    141141                } else { 
    142142                    for(i = 0; i<json[calendars_field].length; i++){ 
    143                         groupsEntities.put( (json[calendars_field][i])[uuid_field], null ); 
    144                         groupsNames.put( (json[calendars_field][i])[uuid_field], (json[calendars_field][i])[readableName_field] ); 
     143                        calendarsEntities.put( (json[calendars_field][i])[uuid_field], null ); 
     144                        calendarsNames.put( (json[calendars_field][i])[uuid_field], (json[calendars_field][i])[readableName_field] ); 
    145145                    } 
    146146                } 
     
    190190        public override function parseJSONString(json:String, recursive:int = 0):* { 
    191191            var jsonEntity:Object = JSONObject.decode(json); 
    192             return parseJSONObject( jsonEntity ); 
     192            return parseJSONObject( jsonEntity, recursive ); 
    193193        } 
    194194 
     
    197197            var result:String = JSONObject.encode( jsonObject ); 
    198198            return result; 
    199         }            
     199        }         
    200200 
    201201    } 
  • ssme/trunk/flex/Common/src/com/kh/ssme/util/DateUtil.as

    r4035 r4037  
    9393 
    9494        /** 
     95         * Get the Date object 
     96         * @return 
     97         */ 
     98        public function get timestamp():Number{ 
     99           return date_.time; 
     100        } 
     101 
     102 
     103        /** 
    95104         * Create a new DateUtil for the passed in date.  Updates will not effect the original date. 
    96105         * @return 
     
    189198                   this.add(DateProperty.DATE, (firstDay-this.date_.day) -1).dayEnd() 
    190199                   : 
    191                    this.add(DateProperty.DATE, 7 - (this.date_.day - firstDay) -1).dayBegin(); 
     200                   this.add(DateProperty.DATE, 7 - (this.date_.day - firstDay) -1).dayEnd(); 
    192201        } 
    193202 
  • ssme/trunk/flex/Common/src/com/kh/ssme/util/HashArray.as

    r4036 r4037  
    5555                 */ 
    5656                public function put(key:*, value:*):Object{ 
    57             var contains:Boolean = containsKey(key);       
     57            var contains:Boolean = containsKey(key); 
     58            //trace(" contains:"+contains+" - "+key+":"+value); 
    5859                        if (!contains){ 
    5960                this.keys_.push( key );                         // add to keys array 
     
    120121            return this.size_; 
    121122                } 
     123                /** 
     124                 * Returns the size of the array 
     125                 */ 
     126                public function get length():int{ 
     127            return this.size_; 
     128                } 
    122129 
    123130 
  • ssme/trunk/flex/Common/src/com/kh/ssme/util/LoggingComponentsEnum.as

    r4035 r4037  
    3333        public static const REG:LoggingComponentsEnum = new LoggingComponentsEnum("Register","REG"); 
    3434        public static const USR:LoggingComponentsEnum = new LoggingComponentsEnum("User","USR"); 
     35        public static const CAL:LoggingComponentsEnum = new LoggingComponentsEnum("Calendar","CAL");         
    3536        public static const GRP:LoggingComponentsEnum = new LoggingComponentsEnum("Group","GRP");                
    3637 
     
    4546            VALUES[REG.ID] = REG; 
    4647            VALUES[USR.ID] = USR; 
     48            VALUES[CAL.ID] = CAL;                         
    4749            VALUES[GRP.ID] = GRP;  
    4850        }