Эх сурвалжийг харах

Apex mobile

增加result controler
修改 tracking 显示方式。
Ray Zhang 8 жил өмнө
parent
commit
050e681dfb
28 өөрчлөгдсөн 2188 нэмэгдсэн , 400 устгасан
  1. 73 7
      Apex Mobile/Apex Mobile.xcodeproj/project.pbxproj
  2. BIN
      Apex Mobile/Apex Mobile.xcodeproj/project.xcworkspace/xcuserdata/Ray.xcuserdatad/UserInterfaceState.xcuserstate
  3. 261 5
      Apex Mobile/Apex Mobile.xcodeproj/xcuserdata/Ray.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  4. 13 0
      Apex Mobile/Apex Mobile/AMResultViewController.h
  5. 282 0
      Apex Mobile/Apex Mobile/AMResultViewController.m
  6. 31 33
      Apex Mobile/Apex Mobile/Base.lproj/Main_iPhone.storyboard
  7. 15 0
      Apex Mobile/Apex Mobile/DetailCellTracking.h
  8. 24 0
      Apex Mobile/Apex Mobile/DetailCellTracking.m
  9. 9 5
      Apex Mobile/Apex Mobile/DetailContent.m
  10. 36 0
      Apex Mobile/Apex Mobile/DetailPageViewController.m
  11. 1 1
      Apex Mobile/Apex Mobile/DetailTabBarController.m
  12. 37 0
      Apex Mobile/Apex Mobile/GridResultViewController.h
  13. 574 0
      Apex Mobile/Apex Mobile/GridResultViewController.m
  14. 1 1
      Apex Mobile/Apex Mobile/HistoryTabBarController.m
  15. 1 1
      Apex Mobile/Apex Mobile/HistoryViewController.h
  16. 1 1
      Apex Mobile/Apex Mobile/HistoryViewController.m
  17. 23 0
      Apex Mobile/Apex Mobile/Images.xcassets/mode_cargo_tracking.imageset/Contents.json
  18. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/mode_cargo_tracking.imageset/appicon-1.png
  19. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/mode_cargo_tracking.imageset/appicon-2.png
  20. BIN
      Apex Mobile/Apex Mobile/Images.xcassets/mode_cargo_tracking.imageset/appicon.png
  21. 240 96
      Apex Mobile/Apex Mobile/Main.storyboard
  22. 19 11
      Apex Mobile/Apex Mobile/RANetwork.m
  23. 2 2
      Apex Mobile/Apex Mobile/SearchViewController.m
  24. 1 0
      Apex Mobile/Apex Mobile/ShipingStatusCell.m
  25. 1 1
      Apex Mobile/Apex Mobile/const.h
  26. 250 0
      Apex Mobile/Apex Mobile/fake_search.json
  27. 53 0
      Apex Mobile/Apex Mobile/fake_tracking.json
  28. 240 236
      RedAnt Mobile/RedAnt Mobile/ResultViewController.m

+ 73 - 7
Apex Mobile/Apex Mobile.xcodeproj/project.pbxproj

@@ -85,6 +85,9 @@
 		716FF7951904FBC600ED6C3D /* NewsTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 716FF7941904FBC600ED6C3D /* NewsTableViewCell.m */; };
 		717D76EB18C7F8120070302D /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 717D76EA18C7F8120070302D /* Reachability.m */; };
 		717D772F18C84E3F0070302D /* PageData.m in Sources */ = {isa = PBXBuildFile; fileRef = 717D772E18C84E3F0070302D /* PageData.m */; };
+		71807B982021965B00E1F1DD /* fake_tracking.json in Resources */ = {isa = PBXBuildFile; fileRef = 71807B972021965B00E1F1DD /* fake_tracking.json */; };
+		71807B9C2021979A00E1F1DD /* DetailCellTracking.m in Sources */ = {isa = PBXBuildFile; fileRef = 71807B9B2021979A00E1F1DD /* DetailCellTracking.m */; };
+		71807B9E2021ACE500E1F1DD /* fake_search.json in Resources */ = {isa = PBXBuildFile; fileRef = 71807B9D2021ACE500E1F1DD /* fake_search.json */; };
 		718BE8B0190F9D970046EA6A /* MyAutocompleteView.m in Sources */ = {isa = PBXBuildFile; fileRef = 718BE8A7190F9D970046EA6A /* MyAutocompleteView.m */; };
 		718BE8B2190F9D970046EA6A /* MyAutocompleteItemsSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 718BE8AB190F9D970046EA6A /* MyAutocompleteItemsSource.m */; };
 		718BE8B3190F9D970046EA6A /* MyAutocompletionCellFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 718BE8AD190F9D970046EA6A /* MyAutocompletionCellFactory.m */; };
@@ -92,7 +95,7 @@
 		71951E6F18C6A9A5005024BD /* TouchLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 71951E6E18C6A9A5005024BD /* TouchLabel.m */; };
 		719A51A518C5A4AF0080C075 /* SimpleGrid.m in Sources */ = {isa = PBXBuildFile; fileRef = 719A51A418C5A4AF0080C075 /* SimpleGrid.m */; };
 		719A51A918C5A5D30080C075 /* SimpleGridDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 719A51A818C5A5D30080C075 /* SimpleGridDataSource.m */; };
-		719A51B418C5A8100080C075 /* ResultViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 719A51B318C5A8100080C075 /* ResultViewController.m */; };
+		719A51B418C5A8100080C075 /* GridResultViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 719A51B318C5A8100080C075 /* GridResultViewController.m */; };
 		719A51BA18C5AB7B0080C075 /* SimpleGridComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 719A51B918C5AB7B0080C075 /* SimpleGridComponent.m */; };
 		719BEC1718FFAB7B00DFE987 /* ToolsPanelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 719BEC1618FFAB7B00DFE987 /* ToolsPanelViewController.m */; };
 		719E7E3318C0368A003408FF /* ApexMobileDB.m in Sources */ = {isa = PBXBuildFile; fileRef = 719E7E3218C0368A003408FF /* ApexMobileDB.m */; };
@@ -124,6 +127,11 @@
 		71A565D918C20F5900CDAC07 /* SearchTableAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 71A565D818C20F5900CDAC07 /* SearchTableAdapter.m */; };
 		71A565DF18C212EA00CDAC07 /* Constant.m in Sources */ = {isa = PBXBuildFile; fileRef = 71A565DE18C212EA00CDAC07 /* Constant.m */; };
 		71AE427318C47AF900B8EC3D /* SearchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71AE427218C47AF900B8EC3D /* SearchViewController.m */; };
+		71B7998D2021AE7400F8685E /* MDHTMLLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 71B7998C2021AE7400F8685E /* MDHTMLLabel.m */; };
+		71B799952021B0DA00F8685E /* ResultViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71B799902021B0D900F8685E /* ResultViewController.m */; };
+		71B799972021B0DA00F8685E /* FullyShowViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71B799922021B0D900F8685E /* FullyShowViewController.m */; };
+		71B799982021B0DA00F8685E /* Result.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 71B799942021B0DA00F8685E /* Result.storyboard */; };
+		71B7999B2021B22D00F8685E /* AMResultViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71B7999A2021B22D00F8685E /* AMResultViewController.m */; };
 		71BA502E1908ED5700D0BD31 /* CellItemHistory.m in Sources */ = {isa = PBXBuildFile; fileRef = 71BA502D1908ED5700D0BD31 /* CellItemHistory.m */; };
 		71BA50311908ED9100D0BD31 /* HistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71BA50301908ED9100D0BD31 /* HistoryViewController.m */; };
 		71BA50341908EDCF00D0BD31 /* HistoryTabBarController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71BA50331908EDCF00D0BD31 /* HistoryTabBarController.m */; };
@@ -288,6 +296,10 @@
 		717D76EA18C7F8120070302D /* Reachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Reachability.m; sourceTree = "<group>"; };
 		717D772D18C84E3F0070302D /* PageData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageData.h; sourceTree = "<group>"; };
 		717D772E18C84E3F0070302D /* PageData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PageData.m; sourceTree = "<group>"; };
+		71807B972021965B00E1F1DD /* fake_tracking.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = fake_tracking.json; sourceTree = "<group>"; };
+		71807B9A2021979A00E1F1DD /* DetailCellTracking.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DetailCellTracking.h; sourceTree = "<group>"; };
+		71807B9B2021979A00E1F1DD /* DetailCellTracking.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DetailCellTracking.m; sourceTree = "<group>"; };
+		71807B9D2021ACE500E1F1DD /* fake_search.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = fake_search.json; sourceTree = "<group>"; };
 		718BE8A6190F9D970046EA6A /* MyAutocompleteView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyAutocompleteView.h; sourceTree = "<group>"; };
 		718BE8A7190F9D970046EA6A /* MyAutocompleteView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyAutocompleteView.m; sourceTree = "<group>"; };
 		718BE8AA190F9D970046EA6A /* MyAutocompleteItemsSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyAutocompleteItemsSource.h; sourceTree = "<group>"; };
@@ -302,8 +314,8 @@
 		719A51A418C5A4AF0080C075 /* SimpleGrid.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SimpleGrid.m; path = ../SimpleGrid.m; sourceTree = "<group>"; };
 		719A51A718C5A5D30080C075 /* SimpleGridDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleGridDataSource.h; sourceTree = "<group>"; };
 		719A51A818C5A5D30080C075 /* SimpleGridDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SimpleGridDataSource.m; sourceTree = "<group>"; };
-		719A51B218C5A8100080C075 /* ResultViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResultViewController.h; sourceTree = "<group>"; };
-		719A51B318C5A8100080C075 /* ResultViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ResultViewController.m; sourceTree = "<group>"; };
+		719A51B218C5A8100080C075 /* GridResultViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GridResultViewController.h; sourceTree = "<group>"; };
+		719A51B318C5A8100080C075 /* GridResultViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GridResultViewController.m; sourceTree = "<group>"; };
 		719A51B818C5AB7B0080C075 /* SimpleGridComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleGridComponent.h; sourceTree = "<group>"; };
 		719A51B918C5AB7B0080C075 /* SimpleGridComponent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SimpleGridComponent.m; sourceTree = "<group>"; };
 		719BEC1518FFAB7B00DFE987 /* ToolsPanelViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ToolsPanelViewController.h; sourceTree = "<group>"; };
@@ -356,6 +368,15 @@
 		71A565DE18C212EA00CDAC07 /* Constant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Constant.m; sourceTree = "<group>"; };
 		71AE427118C47AF900B8EC3D /* SearchViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchViewController.h; sourceTree = "<group>"; };
 		71AE427218C47AF900B8EC3D /* SearchViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchViewController.m; sourceTree = "<group>"; };
+		71B7998B2021AE7400F8685E /* MDHTMLLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MDHTMLLabel.h; path = "../../RedAnt ERP Mobile/common/customUI/MDHTMLLabel.h"; sourceTree = "<group>"; };
+		71B7998C2021AE7400F8685E /* MDHTMLLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MDHTMLLabel.m; path = "../../RedAnt ERP Mobile/common/customUI/MDHTMLLabel.m"; sourceTree = "<group>"; };
+		71B7998F2021B0D900F8685E /* FullyShowViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FullyShowViewController.h; path = "../../RedAnt Mobile/RedAnt Mobile/FullyShowViewController.h"; sourceTree = "<group>"; };
+		71B799902021B0D900F8685E /* ResultViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ResultViewController.m; path = "../../RedAnt Mobile/RedAnt Mobile/ResultViewController.m"; sourceTree = "<group>"; };
+		71B799922021B0D900F8685E /* FullyShowViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FullyShowViewController.m; path = "../../RedAnt Mobile/RedAnt Mobile/FullyShowViewController.m"; sourceTree = "<group>"; };
+		71B799932021B0DA00F8685E /* ResultViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ResultViewController.h; path = "../../RedAnt Mobile/RedAnt Mobile/ResultViewController.h"; sourceTree = "<group>"; };
+		71B799942021B0DA00F8685E /* Result.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Result.storyboard; path = "../../RedAnt Mobile/RedAnt Mobile/Result.storyboard"; sourceTree = "<group>"; };
+		71B799992021B22D00F8685E /* AMResultViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AMResultViewController.h; sourceTree = "<group>"; };
+		71B7999A2021B22D00F8685E /* AMResultViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AMResultViewController.m; sourceTree = "<group>"; };
 		71BA502C1908ED5700D0BD31 /* CellItemHistory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CellItemHistory.h; sourceTree = "<group>"; };
 		71BA502D1908ED5700D0BD31 /* CellItemHistory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CellItemHistory.m; sourceTree = "<group>"; };
 		71BA502F1908ED9100D0BD31 /* HistoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryViewController.h; sourceTree = "<group>"; };
@@ -514,15 +535,18 @@
 		715643B820198A6000B04267 /* new */ = {
 			isa = PBXGroup;
 			children = (
+				7162546A201C3AF1009E3A41 /* readme.txt */,
 				7157099A2021591F00EFE5C5 /* config.h */,
 				715709932021576A00EFE5C5 /* const.h */,
 				7157098F2021573600EFE5C5 /* utils */,
+				71B7998E2021AE7F00F8685E /* customUI */,
 				7157098B202156EC00EFE5C5 /* network */,
+				71B799822021AE3200F8685E /* result */,
+				71807B992021976000E1F1DD /* detail */,
 				42604124201C53ED002374A8 /* ShipStatusCell */,
 				425CF088201EAF8800750E32 /* History */,
 				42604123201C53DB002374A8 /* Home */,
 				7162546E201C51DC009E3A41 /* fake data */,
-				7162546A201C3AF1009E3A41 /* readme.txt */,
 				715643D8201C057E00B04267 /* ModeList */,
 				715643B920198A9900B04267 /* RootViewController.h */,
 				715643BA20198A9900B04267 /* RootViewController.m */,
@@ -620,10 +644,21 @@
 			isa = PBXGroup;
 			children = (
 				7162546F201C5205009E3A41 /* fake_container_list.json */,
+				71807B972021965B00E1F1DD /* fake_tracking.json */,
+				71807B9D2021ACE500E1F1DD /* fake_search.json */,
 			);
 			name = "fake data";
 			sourceTree = "<group>";
 		};
+		71807B992021976000E1F1DD /* detail */ = {
+			isa = PBXGroup;
+			children = (
+				71807B9A2021979A00E1F1DD /* DetailCellTracking.h */,
+				71807B9B2021979A00E1F1DD /* DetailCellTracking.m */,
+			);
+			name = detail;
+			sourceTree = "<group>";
+		};
 		719A51A618C5A4E40080C075 /* CustomUI */ = {
 			isa = PBXGroup;
 			children = (
@@ -707,8 +742,8 @@
 		719A51AF18C5A75A0080C075 /* Result */ = {
 			isa = PBXGroup;
 			children = (
-				719A51B218C5A8100080C075 /* ResultViewController.h */,
-				719A51B318C5A8100080C075 /* ResultViewController.m */,
+				719A51B218C5A8100080C075 /* GridResultViewController.h */,
+				719A51B318C5A8100080C075 /* GridResultViewController.m */,
 				717D772D18C84E3F0070302D /* PageData.h */,
 				717D772E18C84E3F0070302D /* PageData.m */,
 			);
@@ -932,6 +967,29 @@
 			name = resource;
 			sourceTree = "<group>";
 		};
+		71B799822021AE3200F8685E /* result */ = {
+			isa = PBXGroup;
+			children = (
+				71B7998F2021B0D900F8685E /* FullyShowViewController.h */,
+				71B799922021B0D900F8685E /* FullyShowViewController.m */,
+				71B799942021B0DA00F8685E /* Result.storyboard */,
+				71B799932021B0DA00F8685E /* ResultViewController.h */,
+				71B799902021B0D900F8685E /* ResultViewController.m */,
+				71B799992021B22D00F8685E /* AMResultViewController.h */,
+				71B7999A2021B22D00F8685E /* AMResultViewController.m */,
+			);
+			name = result;
+			sourceTree = "<group>";
+		};
+		71B7998E2021AE7F00F8685E /* customUI */ = {
+			isa = PBXGroup;
+			children = (
+				71B7998B2021AE7400F8685E /* MDHTMLLabel.h */,
+				71B7998C2021AE7400F8685E /* MDHTMLLabel.m */,
+			);
+			name = customUI;
+			sourceTree = "<group>";
+		};
 		71C72714191CFF11001127E0 /* message */ = {
 			isa = PBXGroup;
 			children = (
@@ -1031,18 +1089,21 @@
 			files = (
 				71625470201C5205009E3A41 /* fake_container_list.json in Resources */,
 				7162546B201C3AF1009E3A41 /* readme.txt in Resources */,
+				71B799982021B0DA00F8685E /* Result.storyboard in Resources */,
 				42604129201C57A7002374A8 /* ShipSearch.storyboard in Resources */,
 				715643DC201C117300B04267 /* search.json in Resources */,
 				719EF8FF18BB839F00EFFF5F /* Images.xcassets in Resources */,
 				719EF8F418BB839F00EFFF5F /* Main_iPhone.storyboard in Resources */,
 				715709BC20215E0000EFE5C5 /* LICENSE in Resources */,
 				715643DE201C1AE600B04267 /* my.json in Resources */,
+				71807B982021965B00E1F1DD /* fake_tracking.json in Resources */,
 				715643D7201AD99300B04267 /* StaticModeTableViewCell.xib in Resources */,
 				71DA74A818BDDFB5003B46A6 /* about.htm in Resources */,
 				714C39BF19234065004F045B /* Localizable.strings in Resources */,
 				425660DB202015E1002DB0CA /* Launch.storyboard in Resources */,
 				715643DA201C079F00B04267 /* tools.json in Resources */,
 				715643D5201AD2AB00B04267 /* StaticModelistViewController.xib in Resources */,
+				71807B9E2021ACE500E1F1DD /* fake_search.json in Resources */,
 				715643B720198A1400B04267 /* Main.storyboard in Resources */,
 				7162546D201C412E009E3A41 /* ShippingStatusCell.xib in Resources */,
 				719EF8EB18BB839F00EFFF5F /* InfoPlist.strings in Resources */,
@@ -1080,11 +1141,13 @@
 				71DA6047190A00F600683003 /* FavoritesData.m in Sources */,
 				425CF099201EB2B500750E32 /* UIScrollView+JLRefresh.m in Sources */,
 				71A01D7C18C9AE97003307A9 /* DetailCellList.m in Sources */,
+				71807B9C2021979A00E1F1DD /* DetailCellTracking.m in Sources */,
 				71DA74A618BDDD31003B46A6 /* AboutViewController.m in Sources */,
 				715643C42019B58400B04267 /* OrderHistoryViewController.m in Sources */,
 				712CBA0318CF38DB00C61394 /* RTLabel.m in Sources */,
 				71CEE3D718CC559B00052C63 /* ApexMobileNavigationController.m in Sources */,
 				715709922021574D00EFE5C5 /* RAConvertor.m in Sources */,
+				71B799952021B0DA00F8685E /* ResultViewController.m in Sources */,
 				71BA50371908F21500D0BD31 /* HistoryData.m in Sources */,
 				71A541D418D151C70017E2BD /* WebViewController.m in Sources */,
 				71330C2018BCC4DA0048956C /* FunctionSelectViewController.m in Sources */,
@@ -1125,7 +1188,8 @@
 				711BA6C4191E0553002EDE6F /* MessageItem.m in Sources */,
 				71BA50311908ED9100D0BD31 /* HistoryViewController.m in Sources */,
 				71A2D76218DC3895001C380A /* LineView.m in Sources */,
-				719A51B418C5A8100080C075 /* ResultViewController.m in Sources */,
+				719A51B418C5A8100080C075 /* GridResultViewController.m in Sources */,
+				71B7999B2021B22D00F8685E /* AMResultViewController.m in Sources */,
 				425CF097201EB2B500750E32 /* JLRefreshHeader.m in Sources */,
 				711DC6B218C30A4800FB1749 /* TableCellEdit.m in Sources */,
 				71A01D8218C9BA67003307A9 /* DetailContent.m in Sources */,
@@ -1135,6 +1199,8 @@
 				71570996202157A600EFE5C5 /* RAUtils.m in Sources */,
 				715643BB20198A9900B04267 /* RootViewController.m in Sources */,
 				426E8ABA202163EC0073BA5D /* JLPresentationController.m in Sources */,
+				71B7998D2021AE7400F8685E /* MDHTMLLabel.m in Sources */,
+				71B799972021B0DA00F8685E /* FullyShowViewController.m in Sources */,
 				719EF8ED18BB839F00EFFF5F /* main.m in Sources */,
 				717D76EB18C7F8120070302D /* Reachability.m in Sources */,
 				715709A720215B5100EFE5C5 /* ioapi.c in Sources */,

BIN
Apex Mobile/Apex Mobile.xcodeproj/project.xcworkspace/xcuserdata/Ray.xcuserdatad/UserInterfaceState.xcuserstate


+ 261 - 5
Apex Mobile/Apex Mobile.xcodeproj/xcuserdata/Ray.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -26,11 +26,11 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "Apex Mobile/DetailPageViewController.m"
-            timestampString = "539058709.182592"
+            timestampString = "539080041.4601851"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "544"
-            endingLineNumber = "544"
+            startingLineNumber = "580"
+            endingLineNumber = "580"
             landmarkName = "-tableView:cellForRowAtIndexPath:"
             landmarkType = "7">
          </BreakpointContent>
@@ -42,7 +42,7 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "Apex Mobile/ApexMobileFirstViewController.m"
-            timestampString = "539058709.182654"
+            timestampString = "539071518.478664"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "32"
@@ -58,7 +58,7 @@
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "Apex Mobile/ApexMobileFirstViewController.m"
-            timestampString = "539058709.183037"
+            timestampString = "539071518.478762"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "56"
@@ -147,5 +147,261 @@
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Apex Mobile/RANetwork.m"
+            timestampString = "539076975.972474"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "29"
+            endingLineNumber = "29"
+            landmarkName = "+get_json:parameters:file:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Apex Mobile/DetailContent.m"
+            timestampString = "539076975.972615"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "46"
+            endingLineNumber = "46"
+            landmarkName = "-get_item_seg:row:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Apex Mobile/RANetwork.m"
+            timestampString = "539076975.972706"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "423"
+            endingLineNumber = "423"
+            landmarkName = "+get_detailcontent:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Apex Mobile/RANetwork.m"
+            timestampString = "539076975.97281"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "459"
+            endingLineNumber = "459"
+            landmarkName = "+get_detailcontent:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Apex Mobile/RANetwork.m"
+            timestampString = "539076975.97289"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "467"
+            endingLineNumber = "467"
+            landmarkName = "+get_detailcontent:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Apex Mobile/DetailPageViewController.m"
+            timestampString = "539080041.4609441"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "521"
+            endingLineNumber = "521"
+            landmarkName = "-tableView:cellForRowAtIndexPath:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Apex Mobile/DetailPageViewController.m"
+            timestampString = "539080041.46123"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "520"
+            endingLineNumber = "520"
+            landmarkName = "-tableView:cellForRowAtIndexPath:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Apex Mobile/DetailContent.m"
+            timestampString = "539076975.97405"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "61"
+            endingLineNumber = "61"
+            landmarkName = "-get_segmenttype:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Apex Mobile/DetailContent.m"
+            timestampString = "539076975.974143"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "63"
+            endingLineNumber = "63"
+            landmarkName = "-get_segmenttype:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Apex Mobile/DetailPageViewController.m"
+            timestampString = "539080041.4615411"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "282"
+            endingLineNumber = "282"
+            landmarkName = "-tableView:heightForRowAtIndexPath:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Apex Mobile/DetailPageViewController.m"
+            timestampString = "539080041.461795"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "446"
+            endingLineNumber = "446"
+            landmarkName = "-tableView:numberOfRowsInSection:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Apex Mobile/DetailContent.m"
+            timestampString = "539076975.97532"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "28"
+            endingLineNumber = "28"
+            landmarkName = "-get_itemcount:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Apex Mobile/HistoryTabBarController.m"
+            timestampString = "539076975.975419"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "87"
+            endingLineNumber = "87"
+            landmarkName = "-init"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Apex Mobile/DetailTabBarController.m"
+            timestampString = "539079484.902439"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "190"
+            endingLineNumber = "190"
+            landmarkName = "-saveDetail:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Apex Mobile/DetailTabBarController.m"
+            timestampString = "539079484.9027801"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "177"
+            endingLineNumber = "177"
+            landmarkName = "-alertView:clickedButtonAtIndex:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            shouldBeEnabled = "No"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "Apex Mobile/ApexMobileDB.m"
+            timestampString = "539079540.585561"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "65"
+            endingLineNumber = "65"
+            landmarkName = "+execSql:db:"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
 </Bucket>

+ 13 - 0
Apex Mobile/Apex Mobile/AMResultViewController.h

@@ -0,0 +1,13 @@
+//
+//  AMResultViewController.h
+//  Apex Mobile
+//
+//  Created by Ray on 31/01/2018.
+//  Copyright © 2018 United Software Applications, Inc. All rights reserved.
+//
+
+#import "ResultViewController.h"
+
+@interface AMResultViewController : ResultViewController
+
+@end

+ 282 - 0
Apex Mobile/Apex Mobile/AMResultViewController.m

@@ -0,0 +1,282 @@
+//
+//  AMResultViewController.m
+//  Apex Mobile
+//
+//  Created by Ray on 31/01/2018.
+//  Copyright © 2018 United Software Applications, Inc. All rights reserved.
+//
+
+#import "AMResultViewController.h"
+
+@interface AMResultViewController ()
+
+@end
+
+@implementation AMResultViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+}
+
+- (void)didReceiveMemoryWarning {
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+
+
+-(void)cellDoubleTapAction:(UIGestureRecognizer*)gestureRecognizer
+{
+    
+    NSAssert(true, ([NSString stringWithFormat:@"%s cellDoubleTapAction not impl",object_getClassName([self class])]));
+}
+//{
+//    NSLog(@"cell double tap");
+//        UITableViewCell* cell = (UITableViewCell*)[gestureRecognizer view];
+//    NSIndexPath* indexPath=[self.tableview indexPathForCell:cell];
+//    //strongSelf.content_action
+//    if(self.content_action!=nil)
+//    {
+//
+//        if(self.content_action.count==1)
+//        {
+//            NSDictionary* action =self.content_action.firstObject;
+//            NSString * module =  action[@"module"];
+//            if([module isEqualToString:@"quick_look"])
+//            {
+//
+//                //            +(NSString*)download_file : (NSMutableDictionary*) params url:(NSString*) url
+//                NSMutableDictionary *params = action[@"params"];
+//                NSString* URL =action[@"url"];
+//                __weak typeof(self) weakSelf = self;
+//                dispatch_async(dispatch_get_global_queue(0, 0), ^{
+//
+//
+//                    NSString *path = [RANetwork download_file:params url:URL];
+//                    weakSelf.documentPath = path;
+//
+//                    if (path) {
+//                        dispatch_async(dispatch_get_main_queue(), ^{
+//                            [weakSelf.navigationController pushViewController:weakSelf.quickLook animated:NO];
+//                        });
+//                    }
+//
+//                });
+//            }
+//            else if([module isEqualToString:@"kv_detail"])
+//            {
+//                NSMutableDictionary *params = [NSMutableDictionary new];
+//                params[@"query_id"] = self.params[@"query_id"];
+//
+//                NSMutableDictionary *criteria =[NSMutableDictionary new];
+//                for(NSString* key in [action[@"params"] allKeys] )
+//                {
+//                    NSArray* item =self.content_data[[NSString stringWithFormat:@"item_%ld",indexPath.row]];
+//                    int idx =[action[@"params"][key] intValue];
+//                    criteria[key]=item[ idx];
+//                }
+//
+//
+//                params[@"criteria"]=[RAConvertor dict2string:criteria] ;
+//
+//
+//
+//                UIAlertView * waitalert = [RAUtils waiting_alert:@"Loading..." title:@"Please wait"];
+//
+//
+//                __weak typeof(self) weakself = self;
+//                dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//
+//
+//
+//                    NSDictionary* json =[RANetwork kv_detail:params];
+//
+//                    dispatch_async(dispatch_get_main_queue(), ^{
+//                        [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+//
+//
+//                        if([[json valueForKey:@"result"] intValue]==2)
+//                        {
+//                            KVViewController *vc = [[UIStoryboard storyboardWithName:@"Detail" bundle:nil] instantiateViewControllerWithIdentifier:@"KVViewController"];
+//                            vc.content = [json mutableCopy];
+//                            [weakself.navigationController pushViewController:vc animated:NO];
+//
+//                            //                        weakself.content_data_download = [weakself CopyDirty:weakself.content_data_download to:[editor_json mutableCopy]];//[editor_json mutableCopy];
+//                            //
+//                            //                        weakself.content_data_control = [weakself translate_json:weakself.content_data_download changed: weakself.changed_data];
+//                            //
+//                            //
+//                            //                        [weakself download_success];
+//                            //                        [weakself.editorTable reloadData];
+//
+//                        }
+//                        else
+//                        {
+//                            [RAUtils message_alert:json[@"msg"] title:nil controller:weakself] ;
+//                        }
+//
+//
+//
+//
+//                    });
+//                });
+//            }
+//            else if([module isEqualToString:@"order_detail"])
+//            {
+//
+//                OrderDetailViewController *vc = [[UIStoryboard storyboardWithName:@"Detail" bundle:nil] instantiateViewControllerWithIdentifier:@"OrderDetailViewController"];
+//
+//
+//                vc.url_type = URL_REMOTE;
+//                vc.request_url=URL_ORDER_DETAIL;
+//
+//
+//                vc.params = [NSMutableDictionary dictionary];
+//                //                NSString *path = [[NSBundle mainBundle] pathForResource:@"search_ui.json" ofType:nil];
+//                //                NSData *data = [NSData dataWithContentsOfFile:path];
+//                //                vc.content_data_download = [[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil] mutableCopy];
+//                [self.navigationController pushViewController:vc animated:NO];
+//                return;
+//            }
+//        }
+//        else
+//        {
+//
+//            UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"" message:nil preferredStyle:UIAlertControllerStyleAlert];
+//            //block代码块取代了delegate
+//
+//            __weak typeof(self) weakSelf = self;
+//            for(int i=0;i<self.content_action.count;i++)
+//            {
+//                NSMutableDictionary* json = self.content_action[i];
+//                NSString* title =json[@"title"];
+//                NSString* module = json[@"module"];
+//                NSMutableDictionary* add_params = json[@"params"];
+//                UIAlertAction *actioni = [UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
+//
+//
+//                    if([module isEqualToString:@"quick_look"])
+//                    {
+//
+//                        //            +(NSString*)download_file : (NSMutableDictionary*) params url:(NSString*) url
+//                        NSMutableDictionary *params = json[@"params"];
+//                        NSString* URL =json[@"url"];
+//                        __weak typeof(self) weakSelf = self;
+//                        dispatch_async(dispatch_get_global_queue(0, 0), ^{
+//
+//
+//                            NSString *path = [RANetwork download_file:params url:URL];
+//                            weakSelf.documentPath = path;
+//
+//                            if (path) {
+//                                dispatch_async(dispatch_get_main_queue(), ^{
+//                                    [weakSelf.navigationController pushViewController:weakSelf.quickLook animated:NO];
+//                                });
+//                            }
+//
+//                        });
+//                    }
+//                    else if([module isEqualToString:@"kv_detail"])
+//                    {
+//                        NSMutableDictionary *params = json[@"params"];
+//
+//
+//                        UIAlertView * waitalert = [RAUtils waiting_alert:@"Loading..." title:@"Please wait"];
+//
+//
+//                        __weak typeof(self) weakself = self;
+//                        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//
+//
+//
+//                            NSDictionary* json =[RANetwork kv_detail:params];
+//
+//                            dispatch_async(dispatch_get_main_queue(), ^{
+//                                [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+//
+//
+//                                if([[json valueForKey:@"result"] intValue]==2)
+//                                {
+//                                    KVViewController *vc = [[UIStoryboard storyboardWithName:@"Detail" bundle:nil] instantiateViewControllerWithIdentifier:@"KVViewController"];
+//                                    vc.content = [json mutableCopy];
+//                                    [weakself.navigationController pushViewController:vc animated:NO];
+//
+//                                    //                        weakself.content_data_download = [weakself CopyDirty:weakself.content_data_download to:[editor_json mutableCopy]];//[editor_json mutableCopy];
+//                                    //
+//                                    //                        weakself.content_data_control = [weakself translate_json:weakself.content_data_download changed: weakself.changed_data];
+//                                    //
+//                                    //
+//                                    //                        [weakself download_success];
+//                                    //                        [weakself.editorTable reloadData];
+//
+//                                }
+//                                else
+//                                {
+//                                    [RAUtils message_alert:json[@"msg"] title:nil controller:weakself] ;
+//                                }
+//
+//
+//
+//
+//                            });
+//                        });
+//                    }
+//                    else if([module isEqualToString:@"order_detail"])
+//                    {
+//
+//                        OrderDetailViewController *vc = [[UIStoryboard storyboardWithName:@"Detail" bundle:nil] instantiateViewControllerWithIdentifier:@"OrderDetailViewController"];
+//
+//
+//                        vc.url_type = URL_REMOTE;
+//                        vc.request_url=URL_ORDER_DETAIL;
+//
+//
+//                        vc.params = [NSMutableDictionary dictionary];
+//                        //                NSString *path = [[NSBundle mainBundle] pathForResource:@"search_ui.json" ofType:nil];
+//                        //                NSData *data = [NSData dataWithContentsOfFile:path];
+//                        //                vc.content_data_download = [[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil] mutableCopy];
+//                        [self.navigationController pushViewController:vc animated:NO];
+//                        return;
+//                    }
+//                    // DebugLog(@"Cancel");
+////                    if([actiontype isEqualToString:@"download"])
+////                    {
+////                        [weakSelf Export:add_params];
+////                    }
+////                    else if([actiontype isEqualToString:@"save"])
+////                    {
+////                    }
+//                }];
+//                [alertControl addAction:actioni];
+//            }
+//
+//            UIAlertAction *actionCancel = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+//                // DebugLog(@"Cancel");
+//
+//            }];
+//            [alertControl addAction:actionCancel];
+//
+//
+//
+//
+//
+//            [self presentViewController:alertControl animated:NO completion:nil];
+//
+//        }
+//
+//    }
+//
+//
+//
+//}
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+@end

+ 31 - 33
Apex Mobile/Apex Mobile/Base.lproj/Main_iPhone.storyboard

@@ -1,11 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" colorMatched="YES" initialViewController="Lfr-X7-cX2">
-    <device id="retina4_7" orientation="portrait">
-        <adaptation id="fullscreen"/>
-    </device>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" colorMatched="YES" initialViewController="Lfr-X7-cX2">
     <dependencies>
-        <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13527"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <customFonts key="customFonts">
@@ -23,6 +19,7 @@
                         <autoresizingMask key="autoresizingMask"/>
                     </navigationBar>
                     <toolbar key="toolbar" opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="t86-UX-87M">
+                        <rect key="frame" x="0.0" y="0.0" width="1000" height="1000"/>
                         <autoresizingMask key="autoresizingMask"/>
                     </toolbar>
                     <connections>
@@ -60,6 +57,7 @@
                 <navigationController definesPresentationContext="YES" id="hjf-df-tQU" sceneMemberID="viewController">
                     <tabBarItem key="tabBarItem" title="Tools" image="list" id="Sd7-Xs-XTt"/>
                     <navigationBar key="navigationBar" contentMode="scaleToFill" id="b8i-Uj-KfM">
+                        <rect key="frame" x="0.0" y="0.0" width="1000" height="1000"/>
                         <autoresizingMask key="autoresizingMask"/>
                     </navigationBar>
                     <connections>
@@ -75,11 +73,11 @@
             <objects>
                 <viewController storyboardIdentifier="ToolsPanel" useStoryboardIdentifierAsRestorationIdentifier="YES" id="JXW-xc-63H" customClass="ToolsPanelViewController" sceneMemberID="viewController">
                     <view key="view" contentMode="scaleToFill" id="fwl-bG-pWY">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="618"/>
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         <subviews>
                             <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="6iK-Zr-L65">
-                                <rect key="frame" x="0.0" y="0.0" width="375" height="598"/>
+                                <rect key="frame" x="0.0" y="0.0" width="375" height="647"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <color key="backgroundColor" red="0.93725490196078431" green="0.93725490196078431" blue="0.95686274509803926" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <prototypes>
@@ -191,7 +189,7 @@
             <objects>
                 <viewController title="First" id="CZ4-MO-1fc" customClass="ApexMobileFirstViewController" sceneMemberID="viewController">
                     <view key="view" contentMode="scaleToFill" id="2VE-Yg-loa">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="618"/>
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="User" minimumFontSize="17" clearButtonMode="always" id="NGo-Ia-6Eh">
@@ -235,7 +233,7 @@
                                 <inset key="insetFor6xAndEarlier" minX="0.0" minY="70" maxX="0.0" maxY="-70"/>
                             </activityIndicatorView>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="Neb-tc-VZn">
-                                <rect key="frame" x="96" y="577" width="128" height="30"/>
+                                <rect key="frame" x="96" y="626" width="128" height="30"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
                                 <state key="normal" title="Retrieve password"/>
                                 <connections>
@@ -615,7 +613,7 @@
                                         <rect key="frame" x="0.0" y="35" width="375" height="162"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="7IQ-wj-NkY" id="GdM-Fp-oqo">
-                                            <rect key="frame" x="0.0" y="0.0" width="375" height="162"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="375" height="161.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <datePicker contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" datePickerMode="date" minuteInterval="1" id="Z5G-Y5-ds6">
@@ -636,7 +634,7 @@
                                         <rect key="frame" x="0.0" y="217" width="375" height="44"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="15O-rS-EPp" id="lEL-33-nRJ">
-                                            <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Reset" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="IFF-VV-0Iy">
@@ -653,7 +651,7 @@
                                         <rect key="frame" x="0.0" y="261" width="375" height="44"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="9kO-bH-eX1" id="aHM-xS-NEk">
-                                            <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Set" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="lY5-Jh-Clt">
@@ -674,7 +672,7 @@
                                         <rect key="frame" x="0.0" y="325" width="375" height="44"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="ygy-KP-wsg" id="NdB-mS-bP1">
-                                            <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Cancel" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="vSO-nz-zfB">
@@ -740,7 +738,7 @@
                                         <rect key="frame" x="0.0" y="22" width="320" height="162"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="JUj-Tc-XSa" id="YjG-hM-a3a">
-                                            <rect key="frame" x="0.0" y="0.0" width="320" height="162"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="320" height="161.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                         </tableViewCellContentView>
                                     </tableViewCell>
@@ -748,7 +746,7 @@
                                         <rect key="frame" x="0.0" y="184" width="320" height="44"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="x2p-1k-evv" id="zH5-8f-JuE">
-                                            <rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="320" height="43.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                         </tableViewCellContentView>
                                     </tableViewCell>
@@ -756,7 +754,7 @@
                                         <rect key="frame" x="0.0" y="228" width="320" height="44"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="9sx-WL-iYT" id="t6i-iY-QyV">
-                                            <rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="320" height="43.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                         </tableViewCellContentView>
                                     </tableViewCell>
@@ -764,7 +762,7 @@
                                         <rect key="frame" x="0.0" y="272" width="320" height="44"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="3x4-Y5-OTz" id="gtN-yM-KzA">
-                                            <rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="320" height="43.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                         </tableViewCellContentView>
                                     </tableViewCell>
@@ -916,7 +914,7 @@
                                         <rect key="frame" x="0.0" y="22" width="375" height="44"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="1nr-UE-sjD" id="U3J-V7-tmK">
-                                            <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="d7g-gu-2Bj">
@@ -986,11 +984,11 @@
                                         <rect key="frame" x="0.0" y="22" width="375" height="175"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="EfP-7H-xCp" id="Jbk-8t-6hJ">
-                                            <rect key="frame" x="0.0" y="0.0" width="375" height="175"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="375" height="174.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <view contentMode="scaleToFill" id="knk-RT-xyF" customClass="RTLabel">
-                                                    <rect key="frame" x="20" y="9" width="335" height="165"/>
+                                                    <rect key="frame" x="20" y="9" width="335" height="164.5"/>
                                                     <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                                     <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                                 </view>
@@ -1191,7 +1189,7 @@
                                         <rect key="frame" x="0.0" y="22" width="375" height="65"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="jDh-7c-gCD" id="Axw-St-rkx">
-                                            <rect key="frame" x="0.0" y="0.0" width="375" height="65"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="375" height="64.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="name" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="88c-TS-KE4">
@@ -1249,7 +1247,7 @@
                                         <rect key="frame" x="0.0" y="22" width="375" height="65"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="80g-kB-WKb" id="Ee7-g5-fxB">
-                                            <rect key="frame" x="0.0" y="0.0" width="375" height="65"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="375" height="64.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="name" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Tbi-T9-Pvc">
@@ -1303,7 +1301,7 @@
                                         <rect key="frame" x="0.0" y="22" width="375" height="82"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="iac-Br-7r3" id="wtN-3O-EkS">
-                                            <rect key="frame" x="0.0" y="0.0" width="375" height="82"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="375" height="81.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="edit_from" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="From" minimumFontSize="17" id="1dN-ax-3F0">
@@ -1344,7 +1342,7 @@
                                         <rect key="frame" x="0.0" y="104" width="375" height="82"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="BUG-pB-vcX" id="js5-x6-gQS">
-                                            <rect key="frame" x="0.0" y="0.0" width="342" height="82"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="342" height="81.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="item_bool" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="eNm-LN-2nb">
@@ -1377,7 +1375,7 @@
                                         <rect key="frame" x="0.0" y="186" width="375" height="82"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="f2w-op-UbP" id="fm5-gE-SU9">
-                                            <rect key="frame" x="0.0" y="0.0" width="375" height="82"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="375" height="81.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="item_edit" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="o4R-Ty-ekY">
@@ -1461,7 +1459,7 @@
         <!--Result-->
         <scene sceneID="HJD-6m-1oF">
             <objects>
-                <viewController storyboardIdentifier="ResultViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="U64-AM-iXd" customClass="ResultViewController" sceneMemberID="viewController">
+                <viewController storyboardIdentifier="ResultViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="U64-AM-iXd" customClass="GridResultViewController" sceneMemberID="viewController">
                     <view key="view" contentMode="scaleToFill" id="9Zk-2B-tRK">
                         <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
@@ -1607,7 +1605,7 @@
                                         <rect key="frame" x="0.0" y="22" width="375" height="44"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="kEc-ry-FUE" id="NrT-7f-68x">
-                                            <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="DQc-Zc-cKV">
@@ -1627,7 +1625,7 @@
                                         <rect key="frame" x="0.0" y="66" width="375" height="44"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="uk7-8Q-Bzs" id="2mb-pG-gFu">
-                                            <rect key="frame" x="0.0" y="0.0" width="375" height="44"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="8x8-BT-h8l">
@@ -1653,11 +1651,11 @@
                                         <rect key="frame" x="0.0" y="110" width="375" height="164"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="oB9-1g-IyB" id="v6M-bZ-rGB">
-                                            <rect key="frame" x="0.0" y="0.0" width="375" height="164"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="375" height="163.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <webView contentMode="scaleToFill" id="Iti-Af-rqF">
-                                                    <rect key="frame" x="0.0" y="0.0" width="375" height="163"/>
+                                                    <rect key="frame" x="0.0" y="0.0" width="375" height="162.5"/>
                                                     <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                                     <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                                     <dataDetectorType key="dataDetectorTypes" link="YES"/>
@@ -1695,11 +1693,11 @@
             <objects>
                 <viewController title="Second" id="QUy-BD-bpt" customClass="ApexMobileSecondViewController" sceneMemberID="viewController">
                     <view key="view" contentMode="scaleToFill" id="gMD-aP-Fq6">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="618"/>
+                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <containerView contentMode="scaleToFill" id="lPN-60-T0t">
-                                <rect key="frame" x="0.0" y="20" width="375" height="598"/>
+                                <rect key="frame" x="0.0" y="20" width="375" height="647"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <connections>

+ 15 - 0
Apex Mobile/Apex Mobile/DetailCellTracking.h

@@ -0,0 +1,15 @@
+//
+//  DetailCellTracking.h
+//  Apex Mobile
+//
+//  Created by Ray on 31/01/2018.
+//  Copyright © 2018 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface DetailCellTracking : UITableViewCell
+@property (weak, nonatomic) IBOutlet UIImageView *trackingIcon;
+@property (weak, nonatomic) IBOutlet UILabel *trackingMsg;
+
+@end

+ 24 - 0
Apex Mobile/Apex Mobile/DetailCellTracking.m

@@ -0,0 +1,24 @@
+//
+//  DetailCellTracking.m
+//  Apex Mobile
+//
+//  Created by Ray on 31/01/2018.
+//  Copyright © 2018 United Software Applications, Inc. All rights reserved.
+//
+
+#import "DetailCellTracking.h"
+
+@implementation DetailCellTracking
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+}
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+
+@end

+ 9 - 5
Apex Mobile/Apex Mobile/DetailContent.m

@@ -38,18 +38,22 @@
 }
 -(NSDictionary*)get_item_seg :(long)seg row:(long)row
 {
-    NSDictionary* segment = self.segments[seg];
+//    NSDictionary* segment = self.segments[seg];
     
-    NSString* type =[segment valueForKey:@"_type"];
+    NSString* type =[self.segments[seg] valueForKey:@"_type"];
     if([type isEqualToString:@"table"])
-        return segment;
+        return self.segments[seg];
     else if([type isEqualToString:@"mapping"])
     {
-        return [segment objectForKey:[NSString stringWithFormat:@"item%ld",row]];
+        return [self.segments[seg] objectForKey:[NSString stringWithFormat:@"item%ld",row]];
+    }
+    else if([type isEqualToString:@"tracking"])
+    {
+        return [self.segments[seg] objectForKey:[NSString stringWithFormat:@"item%ld",row]];
     }
     else
     {
-        return segment;
+        return self.segments[seg];
     }
 }
 -(NSString*) get_segmenttype :(long)idx

+ 36 - 0
Apex Mobile/Apex Mobile/DetailPageViewController.m

@@ -13,6 +13,8 @@
 #define  CELL_MARGIN 0
 #define  LABEL_MARGIN 5
 #import "TabBarController.h"
+#import "DetailCellTracking.h"
+
 @interface DetailPageViewController ()
 
 @end
@@ -298,6 +300,10 @@
         return height;
         
     }
+    else if([type isEqualToString:@"tracking"])
+    {
+        return 64;
+    }
     else if([type isEqualToString:@"mapping"])
     {
         float width = tableView.frame.size.width;
@@ -511,6 +517,36 @@
         //        [cell.webView loadHTMLString:htmlString baseURL:[NSURL URLWithString:filePath]];
         return cell;
     }
+    else if([type isEqualToString:@"tracking"])
+    {
+        DebugLog(@"cellForRowAtIndexPath =====> table");
+        
+        static NSString *CellIdentifier = @"detail_item_tracking";
+        
+        DetailCellTracking *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
+        NSDictionary* item = [self.content get_item_seg:indexPath.section row:indexPath.row];
+        
+        if(indexPath.row==0)
+            cell.trackingIcon.tintColor=UIColorFromRGB(0x1e7ffb);
+        else
+            cell.trackingIcon.tintColor=[UIColor grayColor];
+        
+        cell.trackingIcon.image = [[UIImage imageNamed:item[@"icon"]] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
+        cell.trackingMsg.text=item[@"msg"];
+//        NSString* tablecontent = [item valueForKey:@"content"];
+//        cell.webView.tag = indexPath.section;
+//        //        cell.webView.scrollView.contentSize.height = 0;
+//        cell.webView.scrollView.bounces=NO;
+//        cell.webView.scrollView.directionalLockEnabled = true;
+//        CGSize size= cell.webView.scrollView.contentSize;
+//        size.height=10;
+//        cell.webView.scrollView.contentSize=size;
+//
+//
+//        [cell.webView loadHTMLString:tablecontent baseURL:nil];
+      
+        return cell;
+    }
     else if([type isEqualToString:@"mapping"])
     {
         float width = tableView.frame.size.width;

+ 1 - 1
Apex Mobile/Apex Mobile/DetailTabBarController.m

@@ -97,7 +97,7 @@
             
 //            testViewController * one = [[testViewController alloc] init];
             
-            UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:[NSBundle mainBundle]];
+            UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
             DetailPageViewController *one = [storyboard instantiateViewControllerWithIdentifier:@"DetailPageViewController"];
             
             

+ 37 - 0
Apex Mobile/Apex Mobile/GridResultViewController.h

@@ -0,0 +1,37 @@
+//
+//  ResultViewController.h
+//  Apex Mobile
+//
+//  Created by Ray on 14-3-4.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import "const.h"
+#import "SimpleGrid.h"
+#import "RANetwork.h"
+#import "PageData.h"
+#import "DetailTabBarController.h"
+#import "PulldownMenu.h"
+
+@interface GridResultViewController : UIViewController<SimpleGridDelegate,PulldownMenuDelegate,UIAlertViewDelegate>
+{
+    PulldownMenu *pulldownMenu;
+}
+@property (strong, nonatomic) IBOutlet SimpleGrid *grid;
+@property (strong,nonatomic) NSString* function_name;
+@property (strong,nonatomic) NSMutableDictionary* params;
+@property (strong,nonatomic) PageData* pageData;
+@property bool dirty;
+@property long recordCount;
+@property long offset;
+@property bool fullrow_select;
+@property (strong,nonatomic) NSString* detail_id;
+//@property (strong,nonatomic) NSMutableDictionary* header;
+@property (strong, nonatomic) IBOutlet UIBarButtonItem *countView;
+@property (strong, nonatomic) IBOutlet UIButton *prepageButton;
+@property (strong, nonatomic) IBOutlet UIButton *nextpageButton;
+@property long prepageCount;
+@property (strong,nonatomic) NSArray* actions;
+@property (strong, nonatomic) IBOutlet UIActivityIndicatorView *mum;
+@end

+ 574 - 0
Apex Mobile/Apex Mobile/GridResultViewController.m

@@ -0,0 +1,574 @@
+//
+//  ResultViewController.m
+//  Apex Mobile
+//
+//  Created by Ray on 14-3-4.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import "GridResultViewController.h"
+#import "TabBarController.h"
+@interface GridResultViewController ()
+-(void) getHeader: (NSMutableArray*)header_name header_aname:(NSMutableArray*)header_aname;
+-(void) loadpage;
+-(NSArray*) getActions;
+@end
+
+@implementation GridResultViewController
+-(void) loadpage
+{
+    
+    [self.params setValue:[NSString stringWithFormat:@"%ld",self.offset] forKey:@"offset"];
+    self.mum.center = self.view.center;
+    
+    NSTimeInterval animationDuration = 0.30f;
+    [UIView beginAnimations:@"ResizeView" context:nil];
+    [UIView setAnimationDuration:animationDuration];
+    self.prepageButton.enabled=false;
+    self.nextpageButton.enabled=false;
+    self.mum.hidden = false;
+    self.grid.hidden = true;
+    
+    [UIView commitAnimations];
+    
+    
+    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+        
+        //        PageData* pageData=nil;
+        if(self.recordCount<0)
+            self.recordCount=[RANetwork get_recordcount: self.params ];
+        if(self.recordCount>0)
+        {
+            self.pageData=[RANetwork get_pagedata:self.params];
+            //            self.pageData=[RANetwork]
+        }
+        
+        dispatch_async(dispatch_get_main_queue(), ^{
+            NSTimeInterval animationDuration = 0.30f;
+            [UIView beginAnimations:@"ResizeView" context:nil];
+            [UIView setAnimationDuration:animationDuration];
+            
+            if(self.recordCount>=0)
+            {
+                if(self.recordCount<2000)
+                    self.countView.title = [NSString stringWithFormat:@"%ld records",self.recordCount];
+                else
+                    self.countView.title = @"2000+ records";
+            }
+            else
+            {
+                self.countView.title = @"Net error!";
+            }
+            if(self.offset<self.pageData.get_count||self.offset==0)
+                self.prepageButton.enabled=false;
+            else
+                self.prepageButton.enabled=true;
+            if(self.offset+self.pageData.get_count>=self.recordCount)
+                self.nextpageButton.enabled=false;
+            else
+                self.nextpageButton.enabled=true;
+            [self.grid initgrid :self.pageData];
+            
+            CGPoint p = self.grid.frame.origin;
+            
+            
+            self.mum.hidden = true;
+            self.grid.hidden = false;
+            [UIView commitAnimations];
+            
+            NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
+            bool autologin =[defaults boolForKey:@"autologin"];
+            if(!autologin)
+            {
+                TabBarController * viewController =[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"LoginTabBar"];
+                [self presentViewController:viewController animated:YES completion:^{
+                    
+                }];
+            }
+            
+        });
+    });
+}
+- (void) showDetail:(UIMenuItem*) sender
+{
+    DebugLog(@"show detail id = %@",self.detail_id);
+    NSMutableDictionary *params = [[NSMutableDictionary alloc] initWithDictionary:self.params copyItems:true];
+    
+    
+    [params setValue:self.detail_id forKey:@"id"];
+    
+    
+    DetailTabBarController *detailViewController=[[DetailTabBarController alloc] init:self.function_name actions:self.actions params:params];
+    
+    
+    //        DetailTabBarController *detailViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"DetailTabBarController"];
+    //        detailViewController.function_name = self.function_name;
+    //        detailViewController.actions = self.actions;
+    //        detailViewController.params =params;
+    [self.navigationController pushViewController:detailViewController animated:YES];
+    
+    //(int)Authorize : (NSString*) user password:(NSString*) password
+    
+    //    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"1111" message:@"1111" delegate:self cancelButtonTitle:NSLocalizedString(@"ok", nil) otherButtonTitles: nil];
+    //    [alert show];
+}
+- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
+{
+    if (action == @selector(showDetail:))
+        return YES;//显示
+    else
+        return NO;//不显示
+}
+
+-(void)menuItemSelected:(NSIndexPath *)indexPath
+{
+    NSLog(@"%ld",indexPath.item);
+    [pulldownMenu animateDropDown];
+    if(indexPath.item==0)
+    {
+        CustomizeFieldViewController *ViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"CustomizeFieldViewController"];
+        ViewController.function_name = self.function_name;
+        ViewController.behavior =BEHAVIOR_RESULT;
+        self.dirty=true;
+        //    ViewController.dirty = self.dirty;
+        
+        [self.navigationController pushViewController:ViewController animated:YES];
+    }
+    else
+    {
+        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"alert_title_create_tag", nil) message:NSLocalizedString(@"alert_msg_savehint", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"cancel", nil) otherButtonTitles:NSLocalizedString(@"save", nil),nil];
+        alert.alertViewStyle = UIAlertViewStylePlainTextInput;
+        
+        UITextField * txt = [[UITextField alloc] init];
+        
+        txt.backgroundColor = [UIColor yellowColor];
+        
+        txt.frame = CGRectMake(alert.center.x+65,alert.center.y+48, 150,23);
+        //        [alert addSubview:txt];
+        [alert show];
+        
+    }
+}
+- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
+{
+    
+    if(buttonIndex!=alertView.cancelButtonIndex)
+    {
+        UITextField * txt=[alertView textFieldAtIndex:0];
+        NSString* name = txt.text;
+        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self.params
+                                                           options:0
+                                                             error:nil];
+        NSString* param = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
+        AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
+        NSString* user = appDelegate.user;
+        
+        sqlite3 *db =[ApexMobileDB get_db];
+        
+        [ApexMobileDB execSql: [NSString stringWithFormat: @"insert into history(params,name,module_name,user) values('%@','%@','%@','%@')",param,name,self.function_name,user] db:db];
+        
+        sqlite3_close(db);
+        
+        //NSString *jsonString =
+        /*
+         String name = ((EditText) edit)
+         .getText().toString();
+         String param = getIntent().toUri(0);
+         
+         JSONObject obj = new JSONObject();
+         Set<String> keys = searchParms.keySet();
+         for (String key : keys)
+         {
+         
+         
+         try
+         {
+         obj.put(key, searchParms.get(key).toString());
+         
+         }
+         catch (JSONException e)
+         {
+         // TODO Auto-generated catch block
+         e.printStackTrace();
+         }
+         
+         }
+         obj.toString();
+         
+         SQLiteDatabase db = dbUtil.OpenDB(
+         ApexTrackingApplication.get_instance(), null, true);
+         db.execSQL("insert into history(params,name,criterion,module_name,user,create_time) values('"
+         
+         + param
+         + "','"
+         + name
+         + "','"
+         + obj.toString()
+         + "','"
+         + function_name
+         + "','"
+         + ApexTrackingApplication.get_user()
+         + "',"
+         + System.currentTimeMillis() + ")");
+         dbUtil.CloseDB(db);
+         
+         */
+        
+    }
+    
+    
+}
+-(void)pullDownAnimated:(BOOL)open
+{
+    if (open)
+    {
+        NSLog(@"Pull down menu open!");
+    }
+    else
+    {
+        NSLog(@"Pull down menu closed!");
+    }
+}
+
+- (IBAction)onCustomize:(UIBarButtonItem *)sender {
+    
+    
+    
+    CGRect ff = self.navigationController.navigationBar.frame;
+    //    : CGPointMake(0.0f,self.navigationController.navigationBar.frame.size.height)
+    
+    [pulldownMenu animateDropDown:CGPointMake(0.0f,self.navigationController.navigationBar.frame.size.height)];
+    //    CustomizeFieldViewController *ViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"CustomizeFieldViewController"];
+    //    ViewController.function_name = self.function_name;
+    //    ViewController.behavior =BEHAVIOR_RESULT;
+    //    self.dirty=true;
+    //    //    ViewController.dirty = self.dirty;
+    //
+    //    [self.navigationController pushViewController:ViewController animated:YES];
+}
+- (BOOL)canBecomeFirstResponder{
+    return YES;
+}
+- (void) Tap:(UIView*)view url:(NSString*) url
+{
+    WebViewController *ViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"WebViewController"];
+    ViewController.url = url;
+    //    ViewController. = self.function_name;
+    //    ViewController.behavior =BEHAVIOR_SEARCH;
+    
+    [self.navigationController pushViewController:ViewController animated:YES];
+}
+- (void) LongPress:(UIView*)view _id:(NSString*) _id
+{
+    DebugLog(@"!!!!!!!!!!!!!!!!!");
+    self.actions = [self getActions];
+    
+    if(self.actions.count<1)
+        return;
+    self.detail_id = _id;
+    UIMenuItem *detail = [[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"menuitem_showdetail", nil) action:@selector(showDetail:)];
+    //    [detail setValue:_id forKey:@"_id"];
+    
+    UIMenuController *menu = [UIMenuController sharedMenuController];
+    
+    [menu setMenuItems:[NSArray arrayWithObjects:detail, nil]];
+    
+    [menu setTargetRect:view.frame inView:view.superview];
+    [menu setMenuVisible:YES animated:YES];
+    
+    
+    
+}
+
+- (IBAction)onPrePageClick:(UIButton *)sender {
+    self.offset -=self.prepageCount;
+    [self loadpage];
+}
+- (IBAction)onNextPageClick:(UIButton *)sender {
+    self.offset +=self.pageData.get_count;
+    self.prepageCount=self.pageData.get_count;
+    [self loadpage];
+}
+
+-(NSArray*) getActions
+{
+    DebugLog(@"getActions");
+    
+    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
+    
+    
+    NSMutableArray* actions = [[NSMutableArray alloc]init];
+    sqlite3 *db =[ApexMobileDB get_db];
+    NSString *quary = [NSString stringWithFormat:@"select name from actions_info where function_name='%@' and user='%@'order by priority",self.function_name, appDelegate.user];
+    
+    
+    
+    sqlite3_stmt *stmt;
+    
+    if (sqlite3_prepare_v2(db, [quary UTF8String], -1, &stmt, nil) == SQLITE_OK) {
+        DebugLog(@"sql:%@",quary);
+        DebugLog(@"=======================show tabs===================");
+        while (sqlite3_step(stmt)==SQLITE_ROW)
+        {
+            
+            NSString *name = [[NSString alloc] initWithUTF8String:(char *)sqlite3_column_text(stmt, 0)];
+            [actions addObject:name];
+            DebugLog(@"action name: %@",name);
+        }
+        DebugLog(@"=======================show tabs===================");
+        sqlite3_finalize(stmt);
+    }
+    //用完了一定记得关闭,释放内存
+    sqlite3_close(db);
+    return actions;
+}
+-(void) getHeader: (NSMutableArray*)header_name header_aname:(NSMutableArray*)header_aname
+{
+    //    NSMutableDictionary* header = [[NSMutableDictionary alloc] init];
+    //    [header setValue:@"aaa" forKey:@"bbb"];
+    DebugLog(@"initHeader");
+    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
+    
+    sqlite3 *db =[ApexMobileDB get_db];
+    NSString *quary = [NSString stringWithFormat:@"select aname,name from fields_info where function_name='%@' and user='%@' and behavior=%d and show=1 order by priority,aname",self.function_name, appDelegate.user,BEHAVIOR_RESULT];
+    
+    
+    
+    sqlite3_stmt *stmt;
+    
+    if (sqlite3_prepare_v2(db, [quary UTF8String], -1, &stmt, nil) == SQLITE_OK) {
+        DebugLog(@"sql:%@",quary);
+        DebugLog(@"=======================show fields===================");
+        while (sqlite3_step(stmt)==SQLITE_ROW)
+        {
+            NSString *aname = [[NSString alloc] initWithUTF8String:(char *)sqlite3_column_text(stmt, 0)];
+            NSString *name = [[NSString alloc] initWithUTF8String:(char *)sqlite3_column_text(stmt, 1)];
+            //            [header setValue:aname forKey:name];
+            [header_name addObject:name];
+            [header_aname addObject:aname];
+            DebugLog(@"%@",aname);
+            
+        }
+        DebugLog(@"=======================show fields===================");
+        sqlite3_finalize(stmt);
+    }
+    //用完了一定记得关闭,释放内存
+    sqlite3_close(db);
+    //    return header;
+}
+
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
+{
+    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
+    if (self) {
+        //       self.pageData=[[PageData alloc] init];
+        
+        
+    }
+    return self;
+}
+//- (BOOL)shouldAutorotate
+//{
+//    return YES;
+//}
+//
+//- (NSUInteger)supportedInterfaceOrientations
+//{
+//    return UIInterfaceOrientationMaskLandscapeRight;
+//}
+//
+//- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
+//{
+//    return UIInterfaceOrientationLandscapeRight;
+//}
+
+- (void)viewDidLoad
+{
+    [super viewDidLoad];
+    
+    
+    
+    
+    
+    
+    NSString* title=@"";
+    if([self.function_name isEqualToString:@"Ocean Booking"])
+        title = @"Booking Result";
+    else if([self.function_name isEqualToString:@"Ocean B/L info."])
+        title = @"B/L info. Result";
+    else if([self.function_name isEqualToString:@"Container detail"])
+        title = @"Container Result";
+    else if([self.function_name isEqualToString:@"Download Document"])
+        title = @"Document Result";
+    self.navigationItem.title = title;
+//    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] init];
+//    backButton.title = @"Back";
+//    
+//    self.navigationItem.backBarButtonItem = backButton;
+    
+    // self.navigationController.view.frame.size.height;
+    
+    //    NSMutableArray * items = [[NSMutableArray alloc]init];
+    //    UIBarButtonItem *item1 = [[UIBarButtonItem alloc] init];
+    //    item1.title = @"item1";
+    //    item1.image = [UIImage imageNamed:@"rect_setting"];
+    //    UIBarButtonItem *item2 = [[UIBarButtonItem alloc] init];
+    //    item2.image = [UIImage imageNamed:@"rect_about"];
+    //    item2.title = @"item2";
+    //    [items addObject:item1];
+    //    [items addObject:item2];
+    //    self.navigationItem.rightBarButtonItems=items;
+    //    self.navigationItem.backBarButtonItem = backButton;
+    
+    
+    self.dirty = @"true";
+    
+    if([self.function_name isEqualToString:@"Download Document"])
+        self.fullrow_select =false;
+    else
+        self.fullrow_select=true;
+    
+    
+    
+    pulldownMenu = [[PulldownMenu alloc] initWithView:self.view];
+    [self.view addSubview:pulldownMenu];
+    
+    [pulldownMenu insertButton:NSLocalizedString(@"menuitem_setting", nil)];
+    [pulldownMenu insertButton:NSLocalizedString(@"menuitem_savesearch", nil)];
+    
+    
+    pulldownMenu.delegate = self;
+    //    self.navigationItem.rightBarButtonItems
+    
+    [pulldownMenu loadMenu];
+    
+    
+    
+    
+    
+    UIRefreshControl *ref = [[UIRefreshControl alloc]init];
+    ref.tag = 200 ;
+    ref.attributedTitle = [[NSAttributedString alloc]initWithString:@"drag to refresh"];
+    ref.tintColor = [UIColor colorWithRed:0.10 green:0.68 blue:0.94 alpha:0.7];
+    //    ref.hidden = true;
+    [ref addTarget:self action:@selector(changeCell) forControlEvents:UIControlEventValueChanged];
+    [self.grid addSubview:ref];
+    
+}
+-(void)changeCell
+{
+    UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200];
+    reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"refreshing"];
+    [self performSelector:@selector(ReloadData) withObject:nil afterDelay:1];
+    DebugLog(@"refresh!!!!!!!!");
+    
+}
+
+-(void)ReloadData
+{
+    
+    //    Count ++ ;
+    //    [mytabelview reloadData];
+    [self loadpage];
+    UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200];
+    
+    [reF endRefreshing];
+    
+}
+
+- (void)viewWillAppear:(BOOL)animated
+{
+    DebugLog(@"viewWillAppear");
+    
+    
+    
+    
+    if(self.dirty ==true)
+    {
+        self.prepageCount=0;
+        self.recordCount = -1;
+        self.offset = 0;
+        NSMutableArray* header_name =[[NSMutableArray alloc]init];
+        NSMutableArray* header_aname =[[NSMutableArray alloc]init];
+        [self getHeader:header_name header_aname:header_aname];
+        //    self.header = [self getHeader:header_name];
+        //    self.grid.header = self.header;
+        self.grid.fullrowselect = self.fullrow_select;
+        self.grid.griddelegate = self;
+        self.grid.header_name=header_name;
+        self.grid.header_aname=header_aname;
+        [self.params setValue:self.function_name forKey:@"module_name"];
+        NSString* fields =@"";
+        for(int i=0;i<header_name.count;i++)
+        {
+            fields=[fields stringByAppendingFormat:@"%@,",header_name[i]];
+            
+        }
+        fields=[fields substringToIndex: fields.length-1];
+        
+        [self.params setValue:fields forKey:@"columns"];
+        
+        [self loadpage];
+        self.dirty = false;
+        //            [pulldownMenu loadMenu:self.grid.frame.origin];
+    }
+    
+    
+}
+//-(NSUInteger)supportedInterfaceOrientations
+//{
+//      DebugLog(@"myViewController::supportedInterfaceOrientations");
+//    return UIInterfaceOrientationMaskLandscape;
+//    //    return [[self topViewController] supportedInterfaceOrientations];
+//}
+//- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
+//{
+//      DebugLog(@"myViewController::preferredInterfaceOrientationForPresentation");
+//    return UIInterfaceOrientationLandscapeRight;
+//}
+//-(BOOL)shouldAutorotate
+//{
+//      DebugLog(@"myViewController::shouldAutorotate");
+//    return YES;
+//}
+//
+//- (void)viewWillAppear:(BOOL)animated
+//{
+////    [self presentViewController:[[UIViewController alloc]init] animated:NO completion:^
+////    {
+////          DebugLog(@"dismiss viewcontroller");
+////        [self dismissViewControllerAnimated:NO completion:nil];
+////    }];
+//
+//
+////    [self presentViewController:nil animated:NO completion:nil];
+//
+//    //    [self presentViewController];
+//
+//}
+
+
+
+
+//    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
+//    {
+//        return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
+//    }
+
+//    - (NSUInteger)supportedInterfaceOrientations
+//    {
+//        //    return UIInterfaceOrientationMaskLandscapeLeft;
+//        return UIInterfaceOrientationMaskLandscapeRight;
+//    }
+
+//    - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
+//        return UIInterfaceOrientationLandscapeRight;
+//        //    return UIInterfaceOrientationPortrait;
+//    }
+- (void)didReceiveMemoryWarning
+{
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+
+@end

+ 1 - 1
Apex Mobile/Apex Mobile/HistoryTabBarController.m

@@ -78,7 +78,7 @@
         
         //            testViewController * one = [[testViewController alloc] init];
         
-        UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:[NSBundle mainBundle]];
+        UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
         
         UIOffset offset;
         offset.horizontal = 0;

+ 1 - 1
Apex Mobile/Apex Mobile/HistoryViewController.h

@@ -9,7 +9,7 @@
 #import <UIKit/UIKit.h>
 #import "HistoryData.h"
 #import "CellItemHistory.h"
-#import "ResultViewController.h"
+#import "GridResultViewController.h"
 @interface HistoryViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>
 //@property (strong,nonatomic) NSString* module_name;
 @property (strong, nonatomic) IBOutlet UITableView *tableview;

+ 1 - 1
Apex Mobile/Apex Mobile/HistoryViewController.m

@@ -104,7 +104,7 @@
 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
 {
     
-    ResultViewController *resultViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"ResultViewController"];
+    GridResultViewController *resultViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"ResultViewController"];
     
     resultViewController.function_name = [self.data.pagedata[indexPath.row] valueForKey:@"module_name"];
 

+ 23 - 0
Apex Mobile/Apex Mobile/Images.xcassets/mode_cargo_tracking.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "appicon.png",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "appicon-1.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "appicon-2.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Apex Mobile/Apex Mobile/Images.xcassets/mode_cargo_tracking.imageset/appicon-1.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/mode_cargo_tracking.imageset/appicon-2.png


BIN
Apex Mobile/Apex Mobile/Images.xcassets/mode_cargo_tracking.imageset/appicon.png


+ 240 - 96
Apex Mobile/Apex Mobile/Main.storyboard

@@ -1,11 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="YOs-rL-bRV">
-    <device id="retina4_7" orientation="portrait">
-        <adaptation id="fullscreen"/>
-    </device>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="YOs-rL-bRV">
     <dependencies>
         <deployment version="2304" identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13527"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
@@ -55,11 +52,11 @@
                         <viewControllerLayoutGuide type="bottom" id="GqU-ke-DJ1"/>
                     </layoutGuides>
                     <view key="view" contentMode="scaleToFill" id="X6q-dB-qSM">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="VSo-fp-Aqt">
-                                <rect key="frame" x="0.0" y="20" width="375" height="598"/>
+                                <rect key="frame" x="0.0" y="20" width="600" height="531"/>
                                 <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                 <connections>
                                     <outlet property="dataSource" destination="cXn-4T-TpY" id="hp4-PI-gpw"/>
@@ -94,11 +91,11 @@
                         <viewControllerLayoutGuide type="bottom" id="3Te-oX-ftj"/>
                     </layoutGuides>
                     <view key="view" contentMode="scaleToFill" id="QxY-X5-VD0">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" rowHeight="110" estimatedRowHeight="110" sectionHeaderHeight="-1" sectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="Vjd-jz-qR0">
-                                <rect key="frame" x="0.0" y="20" width="375" height="598"/>
+                                <rect key="frame" x="0.0" y="20" width="600" height="531"/>
                                 <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
                                 <connections>
                                     <outlet property="dataSource" destination="XAM-wb-CvU" id="UGh-l6-38n"/>
@@ -133,14 +130,14 @@
                         <viewControllerLayoutGuide type="bottom" id="deU-wF-9js"/>
                     </layoutGuides>
                     <view key="view" contentMode="scaleToFill" id="lHV-oi-ARt">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="OnO-n9-f7N">
-                                <rect key="frame" x="0.0" y="268.5" width="375" height="130"/>
+                                <rect key="frame" x="0.0" y="235" width="600" height="130"/>
                                 <subviews>
                                     <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="User" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="dHA-PV-ECL">
-                                        <rect key="frame" x="20" y="0.0" width="335" height="30"/>
+                                        <rect key="frame" x="132.5" y="0.0" width="335" height="30"/>
                                         <constraints>
                                             <constraint firstAttribute="width" constant="335" id="bAR-Fg-jKi"/>
                                             <constraint firstAttribute="height" constant="30" id="yn6-o8-hfY"/>
@@ -150,13 +147,13 @@
                                         <textInputTraits key="textInputTraits" returnKeyType="done"/>
                                     </textField>
                                     <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Password" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="O5q-tH-vch">
-                                        <rect key="frame" x="20" y="50" width="335" height="30"/>
+                                        <rect key="frame" x="132.5" y="50" width="335" height="30"/>
                                         <inset key="insetFor6xAndEarlier" minX="0.0" minY="70" maxX="0.0" maxY="-70"/>
                                         <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                         <textInputTraits key="textInputTraits" returnKeyType="done" secureTextEntry="YES"/>
                                     </textField>
                                     <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vvk-xp-NJf">
-                                        <rect key="frame" x="317" y="100" width="38" height="30"/>
+                                        <rect key="frame" x="429.5" y="100" width="38" height="30"/>
                                         <inset key="insetFor6xAndEarlier" minX="0.0" minY="70" maxX="0.0" maxY="-70"/>
                                         <state key="normal" title="Login">
                                             <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
@@ -166,7 +163,7 @@
                                         </connections>
                                     </button>
                                     <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="LxN-nX-R7q">
-                                        <rect key="frame" x="20" y="106" width="127" height="18"/>
+                                        <rect key="frame" x="132.5" y="106" width="127" height="18"/>
                                         <inset key="insetFor6xAndEarlier" minX="0.0" minY="70" maxX="0.0" maxY="-70"/>
                                         <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                         <state key="normal" title="  Save password" image="unchecked_32">
@@ -175,7 +172,7 @@
                                         </state>
                                     </button>
                                     <activityIndicatorView hidden="YES" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" animating="YES" style="gray" translatesAutoresizingMaskIntoConstraints="NO" id="wIj-4p-xEI">
-                                        <rect key="frame" x="287" y="105" width="20" height="20"/>
+                                        <rect key="frame" x="399.5" y="105" width="20" height="20"/>
                                         <inset key="insetFor6xAndEarlier" minX="0.0" minY="70" maxX="0.0" maxY="-70"/>
                                     </activityIndicatorView>
                                 </subviews>
@@ -196,14 +193,14 @@
                                 </constraints>
                             </view>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Hzc-kg-csR">
-                                <rect key="frame" x="124.5" y="564" width="126" height="30"/>
+                                <rect key="frame" x="237" y="497" width="126" height="30"/>
                                 <state key="normal" title="Retrieve password"/>
                                 <connections>
                                     <action selector="RetrieveButtonClick:" destination="RGM-u2-C1G" eventType="touchUpInside" id="kKP-WL-fGb"/>
                                 </connections>
                             </button>
                             <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="apexlogo-2" translatesAutoresizingMaskIntoConstraints="NO" id="zKh-Ur-Gus">
-                                <rect key="frame" x="49.5" y="49" width="276" height="120"/>
+                                <rect key="frame" x="162" y="49" width="276" height="120"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="120" id="JPD-SD-EHj"/>
                                     <constraint firstAttribute="width" constant="276" id="oAG-Aj-MVG"/>
@@ -248,11 +245,11 @@
                         <viewControllerLayoutGuide type="bottom" id="6yV-PD-KCp"/>
                     </layoutGuides>
                     <view key="view" contentMode="scaleToFill" id="ifC-vl-u6I">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="18" sectionFooterHeight="18" translatesAutoresizingMaskIntoConstraints="NO" id="iIl-j9-7oa">
-                                <rect key="frame" x="0.0" y="50" width="375" height="568"/>
+                                <rect key="frame" x="0.0" y="50" width="600" height="501"/>
                                 <color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
                                 <inset key="separatorInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
                                 <connections>
@@ -261,7 +258,7 @@
                                 </connections>
                             </tableView>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3xo-DP-qWN">
-                                <rect key="frame" x="0.0" y="20" width="375" height="30"/>
+                                <rect key="frame" x="0.0" y="20" width="600" height="30"/>
                                 <subviews>
                                     <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Recently" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ouQ-Yg-iZI">
                                         <rect key="frame" x="10" y="5" width="66.5" height="21"/>
@@ -308,11 +305,11 @@
                         <viewControllerLayoutGuide type="bottom" id="NOX-Oo-aNI"/>
                     </layoutGuides>
                     <view key="view" contentMode="scaleToFill" id="MuK-Mj-PtU">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         <subviews>
                             <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" translatesAutoresizingMaskIntoConstraints="NO" id="t4w-1J-ZSQ">
-                                <rect key="frame" x="0.0" y="20" width="375" height="598"/>
+                                <rect key="frame" x="0.0" y="20" width="600" height="531"/>
                                 <color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <prototypes>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="tools" textLabel="tg4-Ox-UsK" style="IBUITableViewCellStyleDefault" id="tq0-wS-k0Y">
@@ -365,7 +362,7 @@
                         <viewControllerLayoutGuide type="bottom" id="Z0g-Fz-l0r"/>
                     </layoutGuides>
                     <view key="view" contentMode="scaleToFill" id="ggR-kU-S5e">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                     </view>
@@ -381,11 +378,11 @@
             <objects>
                 <viewController storyboardIdentifier="About" useStoryboardIdentifierAsRestorationIdentifier="YES" id="7fk-ll-nfY" customClass="AboutViewController" sceneMemberID="viewController">
                     <view key="view" contentMode="scaleToFill" id="kYm-r8-x3q">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         <subviews>
                             <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" scrollEnabled="NO" editable="NO" text="version:
Support:
usairedadt@united-us.net" textAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="qjb-87-KPo">
-                                <rect key="frame" x="0.0" y="20" width="375" height="647"/>
+                                <rect key="frame" x="0.0" y="20" width="600" height="580"/>
                                 <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
                                 <fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
                                 <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
@@ -420,7 +417,7 @@
                         <viewControllerLayoutGuide type="bottom" id="kHM-0E-Dsh"/>
                     </layoutGuides>
                     <view key="view" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" id="xU3-mF-FWx">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                     </view>
@@ -442,7 +439,7 @@
                         <viewControllerLayoutGuide type="bottom" id="NRY-LM-qAI"/>
                     </layoutGuides>
                     <view key="view" contentMode="scaleToFill" id="Ssf-nl-y6a">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         <subviews>
                             <imageView userInteractionEnabled="NO" contentMode="center" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="apexlogo-2" translatesAutoresizingMaskIntoConstraints="NO" id="kly-ZP-lFy">
@@ -453,7 +450,7 @@
                                 </constraints>
                             </imageView>
                             <webView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Abt-ML-WTx">
-                                <rect key="frame" x="0.0" y="76" width="375" height="591"/>
+                                <rect key="frame" x="0.0" y="76" width="600" height="524"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <connections>
                                     <outlet property="delegate" destination="0gA-6x-keH" id="ck1-Fk-zK6"/>
@@ -487,11 +484,11 @@
                         <viewControllerLayoutGuide type="bottom" id="2sz-FS-Gr9"/>
                     </layoutGuides>
                     <view key="view" contentMode="scaleToFill" id="uxr-eR-WO2">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         <subviews>
                             <tableView hidden="YES" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="65" sectionHeaderHeight="22" sectionFooterHeight="22" translatesAutoresizingMaskIntoConstraints="NO" id="RHV-m7-JCn">
-                                <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                                <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <prototypes>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="newsitem" rowHeight="65" id="65E-n4-LH6" customClass="NewsTableViewCell">
@@ -547,7 +544,7 @@
                                 </connections>
                             </tableView>
                             <activityIndicatorView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" animating="YES" style="whiteLarge" translatesAutoresizingMaskIntoConstraints="NO" id="Kgw-c0-JVW">
-                                <rect key="frame" x="169" y="315" width="37" height="37"/>
+                                <rect key="frame" x="281.5" y="281.5" width="37" height="37"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="37" id="BfA-aP-CFD"/>
                                     <constraint firstAttribute="height" constant="37" id="fGF-V4-WML"/>
@@ -583,19 +580,19 @@
                         <viewControllerLayoutGuide type="bottom" id="FpR-kZ-qvh"/>
                     </layoutGuides>
                     <view key="view" contentMode="scaleToFill" id="obf-ZQ-pbd">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         <subviews>
                             <tableView clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" allowsSelection="NO" rowHeight="82" sectionHeaderHeight="22" sectionFooterHeight="42" translatesAutoresizingMaskIntoConstraints="NO" id="ppj-4o-rzu">
-                                <rect key="frame" x="0.0" y="0.0" width="375" height="623"/>
+                                <rect key="frame" x="0.0" y="0.0" width="600" height="556"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <prototypes>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="item_date" rowHeight="82" id="mTz-zv-fyY" customClass="TableCellDate">
-                                        <rect key="frame" x="0.0" y="22" width="375" height="82"/>
+                                        <rect key="frame" x="0.0" y="22" width="600" height="82"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="mTz-zv-fyY" id="ExR-Af-j3g">
-                                            <rect key="frame" x="0.0" y="0.0" width="375" height="81.5"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="600" height="81.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="edit_from" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="From" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Fj7-9i-IJL">
@@ -611,7 +608,7 @@
                                                     </connections>
                                                 </textField>
                                                 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="edit_to" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="To" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="7An-ec-LnT">
-                                                    <rect key="frame" x="230" y="38" width="135" height="30"/>
+                                                    <rect key="frame" x="455" y="38" width="135" height="30"/>
                                                     <constraints>
                                                         <constraint firstAttribute="width" constant="135" id="9X7-Dw-ULj"/>
                                                     </constraints>
@@ -622,7 +619,7 @@
                                                     </connections>
                                                 </textField>
                                                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="item_date" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="siE-GW-KiJ">
-                                                    <rect key="frame" x="10" y="10" width="355" height="21"/>
+                                                    <rect key="frame" x="10" y="10" width="580" height="21"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                                     <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                                     <nil key="highlightedColor"/>
@@ -645,20 +642,20 @@
                                         </connections>
                                     </tableViewCell>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="item_bool" rowHeight="82" id="cff-AI-2yS" customClass="TableCellBool">
-                                        <rect key="frame" x="0.0" y="104" width="375" height="82"/>
+                                        <rect key="frame" x="0.0" y="104" width="600" height="82"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="cff-AI-2yS" id="78g-DF-IJU">
-                                            <rect key="frame" x="0.0" y="0.0" width="342" height="81.5"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="567" height="81.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="item_bool" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="94I-uG-uW7">
-                                                    <rect key="frame" x="10" y="10" width="322" height="21"/>
+                                                    <rect key="frame" x="10" y="10" width="547" height="21"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                                     <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                                     <nil key="highlightedColor"/>
                                                 </label>
                                                 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="XF6-7j-X0s">
-                                                    <rect key="frame" x="10" y="0.0" width="322" height="81"/>
+                                                    <rect key="frame" x="10" y="0.0" width="547" height="81"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                                     <state key="normal" title="Not set">
                                                         <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
@@ -685,20 +682,20 @@
                                         </connections>
                                     </tableViewCell>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="item_edit" rowHeight="82" id="wQN-d1-kMW" customClass="TableCellEdit">
-                                        <rect key="frame" x="0.0" y="186" width="375" height="82"/>
+                                        <rect key="frame" x="0.0" y="186" width="600" height="82"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="wQN-d1-kMW" id="3St-ZX-jbo">
-                                            <rect key="frame" x="0.0" y="0.0" width="375" height="81.5"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="600" height="81.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="item_edit" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5yL-Qn-keV">
-                                                    <rect key="frame" x="10" y="10" width="355" height="21"/>
+                                                    <rect key="frame" x="10" y="10" width="580" height="21"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                                     <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                                     <nil key="highlightedColor"/>
                                                 </label>
                                                 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Enter criterion" minimumFontSize="17" clearButtonMode="always" translatesAutoresizingMaskIntoConstraints="NO" id="3xs-xH-AbW">
-                                                    <rect key="frame" x="10" y="38" width="355" height="30"/>
+                                                    <rect key="frame" x="10" y="38" width="580" height="30"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                                     <textInputTraits key="textInputTraits" returnKeyType="done"/>
                                                     <connections>
@@ -727,12 +724,12 @@
                                 </connections>
                             </tableView>
                             <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="FYC-YO-04g">
-                                <rect key="frame" x="0.0" y="623" width="375" height="44"/>
+                                <rect key="frame" x="0.0" y="556" width="600" height="44"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
                                 <items>
                                     <barButtonItem style="plain" id="bX6-SA-fCQ">
                                         <button key="customView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="q98-Ul-Lg7">
-                                            <rect key="frame" x="16" y="7" width="36" height="30"/>
+                                            <rect key="frame" x="20" y="7" width="36" height="30"/>
                                             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                             <state key="normal" title="Clear">
                                                 <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
@@ -745,7 +742,7 @@
                                     <barButtonItem systemItem="flexibleSpace" id="DPL-8Q-HwA"/>
                                     <barButtonItem style="plain" id="VRS-1z-M9u">
                                         <button key="customView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="azJ-db-8ce">
-                                            <rect key="frame" x="311" y="7" width="48" height="30"/>
+                                            <rect key="frame" x="532" y="7" width="48" height="30"/>
                                             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                             <state key="normal" title="Search">
                                                 <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
@@ -778,17 +775,17 @@
         <!--Result-->
         <scene sceneID="J6y-Nq-tW6">
             <objects>
-                <viewController storyboardIdentifier="ResultViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="onS-nu-zaO" customClass="ResultViewController" sceneMemberID="viewController">
+                <viewController storyboardIdentifier="ResultViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="onS-nu-zaO" customClass="GridResultViewController" sceneMemberID="viewController">
                     <layoutGuides>
                         <viewControllerLayoutGuide type="top" id="pRL-BH-OpY"/>
                         <viewControllerLayoutGuide type="bottom" id="myi-Th-psK"/>
                     </layoutGuides>
                     <view key="view" contentMode="scaleToFill" id="nCN-Lb-GMK">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         <subviews>
                             <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="HZ1-FP-IVf" customClass="SimpleGrid">
-                                <rect key="frame" x="0.0" y="0.0" width="375" height="623"/>
+                                <rect key="frame" x="0.0" y="0.0" width="600" height="556"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             </scrollView>
@@ -798,12 +795,12 @@
                                 <color key="color" red="0.40000000600000002" green="0.80000001190000003" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             </activityIndicatorView>
                             <toolbar opaque="NO" clearsContextBeforeDrawing="NO" tag="301" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="vGm-Oy-R6j">
-                                <rect key="frame" x="0.0" y="623" width="375" height="44"/>
+                                <rect key="frame" x="0.0" y="556" width="600" height="44"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
                                 <items>
                                     <barButtonItem style="plain" id="BxS-sd-Ww4">
                                         <button key="customView" opaque="NO" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="MDg-tk-V9T">
-                                            <rect key="frame" x="16" y="5.5" width="73" height="33"/>
+                                            <rect key="frame" x="20" y="5.5" width="73" height="33"/>
                                             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                             <state key="normal" title="Pre Page">
                                                 <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
@@ -818,7 +815,7 @@
                                     <barButtonItem style="plain" systemItem="flexibleSpace" id="bLa-H3-XMT"/>
                                     <barButtonItem style="plain" id="F78-3m-Pcr">
                                         <button key="customView" opaque="NO" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="ta5-UY-kET">
-                                            <rect key="frame" x="286" y="5.5" width="73" height="33"/>
+                                            <rect key="frame" x="507" y="5.5" width="73" height="33"/>
                                             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                             <state key="normal" title="Next Page">
                                                 <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
@@ -861,7 +858,7 @@
                         <viewControllerLayoutGuide type="bottom" id="kXc-Ph-sWh"/>
                     </layoutGuides>
                     <view key="view" contentMode="scaleToFill" id="utH-2m-x08">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         <subviews>
                             <activityIndicatorView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" animating="YES" style="whiteLarge" translatesAutoresizingMaskIntoConstraints="NO" id="w7y-tI-BLn">
@@ -870,16 +867,16 @@
                                 <color key="color" red="0.40000000600000002" green="0.80000001190000003" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             </activityIndicatorView>
                             <tableView hidden="YES" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" translatesAutoresizingMaskIntoConstraints="NO" id="TxA-8D-Obq">
-                                <rect key="frame" x="0.0" y="65" width="375" height="602"/>
+                                <rect key="frame" x="0.0" y="65" width="600" height="535"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <color key="sectionIndexColor" red="0.88766825199999999" green="0.88764166830000002" blue="0.88765668870000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <prototypes>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="tableitemmsg" id="80c-yE-rdF" customClass="MessageItem">
-                                        <rect key="frame" x="0.0" y="22" width="375" height="44"/>
+                                        <rect key="frame" x="0.0" y="22" width="600" height="44"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="80c-yE-rdF" id="C2c-BR-X3b">
-                                            <rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vQR-pc-5xk">
@@ -936,23 +933,23 @@
                         <viewControllerLayoutGuide type="bottom" id="a4H-ec-9Dk"/>
                     </layoutGuides>
                     <view key="view" contentMode="scaleToFill" id="g6Y-DB-Hod">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         <subviews>
                             <tableView clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="65" sectionHeaderHeight="22" sectionFooterHeight="22" translatesAutoresizingMaskIntoConstraints="NO" id="Dw1-MH-d07">
-                                <rect key="frame" x="0.0" y="64" width="375" height="559"/>
+                                <rect key="frame" x="0.0" y="64" width="600" height="492"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <prototypes>
                                     <tableViewCell contentMode="scaleToFill" restorationIdentifier="cell_item_history" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="cell_item_history" rowHeight="65" id="KUP-Am-SEU" customClass="CellItemHistory">
-                                        <rect key="frame" x="0.0" y="22" width="375" height="65"/>
+                                        <rect key="frame" x="0.0" y="22" width="600" height="65"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KUP-Am-SEU" id="Hb4-Tl-jhw">
-                                            <rect key="frame" x="0.0" y="0.0" width="375" height="64.5"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="600" height="64.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="name" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Uow-re-de3">
-                                                    <rect key="frame" x="85" y="5" width="280" height="21"/>
+                                                    <rect key="frame" x="85" y="5" width="505" height="21"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="18"/>
                                                     <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                                     <nil key="highlightedColor"/>
@@ -965,7 +962,7 @@
                                                     </constraints>
                                                 </imageView>
                                                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="time" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RJz-KQ-Fv2">
-                                                    <rect key="frame" x="85" y="36" width="280" height="17"/>
+                                                    <rect key="frame" x="85" y="36" width="505" height="17"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                                     <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
                                                     <nil key="highlightedColor"/>
@@ -1010,29 +1007,29 @@
                         <viewControllerLayoutGuide type="bottom" id="Be3-Yr-CdQ"/>
                     </layoutGuides>
                     <view key="view" contentMode="scaleToFill" id="UNP-Bt-ggi">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         <subviews>
                             <tableView clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="65" sectionHeaderHeight="22" sectionFooterHeight="22" translatesAutoresizingMaskIntoConstraints="NO" id="czc-uu-ydi">
-                                <rect key="frame" x="0.0" y="0.0" width="375" height="647"/>
+                                <rect key="frame" x="0.0" y="0.0" width="600" height="580"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <prototypes>
                                     <tableViewCell contentMode="scaleToFill" restorationIdentifier="cell_item_history" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="cell_item_history" rowHeight="65" id="x3V-Ev-KXe" customClass="CellItemHistory">
-                                        <rect key="frame" x="0.0" y="22" width="375" height="65"/>
+                                        <rect key="frame" x="0.0" y="22" width="600" height="65"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="x3V-Ev-KXe" id="8TO-KO-16G">
-                                            <rect key="frame" x="0.0" y="0.0" width="375" height="64.5"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="600" height="64.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="name" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tp8-Ek-fGC">
-                                                    <rect key="frame" x="85" y="5" width="280" height="21"/>
+                                                    <rect key="frame" x="85" y="5" width="505" height="21"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="18"/>
                                                     <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                                     <nil key="highlightedColor"/>
                                                 </label>
                                                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="time" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nzO-0Q-mKW">
-                                                    <rect key="frame" x="85" y="36" width="280" height="17"/>
+                                                    <rect key="frame" x="85" y="36" width="505" height="17"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                                     <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
                                                     <nil key="highlightedColor"/>
@@ -1088,23 +1085,23 @@
                         <viewControllerLayoutGuide type="bottom" id="rM1-Ya-3bY"/>
                     </layoutGuides>
                     <view key="view" contentMode="scaleToFill" id="ZRM-ao-20K">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         <subviews>
                             <tableView clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" translatesAutoresizingMaskIntoConstraints="NO" id="QAF-Zi-uoj">
-                                <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                                <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <prototypes>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="documentitem" textLabel="2vf-O6-CXq" imageView="vJN-YF-dbw" style="IBUITableViewCellStyleDefault" id="fFD-VO-CKz">
-                                        <rect key="frame" x="0.0" y="22" width="375" height="44"/>
+                                        <rect key="frame" x="0.0" y="22" width="600" height="44"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="fFD-VO-CKz" id="IND-eh-Wg5">
-                                            <rect key="frame" x="0.0" y="0.0" width="342" height="43.5"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="567" height="43.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Title" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="2vf-O6-CXq">
-                                                    <rect key="frame" x="74" y="0.0" width="266" height="43.5"/>
+                                                    <rect key="frame" x="74" y="0.0" width="491" height="43.5"/>
                                                     <autoresizingMask key="autoresizingMask"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="18"/>
                                                     <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
@@ -1143,11 +1140,11 @@
                         <viewControllerLayoutGuide type="bottom" id="oJN-0J-fi0"/>
                     </layoutGuides>
                     <view key="view" contentMode="scaleToFill" id="XVG-tV-s5j">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         <subviews>
                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Old password *required" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="XR8-ML-teu">
-                                <rect key="frame" x="10" y="30" width="355" height="30"/>
+                                <rect key="frame" x="10" y="30" width="580" height="30"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="30" id="wVN-P8-uR2"/>
                                 </constraints>
@@ -1159,7 +1156,7 @@
                                 </connections>
                             </textField>
                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Confirm new password *required" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="x3N-fn-QfS">
-                                <rect key="frame" x="10" y="110" width="355" height="30"/>
+                                <rect key="frame" x="10" y="110" width="580" height="30"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="30" id="xoj-pD-tGz"/>
                                 </constraints>
@@ -1183,7 +1180,7 @@
                                 </connections>
                             </button>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="EZm-dC-lQ4">
-                                <rect key="frame" x="312" y="150" width="53" height="30"/>
+                                <rect key="frame" x="537" y="150" width="53" height="30"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="30" id="xac-v9-MaN"/>
                                 </constraints>
@@ -1196,12 +1193,12 @@
                                 </connections>
                             </button>
                             <activityIndicatorView hidden="YES" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" animating="YES" style="whiteLarge" translatesAutoresizingMaskIntoConstraints="NO" id="hjm-ij-Anz">
-                                <rect key="frame" x="169" y="315" width="37" height="37"/>
+                                <rect key="frame" x="281.5" y="281.5" width="37" height="37"/>
                                 <inset key="insetFor6xAndEarlier" minX="0.0" minY="60" maxX="0.0" maxY="-60"/>
                                 <color key="color" red="0.40000000600000002" green="0.80000001190000003" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             </activityIndicatorView>
                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="New password *required" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="oiA-1a-FH6">
-                                <rect key="frame" x="10" y="70" width="355" height="30"/>
+                                <rect key="frame" x="10" y="70" width="580" height="30"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="30" id="vO4-mR-qW6"/>
                                 </constraints>
@@ -1256,23 +1253,23 @@
                         <viewControllerLayoutGuide type="bottom" id="Ywt-1O-7AV"/>
                     </layoutGuides>
                     <view key="view" contentMode="scaleToFill" id="VfZ-Dv-e9a">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         <subviews>
                             <tableView clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" restorationIdentifier="field" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" allowsSelectionDuringEditing="YES" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" translatesAutoresizingMaskIntoConstraints="NO" id="iXC-3g-FEF">
-                                <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                                <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <prototypes>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="field" textLabel="4Dk-AL-yOW" style="IBUITableViewCellStyleDefault" id="RIX-gb-GVS">
-                                        <rect key="frame" x="0.0" y="22" width="375" height="44"/>
+                                        <rect key="frame" x="0.0" y="22" width="600" height="44"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="RIX-gb-GVS" id="0R9-wZ-hpp">
-                                            <rect key="frame" x="0.0" y="0.0" width="375" height="43.5"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="4Dk-AL-yOW">
-                                                    <rect key="frame" x="15" y="0.0" width="345" height="43.5"/>
+                                                    <rect key="frame" x="15" y="0.0" width="570" height="43.5"/>
                                                     <autoresizingMask key="autoresizingMask"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="18"/>
                                                     <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
@@ -1315,11 +1312,11 @@
                         <viewControllerLayoutGuide type="bottom" id="pzr-t6-dCp"/>
                     </layoutGuides>
                     <view key="view" contentMode="scaleToFill" id="qVj-DC-yAZ">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         <subviews>
                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="User name" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="rNA-kt-gF6">
-                                <rect key="frame" x="47.5" y="53" width="280" height="30"/>
+                                <rect key="frame" x="160" y="53" width="280" height="30"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="280" id="VTi-sA-ndN"/>
                                     <constraint firstAttribute="height" constant="30" id="gwM-Ix-uwv"/>
@@ -1331,7 +1328,7 @@
                                 </connections>
                             </textField>
                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Email" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="zBl-3h-h8W">
-                                <rect key="frame" x="47.5" y="88" width="280" height="30"/>
+                                <rect key="frame" x="160" y="88" width="280" height="30"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="30" id="xOt-sd-Dhl"/>
                                     <constraint firstAttribute="width" constant="280" id="zcB-7b-J36"/>
@@ -1343,7 +1340,7 @@
                                 </connections>
                             </textField>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="gha-2I-ENG">
-                                <rect key="frame" x="47" y="128" width="48" height="30"/>
+                                <rect key="frame" x="159.5" y="128" width="48" height="30"/>
                                 <state key="normal" title="Cancel">
                                     <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 </state>
@@ -1352,7 +1349,7 @@
                                 </connections>
                             </button>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="oJM-ge-k0D">
-                                <rect key="frame" x="297" y="128" width="30" height="30"/>
+                                <rect key="frame" x="409.5" y="128" width="30" height="30"/>
                                 <state key="normal" title="Ok">
                                     <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 </state>
@@ -1361,12 +1358,12 @@
                                 </connections>
                             </button>
                             <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Retrieve Password" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MGf-17-Sft">
-                                <rect key="frame" x="109.5" y="25" width="156.5" height="23"/>
+                                <rect key="frame" x="222" y="25" width="156.5" height="23"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="19"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <activityIndicatorView hidden="YES" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" animating="YES" style="whiteLarge" translatesAutoresizingMaskIntoConstraints="NO" id="Fkr-8L-6gA">
-                                <rect key="frame" x="169" y="315" width="37" height="37"/>
+                                <rect key="frame" x="281.5" y="281.5" width="37" height="37"/>
                                 <color key="color" red="0.40000000600000002" green="0.80000001190000003" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             </activityIndicatorView>
                         </subviews>
@@ -1408,11 +1405,11 @@
                         <viewControllerLayoutGuide type="bottom" id="FaQ-xe-e1Q"/>
                     </layoutGuides>
                     <view key="view" contentMode="scaleToFill" id="jIR-1G-8HO">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         <subviews>
                             <webView contentMode="scaleToFill" fixedFrame="YES" allowsInlineMediaPlayback="NO" mediaPlaybackRequiresUserAction="NO" mediaPlaybackAllowsAirPlay="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oc3-xQ-e3B">
-                                <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+                                <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <dataDetectorType key="dataDetectorTypes"/>
@@ -1431,6 +1428,153 @@
             </objects>
             <point key="canvasLocation" x="5535" y="-1700"/>
         </scene>
+        <!--Detail Page View Controller-->
+        <scene sceneID="c1r-Rd-mhp">
+            <objects>
+                <viewController storyboardIdentifier="DetailPageViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="Soi-pH-xW6" customClass="DetailPageViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="gd4-2b-xmy"/>
+                        <viewControllerLayoutGuide type="bottom" id="WfC-yf-L95"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="Sml-Qx-H9e">
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <activityIndicatorView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" animating="YES" style="whiteLarge" translatesAutoresizingMaskIntoConstraints="NO" id="Cs2-5V-Ius">
+                                <rect key="frame" x="142" y="265" width="37" height="37"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="64" maxX="0.0" maxY="-64"/>
+                                <color key="color" red="0.40000000600000002" green="0.80000001190000003" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            </activityIndicatorView>
+                            <label hidden="YES" opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="No record in this page" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AKO-ni-aUG">
+                                <rect key="frame" x="0.0" y="64" width="600" height="21"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+                                <color key="backgroundColor" red="0.1019607843" green="0.67843137249999996" blue="0.94117647059999998" alpha="0.69999999999999996" colorSpace="custom" customColorSpace="sRGB"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="64" maxX="0.0" maxY="-64"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <tableView clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" allowsSelection="NO" rowHeight="-1" sectionHeaderHeight="22" sectionFooterHeight="22" translatesAutoresizingMaskIntoConstraints="NO" id="mia-XC-A8d">
+                                <rect key="frame" x="0.0" y="64" width="600" height="492"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <inset key="insetFor6xAndEarlier" minX="0.0" minY="64" maxX="0.0" maxY="44"/>
+                                <color key="separatorColor" red="0.40000000600000002" green="0.80000001190000003" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <inset key="separatorInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
+                                <prototypes>
+                                    <tableViewCell tag="1" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="detail_item_tracking" rowHeight="64" id="OoD-Qf-0BP" customClass="DetailCellTracking">
+                                        <rect key="frame" x="0.0" y="22" width="600" height="64"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="OoD-Qf-0BP" id="8tS-jl-4gn">
+                                            <rect key="frame" x="0.0" y="0.0" width="600" height="63.5"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8An-KQ-ebO">
+                                                    <rect key="frame" x="15" y="7" width="48" height="48"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                </imageView>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iLz-Ev-4DJ">
+                                                    <rect key="frame" x="71" y="11" width="289" height="42"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                            </subviews>
+                                        </tableViewCellContentView>
+                                        <connections>
+                                            <outlet property="trackingIcon" destination="8An-KQ-ebO" id="TLj-JX-Zoe"/>
+                                            <outlet property="trackingMsg" destination="iLz-Ev-4DJ" id="cSv-Jr-OYG"/>
+                                        </connections>
+                                    </tableViewCell>
+                                    <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="detail_item_list" id="mmm-lx-xXJ" customClass="DetailCellList">
+                                        <rect key="frame" x="0.0" y="86" width="600" height="44"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="mmm-lx-xXJ" id="q9z-Ac-77Z">
+                                            <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Fv6-ui-cri">
+                                                    <rect key="frame" x="20" y="11" width="280" height="21"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxY="YES"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                            </subviews>
+                                        </tableViewCellContentView>
+                                        <color key="backgroundColor" red="0.9452269673" green="0.9452269673" blue="0.9452269673" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <connections>
+                                            <outlet property="listLabel" destination="Fv6-ui-cri" id="ee6-GK-EOJ"/>
+                                        </connections>
+                                    </tableViewCell>
+                                    <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="detail_item_kv" id="AYO-lZ-eor" customClass="DetailCellKV">
+                                        <rect key="frame" x="0.0" y="130" width="600" height="44"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="AYO-lZ-eor" id="VZB-eb-sJm">
+                                            <rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="n69-9u-Nfw">
+                                                    <rect key="frame" x="0.0" y="0.0" width="148" height="43"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ozh-8v-gaC" customClass="RTLabel">
+                                                    <rect key="frame" x="150" y="11" width="160" height="22"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                    <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                </view>
+                                            </subviews>
+                                            <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                        </tableViewCellContentView>
+                                        <connections>
+                                            <outlet property="keyLabel" destination="n69-9u-Nfw" id="QKt-Fp-RDX"/>
+                                            <outlet property="valLabel" destination="ozh-8v-gaC" id="8DP-Pm-5FM"/>
+                                        </connections>
+                                    </tableViewCell>
+                                    <tableViewCell tag="1" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="detail_item_web" rowHeight="164" id="BGQ-aG-f1B" customClass="DetailCellWeb">
+                                        <rect key="frame" x="0.0" y="174" width="600" height="164"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="BGQ-aG-f1B" id="pJM-s3-5O7">
+                                            <rect key="frame" x="0.0" y="0.0" width="600" height="163.5"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <webView contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="a2k-TN-pCa">
+                                                    <rect key="frame" x="0.0" y="0.0" width="600" height="163"/>
+                                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                                    <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                    <dataDetectorType key="dataDetectorTypes" link="YES"/>
+                                                    <connections>
+                                                        <outlet property="delegate" destination="Soi-pH-xW6" id="ZUl-4c-C2n"/>
+                                                    </connections>
+                                                </webView>
+                                            </subviews>
+                                        </tableViewCellContentView>
+                                        <connections>
+                                            <outlet property="webView" destination="a2k-TN-pCa" id="lN3-e4-97T"/>
+                                        </connections>
+                                    </tableViewCell>
+                                </prototypes>
+                                <connections>
+                                    <outlet property="dataSource" destination="Soi-pH-xW6" id="fR8-eB-8kp"/>
+                                    <outlet property="delegate" destination="Soi-pH-xW6" id="uRk-k5-qS1"/>
+                                </connections>
+                            </tableView>
+                        </subviews>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    </view>
+                    <connections>
+                        <outlet property="mum" destination="Cs2-5V-Ius" id="vFR-HN-dsS"/>
+                        <outlet property="norecordLabel" destination="AKO-ni-aUG" id="Th4-ki-ogc"/>
+                        <outlet property="table" destination="mia-XC-A8d" id="CDM-Ek-Tva"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="Uve-fq-Ffe" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="2312.8000000000002" y="1046.6266866566718"/>
+        </scene>
     </scenes>
     <resources>
         <image name="apexlogo-2" width="129" height="32"/>

+ 19 - 11
Apex Mobile/Apex Mobile/RANetwork.m

@@ -18,11 +18,7 @@
 {
     
     
-    
-    
-    //    NSString* e=[AESCrypt AES128Encrypt:@"密码学中的高级加密标准(Advanced Encryption Standard,AES),又称 高级加密标准Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院 (NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。 " key:@"usai2010"];
-    //    DebugLog(e);
-    //    NSString* d=[AESCrypt decrypt:@"VzB4+lENfbzWX7ggHh2Os1P69l5YBzKmM51yqA37AfoKgPY8bJgdK8M4WvF+wDyOsLWP\/o8H5+bHMivQp1u8wM2QV7SYzgzPwV85QKtYWIzEgLe9T0HO69EdutWz7k1rdAT\/mftsRin0Hy5SHk7txTZT\/zPH5X+FQiExCTFm5Zus39HYvp+VxCX4+kYeymn8B63AUd3mRQyscUvDjfgU2olKR\/TP8PV3g+VQMZxpKfol3P1iOtz3XQlHZV0pM6SAf+SwT0sPfrdn6CZFfNQlrKA9QjMrnBdMeSCquSIWXnmLv6okzvnlJnT0SjvJuUeqNdBC5EZ0ACnhI0MrXVZEsq1EuM9al7oPzvU5EZbjZpmx+fSFIkMzTT8bYClTnG1bsL1MCcU4pSODDorUj8zalA==" password:@"usai2010"];
+
     params = [self prepare_addtional_params:params];
     
     return [super get_json:url parameters:params file:file err_recorder:URL_ERR_LOG result_handler:^NSMutableDictionary *(NSMutableDictionary *jsobj) {
@@ -37,16 +33,16 @@
             case 1:
                 [jsobj setValue:MSG_ERROR forKey:@"err_msg"];
                 break;
-            case 2:
+            case RESULT_TRUE:
                 [jsobj setValue:MSG_SUCCESS forKey:@"err_msg"];
                 break;
-            case 8:
-                [jsobj setValue:[jsobj valueForKey:@"msg"] forKey:@"err_msg"];
-                break;
+//            case 8:
+//                [jsobj setValue:[jsobj valueForKey:@"msg"] forKey:@"err_msg"];
+//                break;
             case 9:
                 [jsobj setValue:[jsobj valueForKey:@"msg"] forKey:@"err_msg"];
                 break;
-            case 99:
+            case RESULT_TIMEOUT:
                 [jsobj setValue:MSG_TIMEOUT forKey:@"err_msg"];
                 break;
             default:
@@ -85,7 +81,10 @@
     if(appDelegate.password!=nil&& params[@"pwd"] == nil)
         [params setValue:[AESCrypt AES128Encrypt:appDelegate.password key:@"Usai2010"] forKey:@"pwd"];
     
-    
+    if(appDelegate.user!=nil && params[@"user"] == nil)
+        [params setValue:appDelegate.user  forKey:@"user"];
+    if(appDelegate.password!=nil&& params[@"pwd"] == nil)
+        [params setValue:appDelegate.password  forKey:@"pwd"];
     
     [params setValue:appDelegate.build forKey:@"app_ver"];
     
@@ -456,6 +455,15 @@
             
         }
         
+        
+        if([params[@"action_type"] isEqualToString:@"Tracking"])
+        {
+            NSString *path = [[NSBundle mainBundle] pathForResource:@"fake_tracking.json" ofType:nil];
+            NSData *data = [[NSData alloc] initWithContentsOfFile:path];
+            NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
+            jsobj = json;
+        }
+        
         int count =[[jsobj valueForKey:@"count"] intValue];
         detailContent.result_code = RESULT_TRUE;
         if(count==0)

+ 2 - 2
Apex Mobile/Apex Mobile/SearchViewController.m

@@ -7,7 +7,7 @@
 //
  
 #import "SearchViewController.h"
-#import "ResultViewController.h"
+#import "GridResultViewController.h"
 #import "SearchTableAdapter.h"
 //#import "DB_Field.h"
 #import "TableCellEdit.h"
@@ -314,7 +314,7 @@
 
 - (IBAction)SearchBtnOnClick:(UIButton *)sender {
     
-    ResultViewController *resultViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"ResultViewController"];
+    GridResultViewController *resultViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"ResultViewController"];
     resultViewController.function_name = self.function_name;
 //    if([self.function_name isEqualToString:@"Document Download"])
 //        resultViewController.fullrow_select =false;

+ 1 - 0
Apex Mobile/Apex Mobile/ShipingStatusCell.m

@@ -100,6 +100,7 @@
     
 //        cell.imageView.image = ;
     if (icon) {
+        self.iconView.tintColor=UIColorFromRGB(0x1e7ffb);
         self.iconView.image = [[UIImage imageNamed:icon] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];//[UIImage imageNamed:icon];
     } else {
         self.iconView.image = nil;

+ 1 - 1
Apex Mobile/Apex Mobile/const.h

@@ -87,7 +87,7 @@
 
 #define RESULT_FALSE 0
 #define RESULT_NO_RESPONSE 1
-#define RESULT_TRUE         -1
+#define RESULT_TRUE         2
 #define RESULT_NO_EMAIL_ADDRESS      3
 #define RESULT_NET_SERVER_ERR         -111
 #define RESULT_NET_ERROR             -3

+ 250 - 0
Apex Mobile/Apex Mobile/fake_search.json

@@ -0,0 +1,250 @@
+{
+    "result": 2,
+    "menu": [
+             {
+             "title": "Export 1",
+             "action": "download",
+             "url": "xxx"
+             },
+             {
+             "title": "Export 2",
+             "action": "download",
+             "url": "xxx"
+             },
+             {
+             "title": "Save",
+             "action": "save"
+             }
+             ],
+    "row_action": [
+                   {
+                   "title": "demo title",
+                   "module0": "quick_look",
+                   "module1": "kv_detail",
+                   "module": "order_detail",
+                   "url": "http://1.1.1.1",
+                   "params": {
+                   "order#": 0
+                   }
+                   }
+                   ],
+    "data": {
+        "count": 17,
+        "item_0": [
+                   "<b></b>",
+                   "<b>def</b>",
+                   "$ 123.45",
+                   "43",
+                   "metal table with 4 chairs"
+                   ],
+        "item_1": [
+                   "2",
+                   "315318",
+                   "$ 99.49",
+                   "13",
+                   "WOOD table with 4 chairs"
+                   ],
+        "item_2": [
+                   "3",
+                   "7033566",
+                   "$ 13.45",
+                   "57",
+                   "bed"
+                   ],
+        "item_3": [
+                   "4",
+                   "8533-UVR",
+                   "$ 1123.45",
+                   "143",
+                   "<b>Desk</b> & chair UILongPressGestureRecognizer *longPress"
+                   ],
+        "item_4": [
+                   "1",
+                   "8533-UPK",
+                   "$ 123.45",
+                   "43",
+                   "metal table with 4 chairs"
+                   ],
+        "item_5": [
+                   "2",
+                   "315318",
+                   "$ 99.49",
+                   "13",
+                   "WOOD table with 4 chairs"
+                   ],
+        "item_6": [
+                   "3",
+                   "7033566",
+                   "$ 13.45",
+                   "57",
+                   "bed"
+                   ],
+        "item_7": [
+                   "4",
+                   "8533-UVR",
+                   "$ 1123.45",
+                   "143",
+                   "Desk & chair UILongPressGestureRecognizer *longPress"
+                   ],
+        "item_8": [
+                   "1",
+                   "8533-UPK",
+                   "$ 123.45",
+                   "43",
+                   "metal table with 4 chairs"
+                   ],
+        "item_9": [
+                   "2",
+                   "315318",
+                   "$ 99.49",
+                   "13",
+                   "WOOD table with 4 chairs"
+                   ],
+        "item_10": [
+                    "3",
+                    "7033566",
+                    "$ 13.45",
+                    "57",
+                    "bed"
+                    ],
+        "item_11": [
+                    "1",
+                    "8533-UPK",
+                    "$ 123.45",
+                    "43",
+                    "metal table with 4 chairs"
+                    ],
+        "item_12": [
+                    "2",
+                    "315318",
+                    "$ 99.49",
+                    "13",
+                    "WOOD table with 4 chairs"
+                    ],
+        "item_13": [
+                    "3",
+                    "7033566",
+                    "$ 13.45",
+                    "57",
+                    "bed"
+                    ],
+        "item_14": [
+                    "1",
+                    "8533-UPK",
+                    "$ 123.45",
+                    "43",
+                    "metal table with 4 chairs"
+                    ],
+        "item_15": [
+                    "2",
+                    "315318",
+                    "$ 99.49",
+                    "13",
+                    "WOOD table with 4 chairs"
+                    ],
+        "item_16": [
+                    "3",
+                    "7033566",
+                    "$ 13.45",
+                    "57",
+                    "bed"
+                    ]
+    },
+    "layout": {
+        "header": {
+            "width": 810,
+            "height": 44,
+            "margin_r": 10,
+            "margin_l": 10,
+            "margin_t": 10,
+            "margin_b": 10,
+            "bg_color": "0x123456",
+            "f_color": "0x987654",
+            "col": [
+                    {
+                    "width": 100,
+                    "name": "id",
+                    "h_align": "center",
+                    "v_center": "center",
+                    "bg_color": "0x123456",
+                    "f_color": "0x654321"
+                    },
+                    {
+                    "width": 160,
+                    "name": "model",
+                    "h_align": "center",
+                    "v_center": "center",
+                    "bg_color": "0x123456",
+                    "f_color": "0x654321"
+                    },
+                    {
+                    "width": 180,
+                    "name": "price",
+                    "h_align": "center",
+                    "v_center": "center",
+                    "bg_color": "0x123456",
+                    "f_color": "0x654321"
+                    },
+                    {
+                    "width": 120,
+                    "name": "stock",
+                    "h_align": "center",
+                    "v_center": "center",
+                    "bg_color": "0x123456",
+                    "f_color": "0x654321"
+                    },
+                    {
+                    "width": 250,
+                    "name": "description",
+                    "h_align": "center",
+                    "v_center": "center",
+                    "bg_color": "0x123456",
+                    "f_color": "0x654321"
+                    }
+                    ]
+        },
+        "row": {
+            "height": 44,
+            "f_color": "0x654321",
+            "color_0": "0xffffff",
+            "color_1": "0x666666",
+            "val": [
+                    {
+                    "type": "image",
+                    "h_align": "center",
+                    "v_center": "center",
+                    "bg_color": "0x123456",
+                    "f_color": "0x654321"
+                    },
+                    {
+                    "type": "text",
+                    "h_align": "center",
+                    "v_center": "center",
+                    "bg_color": "0x123456",
+                    "f_color": "0x654321"
+                    },
+                    {
+                    "type": "text",
+                    "h_align": "center",
+                    "v_center": "center",
+                    "bg_color": "0x123456",
+                    "f_color": "0x654321"
+                    },
+                    {
+                    "type": "text",
+                    "h_align": "center",
+                    "v_center": "center",
+                    "bg_color": "0x123456",
+                    "f_color": "0x654321"
+                    },
+                    {
+                    "type": "text",
+                    "h_align": "center",
+                    "v_center": "center",
+                    "bg_color": "0x123456",
+                    "f_color": "0x654321"
+                    }
+                    ]
+        }
+    }
+}

+ 53 - 0
Apex Mobile/Apex Mobile/fake_tracking.json

@@ -0,0 +1,53 @@
+{
+    "result": 2,
+    "group0": {
+        "_name": "General Info",
+        "_type": "mapping",
+        "count": 8,
+        "item0": {
+            "H_BOL": "A1802310244"
+        },
+        "item1": {
+            "ETD": "2018-02-01"
+        },
+        "item2": {
+            "ETA": "2018-02-20"
+        },
+        "item3": {
+            "Place_Of_Receipt": "BANGKOK,  THAILAND"
+        },
+        "item4": {
+            "Port_Of_Loading": "LAEM CHABANG, THAILAND"
+        },
+        "item5": {
+            "Port_Of_Discharge": "NHAVA SHEVA,INDIA."
+        },
+        "item6": {
+            "Place_Of_Delivery": "NHAVA SHEVA,INDIA."
+        },
+        "item7": {
+            "Tracing on the carrier website": "HTTP://WWW.MOLPOWER.COM/HTM/DEFAULT.HTM"
+        }
+    },
+    "group1": {
+        "_name": "Container NO : TRHU2473608",
+        "_type": "tracking",
+        "count": 3,
+        "item0": {
+            "icon": "status_delivery",
+            "msg": "tracking message 3 bla bla bla bla bla 12/25/2017 18:23:35",
+            "time": "12/25/2017 18:23:35"
+        },
+        "item1": {
+            "icon": "status_load_vessel",
+            "msg": "tracking message 2 bla bla bla 12/22/2017 18:23:35",
+            "time": "12/22/2017 18:23:35"
+        },
+        "item2": {
+            "icon": "status_departport",
+            "msg": "tracking message 1 bla bla bla bla 12/20/2017 18:23:35",
+            "time": "12/20/2017 18:23:35"
+        }
+    },
+    "count": 2
+}

+ 240 - 236
RedAnt Mobile/RedAnt Mobile/ResultViewController.m

@@ -13,8 +13,8 @@
 #import "RAUtils.h"
 #import "JLRefreshHeader.h"
 #import "JLRefreshFooter.h"
-#import "OrderDetailViewController.h"
-#import "KVViewController.h"
+//#import "OrderDetailViewController.h"
+//#import "KVViewController.h"
 #import <QuickLook/QuickLook.h>
 #import "config.h"
 #import "RAConvertor.h"
@@ -104,244 +104,248 @@ static const int delta = 25;
 
 -(void)cellDoubleTapAction:(UIGestureRecognizer*)gestureRecognizer
 {
-    NSLog(@"cell double tap");
-        UITableViewCell* cell = (UITableViewCell*)[gestureRecognizer view];
-    NSIndexPath* indexPath=[self.tableview indexPathForCell:cell];
-    //strongSelf.content_action
-    if(self.content_action!=nil)
-    {
-        
-        if(self.content_action.count==1)
-        {
-            NSDictionary* action =self.content_action.firstObject;
-            NSString * module =  action[@"module"];
-            if([module isEqualToString:@"quick_look"])
-            {
-                
-                //            +(NSString*)download_file : (NSMutableDictionary*) params url:(NSString*) url
-                NSMutableDictionary *params = action[@"params"];
-                NSString* URL =action[@"url"];
-                __weak typeof(self) weakSelf = self;
-                dispatch_async(dispatch_get_global_queue(0, 0), ^{
-                    
-                    
-                    NSString *path = [RANetwork download_file:params url:URL];
-                    weakSelf.documentPath = path;
-                    
-                    if (path) {
-                        dispatch_async(dispatch_get_main_queue(), ^{
-                            [weakSelf.navigationController pushViewController:weakSelf.quickLook animated:NO];
-                        });
-                    }
-                    
-                });
-            }
-            else if([module isEqualToString:@"kv_detail"])
-            {
-                NSMutableDictionary *params = [NSMutableDictionary new];
-                params[@"query_id"] = self.params[@"query_id"];
-                
-                NSMutableDictionary *criteria =[NSMutableDictionary new];
-                for(NSString* key in [action[@"params"] allKeys] )
-                {
-                    NSArray* item =self.content_data[[NSString stringWithFormat:@"item_%ld",indexPath.row]];
-                    int idx =[action[@"params"][key] intValue];
-                    criteria[key]=item[ idx];
-                }
-                
-                
-                params[@"criteria"]=[RAConvertor dict2string:criteria] ;
-                
-                
-                
-                UIAlertView * waitalert = [RAUtils waiting_alert:@"Loading..." title:@"Please wait"];
-                
-                
-                __weak typeof(self) weakself = self;
-                dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
-                    
-                    
-                    
-                    NSDictionary* json =[RANetwork kv_detail:params];
-                    
-                    dispatch_async(dispatch_get_main_queue(), ^{
-                        [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
-                        
-                        
-                        if([[json valueForKey:@"result"] intValue]==2)
-                        {
-                            KVViewController *vc = [[UIStoryboard storyboardWithName:@"Detail" bundle:nil] instantiateViewControllerWithIdentifier:@"KVViewController"];
-                            vc.content = [json mutableCopy];
-                            [weakself.navigationController pushViewController:vc animated:NO];
-                            
-                            //                        weakself.content_data_download = [weakself CopyDirty:weakself.content_data_download to:[editor_json mutableCopy]];//[editor_json mutableCopy];
-                            //
-                            //                        weakself.content_data_control = [weakself translate_json:weakself.content_data_download changed: weakself.changed_data];
-                            //
-                            //
-                            //                        [weakself download_success];
-                            //                        [weakself.editorTable reloadData];
-                            
-                        }
-                        else
-                        {
-                            [RAUtils message_alert:json[@"msg"] title:nil controller:weakself] ;
-                        }
-                        
-                        
-                        
-                        
-                    });
-                });
-            }
-            else if([module isEqualToString:@"order_detail"])
-            {
-                
-                OrderDetailViewController *vc = [[UIStoryboard storyboardWithName:@"Detail" bundle:nil] instantiateViewControllerWithIdentifier:@"OrderDetailViewController"];
-                
-                
-                vc.url_type = URL_REMOTE;
-                vc.request_url=URL_ORDER_DETAIL;
-                
-                
-                vc.params = [NSMutableDictionary dictionary];
-                //                NSString *path = [[NSBundle mainBundle] pathForResource:@"search_ui.json" ofType:nil];
-                //                NSData *data = [NSData dataWithContentsOfFile:path];
-                //                vc.content_data_download = [[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil] mutableCopy];
-                [self.navigationController pushViewController:vc animated:NO];
-                return;
-            }
-        }
-        else
-        {
-            
-            UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"" message:nil preferredStyle:UIAlertControllerStyleAlert];
-            //block代码块取代了delegate
-            
-            __weak typeof(self) weakSelf = self;
-            for(int i=0;i<self.content_action.count;i++)
-            {
-                NSMutableDictionary* json = self.content_action[i];
-                NSString* title =json[@"title"];
-                NSString* module = json[@"module"];
-                NSMutableDictionary* add_params = json[@"params"];
-                UIAlertAction *actioni = [UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
-                    
-                    
-                    if([module isEqualToString:@"quick_look"])
-                    {
-                        
-                        //            +(NSString*)download_file : (NSMutableDictionary*) params url:(NSString*) url
-                        NSMutableDictionary *params = json[@"params"];
-                        NSString* URL =json[@"url"];
-                        __weak typeof(self) weakSelf = self;
-                        dispatch_async(dispatch_get_global_queue(0, 0), ^{
-                            
-                            
-                            NSString *path = [RANetwork download_file:params url:URL];
-                            weakSelf.documentPath = path;
-                            
-                            if (path) {
-                                dispatch_async(dispatch_get_main_queue(), ^{
-                                    [weakSelf.navigationController pushViewController:weakSelf.quickLook animated:NO];
-                                });
-                            }
-                            
-                        });
-                    }
-                    else if([module isEqualToString:@"kv_detail"])
-                    {
-                        NSMutableDictionary *params = json[@"params"];
-                        
-                        
-                        UIAlertView * waitalert = [RAUtils waiting_alert:@"Loading..." title:@"Please wait"];
-                        
-                        
-                        __weak typeof(self) weakself = self;
-                        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
-                            
-                            
-                            
-                            NSDictionary* json =[RANetwork kv_detail:params];
-                            
-                            dispatch_async(dispatch_get_main_queue(), ^{
-                                [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
-                                
-                                
-                                if([[json valueForKey:@"result"] intValue]==2)
-                                {
-                                    KVViewController *vc = [[UIStoryboard storyboardWithName:@"Detail" bundle:nil] instantiateViewControllerWithIdentifier:@"KVViewController"];
-                                    vc.content = [json mutableCopy];
-                                    [weakself.navigationController pushViewController:vc animated:NO];
-                                    
-                                    //                        weakself.content_data_download = [weakself CopyDirty:weakself.content_data_download to:[editor_json mutableCopy]];//[editor_json mutableCopy];
-                                    //
-                                    //                        weakself.content_data_control = [weakself translate_json:weakself.content_data_download changed: weakself.changed_data];
-                                    //
-                                    //
-                                    //                        [weakself download_success];
-                                    //                        [weakself.editorTable reloadData];
-                                    
-                                }
-                                else
-                                {
-                                    [RAUtils message_alert:json[@"msg"] title:nil controller:weakself] ;
-                                }
-                                
-                                
-                                
-                                
-                            });
-                        });
-                    }
-                    else if([module isEqualToString:@"order_detail"])
-                    {
-                        
-                        OrderDetailViewController *vc = [[UIStoryboard storyboardWithName:@"Detail" bundle:nil] instantiateViewControllerWithIdentifier:@"OrderDetailViewController"];
-                        
-                        
-                        vc.url_type = URL_REMOTE;
-                        vc.request_url=URL_ORDER_DETAIL;
-                        
-                        
-                        vc.params = [NSMutableDictionary dictionary];
-                        //                NSString *path = [[NSBundle mainBundle] pathForResource:@"search_ui.json" ofType:nil];
-                        //                NSData *data = [NSData dataWithContentsOfFile:path];
-                        //                vc.content_data_download = [[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil] mutableCopy];
-                        [self.navigationController pushViewController:vc animated:NO];
-                        return;
-                    }
-                    // DebugLog(@"Cancel");
-//                    if([actiontype isEqualToString:@"download"])
+    
+    NSAssert(true, ([NSString stringWithFormat:@"%s cellDoubleTapAction not impl",object_getClassName([self class])]));
+}
+//{
+//    NSLog(@"cell double tap");
+//        UITableViewCell* cell = (UITableViewCell*)[gestureRecognizer view];
+//    NSIndexPath* indexPath=[self.tableview indexPathForCell:cell];
+//    //strongSelf.content_action
+//    if(self.content_action!=nil)
+//    {
+//
+//        if(self.content_action.count==1)
+//        {
+//            NSDictionary* action =self.content_action.firstObject;
+//            NSString * module =  action[@"module"];
+//            if([module isEqualToString:@"quick_look"])
+//            {
+//
+//                //            +(NSString*)download_file : (NSMutableDictionary*) params url:(NSString*) url
+//                NSMutableDictionary *params = action[@"params"];
+//                NSString* URL =action[@"url"];
+//                __weak typeof(self) weakSelf = self;
+//                dispatch_async(dispatch_get_global_queue(0, 0), ^{
+//
+//
+//                    NSString *path = [RANetwork download_file:params url:URL];
+//                    weakSelf.documentPath = path;
+//
+//                    if (path) {
+//                        dispatch_async(dispatch_get_main_queue(), ^{
+//                            [weakSelf.navigationController pushViewController:weakSelf.quickLook animated:NO];
+//                        });
+//                    }
+//
+//                });
+//            }
+//            else if([module isEqualToString:@"kv_detail"])
+//            {
+//                NSMutableDictionary *params = [NSMutableDictionary new];
+//                params[@"query_id"] = self.params[@"query_id"];
+//
+//                NSMutableDictionary *criteria =[NSMutableDictionary new];
+//                for(NSString* key in [action[@"params"] allKeys] )
+//                {
+//                    NSArray* item =self.content_data[[NSString stringWithFormat:@"item_%ld",indexPath.row]];
+//                    int idx =[action[@"params"][key] intValue];
+//                    criteria[key]=item[ idx];
+//                }
+//
+//
+//                params[@"criteria"]=[RAConvertor dict2string:criteria] ;
+//
+//
+//
+//                UIAlertView * waitalert = [RAUtils waiting_alert:@"Loading..." title:@"Please wait"];
+//
+//
+//                __weak typeof(self) weakself = self;
+//                dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//
+//
+//
+//                    NSDictionary* json =[RANetwork kv_detail:params];
+//
+//                    dispatch_async(dispatch_get_main_queue(), ^{
+//                        [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+//
+//
+//                        if([[json valueForKey:@"result"] intValue]==2)
+//                        {
+//                            KVViewController *vc = [[UIStoryboard storyboardWithName:@"Detail" bundle:nil] instantiateViewControllerWithIdentifier:@"KVViewController"];
+//                            vc.content = [json mutableCopy];
+//                            [weakself.navigationController pushViewController:vc animated:NO];
+//
+//                            //                        weakself.content_data_download = [weakself CopyDirty:weakself.content_data_download to:[editor_json mutableCopy]];//[editor_json mutableCopy];
+//                            //
+//                            //                        weakself.content_data_control = [weakself translate_json:weakself.content_data_download changed: weakself.changed_data];
+//                            //
+//                            //
+//                            //                        [weakself download_success];
+//                            //                        [weakself.editorTable reloadData];
+//
+//                        }
+//                        else
+//                        {
+//                            [RAUtils message_alert:json[@"msg"] title:nil controller:weakself] ;
+//                        }
+//
+//
+//
+//
+//                    });
+//                });
+//            }
+//            else if([module isEqualToString:@"order_detail"])
+//            {
+//
+//                OrderDetailViewController *vc = [[UIStoryboard storyboardWithName:@"Detail" bundle:nil] instantiateViewControllerWithIdentifier:@"OrderDetailViewController"];
+//
+//
+//                vc.url_type = URL_REMOTE;
+//                vc.request_url=URL_ORDER_DETAIL;
+//
+//
+//                vc.params = [NSMutableDictionary dictionary];
+//                //                NSString *path = [[NSBundle mainBundle] pathForResource:@"search_ui.json" ofType:nil];
+//                //                NSData *data = [NSData dataWithContentsOfFile:path];
+//                //                vc.content_data_download = [[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil] mutableCopy];
+//                [self.navigationController pushViewController:vc animated:NO];
+//                return;
+//            }
+//        }
+//        else
+//        {
+//
+//            UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"" message:nil preferredStyle:UIAlertControllerStyleAlert];
+//            //block代码块取代了delegate
+//
+//            __weak typeof(self) weakSelf = self;
+//            for(int i=0;i<self.content_action.count;i++)
+//            {
+//                NSMutableDictionary* json = self.content_action[i];
+//                NSString* title =json[@"title"];
+//                NSString* module = json[@"module"];
+//                NSMutableDictionary* add_params = json[@"params"];
+//                UIAlertAction *actioni = [UIAlertAction actionWithTitle:title style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
+//
+//
+//                    if([module isEqualToString:@"quick_look"])
 //                    {
-//                        [weakSelf Export:add_params];
+//
+//                        //            +(NSString*)download_file : (NSMutableDictionary*) params url:(NSString*) url
+//                        NSMutableDictionary *params = json[@"params"];
+//                        NSString* URL =json[@"url"];
+//                        __weak typeof(self) weakSelf = self;
+//                        dispatch_async(dispatch_get_global_queue(0, 0), ^{
+//
+//
+//                            NSString *path = [RANetwork download_file:params url:URL];
+//                            weakSelf.documentPath = path;
+//
+//                            if (path) {
+//                                dispatch_async(dispatch_get_main_queue(), ^{
+//                                    [weakSelf.navigationController pushViewController:weakSelf.quickLook animated:NO];
+//                                });
+//                            }
+//
+//                        });
 //                    }
-//                    else if([actiontype isEqualToString:@"save"])
+//                    else if([module isEqualToString:@"kv_detail"])
 //                    {
+//                        NSMutableDictionary *params = json[@"params"];
+//
+//
+//                        UIAlertView * waitalert = [RAUtils waiting_alert:@"Loading..." title:@"Please wait"];
+//
+//
+//                        __weak typeof(self) weakself = self;
+//                        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//
+//
+//
+//                            NSDictionary* json =[RANetwork kv_detail:params];
+//
+//                            dispatch_async(dispatch_get_main_queue(), ^{
+//                                [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+//
+//
+//                                if([[json valueForKey:@"result"] intValue]==2)
+//                                {
+//                                    KVViewController *vc = [[UIStoryboard storyboardWithName:@"Detail" bundle:nil] instantiateViewControllerWithIdentifier:@"KVViewController"];
+//                                    vc.content = [json mutableCopy];
+//                                    [weakself.navigationController pushViewController:vc animated:NO];
+//
+//                                    //                        weakself.content_data_download = [weakself CopyDirty:weakself.content_data_download to:[editor_json mutableCopy]];//[editor_json mutableCopy];
+//                                    //
+//                                    //                        weakself.content_data_control = [weakself translate_json:weakself.content_data_download changed: weakself.changed_data];
+//                                    //
+//                                    //
+//                                    //                        [weakself download_success];
+//                                    //                        [weakself.editorTable reloadData];
+//
+//                                }
+//                                else
+//                                {
+//                                    [RAUtils message_alert:json[@"msg"] title:nil controller:weakself] ;
+//                                }
+//
+//
+//
+//
+//                            });
+//                        });
 //                    }
-                }];
-                [alertControl addAction:actioni];
-            }
-            
-            UIAlertAction *actionCancel = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
-                // DebugLog(@"Cancel");
-                
-            }];
-            [alertControl addAction:actionCancel];
-            
-            
-            
-            
-            
-            [self presentViewController:alertControl animated:NO completion:nil];
-            
-        }
-
-    }
-    
-  
-    
-}
+//                    else if([module isEqualToString:@"order_detail"])
+//                    {
+//
+//                        OrderDetailViewController *vc = [[UIStoryboard storyboardWithName:@"Detail" bundle:nil] instantiateViewControllerWithIdentifier:@"OrderDetailViewController"];
+//
+//
+//                        vc.url_type = URL_REMOTE;
+//                        vc.request_url=URL_ORDER_DETAIL;
+//
+//
+//                        vc.params = [NSMutableDictionary dictionary];
+//                        //                NSString *path = [[NSBundle mainBundle] pathForResource:@"search_ui.json" ofType:nil];
+//                        //                NSData *data = [NSData dataWithContentsOfFile:path];
+//                        //                vc.content_data_download = [[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil] mutableCopy];
+//                        [self.navigationController pushViewController:vc animated:NO];
+//                        return;
+//                    }
+//                    // DebugLog(@"Cancel");
+////                    if([actiontype isEqualToString:@"download"])
+////                    {
+////                        [weakSelf Export:add_params];
+////                    }
+////                    else if([actiontype isEqualToString:@"save"])
+////                    {
+////                    }
+//                }];
+//                [alertControl addAction:actioni];
+//            }
+//
+//            UIAlertAction *actionCancel = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+//                // DebugLog(@"Cancel");
+//
+//            }];
+//            [alertControl addAction:actionCancel];
+//
+//
+//
+//
+//
+//            [self presentViewController:alertControl animated:NO completion:nil];
+//
+//        }
+//
+//    }
+//
+//
+//
+//}
 -(void)labelTapAction:(UIGestureRecognizer*)gestureRecognizer
 {