Changeset 4044 for ssme/trunk/flex/Calendar/src/Calendar.mxml
- Timestamp:
- 08/17/10 13:00:24 (21 months ago)
- Files:
-
- 1 modified
-
ssme/trunk/flex/Calendar/src/Calendar.mxml (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
-
ssme/trunk/flex/Calendar/src/Calendar.mxml
r4043 r4044 67 67 <mx:Fade id="fadeOut" duration="300" alphaFrom="1.0" alphaTo="0" /> 68 68 <!-- ========================================================= --> 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" /> 70 71 <!-- ========================================================= --> 71 72 <mx:Style source="assets/calendar.css" /> … … 80 81 > 81 82 82 <mx:HBox width="100%" id="select" height="3 5" backgroundColor="red" verticalAlign="middle">83 <mx:HBox width="100%" id="select" height="30" verticalAlign="middle"> 83 84 84 85 <mx:ComboBox id="calendarCombo" dataProvider="{ calendarsList }" labelField="name" /> … … 118 119 horizontalScrollPolicy="off" verticalScrollPolicy="off"> 119 120 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 121 124 <mx:VBox id="dayBox0" width="50" height="100%" paddingLeft="0" paddingBottom="0" paddingRight="0" paddingTop="0" verticalGap="0"> 122 125 <mx:Label height="20" id="labelCanvas0" width="100%" textAlign="center" /> … … 225 228 226 229 <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> 232 243 </mx:HBox> 233 244 </mx:Box> … … 274 285 calendarConnector.addEventListener(BasicQueuedConnector.EVENT_FAULT, onCalendarGetResponse); 275 286 276 if (!userEntityLoaded) addEventListener("ssme_userLoaded", prepareCalendarList)287 if (!userEntityLoaded) addEventListener("ssme_userLoaded", prepareCalendarList) 277 288 278 289 currentState = "day"; … … 285 296 private const WEEK:int = 1; 286 297 private const MONTH:int = 2; 298 287 299 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); 295 307 } 296 308 297 309 private function prepareCalendarList(event:Event):void { 298 310 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" }); 304 316 calendarCombo.selectedIndex = -1; 305 317 } 318 306 319 private function sortCalendars(a:Object, b:Object):int { 307 320 return ( a.name < b.name ) ? -1 : (( a.name > b.name ) ? 1 : 0 ); 308 321 } 322 309 323 private function setDates():void { 310 324 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; 313 327 dayOfTheWeek = (currentDay.getDay() - weekBeginDay.getDay() + 7 ) % 7; 314 Logger.debug( "currentDay:["+currentDay+"] weekBeginDay:"+weekBeginDay+" monthBeginDay:"+monthBeginDay+" dayOfTheWeek:"+dayOfTheWeek315 + " ("+currentDay.getDay()+":"+weekBeginDay.getDay()+")");316 } 328 Logger.debug("currentDay:[" + currentDay + "] weekBeginDay:" + weekBeginDay + " monthBeginDay:" + monthBeginDay + " dayOfTheWeek:" + dayOfTheWeek 329 + " (" + currentDay.getDay() + ":" + weekBeginDay.getDay() + ")"); 330 } 317 331 318 332 private const EVENTS_RECURSION:int = 1; 333 319 334 private function loadEvents(event:Event):void { 320 335 321 if (calendarCombo.selectedItem // calendar chosen336 if (calendarCombo.selectedItem // calendar chosen 322 337 && chosenDate.selectedDate // date chosen 323 && state.selectedIndex >=0){ // state chosen338 && state.selectedIndex >= 0) { // state chosen 324 339 325 340 setDates(); … … 327 342 var date:Date = chosenDate.selectedDate; // get chosen date 328 343 var begin:Number, end:Number; 329 switch ( state.selectedIndex ){ // determine time range344 switch (state.selectedIndex) { // determine time range 330 345 case DAY: { 331 begin = DateUtil.dayBegin(date).timestamp;332 end = DateUtil.dayEnd(date).timestamp;333 currentState = DAY_STATE;334 onDayStateEnter();335 336 // reset previous display337 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 } 340 355 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 display347 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 } 350 365 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 } 356 374 357 375 } 358 376 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); 360 378 errorLabel.text = ""; 361 379 var params:Object = {}; 362 if (calendarCombo.selectedItem.uuid){380 if (calendarCombo.selectedItem.uuid) { 363 381 params[Params.DATA_RECURSION] = EVENTS_RECURSION; 364 calendarConnector.getCalendarRange( calendarCombo.selectedItem.uuid, begin, end, params);382 calendarConnector.getCalendarRange(calendarCombo.selectedItem.uuid, begin, end, params); 365 383 } else { 366 384 params[Params.DATA_RECURSION] = EVENTS_RECURSION; 367 calendarConnector.getCalendarAll( begin, end, params);385 calendarConnector.getCalendarAll(begin, end, params); 368 386 } 369 } 387 } 370 388 } 371 389 … … 380 398 private var dayOfTheWeek:int = 0; 381 399 [Bindable] 382 [ArrayElementType("DayCanvas")] 400 [ArrayElementType("DayCanvas")] 383 401 private var dayCanvas:Array; 384 402 [Bindable] 385 [ArrayElementType("Label")] 403 [ArrayElementType("Label")] 386 404 private var dayCanvasLabels:Array; 387 405 [ArrayElementType("VBox")] 388 private var dayCanvasBoxes:Array; 406 private var dayCanvasBoxes:Array; 407 389 408 private function onCalendarGetResponse(event:Event):void { 390 409 var result:ConnectorResult = (event as SsmeEvent).eventProperties['result']; … … 393 412 // success 394 413 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 range414 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 398 417 case DAY: { 399 showDayEvents();400 //currentState = DAY_STATE;401 break;402 }418 showDayEvents(); 419 //currentState = DAY_STATE; 420 break; 421 } 403 422 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 } 414 433 } 415 434 // error 416 435 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); 418 437 errorLabel.text = json.errorMessage; 419 438 } … … 430 449 dayCanvas[ dayOfTheWeek ].currentDay = (reset) ? new Date(-1) : currentDay; 431 450 dayCanvas[ dayOfTheWeek ].dataProvider = (reset) ? new HashArray() : calendarEntity.timeFramesEntitites; 432 dayCanvas[ dayOfTheWeek ].setStyle("backgroundAlpha", (reset) ? 0 : 0.3); 433 dayCanvasLabels[ dayOfTheWeek ].text = (reset) ? "" : da teFormatter.format( currentDay);451 dayCanvas[ dayOfTheWeek ].setStyle("backgroundAlpha", (reset) ? 0 : 0.3); 452 dayCanvasLabels[ dayOfTheWeek ].text = (reset) ? "" : dayDateFormatter.format(currentDay); 434 453 } 435 454 436 455 private function showWeekEvents(reset:Boolean = false):void { 437 456 438 if (!reset){457 if (!reset) { 439 458 // create data structure 440 459 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()); 442 461 443 462 // divide events among days 444 463 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) { 449 468 // starts and ends in the same day 450 dataProviders[ fromDay ].put( timeFrame.UUID, timeFrame);469 dataProviders[ fromDay ].put(timeFrame.UUID, timeFrame); 451 470 } else { 452 471 // 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); 455 474 } 456 475 } … … 459 478 460 479 // 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++) { 463 482 dayCanvas[ i ].currentDay = (reset) ? new Date(-1) : weekBegin.date; 464 483 dayCanvas[ i ].dataProvider = (reset) ? new HashArray() : dataProviders[ i ]; 465 484 dayCanvas[ i ].setStyle("backgroundAlpha", 0); 466 dayCanvasLabels[ i ].text = (reset) ? "" : da teFormatter.format( weekBegin.date);467 weekBegin.add( DateProperty.DATE, 1);485 dayCanvasLabels[ i ].text = (reset) ? "" : dayDateFormatter.format(weekBegin.date); 486 weekBegin.add(DateProperty.DATE, 1); 468 487 } 469 488 dayCanvas[ dayOfTheWeek ].setStyle("backgroundAlpha", (reset) ? 0 : 0.3); … … 471 490 } 472 491 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 473 498 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(); 478 503 } 479 504 … … 484 509 private const WEEK_STATE:String = "week"; 485 510 private const MONTH_STATE:String = "month"; 511 486 512 private function onDayStateEnter():void { 487 513 var i:int; 488 for (i=0; i<7; i++){514 for (i = 0; i < 7; i++) { 489 515 dayCanvasBoxes[ i ].visible = dayCanvasBoxes[ i ].includeInLayout = (i == dayOfTheWeek); 490 516 } 491 517 } 518 492 519 private function onWeekStateEnter():void { 493 520 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 498 526 private function onStateChanged(event:Event):void { 499 527 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 508 537 //----------------------------------------------------- 509 538
