create issue functionality done, not with parameter exception checked yet
This commit is contained in:
parent
74442af421
commit
00775b4235
|
@ -36,7 +36,7 @@
|
||||||
2BCF881E1793F3C8006FC859 /* OZLModelIssue.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BCF881D1793F3C8006FC859 /* OZLModelIssue.m */; };
|
2BCF881E1793F3C8006FC859 /* OZLModelIssue.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BCF881D1793F3C8006FC859 /* OZLModelIssue.m */; };
|
||||||
2BCF88211793F478006FC859 /* OZLModelTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BCF88201793F478006FC859 /* OZLModelTracker.m */; };
|
2BCF88211793F478006FC859 /* OZLModelTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BCF88201793F478006FC859 /* OZLModelTracker.m */; };
|
||||||
2BCF88271793F4AA006FC859 /* OZLModelIssueStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BCF88261793F4AA006FC859 /* OZLModelIssueStatus.m */; };
|
2BCF88271793F4AA006FC859 /* OZLModelIssueStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BCF88261793F4AA006FC859 /* OZLModelIssueStatus.m */; };
|
||||||
2BCF882A1793F4C9006FC859 /* OZLModelPriority.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BCF88291793F4C9006FC859 /* OZLModelPriority.m */; };
|
2BCF882A1793F4C9006FC859 /* OZLModelIssuePriority.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BCF88291793F4C9006FC859 /* OZLModelIssuePriority.m */; };
|
||||||
2BCF88301793F5CE006FC859 /* OZLModelUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BCF882F1793F5CE006FC859 /* OZLModelUser.m */; };
|
2BCF88301793F5CE006FC859 /* OZLModelUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BCF882F1793F5CE006FC859 /* OZLModelUser.m */; };
|
||||||
D5DB805A1792F2BF0081662A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D5DB80591792F2BF0081662A /* UIKit.framework */; };
|
D5DB805A1792F2BF0081662A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D5DB80591792F2BF0081662A /* UIKit.framework */; };
|
||||||
D5DB805C1792F2BF0081662A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D5DB805B1792F2BF0081662A /* Foundation.framework */; };
|
D5DB805C1792F2BF0081662A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D5DB805B1792F2BF0081662A /* Foundation.framework */; };
|
||||||
|
@ -115,8 +115,8 @@
|
||||||
2BCF88201793F478006FC859 /* OZLModelTracker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OZLModelTracker.m; path = Models/OZLModelTracker.m; sourceTree = "<group>"; };
|
2BCF88201793F478006FC859 /* OZLModelTracker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OZLModelTracker.m; path = Models/OZLModelTracker.m; sourceTree = "<group>"; };
|
||||||
2BCF88251793F4AA006FC859 /* OZLModelIssueStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OZLModelIssueStatus.h; path = Models/OZLModelIssueStatus.h; sourceTree = "<group>"; };
|
2BCF88251793F4AA006FC859 /* OZLModelIssueStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OZLModelIssueStatus.h; path = Models/OZLModelIssueStatus.h; sourceTree = "<group>"; };
|
||||||
2BCF88261793F4AA006FC859 /* OZLModelIssueStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OZLModelIssueStatus.m; path = Models/OZLModelIssueStatus.m; sourceTree = "<group>"; };
|
2BCF88261793F4AA006FC859 /* OZLModelIssueStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OZLModelIssueStatus.m; path = Models/OZLModelIssueStatus.m; sourceTree = "<group>"; };
|
||||||
2BCF88281793F4C9006FC859 /* OZLModelPriority.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OZLModelPriority.h; path = Models/OZLModelPriority.h; sourceTree = "<group>"; };
|
2BCF88281793F4C9006FC859 /* OZLModelIssuePriority.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OZLModelIssuePriority.h; path = Models/OZLModelIssuePriority.h; sourceTree = "<group>"; };
|
||||||
2BCF88291793F4C9006FC859 /* OZLModelPriority.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OZLModelPriority.m; path = Models/OZLModelPriority.m; sourceTree = "<group>"; };
|
2BCF88291793F4C9006FC859 /* OZLModelIssuePriority.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OZLModelIssuePriority.m; path = Models/OZLModelIssuePriority.m; sourceTree = "<group>"; };
|
||||||
2BCF882E1793F5CE006FC859 /* OZLModelUser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OZLModelUser.h; path = Models/OZLModelUser.h; sourceTree = "<group>"; };
|
2BCF882E1793F5CE006FC859 /* OZLModelUser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OZLModelUser.h; path = Models/OZLModelUser.h; sourceTree = "<group>"; };
|
||||||
2BCF882F1793F5CE006FC859 /* OZLModelUser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OZLModelUser.m; path = Models/OZLModelUser.m; sourceTree = "<group>"; };
|
2BCF882F1793F5CE006FC859 /* OZLModelUser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OZLModelUser.m; path = Models/OZLModelUser.m; sourceTree = "<group>"; };
|
||||||
D5DB80561792F2BF0081662A /* RedmineMobile.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RedmineMobile.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
D5DB80561792F2BF0081662A /* RedmineMobile.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RedmineMobile.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
@ -446,8 +446,8 @@
|
||||||
2BCF881D1793F3C8006FC859 /* OZLModelIssue.m */,
|
2BCF881D1793F3C8006FC859 /* OZLModelIssue.m */,
|
||||||
2BCF881F1793F478006FC859 /* OZLModelTracker.h */,
|
2BCF881F1793F478006FC859 /* OZLModelTracker.h */,
|
||||||
2BCF88201793F478006FC859 /* OZLModelTracker.m */,
|
2BCF88201793F478006FC859 /* OZLModelTracker.m */,
|
||||||
2BCF88281793F4C9006FC859 /* OZLModelPriority.h */,
|
2BCF88281793F4C9006FC859 /* OZLModelIssuePriority.h */,
|
||||||
2BCF88291793F4C9006FC859 /* OZLModelPriority.m */,
|
2BCF88291793F4C9006FC859 /* OZLModelIssuePriority.m */,
|
||||||
2BCF882E1793F5CE006FC859 /* OZLModelUser.h */,
|
2BCF882E1793F5CE006FC859 /* OZLModelUser.h */,
|
||||||
2BCF882F1793F5CE006FC859 /* OZLModelUser.m */,
|
2BCF882F1793F5CE006FC859 /* OZLModelUser.m */,
|
||||||
2B9968A91794F71B0086F115 /* OZLModelIssueCategory.h */,
|
2B9968A91794F71B0086F115 /* OZLModelIssueCategory.h */,
|
||||||
|
@ -566,7 +566,7 @@
|
||||||
2BCF881E1793F3C8006FC859 /* OZLModelIssue.m in Sources */,
|
2BCF881E1793F3C8006FC859 /* OZLModelIssue.m in Sources */,
|
||||||
2BCF88211793F478006FC859 /* OZLModelTracker.m in Sources */,
|
2BCF88211793F478006FC859 /* OZLModelTracker.m in Sources */,
|
||||||
2BCF88271793F4AA006FC859 /* OZLModelIssueStatus.m in Sources */,
|
2BCF88271793F4AA006FC859 /* OZLModelIssueStatus.m in Sources */,
|
||||||
2BCF882A1793F4C9006FC859 /* OZLModelPriority.m in Sources */,
|
2BCF882A1793F4C9006FC859 /* OZLModelIssuePriority.m in Sources */,
|
||||||
2BCF88301793F5CE006FC859 /* OZLModelUser.m in Sources */,
|
2BCF88301793F5CE006FC859 /* OZLModelUser.m in Sources */,
|
||||||
2B9968AB1794F71B0086F115 /* OZLModelIssueCategory.m in Sources */,
|
2B9968AB1794F71B0086F115 /* OZLModelIssueCategory.m in Sources */,
|
||||||
2B9968AF1794FC0A0086F115 /* OZLProjectCreateViewController.m in Sources */,
|
2B9968AF1794FC0A0086F115 /* OZLProjectCreateViewController.m in Sources */,
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
#import "OZLModelTracker.h"
|
#import "OZLModelTracker.h"
|
||||||
#import "OZLModelIssueStatus.h"
|
#import "OZLModelIssueStatus.h"
|
||||||
#import "OZLModelUser.h"
|
#import "OZLModelUser.h"
|
||||||
#import "OZLModelPriority.h"
|
#import "OZLModelIssuePriority.h"
|
||||||
#import "OZLModelIssueCategory.h"
|
#import "OZLModelIssueCategory.h"
|
||||||
|
|
||||||
@interface OZLModelIssue : NSObject
|
@interface OZLModelIssue : NSObject
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
@property(nonatomic,strong) OZLModelTracker* tracker;
|
@property(nonatomic,strong) OZLModelTracker* tracker;
|
||||||
@property(nonatomic,strong) OZLModelUser* author;
|
@property(nonatomic,strong) OZLModelUser* author;
|
||||||
@property(nonatomic,strong) OZLModelUser* assignedTo;
|
@property(nonatomic,strong) OZLModelUser* assignedTo;
|
||||||
@property(nonatomic,strong) OZLModelPriority* priority;
|
@property(nonatomic,strong) OZLModelIssuePriority* priority;
|
||||||
@property(nonatomic,strong) OZLModelIssueStatus* status;
|
@property(nonatomic,strong) OZLModelIssueStatus* status;
|
||||||
@property(nonatomic,strong) OZLModelIssueCategory* category;
|
@property(nonatomic,strong) OZLModelIssueCategory* category;
|
||||||
@property(nonatomic,strong) NSString* subject;
|
@property(nonatomic,strong) NSString* subject;
|
||||||
|
@ -32,6 +32,7 @@
|
||||||
@property(nonatomic,strong) NSString* updatedOn;
|
@property(nonatomic,strong) NSString* updatedOn;
|
||||||
@property(nonatomic) float doneRatio;
|
@property(nonatomic) float doneRatio;
|
||||||
@property(nonatomic) float spentHours;
|
@property(nonatomic) float spentHours;
|
||||||
|
@property(nonatomic) float estimatedHours;
|
||||||
@property(nonatomic,strong) NSString* notes;// used as paramter to update a issue
|
@property(nonatomic,strong) NSString* notes;// used as paramter to update a issue
|
||||||
|
|
||||||
-(id)initWithDictionary:(NSDictionary*)dic;
|
-(id)initWithDictionary:(NSDictionary*)dic;
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
}
|
}
|
||||||
id priority = [dic objectForKey:@"priority"];
|
id priority = [dic objectForKey:@"priority"];
|
||||||
if (priority != nil) {
|
if (priority != nil) {
|
||||||
_priority = [[OZLModelPriority alloc] initWithDictionary:priority];
|
_priority = [[OZLModelIssuePriority alloc] initWithDictionary:priority];
|
||||||
}
|
}
|
||||||
id status = [dic objectForKey:@"status"];
|
id status = [dic objectForKey:@"status"];
|
||||||
if (status) {
|
if (status) {
|
||||||
|
@ -61,6 +61,13 @@
|
||||||
}else {
|
}else {
|
||||||
_spentHours = 0.0f;
|
_spentHours = 0.0f;
|
||||||
}
|
}
|
||||||
|
id estimatedHours = [dic objectForKey:@"estimated_hours"];
|
||||||
|
if (spentHours ) {
|
||||||
|
_estimatedHours = [estimatedHours floatValue];
|
||||||
|
}else {
|
||||||
|
_estimatedHours = 0.0f;
|
||||||
|
}
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
-(NSMutableDictionary*) toParametersDic
|
-(NSMutableDictionary*) toParametersDic
|
||||||
|
@ -93,6 +100,12 @@
|
||||||
if (_parentIssueId > 0) {
|
if (_parentIssueId > 0) {
|
||||||
[issueData setObject:[NSNumber numberWithInt:_parentIssueId] forKey:@"parent_issue_id"];
|
[issueData setObject:[NSNumber numberWithInt:_parentIssueId] forKey:@"parent_issue_id"];
|
||||||
}
|
}
|
||||||
|
if (_spentHours > 0) {
|
||||||
|
[issueData setObject:[NSNumber numberWithFloat:_spentHours] forKey:@"spent_hours"];
|
||||||
|
}
|
||||||
|
if (_estimatedHours > 0) {
|
||||||
|
[issueData setObject:[NSNumber numberWithFloat:_estimatedHours] forKey:@"estimated_hours"];
|
||||||
|
}
|
||||||
|
|
||||||
return [[NSMutableDictionary alloc] initWithObjectsAndKeys:issueData,@"issue",nil];
|
return [[NSMutableDictionary alloc] initWithObjectsAndKeys:issueData,@"issue",nil];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
//
|
//
|
||||||
// OZLModelPriority.h
|
// OZLModelIssuePriority.h
|
||||||
// RedmineMobile
|
// RedmineMobile
|
||||||
//
|
//
|
||||||
// Created by lizhijie on 7/15/13.
|
// Created by lizhijie on 7/15/13.
|
||||||
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
@interface OZLModelPriority : NSObject
|
@interface OZLModelIssuePriority : NSObject
|
||||||
|
|
||||||
@property(nonatomic) int index;
|
@property(nonatomic) int index;
|
||||||
@property(nonatomic, strong) NSString* name;
|
@property(nonatomic, strong) NSString* name;
|
|
@ -1,14 +1,14 @@
|
||||||
//
|
//
|
||||||
// OZLModelPriority.m
|
// OZLModelIssuePriority.m
|
||||||
// RedmineMobile
|
// RedmineMobile
|
||||||
//
|
//
|
||||||
// Created by lizhijie on 7/15/13.
|
// Created by lizhijie on 7/15/13.
|
||||||
// Copyright (c) 2013 Lee Zhijie. All rights reserved.
|
// Copyright (c) 2013 Lee Zhijie. All rights reserved.
|
||||||
//
|
//
|
||||||
|
|
||||||
#import "OZLModelPriority.h"
|
#import "OZLModelIssuePriority.h"
|
||||||
|
|
||||||
@implementation OZLModelPriority
|
@implementation OZLModelIssuePriority
|
||||||
|
|
||||||
-(id)initWithDictionary:(NSDictionary*)dic
|
-(id)initWithDictionary:(NSDictionary*)dic
|
||||||
{
|
{
|
|
@ -11,6 +11,13 @@
|
||||||
@interface OZLModelUser : NSObject
|
@interface OZLModelUser : NSObject
|
||||||
|
|
||||||
@property(nonatomic) int index;
|
@property(nonatomic) int index;
|
||||||
|
@property(nonatomic, strong) NSString* login;
|
||||||
|
@property(nonatomic, strong) NSString* firstname;
|
||||||
|
@property(nonatomic, strong) NSString* lastname;
|
||||||
|
@property(nonatomic, strong) NSString* mail;
|
||||||
|
@property(nonatomic, strong) NSString* createdOn;
|
||||||
|
@property(nonatomic, strong) NSString* lastLoginIn;
|
||||||
|
|
||||||
@property(nonatomic, strong) NSString* name;
|
@property(nonatomic, strong) NSString* name;
|
||||||
|
|
||||||
-(id)initWithDictionary:(NSDictionary*)dic;
|
-(id)initWithDictionary:(NSDictionary*)dic;
|
||||||
|
|
|
@ -18,9 +18,16 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
_index = [[dic objectForKey:@"id"] intValue];
|
_index = [[dic objectForKey:@"id"] intValue];
|
||||||
_name = [dic objectForKey:@"name"];
|
_login = [dic objectForKey:@"login"];
|
||||||
|
_firstname = [dic objectForKey:@"firstname"];
|
||||||
|
_lastname = [dic objectForKey:@"lastname"];
|
||||||
|
_mail = [dic objectForKey:@"mail"];
|
||||||
|
_createdOn = [dic objectForKey:@"created_on"];
|
||||||
|
_lastLoginIn = [dic objectForKey:@"last_login_on"];
|
||||||
|
|
||||||
|
_name = _login;
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
#import "OZLModelProject.h"
|
#import "OZLModelProject.h"
|
||||||
#import "OZLModelIssue.h"
|
#import "OZLModelIssue.h"
|
||||||
#import "OZLModelPriority.h"
|
#import "OZLModelIssuePriority.h"
|
||||||
#import "OZLModelIssueStatus.h"
|
#import "OZLModelIssueStatus.h"
|
||||||
#import "OZLModelTracker.h"
|
#import "OZLModelTracker.h"
|
||||||
#import "OZLModelUser.h"
|
#import "OZLModelUser.h"
|
||||||
|
@ -51,5 +51,14 @@
|
||||||
+(void)updateIssue:(OZLModelIssue*)issueData withParams:(NSDictionary*)params andBlock:(void (^)(BOOL success, NSError *error))block;
|
+(void)updateIssue:(OZLModelIssue*)issueData withParams:(NSDictionary*)params andBlock:(void (^)(BOOL success, NSError *error))block;
|
||||||
+(void)deleteIssue:(int)issueid withParams:(NSDictionary*)params andBlock:(void (^)(BOOL success, NSError *error))block;
|
+(void)deleteIssue:(int)issueid withParams:(NSDictionary*)params andBlock:(void (^)(BOOL success, NSError *error))block;
|
||||||
|
|
||||||
|
// priority
|
||||||
|
+(void)getPriorityListWithParams:(NSDictionary*)params andBlock:(void (^)(NSArray *result, NSError *error))block;
|
||||||
|
// user
|
||||||
|
+(void)getUserListWithParams:(NSDictionary*)params andBlock:(void (^)(NSArray *result, NSError *error))block;
|
||||||
|
// issue status
|
||||||
|
+(void)getIssueStatusListWithParams:(NSDictionary*)params andBlock:(void (^)(NSArray *result, NSError *error))block;
|
||||||
|
// tracker
|
||||||
|
+(void)getTrackerListWithParams:(NSDictionary*)params andBlock:(void (^)(NSArray *result, NSError *error))block;
|
||||||
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -267,8 +267,7 @@
|
||||||
|
|
||||||
if (block) {
|
if (block) {
|
||||||
NSLog(@"the repsonse:%@",responseObject);
|
NSLog(@"the repsonse:%@",responseObject);
|
||||||
int repondNumber = [responseObject intValue];
|
block(YES,nil);
|
||||||
block(repondNumber == 201,nil);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
|
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
|
||||||
|
@ -336,4 +335,141 @@
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#pragma mark -
|
||||||
|
#pragma mark priority api
|
||||||
|
// priority
|
||||||
|
+(void)getPriorityListWithParams:(NSDictionary*)params andBlock:(void (^)(NSArray *result, NSError *error))block
|
||||||
|
{
|
||||||
|
NSString* path = @"/enumerations/issue_priorities.json";
|
||||||
|
NSMutableDictionary* paramsDic = [[NSMutableDictionary alloc] initWithDictionary:params];
|
||||||
|
NSString* accessKey = [[OZLSingleton sharedInstance] redmineUserKey];
|
||||||
|
if (accessKey.length > 0) {
|
||||||
|
[paramsDic setObject:accessKey forKey:@"key"];
|
||||||
|
}
|
||||||
|
|
||||||
|
[[OZLNetworkBase sharedClient] setAuthorizationHeader];
|
||||||
|
[[OZLNetworkBase sharedClient] getPath:path parameters:paramsDic success:^(AFHTTPRequestOperation *operation, id responseObject) {
|
||||||
|
|
||||||
|
if (block) {
|
||||||
|
NSLog(@"the repsonse:%@",responseObject);
|
||||||
|
NSMutableArray* priorities = [[NSMutableArray alloc] init];
|
||||||
|
|
||||||
|
NSArray* dic = [responseObject objectForKey:@"issue_priorities"];
|
||||||
|
for (NSDictionary* p in dic) {
|
||||||
|
[priorities addObject:[[OZLModelIssuePriority alloc] initWithDictionary:p]];
|
||||||
|
}
|
||||||
|
block(priorities,nil);
|
||||||
|
}
|
||||||
|
|
||||||
|
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
|
||||||
|
|
||||||
|
if (block) {
|
||||||
|
block([NSArray array], error);
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark -
|
||||||
|
#pragma mark user api
|
||||||
|
// user
|
||||||
|
+(void)getUserListWithParams:(NSDictionary*)params andBlock:(void (^)(NSArray *result, NSError *error))block
|
||||||
|
{
|
||||||
|
NSString* path = @"/users.json";
|
||||||
|
NSMutableDictionary* paramsDic = [[NSMutableDictionary alloc] initWithDictionary:params];
|
||||||
|
NSString* accessKey = [[OZLSingleton sharedInstance] redmineUserKey];
|
||||||
|
if (accessKey.length > 0) {
|
||||||
|
[paramsDic setObject:accessKey forKey:@"key"];
|
||||||
|
}
|
||||||
|
|
||||||
|
[[OZLNetworkBase sharedClient] setAuthorizationHeader];
|
||||||
|
[[OZLNetworkBase sharedClient] getPath:path parameters:paramsDic success:^(AFHTTPRequestOperation *operation, id responseObject) {
|
||||||
|
|
||||||
|
if (block) {
|
||||||
|
NSLog(@"the repsonse:%@",responseObject);
|
||||||
|
NSMutableArray* priorities = [[NSMutableArray alloc] init];
|
||||||
|
|
||||||
|
NSArray* dic = [responseObject objectForKey:@"users"];
|
||||||
|
for (NSDictionary* p in dic) {
|
||||||
|
[priorities addObject:[[OZLModelUser alloc] initWithDictionary:p]];
|
||||||
|
}
|
||||||
|
block(priorities,nil);
|
||||||
|
}
|
||||||
|
|
||||||
|
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
|
||||||
|
|
||||||
|
if (block) {
|
||||||
|
block([NSArray array], error);
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#pragma mark -
|
||||||
|
#pragma mark issue status api
|
||||||
|
// issue status
|
||||||
|
+(void)getIssueStatusListWithParams:(NSDictionary*)params andBlock:(void (^)(NSArray *result, NSError *error))block
|
||||||
|
{
|
||||||
|
NSString* path = @"/issue_statuses.json";
|
||||||
|
NSMutableDictionary* paramsDic = [[NSMutableDictionary alloc] initWithDictionary:params];
|
||||||
|
NSString* accessKey = [[OZLSingleton sharedInstance] redmineUserKey];
|
||||||
|
if (accessKey.length > 0) {
|
||||||
|
[paramsDic setObject:accessKey forKey:@"key"];
|
||||||
|
}
|
||||||
|
|
||||||
|
[[OZLNetworkBase sharedClient] setAuthorizationHeader];
|
||||||
|
[[OZLNetworkBase sharedClient] getPath:path parameters:paramsDic success:^(AFHTTPRequestOperation *operation, id responseObject) {
|
||||||
|
|
||||||
|
if (block) {
|
||||||
|
NSLog(@"the repsonse:%@",responseObject);
|
||||||
|
NSMutableArray* priorities = [[NSMutableArray alloc] init];
|
||||||
|
|
||||||
|
NSArray* dic = [responseObject objectForKey:@"issue_statuses"];
|
||||||
|
for (NSDictionary* p in dic) {
|
||||||
|
[priorities addObject:[[OZLModelIssueStatus alloc] initWithDictionary:p]];
|
||||||
|
}
|
||||||
|
block(priorities,nil);
|
||||||
|
}
|
||||||
|
|
||||||
|
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
|
||||||
|
|
||||||
|
if (block) {
|
||||||
|
block([NSArray array], error);
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark -
|
||||||
|
#pragma mark tracker api
|
||||||
|
// tracker
|
||||||
|
+(void)getTrackerListWithParams:(NSDictionary*)params andBlock:(void (^)(NSArray *result, NSError *error))block
|
||||||
|
{
|
||||||
|
NSString* path = @"/trackers.json";
|
||||||
|
NSMutableDictionary* paramsDic = [[NSMutableDictionary alloc] initWithDictionary:params];
|
||||||
|
NSString* accessKey = [[OZLSingleton sharedInstance] redmineUserKey];
|
||||||
|
if (accessKey.length > 0) {
|
||||||
|
[paramsDic setObject:accessKey forKey:@"key"];
|
||||||
|
}
|
||||||
|
|
||||||
|
[[OZLNetworkBase sharedClient] setAuthorizationHeader];
|
||||||
|
[[OZLNetworkBase sharedClient] getPath:path parameters:paramsDic success:^(AFHTTPRequestOperation *operation, id responseObject) {
|
||||||
|
|
||||||
|
if (block) {
|
||||||
|
NSLog(@"the repsonse:%@",responseObject);
|
||||||
|
NSMutableArray* priorities = [[NSMutableArray alloc] init];
|
||||||
|
|
||||||
|
NSArray* dic = [responseObject objectForKey:@"trackers"];
|
||||||
|
for (NSDictionary* p in dic) {
|
||||||
|
[priorities addObject:[[OZLModelTracker alloc] initWithDictionary:p]];
|
||||||
|
}
|
||||||
|
block(priorities,nil);
|
||||||
|
}
|
||||||
|
|
||||||
|
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
|
||||||
|
|
||||||
|
if (block) {
|
||||||
|
block([NSArray array], error);
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
}
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -7,9 +7,27 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
#import <UIKit/UIKit.h>
|
#import <UIKit/UIKit.h>
|
||||||
|
#import "OZLModelIssue.h"
|
||||||
|
#import "OZLModelProject.h"
|
||||||
|
|
||||||
@interface OZLIssueCreateViewController : UITableViewController
|
@interface OZLIssueCreateViewController : UITableViewController<UITextFieldDelegate,UIPickerViewDataSource,UIPickerViewDelegate>
|
||||||
- (IBAction)onCancel:(id)sender;
|
- (IBAction)onCancel:(id)sender;
|
||||||
- (IBAction)onSave:(id)sender;
|
- (IBAction)onSave:(id)sender;
|
||||||
|
|
||||||
|
// neccessory
|
||||||
|
@property (weak, nonatomic) IBOutlet UITextField *subjectTextField;
|
||||||
|
@property (weak, nonatomic) IBOutlet UILabel *trackerLabel;
|
||||||
|
@property (weak, nonatomic) IBOutlet UILabel *statusLabel;
|
||||||
|
@property (weak, nonatomic) IBOutlet UILabel *priorityLabel;
|
||||||
|
// optional
|
||||||
|
@property (weak, nonatomic) IBOutlet UILabel *assigneeLabel;
|
||||||
|
@property (weak, nonatomic) IBOutlet UITextField *startDateLabel;
|
||||||
|
@property (weak, nonatomic) IBOutlet UITextField *dueDateLabel;
|
||||||
|
@property (weak, nonatomic) IBOutlet UITextField *estimatedHoursLabel;
|
||||||
|
@property (weak, nonatomic) IBOutlet UITextField *doneProgressLabel;
|
||||||
|
@property (weak, nonatomic) IBOutlet UITextView *descriptionTextview;
|
||||||
|
|
||||||
|
@property(nonatomic,strong) OZLModelProject* parentProject;
|
||||||
|
@property(nonatomic,strong) OZLModelIssue* parentIssue;
|
||||||
|
@property(nonatomic,strong) NSArray* issueList;
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -7,8 +7,31 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
#import "OZLIssueCreateViewController.h"
|
#import "OZLIssueCreateViewController.h"
|
||||||
|
#import "OZLNetwork.h"
|
||||||
|
#import "MBProgressHUD.h"
|
||||||
|
#import "OZLModelIssuePriority.h"
|
||||||
|
#import "OZLModelTracker.h"
|
||||||
|
#import "OZLModelUser.h"
|
||||||
|
#import "OZLModelIssueStatus.h"
|
||||||
|
#import "MLTableAlert.h"
|
||||||
|
|
||||||
@interface OZLIssueCreateViewController ()
|
@interface OZLIssueCreateViewController () {
|
||||||
|
NSArray* _trackerList;
|
||||||
|
NSArray* _priorityList;
|
||||||
|
NSArray* _statusList;
|
||||||
|
NSArray* _userList;
|
||||||
|
|
||||||
|
OZLModelTracker* _currentTracker;
|
||||||
|
OZLModelIssuePriority* _currentPriority;
|
||||||
|
OZLModelIssueStatus* _currentStatus;
|
||||||
|
OZLModelUser* _currentUser;
|
||||||
|
|
||||||
|
NSDate* _currentStartDate;
|
||||||
|
NSDate* _currentDueDate;
|
||||||
|
int _currentEstimatedTime;//minutes
|
||||||
|
|
||||||
|
MBProgressHUD* _HUD;
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@ -32,6 +55,103 @@
|
||||||
UIBarButtonItem* saveBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(onSave:)];
|
UIBarButtonItem* saveBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(onSave:)];
|
||||||
[self.navigationItem setRightBarButtonItem:saveBtn];
|
[self.navigationItem setRightBarButtonItem:saveBtn];
|
||||||
|
|
||||||
|
[self setupInputviews];
|
||||||
|
|
||||||
|
// hud
|
||||||
|
_HUD = [[MBProgressHUD alloc] initWithView:self.view];
|
||||||
|
[self.view addSubview:_HUD];
|
||||||
|
_HUD.labelText = @"Loading...";
|
||||||
|
|
||||||
|
[self loadIssueRelatedData];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void) setupInputviews
|
||||||
|
{
|
||||||
|
// setup datapicker inputview
|
||||||
|
UIDatePicker* datePicker = [[UIDatePicker alloc]init];
|
||||||
|
[datePicker setDatePickerMode:UIDatePickerModeDate];
|
||||||
|
[datePicker addTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged];
|
||||||
|
// accessoryview
|
||||||
|
UIToolbar* inputAccessoryView = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 40)];
|
||||||
|
UIBarButtonItem* accessoryDoneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(accessoryDoneClicked:)];
|
||||||
|
UIBarButtonItem* flexleft = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
|
||||||
|
inputAccessoryView.items = [NSArray arrayWithObjects:flexleft, accessoryDoneButton, nil];;
|
||||||
|
|
||||||
|
_startDateLabel.inputView = datePicker;
|
||||||
|
_startDateLabel.inputAccessoryView = inputAccessoryView;
|
||||||
|
_startDateLabel.delegate = self;
|
||||||
|
_dueDateLabel.inputView = datePicker;
|
||||||
|
_dueDateLabel.inputAccessoryView = inputAccessoryView;
|
||||||
|
_dueDateLabel.delegate = self;
|
||||||
|
|
||||||
|
// setup time picker inputview
|
||||||
|
UIDatePicker* timerPicker = [[UIDatePicker alloc]init];
|
||||||
|
[timerPicker setDatePickerMode:UIDatePickerModeCountDownTimer];
|
||||||
|
[timerPicker addTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged];
|
||||||
|
timerPicker.minuteInterval = 5;
|
||||||
|
_estimatedHoursLabel.inputView = timerPicker;
|
||||||
|
_estimatedHoursLabel.inputAccessoryView = inputAccessoryView;
|
||||||
|
_estimatedHoursLabel.delegate = self;
|
||||||
|
|
||||||
|
// setup percentage pickerview
|
||||||
|
UIPickerView* percentageView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 0, 320, 162)];
|
||||||
|
percentageView.dataSource = self;
|
||||||
|
percentageView.delegate = self;
|
||||||
|
[percentageView selectRow:0 inComponent:0 animated:NO];
|
||||||
|
_doneProgressLabel.inputView = percentageView;
|
||||||
|
_doneProgressLabel.inputAccessoryView = inputAccessoryView;
|
||||||
|
_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];
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
|
||||||
|
[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];
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
[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];
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
[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];
|
||||||
|
}
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)didReceiveMemoryWarning
|
- (void)didReceiveMemoryWarning
|
||||||
|
@ -45,5 +165,237 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
- (IBAction)onSave:(id)sender {
|
- (IBAction)onSave:(id)sender {
|
||||||
|
|
||||||
|
if (_subjectTextField.text.length == 0) {
|
||||||
|
_HUD.mode = MBProgressHUDModeText;
|
||||||
|
_HUD.labelText = @"subject can not be empty.";
|
||||||
|
[_HUD show:YES];
|
||||||
|
[_HUD hide:YES afterDelay:1];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (_currentUser == nil) {
|
||||||
|
_HUD.mode = MBProgressHUDModeText;
|
||||||
|
_HUD.labelText = @"tracker can not be empty.";
|
||||||
|
[_HUD show:YES];
|
||||||
|
[_HUD hide:YES afterDelay:1];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (_currentStatus == nil) {
|
||||||
|
_HUD.mode = MBProgressHUDModeText;
|
||||||
|
_HUD.labelText = @"status can not be empty.";
|
||||||
|
[_HUD show:YES];
|
||||||
|
[_HUD hide:YES afterDelay:1];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (_currentPriority == nil) {
|
||||||
|
_HUD.mode = MBProgressHUDModeText;
|
||||||
|
_HUD.labelText = @"priority can not be empty.";
|
||||||
|
[_HUD show:YES];
|
||||||
|
[_HUD hide:YES afterDelay:1];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
OZLModelIssue* issueData = [[OZLModelIssue alloc] init];
|
||||||
|
issueData.subject = _subjectTextField.text;
|
||||||
|
issueData.tracker = _currentTracker;
|
||||||
|
issueData.status = _currentStatus;
|
||||||
|
issueData.priority = _currentPriority;
|
||||||
|
issueData.assignedTo = _currentUser;
|
||||||
|
issueData.projectId = _parentProject.index;
|
||||||
|
|
||||||
|
if (_parentIssue) {
|
||||||
|
issueData.parentIssueId = _parentIssue.index;
|
||||||
|
}
|
||||||
|
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 {
|
||||||
|
|
||||||
|
}
|
||||||
|
[_HUD hide:YES];
|
||||||
|
}];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)viewDidUnload {
|
||||||
|
[self setSubjectTextField:nil];
|
||||||
|
[self setTrackerLabel:nil];
|
||||||
|
[self setStatusLabel:nil];
|
||||||
|
[self setPriorityLabel:nil];
|
||||||
|
[self setAssigneeLabel:nil];
|
||||||
|
[self setStartDateLabel:nil];
|
||||||
|
[self setDueDateLabel:nil];
|
||||||
|
[self setEstimatedHoursLabel:nil];
|
||||||
|
[self setDoneProgressLabel:nil];
|
||||||
|
[self setDescriptionTextview:nil];
|
||||||
|
[super viewDidUnload];
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
|
||||||
|
{
|
||||||
|
NSArray* alertTitles = @[@"Select Tracker", @"Select Status", @"Select Priority", @"Select Assignee"];
|
||||||
|
NSArray* dataArray = @[_trackerList, _statusList, _priorityList, _userList];
|
||||||
|
if (indexPath.section == 1) {
|
||||||
|
|
||||||
|
MLTableAlert* tableAlert = [MLTableAlert tableAlertWithTitle:[alertTitles objectAtIndex:indexPath.row] cancelButtonTitle:@"Cancel" numberOfRows:^NSInteger (NSInteger section)
|
||||||
|
{
|
||||||
|
return [[dataArray objectAtIndex:indexPath.row] count] + 1;
|
||||||
|
}
|
||||||
|
andCells:^UITableViewCell* (MLTableAlert *anAlert, NSIndexPath *alertIndexPath)
|
||||||
|
{
|
||||||
|
static NSString *CellIdentifier = @"CellIdentifier";
|
||||||
|
UITableViewCell *cell = [anAlert.table dequeueReusableCellWithIdentifier:CellIdentifier];
|
||||||
|
if (cell == nil)
|
||||||
|
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
|
||||||
|
|
||||||
|
if (alertIndexPath.row == 0) {
|
||||||
|
cell.textLabel.text = @"None";
|
||||||
|
}else {
|
||||||
|
cell.textLabel.text = [[[dataArray objectAtIndex:indexPath.row ]objectAtIndex:alertIndexPath.row - 1] name];
|
||||||
|
}
|
||||||
|
return cell;
|
||||||
|
}];
|
||||||
|
|
||||||
|
// Setting custom alert height
|
||||||
|
tableAlert.height = 350;
|
||||||
|
|
||||||
|
// configure actions to perform
|
||||||
|
[tableAlert configureSelectionBlock:^(NSIndexPath *selectedIndex){
|
||||||
|
UITableViewCell* parentCell = [self.tableView cellForRowAtIndexPath:indexPath];
|
||||||
|
if (selectedIndex.row == 0) {
|
||||||
|
switch (indexPath.row) {
|
||||||
|
case 0:{//tracker
|
||||||
|
_currentTracker = nil;
|
||||||
|
}break;
|
||||||
|
case 1:{//status
|
||||||
|
_currentStatus = nil;
|
||||||
|
}break;
|
||||||
|
case 2:{//priority
|
||||||
|
_currentPriority = nil;
|
||||||
|
}break;
|
||||||
|
case 3:{//assignee
|
||||||
|
_currentUser = nil;
|
||||||
|
}break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
parentCell.detailTextLabel.text = @"None";
|
||||||
|
}else {
|
||||||
|
id data = [[dataArray objectAtIndex:indexPath.row ] objectAtIndex:selectedIndex.row - 1];
|
||||||
|
switch (indexPath.row) {
|
||||||
|
case 0:{//tracker
|
||||||
|
_currentUser = data;
|
||||||
|
}break;
|
||||||
|
case 1:{//status
|
||||||
|
_currentStatus = data;
|
||||||
|
}break;
|
||||||
|
case 2:{//priority
|
||||||
|
_currentPriority = data;
|
||||||
|
}break;
|
||||||
|
case 3:{//assignee
|
||||||
|
_currentUser = data;
|
||||||
|
}break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
parentCell.detailTextLabel.text = [data name];
|
||||||
|
}
|
||||||
|
[parentCell.detailTextLabel sizeToFit];
|
||||||
|
} andCompletionBlock:^{
|
||||||
|
|
||||||
|
}];
|
||||||
|
|
||||||
|
[tableAlert show];
|
||||||
|
|
||||||
|
}else if( indexPath.section == 2){
|
||||||
|
switch (indexPath.row) {
|
||||||
|
case 0:{//start date
|
||||||
|
|
||||||
|
}break;
|
||||||
|
case 1:{//due date
|
||||||
|
|
||||||
|
}break;
|
||||||
|
case 2:{//estimated hours
|
||||||
|
|
||||||
|
}break;
|
||||||
|
case 3:{//done
|
||||||
|
|
||||||
|
}break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark -
|
||||||
|
#pragma mark delegate of textfield inputview
|
||||||
|
|
||||||
|
|
||||||
|
#pragma mark data picker value changed
|
||||||
|
-(void)datePickerValueChanged:(id)sender
|
||||||
|
{
|
||||||
|
UIDatePicker* datepicker = (UIDatePicker*)sender;
|
||||||
|
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
|
||||||
|
|
||||||
|
if (_estimatedHoursLabel.isFirstResponder) {
|
||||||
|
|
||||||
|
NSString* timeStr = [NSString stringWithFormat:@"%d Mins",(int)datepicker.countDownDuration/60];
|
||||||
|
_estimatedHoursLabel.text = timeStr;
|
||||||
|
_currentEstimatedTime = (int)datepicker.countDownDuration/60;
|
||||||
|
}else {
|
||||||
|
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
|
||||||
|
|
||||||
|
NSString* dateStr = [dateFormatter stringFromDate:datepicker.date];
|
||||||
|
if (_startDateLabel.isFirstResponder) {
|
||||||
|
_startDateLabel.text = dateStr;
|
||||||
|
_currentStartDate = datepicker.date;
|
||||||
|
}else if(_dueDateLabel.isFirstResponder) {
|
||||||
|
_dueDateLabel.text = dateStr;
|
||||||
|
_currentDueDate = datepicker.date;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
-(void)accessoryDoneClicked:(id)sender
|
||||||
|
{
|
||||||
|
[self.view endEditing:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark -
|
||||||
|
#pragma mark picker view delegate and datasource
|
||||||
|
- (void)pickerView:(UIPickerView *)pV didSelectRow:(NSInteger)row inComponent:(NSInteger)component
|
||||||
|
{
|
||||||
|
_doneProgressLabel.text = [NSString stringWithFormat:@"%d %%",row * 10];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
|
||||||
|
{
|
||||||
|
return 11;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
|
||||||
|
{
|
||||||
|
return [NSString stringWithFormat:@"%d %%",row * 10];
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -13,10 +13,10 @@
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
|
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
|
||||||
<sections>
|
<sections>
|
||||||
<tableViewSection headerTitle="Adding issue to: " id="kwZ-sn-ebZ">
|
<tableViewSection headerTitle="Adding issue" id="kwZ-sn-ebZ">
|
||||||
<cells>
|
<cells>
|
||||||
<tableViewCell contentMode="scaleToFill" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="q4d-tB-odA">
|
<tableViewCell contentMode="scaleToFill" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="q4d-tB-odA">
|
||||||
<rect key="frame" x="0.0" y="46" width="320" height="45"/>
|
<rect key="frame" x="0.0" y="46" width="320" height="46"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||||
<rect key="frame" x="10" y="1" width="300" height="43"/>
|
<rect key="frame" x="10" y="1" width="300" height="43"/>
|
||||||
|
@ -32,30 +32,12 @@
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
</view>
|
</view>
|
||||||
</tableViewCell>
|
</tableViewCell>
|
||||||
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" textLabel="ZYp-VR-6xb" style="IBUITableViewCellStyleDefault" id="8YQ-52-5vA">
|
|
||||||
<rect key="frame" x="0.0" y="91" width="320" height="45"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
|
||||||
<rect key="frame" x="10" y="0.0" width="280" height="43"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<subviews>
|
|
||||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Description" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="ZYp-VR-6xb">
|
|
||||||
<rect key="frame" x="10" y="0.0" width="260" height="43"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
|
|
||||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
|
||||||
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
|
||||||
</label>
|
|
||||||
</subviews>
|
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
|
||||||
</view>
|
|
||||||
</tableViewCell>
|
|
||||||
</cells>
|
</cells>
|
||||||
</tableViewSection>
|
</tableViewSection>
|
||||||
<tableViewSection id="gUc-Fn-oHM">
|
<tableViewSection id="gUc-Fn-oHM">
|
||||||
<cells>
|
<cells>
|
||||||
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" textLabel="6AM-Ns-Deh" detailTextLabel="BJD-cQ-dkJ" style="IBUITableViewCellStyleValue2" id="jPi-X0-tEE">
|
<tableViewCell contentMode="scaleToFill" selectionStyle="gray" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" textLabel="6AM-Ns-Deh" detailTextLabel="BJD-cQ-dkJ" style="IBUITableViewCellStyleValue2" id="jPi-X0-tEE">
|
||||||
<rect key="frame" x="0.0" y="156" width="320" height="45"/>
|
<rect key="frame" x="0.0" y="112" width="320" height="45"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||||
<rect key="frame" x="10" y="1" width="300" height="43"/>
|
<rect key="frame" x="10" y="1" width="300" height="43"/>
|
||||||
|
@ -68,7 +50,7 @@
|
||||||
<color key="textColor" red="0.32156862745098042" green="0.40000000000000002" blue="0.56862745098039214" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="textColor" red="0.32156862745098042" green="0.40000000000000002" blue="0.56862745098039214" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
</label>
|
</label>
|
||||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Detail" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="BJD-cQ-dkJ">
|
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="BJD-cQ-dkJ">
|
||||||
<rect key="frame" x="83" y="12" width="41" height="19"/>
|
<rect key="frame" x="83" y="12" width="41" height="19"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||||
|
@ -79,8 +61,8 @@
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
</view>
|
</view>
|
||||||
</tableViewCell>
|
</tableViewCell>
|
||||||
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" textLabel="O3w-IB-6j2" detailTextLabel="MGP-PP-nKO" style="IBUITableViewCellStyleValue2" id="uGZ-sd-Yhn">
|
<tableViewCell contentMode="scaleToFill" selectionStyle="gray" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" textLabel="O3w-IB-6j2" detailTextLabel="MGP-PP-nKO" style="IBUITableViewCellStyleValue2" id="uGZ-sd-Yhn">
|
||||||
<rect key="frame" x="0.0" y="201" width="320" height="44"/>
|
<rect key="frame" x="0.0" y="157" width="320" height="44"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||||
<rect key="frame" x="10" y="0.0" width="300" height="43"/>
|
<rect key="frame" x="10" y="0.0" width="300" height="43"/>
|
||||||
|
@ -93,7 +75,7 @@
|
||||||
<color key="textColor" red="0.32156862745098042" green="0.40000000000000002" blue="0.56862745098039214" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="textColor" red="0.32156862745098042" green="0.40000000000000002" blue="0.56862745098039214" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
</label>
|
</label>
|
||||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Detail" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="MGP-PP-nKO">
|
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="MGP-PP-nKO">
|
||||||
<rect key="frame" x="83" y="12" width="41" height="19"/>
|
<rect key="frame" x="83" y="12" width="41" height="19"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||||
|
@ -104,8 +86,8 @@
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
</view>
|
</view>
|
||||||
</tableViewCell>
|
</tableViewCell>
|
||||||
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" textLabel="k0t-ln-UOh" detailTextLabel="YdG-5O-vED" style="IBUITableViewCellStyleValue2" id="5bP-lu-Gng">
|
<tableViewCell contentMode="scaleToFill" selectionStyle="gray" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" textLabel="k0t-ln-UOh" detailTextLabel="YdG-5O-vED" style="IBUITableViewCellStyleValue2" id="5bP-lu-Gng">
|
||||||
<rect key="frame" x="0.0" y="245" width="320" height="44"/>
|
<rect key="frame" x="0.0" y="201" width="320" height="44"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||||
<rect key="frame" x="10" y="0.0" width="300" height="43"/>
|
<rect key="frame" x="10" y="0.0" width="300" height="43"/>
|
||||||
|
@ -118,7 +100,7 @@
|
||||||
<color key="textColor" red="0.32156862745098042" green="0.40000000000000002" blue="0.56862745098039214" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="textColor" red="0.32156862745098042" green="0.40000000000000002" blue="0.56862745098039214" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
</label>
|
</label>
|
||||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Detail" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="YdG-5O-vED">
|
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="YdG-5O-vED">
|
||||||
<rect key="frame" x="83" y="12" width="41" height="19"/>
|
<rect key="frame" x="83" y="12" width="41" height="19"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||||
|
@ -129,8 +111,8 @@
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
</view>
|
</view>
|
||||||
</tableViewCell>
|
</tableViewCell>
|
||||||
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" textLabel="4SM-iY-gcb" detailTextLabel="0uC-dr-1gH" style="IBUITableViewCellStyleValue2" id="vfV-cv-ix2">
|
<tableViewCell contentMode="scaleToFill" selectionStyle="gray" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" textLabel="4SM-iY-gcb" detailTextLabel="0uC-dr-1gH" style="IBUITableViewCellStyleValue2" id="vfV-cv-ix2">
|
||||||
<rect key="frame" x="0.0" y="289" width="320" height="45"/>
|
<rect key="frame" x="0.0" y="245" width="320" height="45"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||||
<rect key="frame" x="10" y="0.0" width="300" height="43"/>
|
<rect key="frame" x="10" y="0.0" width="300" height="43"/>
|
||||||
|
@ -143,7 +125,7 @@
|
||||||
<color key="textColor" red="0.32156862745098042" green="0.40000000000000002" blue="0.56862745098039214" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="textColor" red="0.32156862745098042" green="0.40000000000000002" blue="0.56862745098039214" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
</label>
|
</label>
|
||||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Detail" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="0uC-dr-1gH">
|
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="0uC-dr-1gH">
|
||||||
<rect key="frame" x="83" y="12" width="41" height="19"/>
|
<rect key="frame" x="83" y="12" width="41" height="19"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||||
|
@ -158,102 +140,124 @@
|
||||||
</tableViewSection>
|
</tableViewSection>
|
||||||
<tableViewSection id="ecN-hJ-yaW">
|
<tableViewSection id="ecN-hJ-yaW">
|
||||||
<cells>
|
<cells>
|
||||||
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" textLabel="2Ga-Qb-twl" detailTextLabel="nMg-gE-9iM" style="IBUITableViewCellStyleValue2" id="dqE-by-NWY">
|
<tableViewCell contentMode="scaleToFill" selectionStyle="gray" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="dqE-by-NWY">
|
||||||
<rect key="frame" x="0.0" y="354" width="320" height="45"/>
|
<rect key="frame" x="0.0" y="310" width="320" height="45"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||||
<rect key="frame" x="10" y="1" width="300" height="43"/>
|
<rect key="frame" x="10" y="1" width="300" height="43"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Start Date" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="2Ga-Qb-twl">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Start Date" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="2A3-cy-Aku">
|
||||||
<rect key="frame" x="10" y="15" width="67" height="15"/>
|
<rect key="frame" x="11" y="11" width="86" height="21"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
|
<fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
|
||||||
<color key="textColor" red="0.32156862745098042" green="0.40000000000000002" blue="0.56862745098039214" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="textColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
</label>
|
|
||||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Detail" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="nMg-gE-9iM">
|
|
||||||
<rect key="frame" x="83" y="12" width="41" height="19"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
|
||||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
|
||||||
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
|
||||||
</label>
|
</label>
|
||||||
|
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" minimumFontSize="17" clearButtonMode="whileEditing" id="cLY-jP-ur3">
|
||||||
|
<rect key="frame" x="93" y="7" width="187" height="30"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<color key="textColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
<fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
|
||||||
|
<textInputTraits key="textInputTraits"/>
|
||||||
|
</textField>
|
||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
</view>
|
</view>
|
||||||
</tableViewCell>
|
</tableViewCell>
|
||||||
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" textLabel="bqG-jz-Ng3" detailTextLabel="rbs-VG-2Q3" style="IBUITableViewCellStyleValue2" id="cmF-ef-A0n">
|
<tableViewCell contentMode="scaleToFill" selectionStyle="gray" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="cmF-ef-A0n">
|
||||||
|
<rect key="frame" x="0.0" y="355" width="320" height="44"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||||
|
<rect key="frame" x="10" y="0.0" width="300" height="43"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<subviews>
|
||||||
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Due Date" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="COv-Hj-Sr2">
|
||||||
|
<rect key="frame" x="11" y="11" width="86" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
|
||||||
|
<color key="textColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</label>
|
||||||
|
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" minimumFontSize="17" id="fOP-AJ-wM7">
|
||||||
|
<rect key="frame" x="93" y="7" width="187" height="30"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<color key="textColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
<fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
|
||||||
|
<textInputTraits key="textInputTraits"/>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
|
</view>
|
||||||
|
</tableViewCell>
|
||||||
|
<tableViewCell contentMode="scaleToFill" selectionStyle="gray" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="b0f-a5-IDN">
|
||||||
<rect key="frame" x="0.0" y="399" width="320" height="44"/>
|
<rect key="frame" x="0.0" y="399" width="320" height="44"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||||
<rect key="frame" x="10" y="0.0" width="300" height="43"/>
|
<rect key="frame" x="10" y="0.0" width="300" height="43"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Due Date" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="bqG-jz-Ng3">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Est. Hours" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="ewF-DE-Fu6">
|
||||||
<rect key="frame" x="10" y="15" width="67" height="15"/>
|
<rect key="frame" x="11" y="11" width="86" height="21"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
|
<fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
|
||||||
<color key="textColor" red="0.32156862745098042" green="0.40000000000000002" blue="0.56862745098039214" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="textColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
</label>
|
|
||||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Detail" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="rbs-VG-2Q3">
|
|
||||||
<rect key="frame" x="83" y="12" width="41" height="19"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
|
||||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
|
||||||
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
|
||||||
</label>
|
</label>
|
||||||
|
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" minimumFontSize="17" id="3r5-6c-djU">
|
||||||
|
<rect key="frame" x="93" y="7" width="187" height="30"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<color key="textColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
<fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
|
||||||
|
<textInputTraits key="textInputTraits"/>
|
||||||
|
</textField>
|
||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
</view>
|
</view>
|
||||||
</tableViewCell>
|
</tableViewCell>
|
||||||
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" textLabel="L8v-xu-0EA" detailTextLabel="oSK-O9-cn7" style="IBUITableViewCellStyleValue2" id="b0f-a5-IDN">
|
<tableViewCell contentMode="scaleToFill" selectionStyle="gray" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="5Bp-75-yl6">
|
||||||
<rect key="frame" x="0.0" y="443" width="320" height="44"/>
|
<rect key="frame" x="0.0" y="443" width="320" height="45"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||||
<rect key="frame" x="10" y="0.0" width="300" height="43"/>
|
<rect key="frame" x="10" y="0.0" width="300" height="43"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Est. Hours" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="L8v-xu-0EA">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Done" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="CfL-Cj-Lv8">
|
||||||
<rect key="frame" x="10" y="15" width="67" height="15"/>
|
<rect key="frame" x="11" y="11" width="86" height="21"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
|
<fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
|
||||||
<color key="textColor" red="0.32156862745098042" green="0.40000000000000002" blue="0.56862745098039214" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="textColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
</label>
|
|
||||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Detail" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="oSK-O9-cn7">
|
|
||||||
<rect key="frame" x="83" y="12" width="41" height="19"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
|
||||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
|
||||||
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
|
||||||
</label>
|
</label>
|
||||||
|
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" minimumFontSize="17" id="z27-XN-YTR">
|
||||||
|
<rect key="frame" x="93" y="7" width="187" height="30"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<color key="textColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
<fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
|
||||||
|
<textInputTraits key="textInputTraits"/>
|
||||||
|
</textField>
|
||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
</view>
|
</view>
|
||||||
</tableViewCell>
|
</tableViewCell>
|
||||||
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" textLabel="g2m-Ig-coG" detailTextLabel="H2R-Bp-ngl" style="IBUITableViewCellStyleValue2" id="5Bp-75-yl6">
|
</cells>
|
||||||
<rect key="frame" x="0.0" y="487" width="320" height="45"/>
|
</tableViewSection>
|
||||||
|
<tableViewSection headerTitle="Description" id="U96-yf-3Mu">
|
||||||
|
<cells>
|
||||||
|
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" rowHeight="100" id="u4f-I6-24w">
|
||||||
|
<rect key="frame" x="0.0" y="534" width="320" height="102"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||||
<rect key="frame" x="10" y="0.0" width="300" height="43"/>
|
<rect key="frame" x="10" y="1" width="300" height="99"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Done" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="g2m-Ig-coG">
|
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="wtw-cb-hjP">
|
||||||
<rect key="frame" x="10" y="15" width="67" height="15"/>
|
<rect key="frame" x="9" y="7" width="282" height="85"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
<color key="textColor" red="0.32156862745098042" green="0.40000000000000002" blue="0.56862745098039214" alpha="1" colorSpace="calibratedRGB"/>
|
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||||
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
|
||||||
</label>
|
</textView>
|
||||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Detail" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="H2R-Bp-ngl">
|
|
||||||
<rect key="frame" x="83" y="12" width="41" height="19"/>
|
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
|
||||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
|
||||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
|
||||||
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
|
||||||
</label>
|
|
||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
</view>
|
</view>
|
||||||
|
@ -267,21 +271,24 @@
|
||||||
</connections>
|
</connections>
|
||||||
</tableView>
|
</tableView>
|
||||||
<simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
|
<simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
|
||||||
|
<connections>
|
||||||
|
<outlet property="assigneeLabel" destination="0uC-dr-1gH" id="v4b-h8-Isa"/>
|
||||||
|
<outlet property="descriptionTextview" destination="wtw-cb-hjP" id="C5n-fK-1a5"/>
|
||||||
|
<outlet property="doneProgressLabel" destination="z27-XN-YTR" id="xFt-R9-4RS"/>
|
||||||
|
<outlet property="dueDateLabel" destination="fOP-AJ-wM7" id="ebo-gW-H8n"/>
|
||||||
|
<outlet property="estimatedHoursLabel" destination="3r5-6c-djU" id="27J-Jd-MqV"/>
|
||||||
|
<outlet property="priorityLabel" destination="YdG-5O-vED" id="iza-iy-TSc"/>
|
||||||
|
<outlet property="startDateLabel" destination="cLY-jP-ur3" id="d5Z-IF-FsV"/>
|
||||||
|
<outlet property="statusLabel" destination="MGP-PP-nKO" id="ej3-Rp-Age"/>
|
||||||
|
<outlet property="subjectTextField" destination="mEf-sR-EAc" id="sD4-bF-Ql0"/>
|
||||||
|
<outlet property="trackerLabel" destination="BJD-cQ-dkJ" id="FNH-wc-NgC"/>
|
||||||
|
</connections>
|
||||||
</tableViewController>
|
</tableViewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="7Hg-N6-PNc" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="7Hg-N6-PNc" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="196" y="43"/>
|
<point key="canvasLocation" x="196" y="43"/>
|
||||||
</scene>
|
</scene>
|
||||||
</scenes>
|
</scenes>
|
||||||
<classes>
|
|
||||||
<class className="OZLIssueCreateViewController" superclassName="UITableViewController">
|
|
||||||
<source key="sourceIdentifier" type="project" relativePath="./Classes/OZLIssueCreateViewController.h"/>
|
|
||||||
<relationships>
|
|
||||||
<relationship kind="action" name="onCancel:"/>
|
|
||||||
<relationship kind="action" name="onSave:"/>
|
|
||||||
</relationships>
|
|
||||||
</class>
|
|
||||||
</classes>
|
|
||||||
<simulatedMetricsContainer key="defaultSimulatedMetrics">
|
<simulatedMetricsContainer key="defaultSimulatedMetrics">
|
||||||
<simulatedStatusBarMetrics key="statusBar"/>
|
<simulatedStatusBarMetrics key="statusBar"/>
|
||||||
<simulatedOrientationMetrics key="orientation"/>
|
<simulatedOrientationMetrics key="orientation"/>
|
||||||
|
|
|
@ -41,8 +41,8 @@
|
||||||
_progressbar.progress = _issueData.doneRatio/100;
|
_progressbar.progress = _issueData.doneRatio/100;
|
||||||
_status.text = _issueData.status.name ;
|
_status.text = _issueData.status.name ;
|
||||||
_priority.text = _issueData.priority.name;
|
_priority.text = _issueData.priority.name;
|
||||||
_author.text = _issueData.author.name;
|
_author.text = _issueData.author.login;
|
||||||
_assignedTo.text = _issueData.assignedTo.name;
|
_assignedTo.text = _issueData.assignedTo.login;
|
||||||
_startTime.text = _issueData.startDate;
|
_startTime.text = _issueData.startDate;
|
||||||
_dueTime.text = _issueData.dueDate;
|
_dueTime.text = _issueData.dueDate;
|
||||||
}
|
}
|
||||||
|
|
|
@ -112,7 +112,7 @@
|
||||||
// create the alert
|
// create the alert
|
||||||
MLTableAlert* tableAlert = [MLTableAlert tableAlertWithTitle:@"Parent Project" cancelButtonTitle:@"Cancel" numberOfRows:^NSInteger (NSInteger section)
|
MLTableAlert* tableAlert = [MLTableAlert tableAlertWithTitle:@"Parent Project" cancelButtonTitle:@"Cancel" numberOfRows:^NSInteger (NSInteger section)
|
||||||
{
|
{
|
||||||
return _projectList.count;
|
return _projectList.count + 1;
|
||||||
}
|
}
|
||||||
andCells:^UITableViewCell* (MLTableAlert *anAlert, NSIndexPath *indexPath)
|
andCells:^UITableViewCell* (MLTableAlert *anAlert, NSIndexPath *indexPath)
|
||||||
{
|
{
|
||||||
|
|
|
@ -251,7 +251,8 @@
|
||||||
- (IBAction)onNewIssue:(id)sender {
|
- (IBAction)onNewIssue:(id)sender {
|
||||||
//OZLIssueCreateViewController* creator = [[OZLIssueCreateViewController alloc] initWithNibName:@"OZLIssueCreateViewController" bundle:nil];
|
//OZLIssueCreateViewController* creator = [[OZLIssueCreateViewController alloc] initWithNibName:@"OZLIssueCreateViewController" bundle:nil];
|
||||||
UIStoryboard *tableViewStoryboard = [UIStoryboard storyboardWithName:@"OZLIssueCreateViewController" bundle:nil];
|
UIStoryboard *tableViewStoryboard = [UIStoryboard storyboardWithName:@"OZLIssueCreateViewController" bundle:nil];
|
||||||
OZLIssueDetailViewController* creator = [tableViewStoryboard instantiateViewControllerWithIdentifier:@"OZLIssueCreateViewController"];
|
OZLIssueCreateViewController* creator = [tableViewStoryboard instantiateViewControllerWithIdentifier:@"OZLIssueCreateViewController"];
|
||||||
|
[creator setParentProject:_projectData];
|
||||||
//[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