issue list sort function done, but filter is not finished yet
filter is not finished because some parameters of Remine REST are not clear
This commit is contained in:
parent
059a1aad12
commit
3b7bc1644e
|
@ -38,6 +38,11 @@
|
||||||
@property(nonatomic,strong) NSString* redmineUserName;
|
@property(nonatomic,strong) NSString* redmineUserName;
|
||||||
@property(nonatomic,strong) NSString* redminePassword;
|
@property(nonatomic,strong) NSString* redminePassword;
|
||||||
|
|
||||||
|
// issue list option
|
||||||
|
@property(nonatomic) int issueListFilterType;
|
||||||
|
@property(nonatomic) int issueListSortType;
|
||||||
|
@property(nonatomic) int issueListSortAscending;
|
||||||
|
|
||||||
//app status
|
//app status
|
||||||
@property(nonatomic) int lastProjectID;// last viewed project id
|
@property(nonatomic) int lastProjectID;// last viewed project id
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,11 @@ NSString* USER_DEFUALTS_LAST_PROJECT_ID = @"USER_DEFUALTS_LAST_PROJECT_ID";
|
||||||
NSString* USER_DEFUALTS_REDMINE_USER_NAME = @"USER_DEFUALTS_REDMINE_USER_NAME";
|
NSString* USER_DEFUALTS_REDMINE_USER_NAME = @"USER_DEFUALTS_REDMINE_USER_NAME";
|
||||||
NSString* USER_DEFUALTS_REDMINE_PASSWORD = @"USER_DEFUALTS_REDMINE_PASSWORD";
|
NSString* USER_DEFUALTS_REDMINE_PASSWORD = @"USER_DEFUALTS_REDMINE_PASSWORD";
|
||||||
|
|
||||||
|
//issue list option
|
||||||
|
NSString* USER_DEFAULTS_ISSUE_LIST_ASCEND = @"USER_DEFUALTS_ISSUE_LIST_ASCEND";// ascend or descend
|
||||||
|
NSString* USER_DEFAULTS_ISSUE_LIST_FILTER = @"USER_DEFAULTS_ISSUE_LIST_FILTER";
|
||||||
|
NSString* USER_DEFAULTS_ISSUE_LIST_SORT = @"USER_DEFAULTS_ISSUE_LIST_SORT";
|
||||||
|
|
||||||
static OZLSingleton* sharedInstance = nil;
|
static OZLSingleton* sharedInstance = nil;
|
||||||
+(OZLSingleton*) sharedInstance
|
+(OZLSingleton*) sharedInstance
|
||||||
{
|
{
|
||||||
|
@ -50,6 +55,9 @@ static OZLSingleton* sharedInstance = nil;
|
||||||
[NSNumber numberWithInt:-1],USER_DEFUALTS_LAST_PROJECT_ID,
|
[NSNumber numberWithInt:-1],USER_DEFUALTS_LAST_PROJECT_ID,
|
||||||
@"",USER_DEFUALTS_REDMINE_USER_NAME,
|
@"",USER_DEFUALTS_REDMINE_USER_NAME,
|
||||||
@"",USER_DEFUALTS_REDMINE_PASSWORD,
|
@"",USER_DEFUALTS_REDMINE_PASSWORD,
|
||||||
|
[NSNumber numberWithInt:0],USER_DEFAULTS_ISSUE_LIST_FILTER,
|
||||||
|
[NSNumber numberWithInt:0],USER_DEFAULTS_ISSUE_LIST_SORT,
|
||||||
|
[NSNumber numberWithInt:0],USER_DEFAULTS_ISSUE_LIST_ASCEND,
|
||||||
nil];
|
nil];
|
||||||
[defaults registerDefaults:dic];
|
[defaults registerDefaults:dic];
|
||||||
}
|
}
|
||||||
|
@ -116,4 +124,40 @@ static OZLSingleton* sharedInstance = nil;
|
||||||
[userdefaults setObject:redminePassword forKey:USER_DEFUALTS_REDMINE_PASSWORD];
|
[userdefaults setObject:redminePassword forKey:USER_DEFUALTS_REDMINE_PASSWORD];
|
||||||
[userdefaults synchronize];
|
[userdefaults synchronize];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-(int)issueListFilterType
|
||||||
|
{
|
||||||
|
NSUserDefaults* userdefaults = [NSUserDefaults standardUserDefaults];
|
||||||
|
return [[userdefaults objectForKey:USER_DEFAULTS_ISSUE_LIST_FILTER] intValue];
|
||||||
|
}
|
||||||
|
-(void)setIssueListFilterType:(int)issueListFilterType
|
||||||
|
{
|
||||||
|
NSUserDefaults* userdefaults = [NSUserDefaults standardUserDefaults];
|
||||||
|
[userdefaults setObject:[NSNumber numberWithInt:issueListFilterType] forKey:USER_DEFAULTS_ISSUE_LIST_FILTER];
|
||||||
|
[userdefaults synchronize];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(int)issueListSortAscending
|
||||||
|
{
|
||||||
|
NSUserDefaults* userdefaults = [NSUserDefaults standardUserDefaults];
|
||||||
|
return [[userdefaults objectForKey:USER_DEFAULTS_ISSUE_LIST_ASCEND] intValue];
|
||||||
|
}
|
||||||
|
-(void)setIssueListSortAscending:(int)issueListSortAscending
|
||||||
|
{
|
||||||
|
NSUserDefaults* userdefaults = [NSUserDefaults standardUserDefaults];
|
||||||
|
[userdefaults setObject:[NSNumber numberWithInt:issueListSortAscending] forKey:USER_DEFAULTS_ISSUE_LIST_ASCEND];
|
||||||
|
[userdefaults synchronize];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(int)issueListSortType
|
||||||
|
{
|
||||||
|
NSUserDefaults* userdefaults = [NSUserDefaults standardUserDefaults];
|
||||||
|
return [[userdefaults objectForKey:USER_DEFAULTS_ISSUE_LIST_SORT] intValue];
|
||||||
|
}
|
||||||
|
-(void)setIssueListSortType:(int)issueListSortType
|
||||||
|
{
|
||||||
|
NSUserDefaults* userdefaults = [NSUserDefaults standardUserDefaults];
|
||||||
|
[userdefaults setObject:[NSNumber numberWithInt:issueListSortType] forKey:USER_DEFAULTS_ISSUE_LIST_SORT];
|
||||||
|
[userdefaults synchronize];
|
||||||
|
}
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -34,6 +34,12 @@
|
||||||
- (IBAction)onCancel:(id)sender;
|
- (IBAction)onCancel:(id)sender;
|
||||||
- (IBAction)onSave:(id)sender;
|
- (IBAction)onSave:(id)sender;
|
||||||
|
|
||||||
|
@property (weak, nonatomic) NSArray* trackerList;
|
||||||
|
@property (weak, nonatomic) NSArray* priorityList;
|
||||||
|
@property (weak, nonatomic) NSArray* statusList;
|
||||||
|
@property (weak, nonatomic) NSArray* userList;
|
||||||
|
|
||||||
|
|
||||||
// neccessory
|
// neccessory
|
||||||
@property (weak, nonatomic) IBOutlet UITextField *subjectTextField;
|
@property (weak, nonatomic) IBOutlet UITextField *subjectTextField;
|
||||||
@property (weak, nonatomic) IBOutlet UILabel *trackerLabel;
|
@property (weak, nonatomic) IBOutlet UILabel *trackerLabel;
|
||||||
|
|
|
@ -36,10 +36,6 @@
|
||||||
#import "MLTableAlert.h"
|
#import "MLTableAlert.h"
|
||||||
|
|
||||||
@interface OZLIssueCreateViewController () {
|
@interface OZLIssueCreateViewController () {
|
||||||
NSArray* _trackerList;
|
|
||||||
NSArray* _priorityList;
|
|
||||||
NSArray* _statusList;
|
|
||||||
NSArray* _userList;
|
|
||||||
|
|
||||||
OZLModelTracker* _currentTracker;
|
OZLModelTracker* _currentTracker;
|
||||||
OZLModelIssuePriority* _currentPriority;
|
OZLModelIssuePriority* _currentPriority;
|
||||||
|
@ -82,7 +78,6 @@
|
||||||
[self.view addSubview:_HUD];
|
[self.view addSubview:_HUD];
|
||||||
_HUD.labelText = @"Loading...";
|
_HUD.labelText = @"Loading...";
|
||||||
|
|
||||||
[self loadIssueRelatedData];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void) setupInputviews
|
-(void) setupInputviews
|
||||||
|
@ -123,61 +118,6 @@
|
||||||
_doneProgressLabel.delegate = self;
|
_doneProgressLabel.delegate = self;
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)loadIssueRelatedData
|
|
||||||
{
|
|
||||||
static int doneCount = 0;
|
|
||||||
[_HUD show:YES];
|
|
||||||
[OZLNetwork getTrackerListWithParams:nil andBlock:^(NSArray *result, NSError *error) {
|
|
||||||
if (!error) {
|
|
||||||
_trackerList = result;
|
|
||||||
}else {
|
|
||||||
NSLog(@"get tracker list error : %@",error.description);
|
|
||||||
}
|
|
||||||
doneCount ++;
|
|
||||||
if (doneCount == 4) {
|
|
||||||
[_HUD hide:YES];
|
|
||||||
doneCount = 0;
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
|
|
||||||
[OZLNetwork getIssueStatusListWithParams:nil andBlock:^(NSArray *result, NSError *error) {
|
|
||||||
if (!error) {
|
|
||||||
_statusList = result;
|
|
||||||
}else {
|
|
||||||
NSLog(@"get issue status list error : %@",error.description);
|
|
||||||
}
|
|
||||||
doneCount ++;
|
|
||||||
if (doneCount == 4) {
|
|
||||||
[_HUD hide:YES];
|
|
||||||
doneCount = 0;
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
[OZLNetwork getPriorityListWithParams:nil andBlock:^(NSArray *result, NSError *error) {
|
|
||||||
if (!error) {
|
|
||||||
_priorityList = result;
|
|
||||||
}else {
|
|
||||||
NSLog(@"get priority list error : %@",error.description);
|
|
||||||
}
|
|
||||||
doneCount ++;
|
|
||||||
if (doneCount == 4) {
|
|
||||||
[_HUD hide:YES];
|
|
||||||
doneCount = 0;
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
[OZLNetwork getUserListWithParams:nil andBlock:^(NSArray *result, NSError *error) {
|
|
||||||
if (!error) {
|
|
||||||
_userList = result;
|
|
||||||
}else {
|
|
||||||
NSLog(@"get user list error : %@",error.description);
|
|
||||||
}
|
|
||||||
doneCount ++;
|
|
||||||
if (doneCount == 4) {
|
|
||||||
[_HUD hide:YES];
|
|
||||||
doneCount = 0;
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)didReceiveMemoryWarning
|
- (void)didReceiveMemoryWarning
|
||||||
{
|
{
|
||||||
[super didReceiveMemoryWarning];
|
[super didReceiveMemoryWarning];
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
// THE SOFTWARE.
|
// THE SOFTWARE.
|
||||||
|
|
||||||
#import "OZLIssueFilterViewController.h"
|
#import "OZLIssueFilterViewController.h"
|
||||||
|
#import "OZLSingleton.h"
|
||||||
|
|
||||||
@interface OZLIssueFilterViewController () {
|
@interface OZLIssueFilterViewController () {
|
||||||
NSArray* _cellArray;
|
NSArray* _cellArray;
|
||||||
|
@ -62,9 +63,10 @@
|
||||||
@[@"Ascending", @"Descending"]];
|
@[@"Ascending", @"Descending"]];
|
||||||
_headerArray = @[@"Filter by", @"Sort by", @""];
|
_headerArray = @[@"Filter by", @"Sort by", @""];
|
||||||
|
|
||||||
_checkedCell[0] = 0;
|
OZLSingleton* singleton =[OZLSingleton sharedInstance];
|
||||||
_checkedCell[1] = 0;
|
_checkedCell[0] = [singleton issueListFilterType];
|
||||||
_checkedCell[2] = 0;
|
_checkedCell[1] = [singleton issueListSortType];
|
||||||
|
_checkedCell[2] = [singleton issueListSortAscending];
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void) onCancel:(id)sender
|
-(void) onCancel:(id)sender
|
||||||
|
@ -75,6 +77,13 @@
|
||||||
-(void) onSave:(id) sender
|
-(void) onSave:(id) sender
|
||||||
{
|
{
|
||||||
|
|
||||||
|
OZLSingleton* singleton =[OZLSingleton sharedInstance];
|
||||||
|
|
||||||
|
[singleton setIssueListFilterType:_checkedCell[0]];
|
||||||
|
[singleton setIssueListSortType:_checkedCell[1]];
|
||||||
|
[singleton setIssueListSortAscending:_checkedCell[2]];
|
||||||
|
|
||||||
|
[self.navigationController popViewControllerAnimated:YES];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)didReceiveMemoryWarning
|
- (void)didReceiveMemoryWarning
|
||||||
|
@ -123,6 +132,7 @@
|
||||||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
|
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
|
||||||
{
|
{
|
||||||
_checkedCell[indexPath.section] = indexPath.row;
|
_checkedCell[indexPath.section] = indexPath.row;
|
||||||
|
|
||||||
[self.tableView reloadData];
|
[self.tableView reloadData];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,4 +35,10 @@
|
||||||
- (IBAction)onNewIssue:(id)sender;
|
- (IBAction)onNewIssue:(id)sender;
|
||||||
- (IBAction)onSortSetting:(id)sender;
|
- (IBAction)onSortSetting:(id)sender;
|
||||||
|
|
||||||
|
|
||||||
|
@property (weak, nonatomic) NSArray* trackerList;
|
||||||
|
@property (weak, nonatomic) NSArray* priorityList;
|
||||||
|
@property (weak, nonatomic) NSArray* statusList;
|
||||||
|
@property (weak, nonatomic) NSArray* userList;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -43,6 +43,8 @@
|
||||||
|
|
||||||
float _sideviewOffset;
|
float _sideviewOffset;
|
||||||
MBProgressHUD * _HUD;
|
MBProgressHUD * _HUD;
|
||||||
|
|
||||||
|
NSMutableDictionary* _issueListOption;
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
@ -87,6 +89,38 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
[_HUD show:YES];
|
[_HUD show:YES];
|
||||||
|
|
||||||
|
if (_issueListOption == nil) {
|
||||||
|
[self loadIssueRelatedData];
|
||||||
|
}else {
|
||||||
|
[self loadProjectDetail];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)loadProjectDetail
|
||||||
|
{
|
||||||
|
// TODO: issue filter not working yet
|
||||||
|
|
||||||
|
// prepare parameters
|
||||||
|
OZLSingleton* singleton = [OZLSingleton sharedInstance];
|
||||||
|
// meaning of these values is defined in OZLIssueFilterViewController
|
||||||
|
int filterType = [singleton issueListFilterType];
|
||||||
|
int sortType = [singleton issueListSortType];
|
||||||
|
int scendingType = [singleton issueListSortAscending];
|
||||||
|
if (filterType == 0) {// assigned to me
|
||||||
|
// TODO:
|
||||||
|
}else if(filterType == 1) {// open
|
||||||
|
|
||||||
|
[_issueListOption setObject:@"open" forKey:@"status_id"];
|
||||||
|
|
||||||
|
}else if(filterType == 2) {// reported by me
|
||||||
|
// TODO:
|
||||||
|
}
|
||||||
|
|
||||||
|
NSArray* sortCol = @[@"id",@"tracker",@"status",@"priority",@"category",@"assigned_to_id",@"fixed_version",@"start_date",@"due_date",@"estimated_hours",@"done_ratio",@"updated_on"];
|
||||||
|
NSString* sortstring = [NSString stringWithFormat:@"%@%@",[sortCol objectAtIndex:sortType],(scendingType == 0 ? @"" : @":desc")];
|
||||||
|
[_issueListOption setObject:sortstring forKey:@"sort"];
|
||||||
|
|
||||||
[OZLNetwork getDetailForProject:_projectData.index withParams:nil andBlock:^(OZLModelProject *result, NSError *error) {
|
[OZLNetwork getDetailForProject:_projectData.index withParams:nil andBlock:^(OZLModelProject *result, NSError *error) {
|
||||||
if (error) {
|
if (error) {
|
||||||
NSLog(@"error getDetailForProject: %@",error.description);
|
NSLog(@"error getDetailForProject: %@",error.description);
|
||||||
|
@ -96,7 +130,7 @@
|
||||||
[self.navigationItem setTitle:_projectData.name];
|
[self.navigationItem setTitle:_projectData.name];
|
||||||
|
|
||||||
// load issues
|
// load issues
|
||||||
[OZLNetwork getIssueListForProject:_projectData.index withParams:nil andBlock:^(NSArray *result, NSError *error) {
|
[OZLNetwork getIssueListForProject:_projectData.index withParams:_issueListOption andBlock:^(NSArray *result, NSError *error) {
|
||||||
if (error) {
|
if (error) {
|
||||||
NSLog(@"error getIssueListForProject: %@",error.description);
|
NSLog(@"error getIssueListForProject: %@",error.description);
|
||||||
}else {
|
}else {
|
||||||
|
@ -110,6 +144,63 @@
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-(void)loadIssueRelatedData
|
||||||
|
{
|
||||||
|
_issueListOption = [[NSMutableDictionary alloc] init];
|
||||||
|
|
||||||
|
static int doneCount = 0;
|
||||||
|
[OZLNetwork getTrackerListWithParams:nil andBlock:^(NSArray *result, NSError *error) {
|
||||||
|
if (!error) {
|
||||||
|
_trackerList = result;
|
||||||
|
}else {
|
||||||
|
NSLog(@"get tracker list error : %@",error.description);
|
||||||
|
}
|
||||||
|
doneCount ++;
|
||||||
|
if (doneCount == 4) {
|
||||||
|
[self loadProjectDetail];
|
||||||
|
doneCount = 0;
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
|
||||||
|
[OZLNetwork getIssueStatusListWithParams:nil andBlock:^(NSArray *result, NSError *error) {
|
||||||
|
if (!error) {
|
||||||
|
_statusList = result;
|
||||||
|
}else {
|
||||||
|
NSLog(@"get issue status list error : %@",error.description);
|
||||||
|
}
|
||||||
|
doneCount ++;
|
||||||
|
if (doneCount == 4) {
|
||||||
|
[self loadProjectDetail];
|
||||||
|
doneCount = 0;
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
[OZLNetwork getPriorityListWithParams:nil andBlock:^(NSArray *result, NSError *error) {
|
||||||
|
if (!error) {
|
||||||
|
_priorityList = result;
|
||||||
|
}else {
|
||||||
|
NSLog(@"get priority list error : %@",error.description);
|
||||||
|
}
|
||||||
|
doneCount ++;
|
||||||
|
if (doneCount == 4) {
|
||||||
|
[self loadProjectDetail];
|
||||||
|
doneCount = 0;
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
[OZLNetwork getUserListWithParams:nil andBlock:^(NSArray *result, NSError *error) {
|
||||||
|
if (!error) {
|
||||||
|
_userList = result;
|
||||||
|
}else {
|
||||||
|
NSLog(@"get user list error : %@",error.description);
|
||||||
|
}
|
||||||
|
doneCount ++;
|
||||||
|
if (doneCount == 4) {
|
||||||
|
[self loadProjectDetail];
|
||||||
|
doneCount = 0;
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
- (void) viewDidAppear:(BOOL)animated {
|
- (void) viewDidAppear:(BOOL)animated {
|
||||||
[super viewDidAppear:animated];
|
[super viewDidAppear:animated];
|
||||||
// [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(preloadLeft) object:nil];
|
// [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(preloadLeft) object:nil];
|
||||||
|
@ -257,6 +348,10 @@
|
||||||
UIStoryboard *tableViewStoryboard = [UIStoryboard storyboardWithName:@"OZLIssueCreateViewController" bundle:nil];
|
UIStoryboard *tableViewStoryboard = [UIStoryboard storyboardWithName:@"OZLIssueCreateViewController" bundle:nil];
|
||||||
OZLIssueCreateViewController* creator = [tableViewStoryboard instantiateViewControllerWithIdentifier:@"OZLIssueCreateViewController"];
|
OZLIssueCreateViewController* creator = [tableViewStoryboard instantiateViewControllerWithIdentifier:@"OZLIssueCreateViewController"];
|
||||||
[creator setParentProject:_projectData];
|
[creator setParentProject:_projectData];
|
||||||
|
creator.userList = _userList;
|
||||||
|
creator.trackerList = _trackerList;
|
||||||
|
creator.priorityList = _priorityList;
|
||||||
|
creator.statusList = _statusList;
|
||||||
//[self.navigationController presentModalViewController:creator animated:YES];
|
//[self.navigationController presentModalViewController:creator animated:YES];
|
||||||
[self.navigationController pushViewController:creator animated:YES];
|
[self.navigationController pushViewController:creator animated:YES];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue