From 0c5986735bfcd339deb6a8a69229653fa7f6692c Mon Sep 17 00:00:00 2001 From: zhijie Date: Wed, 24 Jul 2013 14:16:00 +0800 Subject: [PATCH] update issue functionality done --- .../OZLIssueCreateViewController.h | 6 +- .../OZLIssueCreateViewController.m | 150 +++++++++++++----- .../OZLIssueDetailViewController.m | 9 +- .../OZLIssueDetailViewController.storyboard | 36 +++-- 4 files changed, 138 insertions(+), 63 deletions(-) diff --git a/RedmineMobile/RedmineMobile/ViewControllers/OZLIssueCreateViewController.h b/RedmineMobile/RedmineMobile/ViewControllers/OZLIssueCreateViewController.h index fb24b2f..a16a228 100644 --- a/RedmineMobile/RedmineMobile/ViewControllers/OZLIssueCreateViewController.h +++ b/RedmineMobile/RedmineMobile/ViewControllers/OZLIssueCreateViewController.h @@ -55,5 +55,9 @@ @property(nonatomic,strong) OZLModelProject* parentProject; @property(nonatomic,strong) OZLModelIssue* parentIssue; -@property(nonatomic,strong) NSArray* issueList; +@property(nonatomic, strong) OZLModelIssue* issueData;// used for update issue +@property(nonatomic) int isUpdatingIssue; + +//@property(nonatomic,strong) NSArray* issueList; + @end diff --git a/RedmineMobile/RedmineMobile/ViewControllers/OZLIssueCreateViewController.m b/RedmineMobile/RedmineMobile/ViewControllers/OZLIssueCreateViewController.m index dafed77..a7183ed 100644 --- a/RedmineMobile/RedmineMobile/ViewControllers/OZLIssueCreateViewController.m +++ b/RedmineMobile/RedmineMobile/ViewControllers/OZLIssueCreateViewController.m @@ -38,11 +38,6 @@ @interface OZLIssueCreateViewController () { - OZLModelTracker* _currentTracker; - OZLModelIssuePriority* _currentPriority; - OZLModelIssueStatus* _currentStatus; - OZLModelUser* _currentUser; - NSDate* _currentStartDate; NSDate* _currentDueDate; int _currentEstimatedTime;//minutes @@ -79,6 +74,7 @@ [self.navigationItem setRightBarButtonItem:saveBtn]; [self setupInputviews]; + [self initializeViewValues]; // hud _HUD = [[MBProgressHUD alloc] initWithView:self.view]; @@ -125,6 +121,38 @@ _doneProgressLabel.delegate = self; } +-(void)initializeViewValues +{ + if (_isUpdatingIssue) { // initial values for ui elements + _subjectTextField.text = _issueData.subject; + if (_issueData.tracker) { + _trackerLabel.text = _issueData.tracker.name; + } + if (_issueData.status) { + _statusLabel.text = _issueData.status.name; + } + if (_issueData.priority) { + _priorityLabel.text = _issueData.priority.name; + } + if (_issueData.assignedTo) { + _assigneeLabel.text = _issueData.assignedTo.name; + } + if (_issueData.startDate) { + _startDateLabel.text = _issueData.startDate; + } + if (_issueData.dueDate) { + _dueDateLabel.text = _issueData.dueDate; + } + _estimatedHoursLabel.text = [NSString stringWithFormat:@"%f",_issueData.estimatedHours]; + _doneProgressLabel.text = [NSString stringWithFormat:@"%d %%",(int)_issueData.doneRatio]; + + + }else { + _issueData = [[OZLModelIssue alloc] init]; + } + +} + - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; @@ -144,21 +172,21 @@ [_HUD hide:YES afterDelay:1]; return; } - if (_currentUser == nil) { + if (_issueData.tracker == nil) { _HUD.mode = MBProgressHUDModeText; _HUD.labelText = @"tracker can not be empty."; [_HUD show:YES]; [_HUD hide:YES afterDelay:1]; return; } - if (_currentStatus == nil) { + if (_issueData.status == nil) { _HUD.mode = MBProgressHUDModeText; _HUD.labelText = @"status can not be empty."; [_HUD show:YES]; [_HUD hide:YES afterDelay:1]; return; } - if (_currentPriority == nil) { + if (_issueData.priority == nil) { _HUD.mode = MBProgressHUDModeText; _HUD.labelText = @"priority can not be empty."; [_HUD show:YES]; @@ -166,38 +194,63 @@ return; } - OZLModelIssue* issueData = [[OZLModelIssue alloc] init]; - issueData.subject = _subjectTextField.text; - issueData.tracker = _currentTracker; - issueData.status = _currentStatus; - issueData.priority = _currentPriority; - issueData.assignedTo = _currentUser; + _issueData.subject = _subjectTextField.text; if (_parentIssue) { - issueData.parentIssueId = _parentIssue.index; - issueData.projectId = _parentIssue.projectId; - }else { - issueData.projectId = _parentProject.index; + _issueData.parentIssueId = _parentIssue.index; + _issueData.projectId = _parentIssue.projectId; + }else if(_parentProject){ + _issueData.projectId = _parentProject.index; } - issueData.description = _descriptionTextview.text; - issueData.startDate = _startDateLabel.text; - issueData.dueDate = _dueDateLabel.text; - issueData.doneRatio = [_doneProgressLabel.text integerValue]; - issueData.estimatedHours = _currentEstimatedTime/60.0f; + if (_isUpdatingIssue) { + _issueData.notes = _descriptionTextview.text; + }else { + _issueData.description = _descriptionTextview.text; + } + _issueData.startDate = _startDateLabel.text; + _issueData.dueDate = _dueDateLabel.text; + _issueData.doneRatio = [_doneProgressLabel.text integerValue]; + _issueData.estimatedHours = _currentEstimatedTime/60.0f; //TODO: is_public is not processed yet _HUD.mode = MBProgressHUDModeIndeterminate; - _HUD.labelText = @"Creating Project..."; - [_HUD show:YES]; - [OZLNetwork createIssue:issueData withParams:nil andBlock:^(BOOL success, NSError *error){ - if (error) { - NSLog(@"create project error: %@",error.description); - }else { + if (_isUpdatingIssue) { + _HUD.labelText = @"Updating Issue ..."; + [_HUD show:YES]; + [OZLNetwork updateIssue:_issueData withParams:nil andBlock:^(BOOL success, NSError *error){ + [_HUD hide:YES]; + + if (error) { + NSLog(@"update issue error: %@",error.description); - } - [_HUD hide:YES]; - }]; + _HUD.mode = MBProgressHUDModeText; + _HUD.labelText = @"Sorry, something wrong while updating issue."; + [_HUD show:YES]; + [_HUD hide:YES afterDelay:1]; + }else { + [self.navigationController popViewControllerAnimated:YES]; + } + }]; + }else { + _HUD.labelText = @"Creating New Issue ..."; + [_HUD show:YES]; + [OZLNetwork createIssue:_issueData withParams:nil andBlock:^(BOOL success, NSError *error){ + [_HUD hide:YES]; + + if (error) { + NSLog(@"create issue error: %@",error.description); + + _HUD.mode = MBProgressHUDModeText; + _HUD.labelText = @"Sorry, something wrong while creating issue."; + [_HUD show:YES]; + [_HUD hide:YES afterDelay:1]; + + }else { + [self.navigationController popViewControllerAnimated:YES]; + } + }]; + } } - (void)viewDidUnload { @@ -248,16 +301,16 @@ if (selectedIndex.row == 0) { switch (indexPath.row) { case 0:{//tracker - _currentTracker = nil; + _issueData.tracker = nil; }break; case 1:{//status - _currentStatus = nil; + _issueData.status = nil; }break; case 2:{//priority - _currentPriority = nil; + _issueData.priority = nil; }break; case 3:{//assignee - _currentUser = nil; + _issueData.assignedTo = nil; }break; default: break; @@ -268,16 +321,16 @@ id data = [[dataArray objectAtIndex:indexPath.row ] objectAtIndex:selectedIndex.row - 1]; switch (indexPath.row) { case 0:{//tracker - _currentUser = data; + _issueData.tracker = data; }break; case 1:{//status - _currentStatus = data; + _issueData.status = data; }break; case 2:{//priority - _currentPriority = data; + _issueData.priority = data; }break; case 3:{//assignee - _currentUser = data; + _issueData.assignedTo = data; }break; default: @@ -320,13 +373,24 @@ { if (section == 0) { NSString* tip ; - if (_parentIssue) { - tip = [NSString stringWithFormat:@"Add sub issue to #%d",_parentIssue.index]; + if (_isUpdatingIssue) { + tip = [NSString stringWithFormat:@"Update issue #%d",_issueData.index]; }else { - tip = [NSString stringWithFormat:@"Add issue to project:%@",_parentProject.name]; + if (_parentIssue) { + tip = [NSString stringWithFormat:@"Add sub issue to #%d",_parentIssue.index]; + }else { + tip = [NSString stringWithFormat:@"Add issue to project:%@",_parentProject.name]; + } } return tip; + }else if(section == 3) { + if (_isUpdatingIssue) { + return @"Notes"; + }else { + return @"Description"; + } } + return @""; } diff --git a/RedmineMobile/RedmineMobile/ViewControllers/OZLIssueDetailViewController.m b/RedmineMobile/RedmineMobile/ViewControllers/OZLIssueDetailViewController.m index 3f57049..b0c1780 100644 --- a/RedmineMobile/RedmineMobile/ViewControllers/OZLIssueDetailViewController.m +++ b/RedmineMobile/RedmineMobile/ViewControllers/OZLIssueDetailViewController.m @@ -96,7 +96,6 @@ UIStoryboard *tableViewStoryboard = [UIStoryboard storyboardWithName:@"OZLIssueCreateViewController" bundle:nil]; OZLIssueCreateViewController* creator = [tableViewStoryboard instantiateViewControllerWithIdentifier:@"OZLIssueCreateViewController"]; [creator setParentIssue:_issueData]; - //[self.navigationController presentModalViewController:creator animated:YES]; [self.navigationController pushViewController:creator animated:YES]; }break; case 2:{//logtime @@ -105,7 +104,13 @@ [creator setIssueData:_issueData]; [self.navigationController pushViewController:creator animated:YES]; }break; - + case 3:{ // update + UIStoryboard *tableViewStoryboard = [UIStoryboard storyboardWithName:@"OZLIssueCreateViewController" bundle:nil]; + OZLIssueCreateViewController* creator = [tableViewStoryboard instantiateViewControllerWithIdentifier:@"OZLIssueCreateViewController"]; + [creator setIssueData:_issueData]; + [creator setIsUpdatingIssue:YES]; + [self.navigationController pushViewController:creator animated:YES]; + }break; default: break; } diff --git a/RedmineMobile/RedmineMobile/ViewControllers/OZLIssueDetailViewController.storyboard b/RedmineMobile/RedmineMobile/ViewControllers/OZLIssueDetailViewController.storyboard index 990f929..e1c5ff2 100644 --- a/RedmineMobile/RedmineMobile/ViewControllers/OZLIssueDetailViewController.storyboard +++ b/RedmineMobile/RedmineMobile/ViewControllers/OZLIssueDetailViewController.storyboard @@ -181,7 +181,7 @@ - + @@ -198,6 +198,24 @@ + + + + + + + + + + + + @@ -224,22 +242,6 @@ - - - - - - - - - - - - - - - -