Merge remote-tracking branch 'origin/feat/analysis_vc' into swift_sdk_development
Showing
15 changed files
with
1099 additions
and
18 deletions
| ... | @@ -20,6 +20,15 @@ | ... | @@ -20,6 +20,15 @@ | 
| 20 | 1EBF5F072840E13F00B8B17F /* SwiftEventBus in Frameworks */ = {isa = PBXBuildFile; productRef = 1EBF5F062840E13F00B8B17F /* SwiftEventBus */; }; | 20 | 1EBF5F072840E13F00B8B17F /* SwiftEventBus in Frameworks */ = {isa = PBXBuildFile; productRef = 1EBF5F062840E13F00B8B17F /* SwiftEventBus */; }; | 
| 21 | 7630AD9A6242D60846D6750C /* Pods_SwiftWarplyFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0D5F56DD4E5371A50AD2D87 /* Pods_SwiftWarplyFramework.framework */; }; | 21 | 7630AD9A6242D60846D6750C /* Pods_SwiftWarplyFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0D5F56DD4E5371A50AD2D87 /* Pods_SwiftWarplyFramework.framework */; }; | 
| 22 | A02F34052882B6E60086465F /* TelcoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A02F34042882B6E60086465F /* TelcoViewController.swift */; }; | 22 | A02F34052882B6E60086465F /* TelcoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A02F34042882B6E60086465F /* TelcoViewController.swift */; }; | 
| 23 | + A04D31DE288FF670000E43B5 /* HistoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A04D31DD288FF670000E43B5 /* HistoryViewController.swift */; }; | ||
| 24 | + A079366E2885D07700064122 /* AnalysisChildViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079366D2885D07700064122 /* AnalysisChildViewController.swift */; }; | ||
| 25 | + A07936702885D95600064122 /* AnalysisItemViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079366F2885D95600064122 /* AnalysisItemViewCell.swift */; }; | ||
| 26 | + A07936732885E67400064122 /* AnalysisItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = A07936722885E67400064122 /* AnalysisItem.swift */; }; | ||
| 27 | + A07936762885E9CC00064122 /* UIColorExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A07936752885E9CC00064122 /* UIColorExtensions.swift */; }; | ||
| 28 | + A07936792885EF9400064122 /* RESegmentedControl in Frameworks */ = {isa = PBXBuildFile; productRef = A07936782885EF9400064122 /* RESegmentedControl */; }; | ||
| 29 | + A079367C2885F2F500064122 /* AnalysisHeaderViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079367B2885F2F500064122 /* AnalysisHeaderViewCell.swift */; }; | ||
| 30 | + A079367E2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079367D2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift */; }; | ||
| 31 | + A09DBCAE2888BA8100DD50B0 /* SharingHistoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A09DBCAD2888BA8100DD50B0 /* SharingHistoryViewController.swift */; }; | ||
| 23 | E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */ = {isa = PBXBuildFile; fileRef = E6A77852282933340045BBA8 /* SwiftWarplyFramework.docc */; }; | 32 | E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */ = {isa = PBXBuildFile; fileRef = E6A77852282933340045BBA8 /* SwiftWarplyFramework.docc */; }; | 
| 24 | E6A77854282933340045BBA8 /* SwiftWarplyFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = E6A77851282933340045BBA8 /* SwiftWarplyFramework.h */; settings = {ATTRIBUTES = (Public, ); }; }; | 33 | E6A77854282933340045BBA8 /* SwiftWarplyFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = E6A77851282933340045BBA8 /* SwiftWarplyFramework.h */; settings = {ATTRIBUTES = (Public, ); }; }; | 
| 25 | E6A778DF282933E60045BBA8 /* WarplyReactMethods.m in Sources */ = {isa = PBXBuildFile; fileRef = E6A7785B282933E40045BBA8 /* WarplyReactMethods.m */; }; | 34 | E6A778DF282933E60045BBA8 /* WarplyReactMethods.m in Sources */ = {isa = PBXBuildFile; fileRef = E6A7785B282933E40045BBA8 /* WarplyReactMethods.m */; }; | 
| ... | @@ -159,6 +168,14 @@ | ... | @@ -159,6 +168,14 @@ | 
| 159 | 1EB5F4C9285370C90016F36E /* LoyaltyAnalysisViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoyaltyAnalysisViewController.swift; sourceTree = "<group>"; }; | 168 | 1EB5F4C9285370C90016F36E /* LoyaltyAnalysisViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoyaltyAnalysisViewController.swift; sourceTree = "<group>"; }; | 
| 160 | 1EBE97202865EE460080EFF7 /* MFYInboxTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MFYInboxTableViewCell.swift; sourceTree = "<group>"; }; | 169 | 1EBE97202865EE460080EFF7 /* MFYInboxTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MFYInboxTableViewCell.swift; sourceTree = "<group>"; }; | 
| 161 | A02F34042882B6E60086465F /* TelcoViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TelcoViewController.swift; sourceTree = "<group>"; }; | 170 | A02F34042882B6E60086465F /* TelcoViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TelcoViewController.swift; sourceTree = "<group>"; }; | 
| 171 | + A04D31DD288FF670000E43B5 /* HistoryViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HistoryViewController.swift; sourceTree = "<group>"; }; | ||
| 172 | + A079366D2885D07700064122 /* AnalysisChildViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisChildViewController.swift; sourceTree = "<group>"; }; | ||
| 173 | + A079366F2885D95600064122 /* AnalysisItemViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisItemViewCell.swift; sourceTree = "<group>"; }; | ||
| 174 | + A07936722885E67400064122 /* AnalysisItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisItem.swift; sourceTree = "<group>"; }; | ||
| 175 | + A07936752885E9CC00064122 /* UIColorExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColorExtensions.swift; sourceTree = "<group>"; }; | ||
| 176 | + A079367B2885F2F500064122 /* AnalysisHeaderViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisHeaderViewCell.swift; sourceTree = "<group>"; }; | ||
| 177 | + A079367D2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisHeaderMessageViewCell.swift; sourceTree = "<group>"; }; | ||
| 178 | + A09DBCAD2888BA8100DD50B0 /* SharingHistoryViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SharingHistoryViewController.swift; sourceTree = "<group>"; }; | ||
| 162 | A9B7BE01A4E812DE49866EF8 /* Pods-SwiftWarplyFramework.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.debug.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.debug.xcconfig"; sourceTree = "<group>"; }; | 179 | A9B7BE01A4E812DE49866EF8 /* Pods-SwiftWarplyFramework.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.debug.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.debug.xcconfig"; sourceTree = "<group>"; }; | 
| 163 | B9EB8A451EF0C5AD75094EEE /* Pods-SwiftWarplyFramework.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.release.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.release.xcconfig"; sourceTree = "<group>"; }; | 180 | B9EB8A451EF0C5AD75094EEE /* Pods-SwiftWarplyFramework.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.release.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.release.xcconfig"; sourceTree = "<group>"; }; | 
| 164 | C0D5F56DD4E5371A50AD2D87 /* Pods_SwiftWarplyFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwiftWarplyFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; }; | 181 | C0D5F56DD4E5371A50AD2D87 /* Pods_SwiftWarplyFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwiftWarplyFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; }; | 
| ... | @@ -298,6 +315,7 @@ | ... | @@ -298,6 +315,7 @@ | 
| 298 | files = ( | 315 | files = ( | 
| 299 | 1E2966EA2837A21D00F83FAC /* RSBarcodes_Swift in Frameworks */, | 316 | 1E2966EA2837A21D00F83FAC /* RSBarcodes_Swift in Frameworks */, | 
| 300 | 7630AD9A6242D60846D6750C /* Pods_SwiftWarplyFramework.framework in Frameworks */, | 317 | 7630AD9A6242D60846D6750C /* Pods_SwiftWarplyFramework.framework in Frameworks */, | 
| 318 | + A07936792885EF9400064122 /* RESegmentedControl in Frameworks */, | ||
| 301 | 1EBF5F072840E13F00B8B17F /* SwiftEventBus in Frameworks */, | 319 | 1EBF5F072840E13F00B8B17F /* SwiftEventBus in Frameworks */, | 
| 302 | ); | 320 | ); | 
| 303 | runOnlyForDeploymentPostprocessing = 0; | 321 | runOnlyForDeploymentPostprocessing = 0; | 
| ... | @@ -313,6 +331,44 @@ | ... | @@ -313,6 +331,44 @@ | 
| 313 | name = Frameworks; | 331 | name = Frameworks; | 
| 314 | sourceTree = "<group>"; | 332 | sourceTree = "<group>"; | 
| 315 | }; | 333 | }; | 
| 334 | + A079366A2885CDDC00064122 /* analysis */ = { | ||
| 335 | + isa = PBXGroup; | ||
| 336 | + children = ( | ||
| 337 | + A079367A2885F2D100064122 /* cells */, | ||
| 338 | + 1EB5F4C9285370C90016F36E /* LoyaltyAnalysisViewController.swift */, | ||
| 339 | + A079366D2885D07700064122 /* AnalysisChildViewController.swift */, | ||
| 340 | + A04D31DD288FF670000E43B5 /* HistoryViewController.swift */, | ||
| 341 | + A09DBCAD2888BA8100DD50B0 /* SharingHistoryViewController.swift */, | ||
| 342 | + ); | ||
| 343 | + name = analysis; | ||
| 344 | + sourceTree = "<group>"; | ||
| 345 | + }; | ||
| 346 | + A07936712885E65C00064122 /* models */ = { | ||
| 347 | + isa = PBXGroup; | ||
| 348 | + children = ( | ||
| 349 | + A07936722885E67400064122 /* AnalysisItem.swift */, | ||
| 350 | + ); | ||
| 351 | + name = models; | ||
| 352 | + sourceTree = "<group>"; | ||
| 353 | + }; | ||
| 354 | + A07936742885E96A00064122 /* utilities */ = { | ||
| 355 | + isa = PBXGroup; | ||
| 356 | + children = ( | ||
| 357 | + A07936752885E9CC00064122 /* UIColorExtensions.swift */, | ||
| 358 | + ); | ||
| 359 | + name = utilities; | ||
| 360 | + sourceTree = "<group>"; | ||
| 361 | + }; | ||
| 362 | + A079367A2885F2D100064122 /* cells */ = { | ||
| 363 | + isa = PBXGroup; | ||
| 364 | + children = ( | ||
| 365 | + A079366F2885D95600064122 /* AnalysisItemViewCell.swift */, | ||
| 366 | + A079367B2885F2F500064122 /* AnalysisHeaderViewCell.swift */, | ||
| 367 | + A079367D2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift */, | ||
| 368 | + ); | ||
| 369 | + name = cells; | ||
| 370 | + sourceTree = "<group>"; | ||
| 371 | + }; | ||
| 316 | C049E0423E2B72D796B777A3 /* Pods */ = { | 372 | C049E0423E2B72D796B777A3 /* Pods */ = { | 
| 317 | isa = PBXGroup; | 373 | isa = PBXGroup; | 
| 318 | children = ( | 374 | children = ( | 
| ... | @@ -344,6 +400,9 @@ | ... | @@ -344,6 +400,9 @@ | 
| 344 | isa = PBXGroup; | 400 | isa = PBXGroup; | 
| 345 | children = ( | 401 | children = ( | 
| 346 | A02F34042882B6E60086465F /* TelcoViewController.swift */, | 402 | A02F34042882B6E60086465F /* TelcoViewController.swift */, | 
| 403 | + A07936712885E65C00064122 /* models */, | ||
| 404 | + A079366A2885CDDC00064122 /* analysis */, | ||
| 405 | + A07936742885E96A00064122 /* utilities */, | ||
| 347 | E6A7785E282933E40045BBA8 /* CouponsViewController.swift */, | 406 | E6A7785E282933E40045BBA8 /* CouponsViewController.swift */, | 
| 348 | 1EA1AF092835346A008998AA /* CouponsTableViewCell.swift */, | 407 | 1EA1AF092835346A008998AA /* CouponsTableViewCell.swift */, | 
| 349 | E6A7785D282933E40045BBA8 /* CouponViewController.swift */, | 408 | E6A7785D282933E40045BBA8 /* CouponViewController.swift */, | 
| ... | @@ -362,7 +421,6 @@ | ... | @@ -362,7 +421,6 @@ | 
| 362 | 1EB236AA28816B680063777A /* ShareViewController.swift */, | 421 | 1EB236AA28816B680063777A /* ShareViewController.swift */, | 
| 363 | 1EB236AC28816C560063777A /* NumberPopupViewController.swift */, | 422 | 1EB236AC28816C560063777A /* NumberPopupViewController.swift */, | 
| 364 | 1EB236AE28816CAB0063777A /* NumbersTableViewCell.swift */, | 423 | 1EB236AE28816CAB0063777A /* NumbersTableViewCell.swift */, | 
| 365 | - 1EB5F4C9285370C90016F36E /* LoyaltyAnalysisViewController.swift */, | ||
| 366 | 1EB5F4C728536FD60016F36E /* StepsViewController.swift */, | 424 | 1EB5F4C728536FD60016F36E /* StepsViewController.swift */, | 
| 367 | E6A77860282933E40045BBA8 /* MyApi.h */, | 425 | E6A77860282933E40045BBA8 /* MyApi.h */, | 
| 368 | E6A778DC282933E60045BBA8 /* MyApi.m */, | 426 | E6A778DC282933E60045BBA8 /* MyApi.m */, | 
| ... | @@ -672,6 +730,7 @@ | ... | @@ -672,6 +730,7 @@ | 
| 672 | packageProductDependencies = ( | 730 | packageProductDependencies = ( | 
| 673 | 1E2966E92837A21D00F83FAC /* RSBarcodes_Swift */, | 731 | 1E2966E92837A21D00F83FAC /* RSBarcodes_Swift */, | 
| 674 | 1EBF5F062840E13F00B8B17F /* SwiftEventBus */, | 732 | 1EBF5F062840E13F00B8B17F /* SwiftEventBus */, | 
| 733 | + A07936782885EF9400064122 /* RESegmentedControl */, | ||
| 675 | ); | 734 | ); | 
| 676 | productName = SwiftWarplyFramework; | 735 | productName = SwiftWarplyFramework; | 
| 677 | productReference = E6A7784E282933340045BBA8 /* SwiftWarplyFramework.framework */; | 736 | productReference = E6A7784E282933340045BBA8 /* SwiftWarplyFramework.framework */; | 
| ... | @@ -704,6 +763,7 @@ | ... | @@ -704,6 +763,7 @@ | 
| 704 | packageReferences = ( | 763 | packageReferences = ( | 
| 705 | 1E2966E82837A21D00F83FAC /* XCRemoteSwiftPackageReference "RSBarcodes_Swift" */, | 764 | 1E2966E82837A21D00F83FAC /* XCRemoteSwiftPackageReference "RSBarcodes_Swift" */, | 
| 706 | 1EBF5F052840E13F00B8B17F /* XCRemoteSwiftPackageReference "SwiftEventBus" */, | 765 | 1EBF5F052840E13F00B8B17F /* XCRemoteSwiftPackageReference "SwiftEventBus" */, | 
| 766 | + A07936772885EF9400064122 /* XCRemoteSwiftPackageReference "RESegmentedControl" */, | ||
| 707 | ); | 767 | ); | 
| 708 | productRefGroup = E6A7784F282933340045BBA8 /* Products */; | 768 | productRefGroup = E6A7784F282933340045BBA8 /* Products */; | 
| 709 | projectDirPath = ""; | 769 | projectDirPath = ""; | 
| ... | @@ -787,10 +847,13 @@ | ... | @@ -787,10 +847,13 @@ | 
| 787 | E6A7794B282933E70045BBA8 /* FMDatabase.m in Sources */, | 847 | E6A7794B282933E70045BBA8 /* FMDatabase.m in Sources */, | 
| 788 | E6A778EC282933E60045BBA8 /* WLNativeVideoTableViewCell.m in Sources */, | 848 | E6A778EC282933E60045BBA8 /* WLNativeVideoTableViewCell.m in Sources */, | 
| 789 | E6A77954282933E70045BBA8 /* MyApi.m in Sources */, | 849 | E6A77954282933E70045BBA8 /* MyApi.m in Sources */, | 
| 850 | + A09DBCAE2888BA8100DD50B0 /* SharingHistoryViewController.swift in Sources */, | ||
| 790 | E6A778F2282933E60045BBA8 /* WLNativeAdCollectionViewCell.m in Sources */, | 851 | E6A778F2282933E60045BBA8 /* WLNativeAdCollectionViewCell.m in Sources */, | 
| 791 | E6A77904282933E60045BBA8 /* WLEvent.m in Sources */, | 852 | E6A77904282933E60045BBA8 /* WLEvent.m in Sources */, | 
| 792 | E6A77927282933E70045BBA8 /* UIRefreshControl+AFNetworking.m in Sources */, | 853 | E6A77927282933E70045BBA8 /* UIRefreshControl+AFNetworking.m in Sources */, | 
| 793 | E6A77955282933E70045BBA8 /* ViewControllerExtensions.swift in Sources */, | 854 | E6A77955282933E70045BBA8 /* ViewControllerExtensions.swift in Sources */, | 
| 855 | + A07936762885E9CC00064122 /* UIColorExtensions.swift in Sources */, | ||
| 856 | + A079367C2885F2F500064122 /* AnalysisHeaderViewCell.swift in Sources */, | ||
| 794 | E6A7795A28293D390045BBA8 /* swiftApi.swift in Sources */, | 857 | E6A7795A28293D390045BBA8 /* swiftApi.swift in Sources */, | 
| 795 | E6A77935282933E70045BBA8 /* UIWebView+AFNetworking.m in Sources */, | 858 | E6A77935282933E70045BBA8 /* UIWebView+AFNetworking.m in Sources */, | 
| 796 | E6A77925282933E70045BBA8 /* UIProgressView+AFNetworking.m in Sources */, | 859 | E6A77925282933E70045BBA8 /* UIProgressView+AFNetworking.m in Sources */, | 
| ... | @@ -800,6 +863,7 @@ | ... | @@ -800,6 +863,7 @@ | 
| 800 | E6A77917282933E60045BBA8 /* UIViewController+WLAdditions.m in Sources */, | 863 | E6A77917282933E60045BBA8 /* UIViewController+WLAdditions.m in Sources */, | 
| 801 | 1EA2BB792865BFE8003F2AB0 /* InboxTableViewCell.swift in Sources */, | 864 | 1EA2BB792865BFE8003F2AB0 /* InboxTableViewCell.swift in Sources */, | 
| 802 | E6A77943282933E70045BBA8 /* AFNetworkReachabilityManager.m in Sources */, | 865 | E6A77943282933E70045BBA8 /* AFNetworkReachabilityManager.m in Sources */, | 
| 866 | + A07936702885D95600064122 /* AnalysisItemViewCell.swift in Sources */, | ||
| 803 | E6A77956282933E70045BBA8 /* GiftsViewController.swift in Sources */, | 867 | E6A77956282933E70045BBA8 /* GiftsViewController.swift in Sources */, | 
| 804 | E6A778F1282933E60045BBA8 /* WLNativeAdTableViewCell.m in Sources */, | 868 | E6A778F1282933E60045BBA8 /* WLNativeAdTableViewCell.m in Sources */, | 
| 805 | E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */, | 869 | E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */, | 
| ... | @@ -810,6 +874,7 @@ | ... | @@ -810,6 +874,7 @@ | 
| 810 | 1EBE97212865EE460080EFF7 /* MFYInboxTableViewCell.swift in Sources */, | 874 | 1EBE97212865EE460080EFF7 /* MFYInboxTableViewCell.swift in Sources */, | 
| 811 | E6A778FD282933E60045BBA8 /* WLInboxItem.m in Sources */, | 875 | E6A778FD282933E60045BBA8 /* WLInboxItem.m in Sources */, | 
| 812 | E6A778EE282933E60045BBA8 /* WLNativeAdsTableMode.m in Sources */, | 876 | E6A778EE282933E60045BBA8 /* WLNativeAdsTableMode.m in Sources */, | 
| 877 | + A07936732885E67400064122 /* AnalysisItem.swift in Sources */, | ||
| 813 | E6A778DF282933E60045BBA8 /* WarplyReactMethods.m in Sources */, | 878 | E6A778DF282933E60045BBA8 /* WarplyReactMethods.m in Sources */, | 
| 814 | E6A77941282933E70045BBA8 /* AFURLRequestSerialization.m in Sources */, | 879 | E6A77941282933E70045BBA8 /* AFURLRequestSerialization.m in Sources */, | 
| 815 | E6A77915282933E60045BBA8 /* WLUtils.m in Sources */, | 880 | E6A77915282933E60045BBA8 /* WLUtils.m in Sources */, | 
| ... | @@ -822,12 +887,15 @@ | ... | @@ -822,12 +887,15 @@ | 
| 822 | E6A7794A282933E70045BBA8 /* FMDatabaseAdditions.m in Sources */, | 887 | E6A7794A282933E70045BBA8 /* FMDatabaseAdditions.m in Sources */, | 
| 823 | E6A77903282933E60045BBA8 /* WLAPSItem.m in Sources */, | 888 | E6A77903282933E60045BBA8 /* WLAPSItem.m in Sources */, | 
| 824 | E6A7790B282933E60045BBA8 /* WLPushManager.m in Sources */, | 889 | E6A7790B282933E60045BBA8 /* WLPushManager.m in Sources */, | 
| 890 | + A079366E2885D07700064122 /* AnalysisChildViewController.swift in Sources */, | ||
| 825 | E6A77950282933E70045BBA8 /* FMResultSet.m in Sources */, | 891 | E6A77950282933E70045BBA8 /* FMResultSet.m in Sources */, | 
| 826 | E6A77936282933E70045BBA8 /* AFAutoPurgingImageCache.m in Sources */, | 892 | E6A77936282933E70045BBA8 /* AFAutoPurgingImageCache.m in Sources */, | 
| 893 | + A079367E2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift in Sources */, | ||
| 827 | E6A778FF282933E60045BBA8 /* WLBeacon.m in Sources */, | 894 | E6A778FF282933E60045BBA8 /* WLBeacon.m in Sources */, | 
| 828 | E6A7791A282933E60045BBA8 /* WLAPPActionHandler.m in Sources */, | 895 | E6A7791A282933E60045BBA8 /* WLAPPActionHandler.m in Sources */, | 
| 829 | E6A778E1282933E60045BBA8 /* CouponViewController.swift in Sources */, | 896 | E6A778E1282933E60045BBA8 /* CouponViewController.swift in Sources */, | 
| 830 | E6A77924282933E70045BBA8 /* NSString+SSToolkitAdditions.m in Sources */, | 897 | E6A77924282933E70045BBA8 /* NSString+SSToolkitAdditions.m in Sources */, | 
| 898 | + A04D31DE288FF670000E43B5 /* HistoryViewController.swift in Sources */, | ||
| 831 | E6A7792A282933E70045BBA8 /* AFNetworkActivityIndicatorManager.m in Sources */, | 899 | E6A7792A282933E70045BBA8 /* AFNetworkActivityIndicatorManager.m in Sources */, | 
| 832 | E6A77914282933E60045BBA8 /* WLUserManager.m in Sources */, | 900 | E6A77914282933E60045BBA8 /* WLUserManager.m in Sources */, | 
| 833 | 1EB236AF28816CAC0063777A /* NumbersTableViewCell.swift in Sources */, | 901 | 1EB236AF28816CAC0063777A /* NumbersTableViewCell.swift in Sources */, | 
| ... | @@ -1073,6 +1141,14 @@ | ... | @@ -1073,6 +1141,14 @@ | 
| 1073 | minimumVersion = 5.0.0; | 1141 | minimumVersion = 5.0.0; | 
| 1074 | }; | 1142 | }; | 
| 1075 | }; | 1143 | }; | 
| 1144 | + A07936772885EF9400064122 /* XCRemoteSwiftPackageReference "RESegmentedControl" */ = { | ||
| 1145 | + isa = XCRemoteSwiftPackageReference; | ||
| 1146 | + repositoryURL = "https://github.com/sh-khashimov/RESegmentedControl"; | ||
| 1147 | + requirement = { | ||
| 1148 | + kind = upToNextMajorVersion; | ||
| 1149 | + minimumVersion = 0.5.1; | ||
| 1150 | + }; | ||
| 1151 | + }; | ||
| 1076 | /* End XCRemoteSwiftPackageReference section */ | 1152 | /* End XCRemoteSwiftPackageReference section */ | 
| 1077 | 1153 | ||
| 1078 | /* Begin XCSwiftPackageProductDependency section */ | 1154 | /* Begin XCSwiftPackageProductDependency section */ | 
| ... | @@ -1086,6 +1162,11 @@ | ... | @@ -1086,6 +1162,11 @@ | 
| 1086 | package = 1EBF5F052840E13F00B8B17F /* XCRemoteSwiftPackageReference "SwiftEventBus" */; | 1162 | package = 1EBF5F052840E13F00B8B17F /* XCRemoteSwiftPackageReference "SwiftEventBus" */; | 
| 1087 | productName = SwiftEventBus; | 1163 | productName = SwiftEventBus; | 
| 1088 | }; | 1164 | }; | 
| 1165 | + A07936782885EF9400064122 /* RESegmentedControl */ = { | ||
| 1166 | + isa = XCSwiftPackageProductDependency; | ||
| 1167 | + package = A07936772885EF9400064122 /* XCRemoteSwiftPackageReference "RESegmentedControl" */; | ||
| 1168 | + productName = RESegmentedControl; | ||
| 1169 | + }; | ||
| 1089 | /* End XCSwiftPackageProductDependency section */ | 1170 | /* End XCSwiftPackageProductDependency section */ | 
| 1090 | }; | 1171 | }; | 
| 1091 | rootObject = E6A77845282933340045BBA8 /* Project object */; | 1172 | rootObject = E6A77845282933340045BBA8 /* Project object */; | ... | ... | 
| 1 | { | 1 | { | 
| 2 | "pins" : [ | 2 | "pins" : [ | 
| 3 | { | 3 | { | 
| 4 | + "identity" : "resegmentedcontrol", | ||
| 5 | + "kind" : "remoteSourceControl", | ||
| 6 | + "location" : "https://github.com/sh-khashimov/RESegmentedControl", | ||
| 7 | + "state" : { | ||
| 8 | + "revision" : "09d8cbd0da906c06d30fb057ab9902dc9d0e26b9", | ||
| 9 | + "version" : "0.5.1" | ||
| 10 | + } | ||
| 11 | + }, | ||
| 12 | + { | ||
| 4 | "identity" : "rsbarcodes_swift", | 13 | "identity" : "rsbarcodes_swift", | 
| 5 | "kind" : "remoteSourceControl", | 14 | "kind" : "remoteSourceControl", | 
| 6 | "location" : "https://github.com/yeahdongcn/RSBarcodes_Swift", | 15 | "location" : "https://github.com/yeahdongcn/RSBarcodes_Swift", | ... | ... | 
| 1 | +// | ||
| 2 | +// AnalysisHeaderMessageViewCell.swift | ||
| 3 | +// SwiftWarplyFramework | ||
| 4 | +// | ||
| 5 | +// Created by Manos Chorianopoulos on 18/7/22. | ||
| 6 | +// | ||
| 7 | + | ||
| 8 | +import UIKit | ||
| 9 | + | ||
| 10 | +class AnalysisHeaderMessageViewCell: UITableViewCell { | ||
| 11 | + | ||
| 12 | + // attributes | ||
| 13 | + @IBOutlet weak var itemImage: UIImageView! | ||
| 14 | + @IBOutlet weak var messageLabel: UILabel! | ||
| 15 | + @IBOutlet weak var titleLabel: UILabel! | ||
| 16 | + | ||
| 17 | + public var loyaltyBadge:swiftApi.LoyaltyBadgeModel = swiftApi().getLoyaltyBadge() | ||
| 18 | + | ||
| 19 | + // lifecycle | ||
| 20 | + override func awakeFromNib() { | ||
| 21 | + super.awakeFromNib() | ||
| 22 | + | ||
| 23 | + // image | ||
| 24 | + itemImage.image = UIImage(named: "ic_gift_circle", in: Bundle(for: MyEmptyClass.self), compatibleWith: nil) | ||
| 25 | + | ||
| 26 | + // title | ||
| 27 | + titleLabel.textColor = UIColor(rgb: 0x435563) | ||
| 28 | + titleLabel.text = "Αναλυτικά:" | ||
| 29 | + | ||
| 30 | + // message | ||
| 31 | + messageLabel.textColor = UIColor(rgb: 0x435563) | ||
| 32 | + messageLabel.layer.borderWidth = 1.0 | ||
| 33 | + messageLabel.layer.borderColor = UIColor(rgb: 0xB2CE69).cgColor | ||
| 34 | + | ||
| 35 | + let totalCouponDiscount = Float(round(100 * loyaltyBadge._value) / 100) | ||
| 36 | + var totalCouponDiscountString = "0" | ||
| 37 | + totalCouponDiscountString = String(format: "%.2f", totalCouponDiscount).replacingOccurrences(of: ".", with: ",", options: .literal, range: nil) | ||
| 38 | + | ||
| 39 | + messageLabel.text = "Μέχρι τώρα έχεις κερδίσει " + totalCouponDiscountString + "€ σε προσφορές από " + String(loyaltyBadge._couponCount) + " κουπόνια!" | ||
| 40 | + } | ||
| 41 | +} | ||
| 42 | + | ||
| 43 | +extension AnalysisHeaderMessageViewCell { | ||
| 44 | + func configureCell(item: AnalysisItem) { | ||
| 45 | + | ||
| 46 | + // TODO: TO BE IMPLEMENTED | ||
| 47 | + } | ||
| 48 | +} | 
| 1 | +// | ||
| 2 | +// AnalysisHeaderViewCell.swift | ||
| 3 | +// SwiftWarplyFramework | ||
| 4 | +// | ||
| 5 | +// Created by Manos Chorianopoulos on 18/7/22. | ||
| 6 | +// | ||
| 7 | + | ||
| 8 | +import UIKit | ||
| 9 | + | ||
| 10 | +class AnalysisHeaderViewCell: UITableViewCell { | ||
| 11 | + | ||
| 12 | + // attributes | ||
| 13 | + @IBOutlet weak var itemImage: UIImageView! | ||
| 14 | + @IBOutlet weak var titleLabel: UILabel! | ||
| 15 | + | ||
| 16 | + // lifecycle | ||
| 17 | + override func awakeFromNib() { | ||
| 18 | + super.awakeFromNib() | ||
| 19 | + | ||
| 20 | + // image | ||
| 21 | + itemImage.image = UIImage(named: "ic_gift_circle", in: Bundle(for: MyEmptyClass.self), compatibleWith: nil) | ||
| 22 | + | ||
| 23 | + // title | ||
| 24 | + titleLabel.textColor = UIColor(rgb: 0x435563) | ||
| 25 | + titleLabel.text = "Αναλυτικά:" | ||
| 26 | + } | ||
| 27 | +} | ||
| 28 | + | ||
| 29 | +extension AnalysisHeaderViewCell { | ||
| 30 | + func configureCell(item: AnalysisItem) { | ||
| 31 | + | ||
| 32 | + // TODO: TO BE IMPLEMENTED | ||
| 33 | + } | ||
| 34 | +} | 
| 1 | +// | ||
| 2 | +// AnalysisItem.swift | ||
| 3 | +// SwiftWarplyFramework | ||
| 4 | +// | ||
| 5 | +// Created by Manos Chorianopoulos on 18/7/22. | ||
| 6 | +// | ||
| 7 | + | ||
| 8 | +import UIKit | ||
| 9 | + | ||
| 10 | +public class AnalysisItem: Codable { | ||
| 11 | + | ||
| 12 | + // attributes | ||
| 13 | + public var date: Date | ||
| 14 | + public var image_url: String? | ||
| 15 | + public var title: String? | ||
| 16 | + public let subtitle: String? | ||
| 17 | + public var price: Float | ||
| 18 | + | ||
| 19 | + // initialization | ||
| 20 | + public init() { | ||
| 21 | + self.date = Date() | ||
| 22 | + self.image_url = "" | ||
| 23 | + self.title = "" | ||
| 24 | + self.subtitle = "" | ||
| 25 | + self.price = 4.0 | ||
| 26 | + } | ||
| 27 | +} | 
| 1 | +// | ||
| 2 | +// AnalysisItemViewCell.swift | ||
| 3 | +// SwiftWarplyFramework | ||
| 4 | +// | ||
| 5 | +// Created by Manos Chorianopoulos on 18/7/22. | ||
| 6 | +// | ||
| 7 | + | ||
| 8 | +import UIKit | ||
| 9 | + | ||
| 10 | +class AnalysisItemViewCell: UITableViewCell { | ||
| 11 | + | ||
| 12 | + @IBOutlet weak var dateLabel: UILabel! | ||
| 13 | + @IBOutlet weak var itemImage: UIImageView! | ||
| 14 | + @IBOutlet weak var titleLabel: UILabel! | ||
| 15 | + @IBOutlet weak var priceLabel: UILabel! | ||
| 16 | + @IBOutlet weak var subtitleLabel: UILabel! | ||
| 17 | + | ||
| 18 | + // lifecycle | ||
| 19 | + override func awakeFromNib() { | ||
| 20 | + super.awakeFromNib() | ||
| 21 | + | ||
| 22 | + // date | ||
| 23 | + dateLabel.textColor = UIColor(rgb: 0x435563) | ||
| 24 | + | ||
| 25 | + // title | ||
| 26 | + titleLabel.textColor = UIColor(rgb: 0x435563) | ||
| 27 | + | ||
| 28 | + // price | ||
| 29 | + priceLabel.textColor = UIColor(rgb: 0x435563) | ||
| 30 | + | ||
| 31 | + // subtitle | ||
| 32 | + subtitleLabel.textColor = UIColor(rgb: 0x8B97A3) | ||
| 33 | + } | ||
| 34 | +} | ||
| 35 | + | ||
| 36 | +extension AnalysisItemViewCell { | ||
| 37 | + func configureCell(item: swiftApi.SharingCouponModel) { | ||
| 38 | + | ||
| 39 | + dateLabel.text = item._date | ||
| 40 | + //itemImage.image = | ||
| 41 | + titleLabel.text = item._name | ||
| 42 | + | ||
| 43 | + let priceFloat = Float(round(100 * (Float(item._discount) ?? 0.0)) / 100) | ||
| 44 | + var priceString = "0" | ||
| 45 | + priceString = String(format: "%.2f", priceFloat).replacingOccurrences(of: ".", with: ",", options: .literal, range: nil) | ||
| 46 | + priceLabel.text = priceString + "€" | ||
| 47 | + | ||
| 48 | + if ("sent" == item._sharing_type) { | ||
| 49 | + subtitleLabel.text = String(format: "Εκπτωτικό κουπόνι προς " + item._receiver_msisdn) | ||
| 50 | + } else if ("received" == item._sharing_type) { | ||
| 51 | + subtitleLabel.text = String(format: "Εκπτωτικό κουπόνι από " + item._sender_msisdn) | ||
| 52 | + } | ||
| 53 | + } | ||
| 54 | + | ||
| 55 | + func configureCell(item: swiftApi.CouponItemModel) { | ||
| 56 | + | ||
| 57 | +// COUPONSET: desc, img_preview, name, terms | ||
| 58 | +// COUPON: coupon, expiration, discount, status | ||
| 59 | + | ||
| 60 | + let couponSetData: swiftApi.CouponSetItemModel? = item.couponset_data | ||
| 61 | + | ||
| 62 | + dateLabel.text = item.expiration ?? "" // TODO: change | ||
| 63 | + itemImage.load(link: couponSetData?.img_preview ?? "", placeholder: UIImage(), cache: URLCache()) | ||
| 64 | + titleLabel.text = couponSetData?.name ?? "" | ||
| 65 | + | ||
| 66 | + let priceFloat = Float(round(100 * (Float(item.discount ?? "") ?? 0.0)) / 100) | ||
| 67 | + var priceString = "0" | ||
| 68 | + priceString = String(format: "%.2f", priceFloat).replacingOccurrences(of: ".", with: ",", options: .literal, range: nil) | ||
| 69 | + priceLabel.text = priceString + "€" | ||
| 70 | + | ||
| 71 | + subtitleLabel.text = couponSetData?.short_description ?? "" | ||
| 72 | + | ||
| 73 | + } | ||
| 74 | +} | 
| 1 | +// | ||
| 2 | +// HistoryViewController.swift | ||
| 3 | +// SwiftWarplyFramework | ||
| 4 | +// | ||
| 5 | +// Created by Manos Chorianopoulos on 18/7/22. | ||
| 6 | +// | ||
| 7 | + | ||
| 8 | +import UIKit | ||
| 9 | + | ||
| 10 | +class HistoryViewController: AnalysisChildViewController { | ||
| 11 | + | ||
| 12 | + var loading: Bool = false | ||
| 13 | + var items: Array<swiftApi.CouponItemModel> = swiftApi().getCouponList() | ||
| 14 | + | ||
| 15 | + // TODO: remove this when configuring model | ||
| 16 | + let hasMessage = true | ||
| 17 | + | ||
| 18 | + // lifecycle | ||
| 19 | + override func viewDidLoad() { | ||
| 20 | + | ||
| 21 | + super.viewDidLoad() | ||
| 22 | + | ||
| 23 | + self.refreshControl = UIRefreshControl() | ||
| 24 | + self.refreshControl?.addTarget(self, action: #selector(handleRefresh(_:)), for: .valueChanged) | ||
| 25 | + | ||
| 26 | + handleRefresh(self.refreshControl!) | ||
| 27 | + } | ||
| 28 | + | ||
| 29 | + // mvp | ||
| 30 | + @objc func load() { | ||
| 31 | + | ||
| 32 | + if (loading) { | ||
| 33 | + return; | ||
| 34 | + } | ||
| 35 | + | ||
| 36 | + showLoading() | ||
| 37 | + | ||
| 38 | + items = swiftApi().getOldCouponList() | ||
| 39 | + showContent() | ||
| 40 | + self.tableView.reloadData() | ||
| 41 | + } | ||
| 42 | + | ||
| 43 | + private func showLoading() { | ||
| 44 | + | ||
| 45 | + loading = true | ||
| 46 | + if (self.refreshControl!.isRefreshing) { | ||
| 47 | + return; | ||
| 48 | + } | ||
| 49 | + | ||
| 50 | + self.refreshControl!.beginRefreshing() | ||
| 51 | + } | ||
| 52 | + | ||
| 53 | + private func showError() { | ||
| 54 | + } | ||
| 55 | + | ||
| 56 | + private func showContent() { | ||
| 57 | + | ||
| 58 | + loading = false | ||
| 59 | + self.refreshControl!.endRefreshing() | ||
| 60 | + } | ||
| 61 | + | ||
| 62 | + // private | ||
| 63 | + func responseCallback (_ data: Array<swiftApi.CouponItemModel>?) -> Void { | ||
| 64 | + | ||
| 65 | + self.items = data! | ||
| 66 | + showContent() | ||
| 67 | + DispatchQueue.main.async { | ||
| 68 | + self.tableView.reloadData() | ||
| 69 | + } | ||
| 70 | + } | ||
| 71 | + | ||
| 72 | + @objc func handleRefresh(_ refreshControl: UIRefreshControl) { | ||
| 73 | + | ||
| 74 | + self.perform(_: #selector(load), with: nil, afterDelay: 0.5) | ||
| 75 | + } | ||
| 76 | + | ||
| 77 | + // MARK: - Table view data source | ||
| 78 | + override func numberOfSections(in tableView: UITableView) -> Int { | ||
| 79 | + return 2 | ||
| 80 | + } | ||
| 81 | + | ||
| 82 | + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | ||
| 83 | + if (section == 0) { | ||
| 84 | + return 1; | ||
| 85 | + } | ||
| 86 | + | ||
| 87 | + return items.count | ||
| 88 | + } | ||
| 89 | + | ||
| 90 | + override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { | ||
| 91 | + if (indexPath.section == 0) { | ||
| 92 | + return hasMessage ? 380.0 : 280 | ||
| 93 | + } | ||
| 94 | + | ||
| 95 | + return 140.0 | ||
| 96 | + } | ||
| 97 | + | ||
| 98 | + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | ||
| 99 | + | ||
| 100 | + // header | ||
| 101 | + if (indexPath.section == 0) { | ||
| 102 | + if (hasMessage) { | ||
| 103 | + return tableView.dequeueReusableCell(withIdentifier: "AnalysisHeaderMessageViewCell", for: indexPath) as! AnalysisHeaderMessageViewCell | ||
| 104 | + } | ||
| 105 | + | ||
| 106 | + return tableView.dequeueReusableCell(withIdentifier: "AnalysisHeaderViewCell", for: indexPath) as! AnalysisHeaderViewCell | ||
| 107 | + } | ||
| 108 | + | ||
| 109 | + let cell = tableView.dequeueReusableCell(withIdentifier: "AnalysisItemViewCell", for: indexPath) as! AnalysisItemViewCell | ||
| 110 | + cell.configureCell(item: items[indexPath.row]) | ||
| 111 | + | ||
| 112 | + return cell | ||
| 113 | + } | ||
| 114 | +} | 
| ... | @@ -2,30 +2,133 @@ | ... | @@ -2,30 +2,133 @@ | 
| 2 | // LoyaltyAnalysisViewController.swift | 2 | // LoyaltyAnalysisViewController.swift | 
| 3 | // SwiftWarplyFramework | 3 | // SwiftWarplyFramework | 
| 4 | // | 4 | // | 
| 5 | -// Created by Manos Chorianopoulos on 10/6/22. | 5 | +// Created by Manos Chorianopoulos on 18/7/22. | 
| 6 | // | 6 | // | 
| 7 | 7 | ||
| 8 | import UIKit | 8 | import UIKit | 
| 9 | +import RESegmentedControl | ||
| 9 | 10 | ||
| 10 | @objc public class LoyaltyAnalysisViewController: UIViewController { | 11 | @objc public class LoyaltyAnalysisViewController: UIViewController { | 
| 11 | 12 | ||
| 13 | + @IBOutlet weak var leftButton: UIButton! | ||
| 14 | + @IBOutlet weak var rightButton: UIButton! | ||
| 15 | + @IBOutlet weak var contentView: UIView! | ||
| 16 | + var pageController: UIPageViewController! | ||
| 17 | + | ||
| 12 | public override func viewDidLoad() { | 18 | public override func viewDidLoad() { | 
| 13 | super.viewDidLoad() | 19 | super.viewDidLoad() | 
| 14 | 20 | ||
| 15 | self.hidesBottomBarWhenPushed = true | 21 | self.hidesBottomBarWhenPushed = true | 
| 16 | 22 | ||
| 17 | - // Do any additional setup after loading the view. | 23 | + // setup view | 
| 24 | + setBackButton() | ||
| 25 | + setNavigationTitle("Ανάλυση") | ||
| 26 | + | ||
| 27 | + // tab | ||
| 28 | + leftButton.setTitle("Εξαργυρωμένα", for:.normal) | ||
| 29 | + leftButton.backgroundColor = . clear | ||
| 30 | + leftButton.setTitleColor(UIColor(rgb: 0x2EAFB9), for:.normal) | ||
| 31 | + | ||
| 32 | + rightButton.setTitle("Μοιρασμένα δώρα", for:.normal) | ||
| 33 | + rightButton.backgroundColor = . clear | ||
| 34 | + rightButton.setTitleColor(UIColor(rgb: 0x2EAFB9), for:.normal) | ||
| 35 | + | ||
| 36 | + // pages | ||
| 37 | + pageController = UIPageViewController(transitionStyle:.scroll, navigationOrientation:.horizontal) | ||
| 38 | + pageController.dataSource = self; | ||
| 39 | + pageController.delegate = self; | ||
| 40 | + | ||
| 41 | + pageController.view.frame = contentView.bounds; | ||
| 42 | + addChild(pageController) | ||
| 43 | + contentView.addSubview(pageController.view) | ||
| 44 | + pageController .didMove(toParent: self) | ||
| 45 | + | ||
| 46 | + let analysisVC = self.viewControllerAt(0) | ||
| 47 | + pageController.setViewControllers([analysisVC!], direction:.forward, animated:false) | ||
| 48 | + } | ||
| 49 | + | ||
| 50 | + //////////////////////////////////////////////////////////////////////////////// | ||
| 51 | + private func viewControllerAt(_ index:Int) -> AnalysisChildViewController? | ||
| 52 | + { | ||
| 53 | + let storyboard = UIStoryboard(name: "Main", bundle: nil) | ||
| 54 | + | ||
| 55 | + if (index == 1) { | ||
| 56 | + let analysisVC = storyboard.instantiateViewController(withIdentifier:"SharingHistoryViewController") as! SharingHistoryViewController | ||
| 57 | + analysisVC.index = index; | ||
| 58 | + | ||
| 59 | + return analysisVC; | ||
| 18 | } | 60 | } | 
| 19 | 61 | ||
| 62 | + let analysisVC = storyboard.instantiateViewController(withIdentifier:"HistoryViewController") as! HistoryViewController | ||
| 63 | + analysisVC.index = index; | ||
| 64 | + | ||
| 65 | + return analysisVC; | ||
| 66 | + } | ||
| 67 | + | ||
| 68 | + // MARK: - Handlers | ||
| 69 | + @IBAction func handleLeft() { | ||
| 70 | + | ||
| 71 | + let analysisVC = self.viewControllerAt(0) | ||
| 72 | + pageController.setViewControllers([analysisVC!], direction:.reverse, animated:true) | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + @IBAction func handleRight() { | ||
| 76 | + | ||
| 77 | + let analysisVC = self.viewControllerAt(1) | ||
| 78 | + pageController.setViewControllers([analysisVC!], direction:.forward, animated:true) | ||
| 79 | + } | ||
| 80 | +} | ||
| 81 | + | ||
| 82 | +// MARK: - PageViewController | ||
| 83 | +extension LoyaltyAnalysisViewController: UIPageViewControllerDataSource, UIPageViewControllerDelegate { | ||
| 20 | 84 | ||
| 21 | - /* | 85 | + public func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? { | 
| 22 | - // MARK: - Navigation | ||
| 23 | 86 | ||
| 24 | - // In a storyboard-based application, you will often want to do a little preparation before navigation | 87 | + if let analysisVC = viewController as? AnalysisChildViewController { | 
| 25 | - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { | 88 | + var index = analysisVC.index | 
| 26 | - // Get the new view controller using segue.destination. | 89 | + if (index == 1) { | 
| 27 | - // Pass the selected object to the new view controller. | 90 | + return nil; | 
| 28 | } | 91 | } | 
| 29 | - */ | ||
| 30 | 92 | ||
| 93 | + index += 1; | ||
| 94 | + return viewControllerAt(index); | ||
| 95 | + } | ||
| 96 | + | ||
| 97 | + return nil; | ||
| 98 | + } | ||
| 99 | + | ||
| 100 | + public func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? { | ||
| 101 | + | ||
| 102 | + if let analysisVC = viewController as? AnalysisChildViewController { | ||
| 103 | + var index = analysisVC.index | ||
| 104 | + if (index == 0) { | ||
| 105 | + return nil; | ||
| 106 | + } | ||
| 107 | + | ||
| 108 | + index -= 1; | ||
| 109 | + return viewControllerAt(index); | ||
| 110 | + } | ||
| 111 | + | ||
| 112 | + return nil; | ||
| 113 | + } | ||
| 114 | + | ||
| 115 | + | ||
| 116 | + public func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) { | ||
| 117 | + | ||
| 118 | + if (!completed) { | ||
| 119 | + return; | ||
| 120 | + } | ||
| 121 | + | ||
| 122 | + | ||
| 123 | + if let childVCs = pageViewController.viewControllers as? [AnalysisChildViewController] { | ||
| 124 | + let currentIndex = childVCs[0].index | ||
| 125 | + if (currentIndex == 0) { | ||
| 126 | + leftButton.isSelected = true | ||
| 127 | + rightButton.isSelected = false | ||
| 128 | + } else { | ||
| 129 | + leftButton.isSelected = false | ||
| 130 | + rightButton.isSelected = true | ||
| 131 | + } | ||
| 132 | + } | ||
| 133 | + } | ||
| 31 | } | 134 | } | ... | ... | 
| ... | @@ -379,7 +379,7 @@ | ... | @@ -379,7 +379,7 @@ | 
| 379 | </viewController> | 379 | </viewController> | 
| 380 | <placeholder placeholderIdentifier="IBFirstResponder" id="Ee1-aw-PRJ" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> | 380 | <placeholder placeholderIdentifier="IBFirstResponder" id="Ee1-aw-PRJ" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> | 
| 381 | </objects> | 381 | </objects> | 
| 382 | - <point key="canvasLocation" x="1535" y="837"/> | 382 | + <point key="canvasLocation" x="1612" y="836"/> | 
| 383 | </scene> | 383 | </scene> | 
| 384 | <!--Steps View Controller--> | 384 | <!--Steps View Controller--> | 
| 385 | <scene sceneID="BCE-JX-L0C"> | 385 | <scene sceneID="BCE-JX-L0C"> | 
| ... | @@ -403,13 +403,253 @@ | ... | @@ -403,13 +403,253 @@ | 
| 403 | <view key="view" contentMode="scaleToFill" id="zWp-Y3-xCW"> | 403 | <view key="view" contentMode="scaleToFill" id="zWp-Y3-xCW"> | 
| 404 | <rect key="frame" x="0.0" y="0.0" width="414" height="896"/> | 404 | <rect key="frame" x="0.0" y="0.0" width="414" height="896"/> | 
| 405 | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | 405 | <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | 
| 406 | + <subviews> | ||
| 407 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Z7V-En-7Tl"> | ||
| 408 | + <rect key="frame" x="0.0" y="44" width="414" height="50"/> | ||
| 409 | + <subviews> | ||
| 410 | + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="liP-dN-sf3"> | ||
| 411 | + <rect key="frame" x="0.0" y="0.0" width="206.5" height="50"/> | ||
| 412 | + <state key="normal" title="Button"/> | ||
| 413 | + <buttonConfiguration key="configuration" style="plain" title="Button"/> | ||
| 414 | + <connections> | ||
| 415 | + <action selector="handleLeft" destination="duB-b9-cnh" eventType="touchUpInside" id="eCq-GW-QAg"/> | ||
| 416 | + </connections> | ||
| 417 | + </button> | ||
| 418 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="kAf-Oi-EnQ"> | ||
| 419 | + <rect key="frame" x="206.5" y="0.0" width="1" height="50"/> | ||
| 420 | + <color key="backgroundColor" systemColor="systemBackgroundColor"/> | ||
| 421 | + <constraints> | ||
| 422 | + <constraint firstAttribute="width" constant="1" id="CxW-qN-ftc"/> | ||
| 423 | + </constraints> | ||
| 424 | + </view> | ||
| 425 | + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="BNZ-3e-HXp"> | ||
| 426 | + <rect key="frame" x="207.5" y="0.0" width="206.5" height="50"/> | ||
| 427 | + <state key="normal" title="Button"/> | ||
| 428 | + <buttonConfiguration key="configuration" style="plain" title="Button"/> | ||
| 429 | + <connections> | ||
| 430 | + <action selector="handleRight" destination="duB-b9-cnh" eventType="touchUpInside" id="bo6-x4-8Ld"/> | ||
| 431 | + </connections> | ||
| 432 | + </button> | ||
| 433 | + </subviews> | ||
| 434 | + <color key="backgroundColor" systemColor="systemBackgroundColor"/> | ||
| 435 | + <constraints> | ||
| 436 | + <constraint firstItem="kAf-Oi-EnQ" firstAttribute="leading" secondItem="liP-dN-sf3" secondAttribute="trailing" id="7Eg-e7-UZK"/> | ||
| 437 | + <constraint firstItem="liP-dN-sf3" firstAttribute="leading" secondItem="Z7V-En-7Tl" secondAttribute="leading" id="CRR-X1-VXy"/> | ||
| 438 | + <constraint firstAttribute="trailing" secondItem="BNZ-3e-HXp" secondAttribute="trailing" id="FUC-Xt-vrx"/> | ||
| 439 | + <constraint firstAttribute="bottom" secondItem="liP-dN-sf3" secondAttribute="bottom" id="HX4-Xg-GBR"/> | ||
| 440 | + <constraint firstItem="liP-dN-sf3" firstAttribute="top" secondItem="Z7V-En-7Tl" secondAttribute="top" id="O5V-e5-NPf"/> | ||
| 441 | + <constraint firstAttribute="height" constant="50" id="W4o-5O-kfL"/> | ||
| 442 | + <constraint firstItem="BNZ-3e-HXp" firstAttribute="top" secondItem="Z7V-En-7Tl" secondAttribute="top" id="WtA-PL-BZy"/> | ||
| 443 | + <constraint firstItem="kAf-Oi-EnQ" firstAttribute="centerX" secondItem="Z7V-En-7Tl" secondAttribute="centerX" id="jG4-gb-zWB"/> | ||
| 444 | + <constraint firstAttribute="bottom" secondItem="BNZ-3e-HXp" secondAttribute="bottom" id="kzL-YN-Vkn"/> | ||
| 445 | + <constraint firstItem="BNZ-3e-HXp" firstAttribute="leading" secondItem="kAf-Oi-EnQ" secondAttribute="trailing" id="zPD-7c-CdH"/> | ||
| 446 | + <constraint firstItem="kAf-Oi-EnQ" firstAttribute="top" secondItem="Z7V-En-7Tl" secondAttribute="top" id="zq1-qp-f9S"/> | ||
| 447 | + <constraint firstAttribute="bottom" secondItem="kAf-Oi-EnQ" secondAttribute="bottom" id="zsL-bI-ChP"/> | ||
| 448 | + </constraints> | ||
| 449 | + </view> | ||
| 450 | + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FyK-3t-liP"> | ||
| 451 | + <rect key="frame" x="0.0" y="94" width="414" height="802"/> | ||
| 452 | + <color key="backgroundColor" systemColor="systemBackgroundColor"/> | ||
| 453 | + </view> | ||
| 454 | + </subviews> | ||
| 406 | <viewLayoutGuide key="safeArea" id="cej-iH-8gP"/> | 455 | <viewLayoutGuide key="safeArea" id="cej-iH-8gP"/> | 
| 407 | <color key="backgroundColor" systemColor="systemBackgroundColor"/> | 456 | <color key="backgroundColor" systemColor="systemBackgroundColor"/> | 
| 457 | + <constraints> | ||
| 458 | + <constraint firstItem="Z7V-En-7Tl" firstAttribute="leading" secondItem="cej-iH-8gP" secondAttribute="leading" id="2VB-wC-r2b"/> | ||
| 459 | + <constraint firstItem="FyK-3t-liP" firstAttribute="top" secondItem="Z7V-En-7Tl" secondAttribute="bottom" id="E4I-cW-BL9"/> | ||
| 460 | + <constraint firstItem="FyK-3t-liP" firstAttribute="trailing" secondItem="cej-iH-8gP" secondAttribute="trailing" id="NTr-5G-XH5"/> | ||
| 461 | + <constraint firstItem="Z7V-En-7Tl" firstAttribute="trailing" secondItem="cej-iH-8gP" secondAttribute="trailing" id="PwM-0Q-xtQ"/> | ||
| 462 | + <constraint firstAttribute="bottom" secondItem="FyK-3t-liP" secondAttribute="bottom" id="fbh-Cd-dHd"/> | ||
| 463 | + <constraint firstItem="Z7V-En-7Tl" firstAttribute="top" secondItem="cej-iH-8gP" secondAttribute="top" id="l8U-kf-IRu"/> | ||
| 464 | + <constraint firstItem="FyK-3t-liP" firstAttribute="leading" secondItem="cej-iH-8gP" secondAttribute="leading" id="qiJ-nX-tRU"/> | ||
| 465 | + </constraints> | ||
| 408 | </view> | 466 | </view> | 
| 467 | + <connections> | ||
| 468 | + <outlet property="contentView" destination="FyK-3t-liP" id="lBC-DU-jIb"/> | ||
| 469 | + <outlet property="leftButton" destination="liP-dN-sf3" id="PSM-x1-lPV"/> | ||
| 470 | + <outlet property="rightButton" destination="BNZ-3e-HXp" id="NDe-B7-wIV"/> | ||
| 471 | + </connections> | ||
| 409 | </viewController> | 472 | </viewController> | 
| 410 | <placeholder placeholderIdentifier="IBFirstResponder" id="jF4-GM-aCp" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> | 473 | <placeholder placeholderIdentifier="IBFirstResponder" id="jF4-GM-aCp" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> | 
| 411 | </objects> | 474 | </objects> | 
| 412 | - <point key="canvasLocation" x="3126" y="836"/> | 475 | + <point key="canvasLocation" x="3124.6376811594205" y="835.71428571428567"/> | 
| 476 | + </scene> | ||
| 477 | + <!--Sharing History View Controller--> | ||
| 478 | + <scene sceneID="Yng-iu-80u"> | ||
| 479 | + <objects> | ||
| 480 | + <tableViewController id="xOZ-Af-1Nw" customClass="SharingHistoryViewController" customModule="SwiftWarplyFramework" customModuleProvider="target" sceneMemberID="viewController"> | ||
| 481 | + <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="160" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" id="IAk-m8-ZIC"> | ||
| 482 | + <rect key="frame" x="0.0" y="0.0" width="414" height="896"/> | ||
| 483 | + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||
| 484 | + <color key="backgroundColor" systemColor="systemBackgroundColor"/> | ||
| 485 | + <prototypes> | ||
| 486 | + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" selectionStyle="default" indentationWidth="10" reuseIdentifier="AnalysisItemViewCell" rowHeight="160" id="iNx-Id-iLB" customClass="AnalysisItemViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target"> | ||
| 487 | + <rect key="frame" x="0.0" y="44.5" width="414" height="160"/> | ||
| 488 | + <autoresizingMask key="autoresizingMask"/> | ||
| 489 | + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="iNx-Id-iLB" id="X28-3l-fcy"> | ||
| 490 | + <rect key="frame" x="0.0" y="0.0" width="414" height="160"/> | ||
| 491 | + <autoresizingMask key="autoresizingMask"/> | ||
| 492 | + <subviews> | ||
| 493 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="05/05/2022" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fWY-zJ-P1c" userLabel="Date"> | ||
| 494 | + <rect key="frame" x="10" y="20" width="394" height="16"/> | ||
| 495 | + <constraints> | ||
| 496 | + <constraint firstAttribute="height" constant="16" id="5pR-Xb-nB2"/> | ||
| 497 | + </constraints> | ||
| 498 | + <fontDescription key="fontDescription" type="boldSystem" pointSize="13"/> | ||
| 499 | + <nil key="textColor"/> | ||
| 500 | + <nil key="highlightedColor"/> | ||
| 501 | + </label> | ||
| 502 | + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="rW5-M3-c7s"> | ||
| 503 | + <rect key="frame" x="10" y="46" width="28" height="28"/> | ||
| 504 | + <constraints> | ||
| 505 | + <constraint firstAttribute="height" constant="28" id="Nw7-Mi-QTe"/> | ||
| 506 | + <constraint firstAttribute="width" constant="28" id="hEI-zc-TX4"/> | ||
| 507 | + </constraints> | ||
| 508 | + </imageView> | ||
| 509 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="4,00€" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Pyr-Jo-zxl" userLabel="Price"> | ||
| 510 | + <rect key="frame" x="341.5" y="50" width="52.5" height="20"/> | ||
| 511 | + <constraints> | ||
| 512 | + <constraint firstAttribute="height" constant="20" id="WPI-8H-zbd"/> | ||
| 513 | + </constraints> | ||
| 514 | + <fontDescription key="fontDescription" type="boldSystem" pointSize="18"/> | ||
| 515 | + <nil key="textColor"/> | ||
| 516 | + <nil key="highlightedColor"/> | ||
| 517 | + </label> | ||
| 518 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="248" verticalHuggingPriority="251" text="BOX" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hqA-F6-n9s" userLabel="Title"> | ||
| 519 | + <rect key="frame" x="42" y="50" width="295.5" height="20"/> | ||
| 520 | + <constraints> | ||
| 521 | + <constraint firstAttribute="height" constant="20" id="D6h-47-exa"/> | ||
| 522 | + </constraints> | ||
| 523 | + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/> | ||
| 524 | + <nil key="textColor"/> | ||
| 525 | + <nil key="highlightedColor"/> | ||
| 526 | + </label> | ||
| 527 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="248" verticalHuggingPriority="251" text="Έκπτωτικό κουπόνι" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xac-fs-J8S" userLabel="Subtitle"> | ||
| 528 | + <rect key="frame" x="42" y="72" width="295.5" height="21.5"/> | ||
| 529 | + <fontDescription key="fontDescription" type="system" pointSize="18"/> | ||
| 530 | + <nil key="textColor"/> | ||
| 531 | + <nil key="highlightedColor"/> | ||
| 532 | + </label> | ||
| 533 | + </subviews> | ||
| 534 | + <constraints> | ||
| 535 | + <constraint firstItem="fWY-zJ-P1c" firstAttribute="top" secondItem="X28-3l-fcy" secondAttribute="top" constant="20" id="Gj8-gE-gbj"/> | ||
| 536 | + <constraint firstAttribute="trailing" secondItem="fWY-zJ-P1c" secondAttribute="trailing" constant="10" id="MNz-as-PZd"/> | ||
| 537 | + <constraint firstItem="hqA-F6-n9s" firstAttribute="centerY" secondItem="rW5-M3-c7s" secondAttribute="centerY" id="OpX-dx-J0h"/> | ||
| 538 | + <constraint firstItem="rW5-M3-c7s" firstAttribute="top" secondItem="fWY-zJ-P1c" secondAttribute="bottom" constant="10" id="Sbw-Ar-xiH"/> | ||
| 539 | + <constraint firstItem="xac-fs-J8S" firstAttribute="leading" secondItem="hqA-F6-n9s" secondAttribute="leading" id="UYN-ui-q74"/> | ||
| 540 | + <constraint firstItem="rW5-M3-c7s" firstAttribute="leading" secondItem="X28-3l-fcy" secondAttribute="leading" constant="10" id="Vco-mW-IpG"/> | ||
| 541 | + <constraint firstItem="fWY-zJ-P1c" firstAttribute="leading" secondItem="X28-3l-fcy" secondAttribute="leading" constant="10" id="Ynl-uB-QjI"/> | ||
| 542 | + <constraint firstItem="xac-fs-J8S" firstAttribute="trailing" secondItem="hqA-F6-n9s" secondAttribute="trailing" id="bKd-IG-1da"/> | ||
| 543 | + <constraint firstItem="xac-fs-J8S" firstAttribute="top" secondItem="hqA-F6-n9s" secondAttribute="bottom" constant="2" id="mQi-g5-OUm"/> | ||
| 544 | + <constraint firstItem="Pyr-Jo-zxl" firstAttribute="leading" secondItem="hqA-F6-n9s" secondAttribute="trailing" constant="4" id="mzB-xA-7SR"/> | ||
| 545 | + <constraint firstAttribute="trailing" secondItem="Pyr-Jo-zxl" secondAttribute="trailing" constant="20" id="nYY-Th-Hob"/> | ||
| 546 | + <constraint firstItem="hqA-F6-n9s" firstAttribute="leading" secondItem="rW5-M3-c7s" secondAttribute="trailing" constant="4" id="r8B-Tl-KPA"/> | ||
| 547 | + <constraint firstItem="Pyr-Jo-zxl" firstAttribute="centerY" secondItem="rW5-M3-c7s" secondAttribute="centerY" id="zif-gr-5SM"/> | ||
| 548 | + </constraints> | ||
| 549 | + </tableViewCellContentView> | ||
| 550 | + <connections> | ||
| 551 | + <outlet property="dateLabel" destination="fWY-zJ-P1c" id="zmh-T6-Uia"/> | ||
| 552 | + <outlet property="itemImage" destination="rW5-M3-c7s" id="27r-CK-e8f"/> | ||
| 553 | + <outlet property="priceLabel" destination="Pyr-Jo-zxl" id="hWV-75-Gqf"/> | ||
| 554 | + <outlet property="subtitleLabel" destination="xac-fs-J8S" id="7ml-5a-zmc"/> | ||
| 555 | + <outlet property="titleLabel" destination="hqA-F6-n9s" id="zlL-DU-81T"/> | ||
| 556 | + </connections> | ||
| 557 | + </tableViewCell> | ||
| 558 | + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="AnalysisHeaderViewCell" rowHeight="280" id="HMC-zK-06F" customClass="AnalysisHeaderViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target"> | ||
| 559 | + <rect key="frame" x="0.0" y="204.5" width="414" height="280"/> | ||
| 560 | + <autoresizingMask key="autoresizingMask"/> | ||
| 561 | + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="HMC-zK-06F" id="RtV-Li-Dnj"> | ||
| 562 | + <rect key="frame" x="0.0" y="0.0" width="414" height="280"/> | ||
| 563 | + <autoresizingMask key="autoresizingMask"/> | ||
| 564 | + <subviews> | ||
| 565 | + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="xmN-ke-oBj"> | ||
| 566 | + <rect key="frame" x="124" y="31" width="166" height="166"/> | ||
| 567 | + <constraints> | ||
| 568 | + <constraint firstAttribute="height" constant="166" id="OG9-xL-K4U"/> | ||
| 569 | + <constraint firstAttribute="width" constant="166" id="Xgj-YV-J4n"/> | ||
| 570 | + </constraints> | ||
| 571 | + </imageView> | ||
| 572 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Αναλυτικά:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LKw-8l-mRY"> | ||
| 573 | + <rect key="frame" x="162" y="248" width="90" height="22"/> | ||
| 574 | + <constraints> | ||
| 575 | + <constraint firstAttribute="height" constant="22" id="T1B-pX-6hx"/> | ||
| 576 | + </constraints> | ||
| 577 | + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/> | ||
| 578 | + <nil key="textColor"/> | ||
| 579 | + <nil key="highlightedColor"/> | ||
| 580 | + </label> | ||
| 581 | + </subviews> | ||
| 582 | + <constraints> | ||
| 583 | + <constraint firstItem="xmN-ke-oBj" firstAttribute="centerX" secondItem="RtV-Li-Dnj" secondAttribute="centerX" id="LvL-o4-MTE"/> | ||
| 584 | + <constraint firstAttribute="bottom" secondItem="LKw-8l-mRY" secondAttribute="bottom" constant="10" id="jlt-UV-Eud"/> | ||
| 585 | + <constraint firstItem="xmN-ke-oBj" firstAttribute="top" secondItem="RtV-Li-Dnj" secondAttribute="topMargin" constant="20" id="v4Z-tl-gBX"/> | ||
| 586 | + <constraint firstItem="LKw-8l-mRY" firstAttribute="centerX" secondItem="RtV-Li-Dnj" secondAttribute="centerX" id="yJq-7A-H3r"/> | ||
| 587 | + </constraints> | ||
| 588 | + </tableViewCellContentView> | ||
| 589 | + <connections> | ||
| 590 | + <outlet property="itemImage" destination="xmN-ke-oBj" id="zRs-Ks-2Re"/> | ||
| 591 | + <outlet property="titleLabel" destination="LKw-8l-mRY" id="2Nl-uC-2aJ"/> | ||
| 592 | + </connections> | ||
| 593 | + </tableViewCell> | ||
| 594 | + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="AnalysisHeaderMessageViewCell" rowHeight="380" id="oPh-jz-GSZ" customClass="AnalysisHeaderMessageViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target"> | ||
| 595 | + <rect key="frame" x="0.0" y="484.5" width="414" height="380"/> | ||
| 596 | + <autoresizingMask key="autoresizingMask"/> | ||
| 597 | + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="oPh-jz-GSZ" id="8oK-tI-pLa"> | ||
| 598 | + <rect key="frame" x="0.0" y="0.0" width="414" height="380"/> | ||
| 599 | + <autoresizingMask key="autoresizingMask"/> | ||
| 600 | + <subviews> | ||
| 601 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Μέχρι τώρα έχεις κερδίσει 20,00€ σε προσφορές από 3 κουπόνια!" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nkc-wO-by3"> | ||
| 602 | + <rect key="frame" x="50" y="237" width="314" height="60"/> | ||
| 603 | + <constraints> | ||
| 604 | + <constraint firstAttribute="height" constant="60" id="ZEz-dt-NJa"/> | ||
| 605 | + </constraints> | ||
| 606 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
| 607 | + <nil key="textColor"/> | ||
| 608 | + <nil key="highlightedColor"/> | ||
| 609 | + </label> | ||
| 610 | + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="sdY-Vd-bbW"> | ||
| 611 | + <rect key="frame" x="124" y="31" width="166" height="166"/> | ||
| 612 | + <constraints> | ||
| 613 | + <constraint firstAttribute="height" constant="166" id="ZHj-a8-3y1"/> | ||
| 614 | + <constraint firstAttribute="width" constant="166" id="oqg-jC-ibc"/> | ||
| 615 | + </constraints> | ||
| 616 | + </imageView> | ||
| 617 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Αναλυτικά:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9MF-rh-eec"> | ||
| 618 | + <rect key="frame" x="166" y="339" width="82" height="20"/> | ||
| 619 | + <constraints> | ||
| 620 | + <constraint firstAttribute="height" constant="20" id="XkT-At-XWY"/> | ||
| 621 | + </constraints> | ||
| 622 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
| 623 | + <nil key="textColor"/> | ||
| 624 | + <nil key="highlightedColor"/> | ||
| 625 | + </label> | ||
| 626 | + </subviews> | ||
| 627 | + <constraints> | ||
| 628 | + <constraint firstItem="nkc-wO-by3" firstAttribute="top" secondItem="sdY-Vd-bbW" secondAttribute="bottom" constant="40" id="2Yl-Fb-ksG"/> | ||
| 629 | + <constraint firstItem="sdY-Vd-bbW" firstAttribute="top" secondItem="8oK-tI-pLa" secondAttribute="topMargin" constant="20" id="CEe-Np-pPS"/> | ||
| 630 | + <constraint firstAttribute="bottomMargin" secondItem="9MF-rh-eec" secondAttribute="bottom" constant="10" id="E0e-rS-Vwh"/> | ||
| 631 | + <constraint firstItem="sdY-Vd-bbW" firstAttribute="centerX" secondItem="8oK-tI-pLa" secondAttribute="centerX" id="L16-AP-9gA"/> | ||
| 632 | + <constraint firstItem="nkc-wO-by3" firstAttribute="leading" secondItem="8oK-tI-pLa" secondAttribute="leadingMargin" constant="30" id="MhA-nS-gcP"/> | ||
| 633 | + <constraint firstAttribute="trailingMargin" secondItem="nkc-wO-by3" secondAttribute="trailing" constant="30" id="dIv-s4-jcV"/> | ||
| 634 | + <constraint firstItem="9MF-rh-eec" firstAttribute="centerX" secondItem="8oK-tI-pLa" secondAttribute="centerX" id="pKh-jT-Xoe"/> | ||
| 635 | + </constraints> | ||
| 636 | + </tableViewCellContentView> | ||
| 637 | + <connections> | ||
| 638 | + <outlet property="itemImage" destination="sdY-Vd-bbW" id="FPk-8S-kCA"/> | ||
| 639 | + <outlet property="messageLabel" destination="nkc-wO-by3" id="4gl-nq-4jN"/> | ||
| 640 | + <outlet property="titleLabel" destination="9MF-rh-eec" id="ogv-9c-JWm"/> | ||
| 641 | + </connections> | ||
| 642 | + </tableViewCell> | ||
| 643 | + </prototypes> | ||
| 644 | + <connections> | ||
| 645 | + <outlet property="dataSource" destination="xOZ-Af-1Nw" id="rM1-30-TpG"/> | ||
| 646 | + <outlet property="delegate" destination="xOZ-Af-1Nw" id="YFj-hI-ntL"/> | ||
| 647 | + </connections> | ||
| 648 | + </tableView> | ||
| 649 | + </tableViewController> | ||
| 650 | + <placeholder placeholderIdentifier="IBFirstResponder" id="4gQ-3O-aEc" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> | ||
| 651 | + </objects> | ||
| 652 | + <point key="canvasLocation" x="3903" y="836"/> | ||
| 413 | </scene> | 653 | </scene> | 
| 414 | <!--Wallet View Controller--> | 654 | <!--Wallet View Controller--> | 
| 415 | <scene sceneID="tSr-9x-GQW"> | 655 | <scene sceneID="tSr-9x-GQW"> | 
| ... | @@ -615,19 +855,19 @@ | ... | @@ -615,19 +855,19 @@ | 
| 615 | <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="2" translatesAutoresizingMaskIntoConstraints="NO" id="MCY-xv-vpg"> | 855 | <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="2" translatesAutoresizingMaskIntoConstraints="NO" id="MCY-xv-vpg"> | 
| 616 | <rect key="frame" x="20" y="20" width="254" height="60.5"/> | 856 | <rect key="frame" x="20" y="20" width="254" height="60.5"/> | 
| 617 | <subviews> | 857 | <subviews> | 
| 618 | - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Ενεργός κωδικός:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ucC-u4-AQL"> | 858 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Ενεργός κωδικός:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ucC-u4-AQL"> | 
| 619 | <rect key="frame" x="0.0" y="0.0" width="254" height="21.5"/> | 859 | <rect key="frame" x="0.0" y="0.0" width="254" height="21.5"/> | 
| 620 | <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="18"/> | 860 | <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="18"/> | 
| 621 | <color key="textColor" red="0.23529411759999999" green="0.32549019610000002" blue="0.39607843139999999" alpha="1" colorSpace="calibratedRGB"/> | 861 | <color key="textColor" red="0.23529411759999999" green="0.32549019610000002" blue="0.39607843139999999" alpha="1" colorSpace="calibratedRGB"/> | 
| 622 | <nil key="highlightedColor"/> | 862 | <nil key="highlightedColor"/> | 
| 623 | </label> | 863 | </label> | 
| 624 | - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="961544809" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qBe-Jw-QUx"> | 864 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="961544809" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qBe-Jw-QUx"> | 
| 625 | <rect key="frame" x="0.0" y="23.5" width="254" height="21.5"/> | 865 | <rect key="frame" x="0.0" y="23.5" width="254" height="21.5"/> | 
| 626 | <fontDescription key="fontDescription" type="system" weight="heavy" pointSize="18"/> | 866 | <fontDescription key="fontDescription" type="system" weight="heavy" pointSize="18"/> | 
| 627 | <color key="textColor" red="0.23529411759999999" green="0.32549019610000002" blue="0.39607843139999999" alpha="1" colorSpace="calibratedRGB"/> | 867 | <color key="textColor" red="0.23529411759999999" green="0.32549019610000002" blue="0.39607843139999999" alpha="1" colorSpace="calibratedRGB"/> | 
| 628 | <nil key="highlightedColor"/> | 868 | <nil key="highlightedColor"/> | 
| 629 | </label> | 869 | </label> | 
| 630 | - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Λήγει σε 4 ημέρες" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qL0-3b-eqA"> | 870 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Λήγει σε 4 ημέρες" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qL0-3b-eqA"> | 
| 631 | <rect key="frame" x="0.0" y="47" width="254" height="13.5"/> | 871 | <rect key="frame" x="0.0" y="47" width="254" height="13.5"/> | 
| 632 | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="11"/> | 872 | <fontDescription key="fontDescription" type="system" weight="medium" pointSize="11"/> | 
| 633 | <color key="textColor" red="0.2274509804" green="0.32156862749999998" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/> | 873 | <color key="textColor" red="0.2274509804" green="0.32156862749999998" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/> | 
| ... | @@ -1714,7 +1954,7 @@ | ... | @@ -1714,7 +1954,7 @@ | 
| 1714 | </viewController> | 1954 | </viewController> | 
| 1715 | <placeholder placeholderIdentifier="IBFirstResponder" id="HMq-Fe-QT6" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> | 1955 | <placeholder placeholderIdentifier="IBFirstResponder" id="HMq-Fe-QT6" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> | 
| 1716 | </objects> | 1956 | </objects> | 
| 1717 | - <point key="canvasLocation" x="2951" y="144"/> | 1957 | + <point key="canvasLocation" x="3125" y="129"/> | 
| 1718 | </scene> | 1958 | </scene> | 
| 1719 | <!--Active Gifts View Controller--> | 1959 | <!--Active Gifts View Controller--> | 
| 1720 | <scene sceneID="GKF-Re-TAp"> | 1960 | <scene sceneID="GKF-Re-TAp"> | 
| ... | @@ -1743,7 +1983,184 @@ | ... | @@ -1743,7 +1983,184 @@ | 
| 1743 | </viewController> | 1983 | </viewController> | 
| 1744 | <placeholder placeholderIdentifier="IBFirstResponder" id="dOF-5b-vTf" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> | 1984 | <placeholder placeholderIdentifier="IBFirstResponder" id="dOF-5b-vTf" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> | 
| 1745 | </objects> | 1985 | </objects> | 
| 1746 | - <point key="canvasLocation" x="3590" y="144"/> | 1986 | + <point key="canvasLocation" x="3903" y="129"/> | 
| 1987 | + </scene> | ||
| 1988 | + <!--History View Controller--> | ||
| 1989 | + <scene sceneID="KER-Da-ryV"> | ||
| 1990 | + <objects> | ||
| 1991 | + <tableViewController id="ze6-Kr-Io4" customClass="HistoryViewController" customModule="SwiftWarplyFramework" customModuleProvider="target" sceneMemberID="viewController"> | ||
| 1992 | + <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="160" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" id="qD1-U4-LYx"> | ||
| 1993 | + <rect key="frame" x="0.0" y="0.0" width="414" height="896"/> | ||
| 1994 | + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> | ||
| 1995 | + <color key="backgroundColor" systemColor="systemBackgroundColor"/> | ||
| 1996 | + <prototypes> | ||
| 1997 | + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" selectionStyle="default" indentationWidth="10" reuseIdentifier="AnalysisItemViewCell" rowHeight="160" id="mwO-Y9-Whd" customClass="AnalysisItemViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target"> | ||
| 1998 | + <rect key="frame" x="0.0" y="44.5" width="414" height="160"/> | ||
| 1999 | + <autoresizingMask key="autoresizingMask"/> | ||
| 2000 | + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="mwO-Y9-Whd" id="4Lb-Ez-2D5"> | ||
| 2001 | + <rect key="frame" x="0.0" y="0.0" width="414" height="160"/> | ||
| 2002 | + <autoresizingMask key="autoresizingMask"/> | ||
| 2003 | + <subviews> | ||
| 2004 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="05/05/2022" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZqN-UN-x9M" userLabel="Date"> | ||
| 2005 | + <rect key="frame" x="10" y="20" width="394" height="16"/> | ||
| 2006 | + <constraints> | ||
| 2007 | + <constraint firstAttribute="height" constant="16" id="Vgv-VT-mzv"/> | ||
| 2008 | + </constraints> | ||
| 2009 | + <fontDescription key="fontDescription" type="boldSystem" pointSize="13"/> | ||
| 2010 | + <nil key="textColor"/> | ||
| 2011 | + <nil key="highlightedColor"/> | ||
| 2012 | + </label> | ||
| 2013 | + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="VHu-ds-i1E"> | ||
| 2014 | + <rect key="frame" x="10" y="46" width="28" height="28"/> | ||
| 2015 | + <constraints> | ||
| 2016 | + <constraint firstAttribute="width" constant="28" id="0eN-xR-ec6"/> | ||
| 2017 | + <constraint firstAttribute="height" constant="28" id="OZS-QM-eof"/> | ||
| 2018 | + </constraints> | ||
| 2019 | + </imageView> | ||
| 2020 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="4,00€" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZGs-RN-c7E" userLabel="Price"> | ||
| 2021 | + <rect key="frame" x="341.5" y="50" width="52.5" height="20"/> | ||
| 2022 | + <constraints> | ||
| 2023 | + <constraint firstAttribute="height" constant="20" id="VS4-Dn-eBF"/> | ||
| 2024 | + </constraints> | ||
| 2025 | + <fontDescription key="fontDescription" type="boldSystem" pointSize="18"/> | ||
| 2026 | + <nil key="textColor"/> | ||
| 2027 | + <nil key="highlightedColor"/> | ||
| 2028 | + </label> | ||
| 2029 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="248" verticalHuggingPriority="251" text="BOX" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9Ag-Sp-uXt" userLabel="Title"> | ||
| 2030 | + <rect key="frame" x="42" y="50" width="295.5" height="20"/> | ||
| 2031 | + <constraints> | ||
| 2032 | + <constraint firstAttribute="height" constant="20" id="U6X-e9-8w7"/> | ||
| 2033 | + </constraints> | ||
| 2034 | + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/> | ||
| 2035 | + <nil key="textColor"/> | ||
| 2036 | + <nil key="highlightedColor"/> | ||
| 2037 | + </label> | ||
| 2038 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="248" verticalHuggingPriority="251" text="Έκπτωτικό κουπόνι" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4bA-Ab-3q1" userLabel="Subtitle"> | ||
| 2039 | + <rect key="frame" x="42" y="72" width="295.5" height="21.5"/> | ||
| 2040 | + <fontDescription key="fontDescription" type="system" pointSize="18"/> | ||
| 2041 | + <nil key="textColor"/> | ||
| 2042 | + <nil key="highlightedColor"/> | ||
| 2043 | + </label> | ||
| 2044 | + </subviews> | ||
| 2045 | + <constraints> | ||
| 2046 | + <constraint firstItem="9Ag-Sp-uXt" firstAttribute="leading" secondItem="VHu-ds-i1E" secondAttribute="trailing" constant="4" id="5Df-Np-oYZ"/> | ||
| 2047 | + <constraint firstAttribute="trailing" secondItem="ZGs-RN-c7E" secondAttribute="trailing" constant="20" id="7wc-o5-29i"/> | ||
| 2048 | + <constraint firstItem="ZGs-RN-c7E" firstAttribute="leading" secondItem="9Ag-Sp-uXt" secondAttribute="trailing" constant="4" id="Hjq-nc-G40"/> | ||
| 2049 | + <constraint firstItem="ZqN-UN-x9M" firstAttribute="leading" secondItem="4Lb-Ez-2D5" secondAttribute="leading" constant="10" id="PT7-de-Fld"/> | ||
| 2050 | + <constraint firstItem="VHu-ds-i1E" firstAttribute="leading" secondItem="4Lb-Ez-2D5" secondAttribute="leading" constant="10" id="Psu-2D-Icf"/> | ||
| 2051 | + <constraint firstItem="9Ag-Sp-uXt" firstAttribute="centerY" secondItem="VHu-ds-i1E" secondAttribute="centerY" id="Px2-r8-FUX"/> | ||
| 2052 | + <constraint firstItem="4bA-Ab-3q1" firstAttribute="top" secondItem="9Ag-Sp-uXt" secondAttribute="bottom" constant="2" id="VrB-Ui-gWz"/> | ||
| 2053 | + <constraint firstItem="4bA-Ab-3q1" firstAttribute="trailing" secondItem="9Ag-Sp-uXt" secondAttribute="trailing" id="bhA-o7-Cso"/> | ||
| 2054 | + <constraint firstItem="ZGs-RN-c7E" firstAttribute="centerY" secondItem="VHu-ds-i1E" secondAttribute="centerY" id="hDC-IU-u0r"/> | ||
| 2055 | + <constraint firstAttribute="trailing" secondItem="ZqN-UN-x9M" secondAttribute="trailing" constant="10" id="rSB-Gw-mg0"/> | ||
| 2056 | + <constraint firstItem="VHu-ds-i1E" firstAttribute="top" secondItem="ZqN-UN-x9M" secondAttribute="bottom" constant="10" id="rY7-hZ-thV"/> | ||
| 2057 | + <constraint firstItem="4bA-Ab-3q1" firstAttribute="leading" secondItem="9Ag-Sp-uXt" secondAttribute="leading" id="vSP-D0-3lM"/> | ||
| 2058 | + <constraint firstItem="ZqN-UN-x9M" firstAttribute="top" secondItem="4Lb-Ez-2D5" secondAttribute="top" constant="20" id="wui-T5-7cH"/> | ||
| 2059 | + </constraints> | ||
| 2060 | + </tableViewCellContentView> | ||
| 2061 | + <connections> | ||
| 2062 | + <outlet property="dateLabel" destination="ZqN-UN-x9M" id="GvG-Jp-72t"/> | ||
| 2063 | + <outlet property="itemImage" destination="VHu-ds-i1E" id="hie-z9-0r4"/> | ||
| 2064 | + <outlet property="priceLabel" destination="ZGs-RN-c7E" id="pMD-5S-hAB"/> | ||
| 2065 | + <outlet property="subtitleLabel" destination="4bA-Ab-3q1" id="cGH-SR-2cx"/> | ||
| 2066 | + <outlet property="titleLabel" destination="9Ag-Sp-uXt" id="FN2-u8-I6a"/> | ||
| 2067 | + </connections> | ||
| 2068 | + </tableViewCell> | ||
| 2069 | + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="AnalysisHeaderViewCell" rowHeight="280" id="TXv-Qw-94X" customClass="AnalysisHeaderViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target"> | ||
| 2070 | + <rect key="frame" x="0.0" y="204.5" width="414" height="280"/> | ||
| 2071 | + <autoresizingMask key="autoresizingMask"/> | ||
| 2072 | + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="TXv-Qw-94X" id="fmq-OF-USg"> | ||
| 2073 | + <rect key="frame" x="0.0" y="0.0" width="414" height="280"/> | ||
| 2074 | + <autoresizingMask key="autoresizingMask"/> | ||
| 2075 | + <subviews> | ||
| 2076 | + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Lul-sk-Xaj"> | ||
| 2077 | + <rect key="frame" x="124" y="31" width="166" height="166"/> | ||
| 2078 | + <constraints> | ||
| 2079 | + <constraint firstAttribute="height" constant="166" id="gOb-nT-us3"/> | ||
| 2080 | + <constraint firstAttribute="width" constant="166" id="pY8-aZ-nnb"/> | ||
| 2081 | + </constraints> | ||
| 2082 | + </imageView> | ||
| 2083 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Αναλυτικά:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XjQ-Dg-ucn"> | ||
| 2084 | + <rect key="frame" x="162" y="248" width="90" height="22"/> | ||
| 2085 | + <constraints> | ||
| 2086 | + <constraint firstAttribute="height" constant="22" id="Ccg-Xm-m6C"/> | ||
| 2087 | + </constraints> | ||
| 2088 | + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/> | ||
| 2089 | + <nil key="textColor"/> | ||
| 2090 | + <nil key="highlightedColor"/> | ||
| 2091 | + </label> | ||
| 2092 | + </subviews> | ||
| 2093 | + <constraints> | ||
| 2094 | + <constraint firstItem="XjQ-Dg-ucn" firstAttribute="centerX" secondItem="fmq-OF-USg" secondAttribute="centerX" id="Lbh-ZU-mWb"/> | ||
| 2095 | + <constraint firstAttribute="bottom" secondItem="XjQ-Dg-ucn" secondAttribute="bottom" constant="10" id="b1r-ZX-eVt"/> | ||
| 2096 | + <constraint firstItem="Lul-sk-Xaj" firstAttribute="centerX" secondItem="fmq-OF-USg" secondAttribute="centerX" id="hOd-Db-G3B"/> | ||
| 2097 | + <constraint firstItem="Lul-sk-Xaj" firstAttribute="top" secondItem="fmq-OF-USg" secondAttribute="topMargin" constant="20" id="p5M-bI-lEn"/> | ||
| 2098 | + </constraints> | ||
| 2099 | + </tableViewCellContentView> | ||
| 2100 | + <connections> | ||
| 2101 | + <outlet property="itemImage" destination="Lul-sk-Xaj" id="yG3-o7-77x"/> | ||
| 2102 | + <outlet property="titleLabel" destination="XjQ-Dg-ucn" id="1uG-vu-ajJ"/> | ||
| 2103 | + </connections> | ||
| 2104 | + </tableViewCell> | ||
| 2105 | + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="AnalysisHeaderMessageViewCell" rowHeight="380" id="9cE-DQ-oc7" customClass="AnalysisHeaderMessageViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target"> | ||
| 2106 | + <rect key="frame" x="0.0" y="484.5" width="414" height="380"/> | ||
| 2107 | + <autoresizingMask key="autoresizingMask"/> | ||
| 2108 | + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="9cE-DQ-oc7" id="Kcf-Zv-eMe"> | ||
| 2109 | + <rect key="frame" x="0.0" y="0.0" width="414" height="380"/> | ||
| 2110 | + <autoresizingMask key="autoresizingMask"/> | ||
| 2111 | + <subviews> | ||
| 2112 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Μέχρι τώρα έχεις κερδίσει 20,00€ σε προσφορές από 3 κουπόνια!" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Yth-0S-P60"> | ||
| 2113 | + <rect key="frame" x="50" y="237" width="314" height="60"/> | ||
| 2114 | + <constraints> | ||
| 2115 | + <constraint firstAttribute="height" constant="60" id="Ams-n8-yUP"/> | ||
| 2116 | + </constraints> | ||
| 2117 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
| 2118 | + <nil key="textColor"/> | ||
| 2119 | + <nil key="highlightedColor"/> | ||
| 2120 | + </label> | ||
| 2121 | + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="QY9-ar-jbw"> | ||
| 2122 | + <rect key="frame" x="124" y="31" width="166" height="166"/> | ||
| 2123 | + <constraints> | ||
| 2124 | + <constraint firstAttribute="width" constant="166" id="ZuH-X9-Nie"/> | ||
| 2125 | + <constraint firstAttribute="height" constant="166" id="dUQ-Ou-Apu"/> | ||
| 2126 | + </constraints> | ||
| 2127 | + </imageView> | ||
| 2128 | + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Αναλυτικά:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nzx-D5-LHo"> | ||
| 2129 | + <rect key="frame" x="166" y="339" width="82" height="20"/> | ||
| 2130 | + <constraints> | ||
| 2131 | + <constraint firstAttribute="height" constant="20" id="K9D-vL-Saj"/> | ||
| 2132 | + </constraints> | ||
| 2133 | + <fontDescription key="fontDescription" type="system" pointSize="17"/> | ||
| 2134 | + <nil key="textColor"/> | ||
| 2135 | + <nil key="highlightedColor"/> | ||
| 2136 | + </label> | ||
| 2137 | + </subviews> | ||
| 2138 | + <constraints> | ||
| 2139 | + <constraint firstAttribute="trailingMargin" secondItem="Yth-0S-P60" secondAttribute="trailing" constant="30" id="6SE-2z-kcV"/> | ||
| 2140 | + <constraint firstItem="QY9-ar-jbw" firstAttribute="top" secondItem="Kcf-Zv-eMe" secondAttribute="topMargin" constant="20" id="7r7-Q0-rq4"/> | ||
| 2141 | + <constraint firstItem="nzx-D5-LHo" firstAttribute="centerX" secondItem="Kcf-Zv-eMe" secondAttribute="centerX" id="9MU-dy-Lh7"/> | ||
| 2142 | + <constraint firstItem="Yth-0S-P60" firstAttribute="top" secondItem="QY9-ar-jbw" secondAttribute="bottom" constant="40" id="f7j-JG-hqO"/> | ||
| 2143 | + <constraint firstItem="Yth-0S-P60" firstAttribute="leading" secondItem="Kcf-Zv-eMe" secondAttribute="leadingMargin" constant="30" id="qsD-vg-jYM"/> | ||
| 2144 | + <constraint firstAttribute="bottomMargin" secondItem="nzx-D5-LHo" secondAttribute="bottom" constant="10" id="tgQ-Ov-G72"/> | ||
| 2145 | + <constraint firstItem="QY9-ar-jbw" firstAttribute="centerX" secondItem="Kcf-Zv-eMe" secondAttribute="centerX" id="xiH-Cs-G6E"/> | ||
| 2146 | + </constraints> | ||
| 2147 | + </tableViewCellContentView> | ||
| 2148 | + <connections> | ||
| 2149 | + <outlet property="itemImage" destination="QY9-ar-jbw" id="UHu-bz-9Uk"/> | ||
| 2150 | + <outlet property="messageLabel" destination="Yth-0S-P60" id="tVN-jB-FvL"/> | ||
| 2151 | + <outlet property="titleLabel" destination="nzx-D5-LHo" id="cU7-6c-HiO"/> | ||
| 2152 | + </connections> | ||
| 2153 | + </tableViewCell> | ||
| 2154 | + </prototypes> | ||
| 2155 | + <connections> | ||
| 2156 | + <outlet property="dataSource" destination="ze6-Kr-Io4" id="XcZ-cQ-TzG"/> | ||
| 2157 | + <outlet property="delegate" destination="ze6-Kr-Io4" id="pAt-Pk-8Z1"/> | ||
| 2158 | + </connections> | ||
| 2159 | + </tableView> | ||
| 2160 | + </tableViewController> | ||
| 2161 | + <placeholder placeholderIdentifier="IBFirstResponder" id="8Bf-SH-BtT" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> | ||
| 2162 | + </objects> | ||
| 2163 | + <point key="canvasLocation" x="4654" y="836"/> | ||
| 1747 | </scene> | 2164 | </scene> | 
| 1748 | <!--Telco View Controller--> | 2165 | <!--Telco View Controller--> | 
| 1749 | <scene sceneID="eiY-GQ-hTe"> | 2166 | <scene sceneID="eiY-GQ-hTe"> | ... | ... | 
| ... | @@ -63,6 +63,7 @@ | ... | @@ -63,6 +63,7 @@ | 
| 63 | - (NSDictionary*) getCoupons; | 63 | - (NSDictionary*) getCoupons; | 
| 64 | - (NSDictionary*) getTransactionHistory; | 64 | - (NSDictionary*) getTransactionHistory; | 
| 65 | - (NSDictionary*) getPointsHistory; | 65 | - (NSDictionary*) getPointsHistory; | 
| 66 | +- (NSDictionary*) getSharingHistory; | ||
| 66 | - (NSDictionary*)addAddress:(NSString*)friendlyName andAddressName:(NSString*)addressName andAddressNumber:(NSString*)addressNumber andPostalCode:(NSString*)postalCode andFloorNumber:(NSNumber*)floorNumber andDoorbell:(NSString*)doorbel andRegion:(NSString*)region andLatitude:(NSString*)latitude andLongitude:(NSString*)longitude andNotes:(NSString*)notes; | 67 | - (NSDictionary*)addAddress:(NSString*)friendlyName andAddressName:(NSString*)addressName andAddressNumber:(NSString*)addressNumber andPostalCode:(NSString*)postalCode andFloorNumber:(NSNumber*)floorNumber andDoorbell:(NSString*)doorbel andRegion:(NSString*)region andLatitude:(NSString*)latitude andLongitude:(NSString*)longitude andNotes:(NSString*)notes; | 
| 67 | - (NSDictionary*)getAddress; | 68 | - (NSDictionary*)getAddress; | 
| 68 | - (NSDictionary*)editAddress:(NSString*)friendlyName andAddressName:(NSString*)addressName andAddressNumber:(NSString*)addressNumber andPostalCode:(NSString*)postalCode andFloorNumber:(NSNumber*)floorNumber andDoorbell:(NSString*)doorbel andRegion:(NSString*)region andLatitude:(NSString*)latitude andLongitude:(NSString*)longitude andNotes:(NSString*)notes andUuid:(NSString*)uuid; | 69 | - (NSDictionary*)editAddress:(NSString*)friendlyName andAddressName:(NSString*)addressName andAddressNumber:(NSString*)addressNumber andPostalCode:(NSString*)postalCode andFloorNumber:(NSNumber*)floorNumber andDoorbell:(NSString*)doorbel andRegion:(NSString*)region andLatitude:(NSString*)latitude andLongitude:(NSString*)longitude andNotes:(NSString*)notes andUuid:(NSString*)uuid; | ... | ... | 
| ... | @@ -940,6 +940,35 @@ NSString *VERIFY_URL = @"/partners/cosmote/verify"; | ... | @@ -940,6 +940,35 @@ NSString *VERIFY_URL = @"/partners/cosmote/verify"; | 
| 940 | return resp; | 940 | return resp; | 
| 941 | } | 941 | } | 
| 942 | 942 | ||
| 943 | +- (NSDictionary*) getSharingHistory | ||
| 944 | +{ | ||
| 945 | + __block NSDictionary *resp = [NSDictionary alloc]; | ||
| 946 | + __block BOOL isRunLoopNested = NO; | ||
| 947 | + __block BOOL isOperationCompleted = NO; | ||
| 948 | + [[Warply sharedService] getSharingHistoryWithSuccessBlock:^(NSDictionary *response) { | ||
| 949 | + resp = response; | ||
| 950 | + isOperationCompleted = YES; | ||
| 951 | + if (isRunLoopNested) { | ||
| 952 | + CFRunLoopStop(CFRunLoopGetCurrent()); // CFRunLoopRun() returns | ||
| 953 | + } | ||
| 954 | + } failureBlock:^(NSError *error) { | ||
| 955 | + NSLog(@"%@", error); | ||
| 956 | + resp = nil; | ||
| 957 | + isOperationCompleted = YES; | ||
| 958 | + if (isRunLoopNested) { | ||
| 959 | + CFRunLoopStop(CFRunLoopGetCurrent()); // CFRunLoopRun() returns | ||
| 960 | + } | ||
| 961 | + }]; | ||
| 962 | + if ( ! isOperationCompleted) { | ||
| 963 | + isRunLoopNested = YES; | ||
| 964 | + NSLog(@"Waiting..."); | ||
| 965 | + CFRunLoopRun(); // Magic! | ||
| 966 | + isRunLoopNested = NO; | ||
| 967 | + } | ||
| 968 | + return resp; | ||
| 969 | +} | ||
| 970 | + | ||
| 971 | + | ||
| 943 | - (NSDictionary*)addAddress:(NSString*)friendlyName andAddressName:(NSString*)addressName andAddressNumber:(NSString*)addressNumber andPostalCode:(NSString*)postalCode andFloorNumber:(NSNumber*)floorNumber andDoorbell:(NSString*)doorbel andRegion:(NSString*)region andLatitude:(NSString*)latitude andLongitude:(NSString*)longitude andNotes:(NSString*)notes { | 972 | - (NSDictionary*)addAddress:(NSString*)friendlyName andAddressName:(NSString*)addressName andAddressNumber:(NSString*)addressNumber andPostalCode:(NSString*)postalCode andFloorNumber:(NSNumber*)floorNumber andDoorbell:(NSString*)doorbel andRegion:(NSString*)region andLatitude:(NSString*)latitude andLongitude:(NSString*)longitude andNotes:(NSString*)notes { | 
| 944 | __block NSDictionary *resp = [NSDictionary alloc]; | 973 | __block NSDictionary *resp = [NSDictionary alloc]; | 
| 945 | __block BOOL isRunLoopNested = NO; | 974 | __block BOOL isRunLoopNested = NO; | ... | ... | 
| 1 | +// | ||
| 2 | +// SharingHistoryViewController.swift | ||
| 3 | +// SwiftWarplyFramework | ||
| 4 | +// | ||
| 5 | +// Created by Manos Chorianopoulos on 18/7/22. | ||
| 6 | +// | ||
| 7 | + | ||
| 8 | +import UIKit | ||
| 9 | + | ||
| 10 | +class SharingHistoryViewController: AnalysisChildViewController { | ||
| 11 | + | ||
| 12 | + var loading: Bool = false | ||
| 13 | + var items: Array<swiftApi.SharingCouponModel> = Array() | ||
| 14 | + | ||
| 15 | + // TODO: remove this when configuring model | ||
| 16 | + let hasMessage = false | ||
| 17 | + | ||
| 18 | + // lifecycle | ||
| 19 | + override func viewDidLoad() { | ||
| 20 | + | ||
| 21 | + super.viewDidLoad() | ||
| 22 | + | ||
| 23 | + self.refreshControl = UIRefreshControl() | ||
| 24 | + self.refreshControl?.addTarget(self, action: #selector(handleRefresh(_:)), for: .valueChanged) | ||
| 25 | + | ||
| 26 | + handleRefresh(self.refreshControl!) | ||
| 27 | + } | ||
| 28 | + | ||
| 29 | + // mvp | ||
| 30 | + @objc func load() { | ||
| 31 | + | ||
| 32 | + if (loading) { | ||
| 33 | + return; | ||
| 34 | + } | ||
| 35 | + | ||
| 36 | + showLoading() | ||
| 37 | + | ||
| 38 | + swiftApi().getSharingHistoryAsync(responseCallback) | ||
| 39 | + } | ||
| 40 | + | ||
| 41 | + private func showLoading() { | ||
| 42 | + | ||
| 43 | + loading = true | ||
| 44 | + if (self.refreshControl!.isRefreshing) { | ||
| 45 | + return; | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + self.refreshControl!.beginRefreshing() | ||
| 49 | + } | ||
| 50 | + | ||
| 51 | + private func showError() { | ||
| 52 | + } | ||
| 53 | + | ||
| 54 | + private func showContent() { | ||
| 55 | + | ||
| 56 | + loading = false | ||
| 57 | + self.refreshControl!.endRefreshing() | ||
| 58 | + } | ||
| 59 | + | ||
| 60 | + // private | ||
| 61 | + func responseCallback (_ data: Array<swiftApi.SharingCouponModel>?) -> Void { | ||
| 62 | + | ||
| 63 | + self.items = data! | ||
| 64 | + showContent() | ||
| 65 | + DispatchQueue.main.async { | ||
| 66 | + self.tableView.reloadData() | ||
| 67 | + } | ||
| 68 | + } | ||
| 69 | + | ||
| 70 | + @objc func handleRefresh(_ refreshControl: UIRefreshControl) { | ||
| 71 | + | ||
| 72 | + self.perform(_: #selector(load), with: nil, afterDelay: 0.5) | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + // MARK: - Table view data source | ||
| 76 | + override func numberOfSections(in tableView: UITableView) -> Int { | ||
| 77 | + return 2 | ||
| 78 | + } | ||
| 79 | + | ||
| 80 | + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | ||
| 81 | + if (section == 0) { | ||
| 82 | + return 1; | ||
| 83 | + } | ||
| 84 | + | ||
| 85 | + return items.count | ||
| 86 | + } | ||
| 87 | + | ||
| 88 | + override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { | ||
| 89 | + if (indexPath.section == 0) { | ||
| 90 | + return hasMessage ? 380.0 : 280 | ||
| 91 | + } | ||
| 92 | + | ||
| 93 | + return 140.0 | ||
| 94 | + } | ||
| 95 | + | ||
| 96 | + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | ||
| 97 | + | ||
| 98 | + // header | ||
| 99 | + if (indexPath.section == 0) { | ||
| 100 | + if (hasMessage) { | ||
| 101 | + return tableView.dequeueReusableCell(withIdentifier: "AnalysisHeaderMessageViewCell", for: indexPath) as! AnalysisHeaderMessageViewCell | ||
| 102 | + } | ||
| 103 | + | ||
| 104 | + return tableView.dequeueReusableCell(withIdentifier: "AnalysisHeaderViewCell", for: indexPath) as! AnalysisHeaderViewCell | ||
| 105 | + } | ||
| 106 | + | ||
| 107 | + let cell = tableView.dequeueReusableCell(withIdentifier: "AnalysisItemViewCell", for: indexPath) as! AnalysisItemViewCell | ||
| 108 | + cell.configureCell(item: items[indexPath.row]) | ||
| 109 | + | ||
| 110 | + return cell | ||
| 111 | + } | ||
| 112 | +} | 
| 1 | +// | ||
| 2 | +// UIColorExtensions.swift | ||
| 3 | +// SwiftWarplyFramework | ||
| 4 | +// | ||
| 5 | +// Created by Manos Chorianopoulos on 18/7/22. | ||
| 6 | +// | ||
| 7 | + | ||
| 8 | +import Foundation | ||
| 9 | +import UIKit | ||
| 10 | + | ||
| 11 | +extension UIColor { | ||
| 12 | + convenience init(rgb: UInt) { | ||
| 13 | + self.init( | ||
| 14 | + red: CGFloat((rgb & 0xFF0000) >> 16) / 255.0, | ||
| 15 | + green: CGFloat((rgb & 0x00FF00) >> 8) / 255.0, | ||
| 16 | + blue: CGFloat(rgb & 0x0000FF) / 255.0, | ||
| 17 | + alpha: CGFloat(1.0) | ||
| 18 | + ) | ||
| 19 | + } | ||
| 20 | +} | 
| ... | @@ -156,7 +156,6 @@ public class swiftApi { | ... | @@ -156,7 +156,6 @@ public class swiftApi { | 
| 156 | return GlobalVariables.dfyCoupons | 156 | return GlobalVariables.dfyCoupons | 
| 157 | } | 157 | } | 
| 158 | 158 | ||
| 159 | - | ||
| 160 | public class CouponSetItemModel: Codable { | 159 | public class CouponSetItemModel: Codable { | 
| 161 | public let uuid: String? | 160 | public let uuid: String? | 
| 162 | public let admin_name: String? | 161 | public let admin_name: String? | ... | ... | 
- 
Please register or login to post a comment