import com.imt.intimamedia.events.patient.AddTreatmentEvent; import com.imt.intimamedia.helpers.HelpUtils; import com.imt.intimamedia.model.ApplicationModelLocator; import com.imt.intimamedia.views.common.ImtToaster; import com.imt.intimamedia.views.physician.patient.PatientView; import com.imt.intimamedia.vo.TreatmentVo; import flash.events.KeyboardEvent; import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.controls.Image; import mx.controls.dataGridClasses.DataGridColumn; import mx.events.ValidationResultEvent; import mx.formatters.DateFormatter; import mx.resources.ResourceManager; import mx.validators.Validator; [Bindable] private var _minYearOfBirth : int = new Date().fullYear - 110; [Bindable] private var _maxYearOfBirth : int = new Date().fullYear; [Bindable] private var _disabledRangesDate : Array = [ {rangeStart: new Date(new Date().fullYear, new Date().getMonth(), new Date().getDate()+1)} ]; [Bindable] private var _model : ApplicationModelLocator = ApplicationModelLocator.getInstance(); [Bindable] public var listTreatments : ArrayCollection = new ArrayCollection(); private function creationCompleteHandler() : void { patientDataHelp.source = 'images/help/' + ResourceManager.getInstance().getString('labels', 'lang') + '/patientData.png'; initListeners(); } public function showHelp(image : Image) : void { HelpUtils.showHelp(this, image, zoomHelpAdd, zoomHelpRemove); } private function navigationPrev() : void { var parent : PatientView = this.parentDocument as PatientView; parent.selectView(parent.cardioStart, parent.cardioEnd, parent.cardioBox, parent.cardioLinkButton, 4) } private function navigationNext() : void { _model.application.menuPhysician.selectedIndex = 1; //toaster to do ? } private function loadKeyboardListeners() : void { treatmentNameTextInput.addEventListener(KeyboardEvent.KEY_UP, translateFirstCharToUpperCase); } private function translateFirstCharToUpperCase( e : KeyboardEvent ) : void { if (treatmentNameTextInput.text.length == 1) { if (e.keyCode > 64 && e.keyCode < 91) { var b:String = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; treatmentNameTextInput.text = b.charAt(e.keyCode - 65); } } else { var firstCharFirstName : String = treatmentNameTextInput.text.substr(0, 1); var firstNameLessFirstChar : String = treatmentNameTextInput.text.substr(1, treatmentNameTextInput.text.length); treatmentNameTextInput.text = firstCharFirstName.toUpperCase() + firstNameLessFirstChar; } } public function loadAppointmentData(treatments : ArrayCollection) : void { listTreatments.removeAll(); if (treatments && treatments.length > 0) { for each (var currentTreatment : TreatmentVo in treatments) { var treatmentVo : TreatmentVo = new TreatmentVo(); treatmentVo.type = currentTreatment.type; treatmentVo.name = currentTreatment.name; treatmentVo.posology = currentTreatment.posology; treatmentVo.startDate = currentTreatment.startDate; listTreatments.addItem(treatmentVo); } _model.appointmentSelected.treatments = listTreatments.source; } } private function addTreatment() : void { var toastMessage : ImtToaster = new ImtToaster(); var validators : Array = [ typeValidator, nameValidator, posologyValidator, startDateValidator ]; var validatorsError : Array = Validator.validateAll( validators ); if( validatorsError.length != 0 ) { toastMessage = new ImtToaster(); toastMessage.titleMessage = ResourceManager.getInstance().getString('labels', 'error.allFieldsTitle'); toastMessage.timeToLive = 7; toastMessage.message = ResourceManager.getInstance().getString('labels', 'error.allFieldsAddTreatment'); toastMessage.level = ImtToaster.WARNING; _model.toaster.toast( toastMessage ); } else { for each (var t : TreatmentVo in listTreatments) { if (treatmentNameTextInput.text == t.name) { toastMessage = new ImtToaster(); toastMessage.titleMessage = ResourceManager.getInstance().getString('labels', 'warning.use'); toastMessage.timeToLive = 7; toastMessage.message = ResourceManager.getInstance().getString('labels', 'error.treatmentAlreadyExists'); toastMessage.level = ImtToaster.WARNING; _model.toaster.toast( toastMessage ); return; } } var treatmentVo : TreatmentVo = new TreatmentVo(); treatmentVo.type = typeOfTreatmentButtonGroup.selectedValue as String; treatmentVo.name = treatmentNameTextInput.text; treatmentVo.posology = treatmentPosologyTextInput.text; treatmentVo.startDate = treatmentStartDateTextInput.text; listTreatments.addItem( treatmentVo ); _model.appointmentSelected.treatmentCollection.addItem(treatmentVo); _model.appointmentSelected.treatments = listTreatments.source; typeOfTreatmentButtonGroup.selection = null; treatmentNameTextInput.text = ""; treatmentPosologyTextInput.text = ""; treatmentStartDateTextInput.text = ""; } } private function update() : void { if (_model.appointmentSelected.treatments.length > 0) new AddTreatmentEvent( _model.appointmentSelected.treatments, _model.appointmentSelected.id ).dispatch(); } public function reset() : void { listTreatments = new ArrayCollection(); treatmentStartDateTextInput.text = ""; typeOfTreatmentButtonGroup.selection = null; treatmentNameTextInput.text = ""; treatmentPosologyTextInput.text = ""; } private function initListeners() : void { nameValidator.requiredFieldError = ResourceManager.getInstance().getString('labels', 'required'); nameValidator.addEventListener(ValidationResultEvent.VALID, stringValidatorHandler); posologyValidator.requiredFieldError = ResourceManager.getInstance().getString('labels', 'required'); posologyValidator.addEventListener(ValidationResultEvent.VALID, stringValidatorHandler); startDateValidator.requiredFieldError = ResourceManager.getInstance().getString('labels', 'required'); startDateValidator.addEventListener(ValidationResultEvent.VALID, stringValidatorHandler); } public function updateErrorStrings() : void { if (treatmentNameTextInput.errorString) treatmentNameTextInput.errorString = ResourceManager.getInstance().getString('labels', 'errorField'); if (treatmentPosologyTextInput.errorString) treatmentPosologyTextInput.errorString = ResourceManager.getInstance().getString('labels', 'errorField'); if (treatmentStartDateTextInput.errorString) treatmentStartDateTextInput.errorString = ResourceManager.getInstance().getString('labels', 'errorField'); } private function stringValidatorHandler(event : ValidationResultEvent) : void { if (event.target.errorString) event.target.errorString = null; } private function formatType( item : Object, column : DataGridColumn ) : String { return ResourceManager.getInstance().getString( 'treatments', item.type ); }