Dimitris Togias

implement analysis vc

...@@ -19,6 +19,13 @@ ...@@ -19,6 +19,13 @@
19 1EBE97212865EE460080EFF7 /* MFYInboxTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EBE97202865EE460080EFF7 /* MFYInboxTableViewCell.swift */; }; 19 1EBE97212865EE460080EFF7 /* MFYInboxTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EBE97202865EE460080EFF7 /* MFYInboxTableViewCell.swift */; };
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 + A079366E2885D07700064122 /* AnalysisChildViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079366D2885D07700064122 /* AnalysisChildViewController.swift */; };
23 + A07936702885D95600064122 /* AnalysisItemViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079366F2885D95600064122 /* AnalysisItemViewCell.swift */; };
24 + A07936732885E67400064122 /* AnalysisItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = A07936722885E67400064122 /* AnalysisItem.swift */; };
25 + A07936762885E9CC00064122 /* UIColorExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A07936752885E9CC00064122 /* UIColorExtensions.swift */; };
26 + A07936792885EF9400064122 /* RESegmentedControl in Frameworks */ = {isa = PBXBuildFile; productRef = A07936782885EF9400064122 /* RESegmentedControl */; };
27 + A079367C2885F2F500064122 /* AnalysisHeaderViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079367B2885F2F500064122 /* AnalysisHeaderViewCell.swift */; };
28 + A079367E2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079367D2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift */; };
22 E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */ = {isa = PBXBuildFile; fileRef = E6A77852282933340045BBA8 /* SwiftWarplyFramework.docc */; }; 29 E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */ = {isa = PBXBuildFile; fileRef = E6A77852282933340045BBA8 /* SwiftWarplyFramework.docc */; };
23 E6A77854282933340045BBA8 /* SwiftWarplyFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = E6A77851282933340045BBA8 /* SwiftWarplyFramework.h */; settings = {ATTRIBUTES = (Public, ); }; }; 30 E6A77854282933340045BBA8 /* SwiftWarplyFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = E6A77851282933340045BBA8 /* SwiftWarplyFramework.h */; settings = {ATTRIBUTES = (Public, ); }; };
24 E6A778DF282933E60045BBA8 /* WarplyReactMethods.m in Sources */ = {isa = PBXBuildFile; fileRef = E6A7785B282933E40045BBA8 /* WarplyReactMethods.m */; }; 31 E6A778DF282933E60045BBA8 /* WarplyReactMethods.m in Sources */ = {isa = PBXBuildFile; fileRef = E6A7785B282933E40045BBA8 /* WarplyReactMethods.m */; };
...@@ -157,6 +164,12 @@ ...@@ -157,6 +164,12 @@
157 1EB5F4C728536FD60016F36E /* StepsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StepsViewController.swift; sourceTree = "<group>"; }; 164 1EB5F4C728536FD60016F36E /* StepsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StepsViewController.swift; sourceTree = "<group>"; };
158 1EB5F4C9285370C90016F36E /* LoyaltyAnalysisViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoyaltyAnalysisViewController.swift; sourceTree = "<group>"; }; 165 1EB5F4C9285370C90016F36E /* LoyaltyAnalysisViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoyaltyAnalysisViewController.swift; sourceTree = "<group>"; };
159 1EBE97202865EE460080EFF7 /* MFYInboxTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MFYInboxTableViewCell.swift; sourceTree = "<group>"; }; 166 1EBE97202865EE460080EFF7 /* MFYInboxTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MFYInboxTableViewCell.swift; sourceTree = "<group>"; };
167 + A079366D2885D07700064122 /* AnalysisChildViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisChildViewController.swift; sourceTree = "<group>"; };
168 + A079366F2885D95600064122 /* AnalysisItemViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisItemViewCell.swift; sourceTree = "<group>"; };
169 + A07936722885E67400064122 /* AnalysisItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisItem.swift; sourceTree = "<group>"; };
170 + A07936752885E9CC00064122 /* UIColorExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColorExtensions.swift; sourceTree = "<group>"; };
171 + A079367B2885F2F500064122 /* AnalysisHeaderViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisHeaderViewCell.swift; sourceTree = "<group>"; };
172 + A079367D2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisHeaderMessageViewCell.swift; sourceTree = "<group>"; };
160 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>"; }; 173 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>"; };
161 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>"; }; 174 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>"; };
162 C0D5F56DD4E5371A50AD2D87 /* Pods_SwiftWarplyFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwiftWarplyFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 175 C0D5F56DD4E5371A50AD2D87 /* Pods_SwiftWarplyFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwiftWarplyFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; };
...@@ -296,6 +309,7 @@ ...@@ -296,6 +309,7 @@
296 files = ( 309 files = (
297 1E2966EA2837A21D00F83FAC /* RSBarcodes_Swift in Frameworks */, 310 1E2966EA2837A21D00F83FAC /* RSBarcodes_Swift in Frameworks */,
298 7630AD9A6242D60846D6750C /* Pods_SwiftWarplyFramework.framework in Frameworks */, 311 7630AD9A6242D60846D6750C /* Pods_SwiftWarplyFramework.framework in Frameworks */,
312 + A07936792885EF9400064122 /* RESegmentedControl in Frameworks */,
299 1EBF5F072840E13F00B8B17F /* SwiftEventBus in Frameworks */, 313 1EBF5F072840E13F00B8B17F /* SwiftEventBus in Frameworks */,
300 ); 314 );
301 runOnlyForDeploymentPostprocessing = 0; 315 runOnlyForDeploymentPostprocessing = 0;
...@@ -311,6 +325,42 @@ ...@@ -311,6 +325,42 @@
311 name = Frameworks; 325 name = Frameworks;
312 sourceTree = "<group>"; 326 sourceTree = "<group>";
313 }; 327 };
328 + A079366A2885CDDC00064122 /* analysis */ = {
329 + isa = PBXGroup;
330 + children = (
331 + A079367A2885F2D100064122 /* cells */,
332 + 1EB5F4C9285370C90016F36E /* LoyaltyAnalysisViewController.swift */,
333 + A079366D2885D07700064122 /* AnalysisChildViewController.swift */,
334 + );
335 + name = analysis;
336 + sourceTree = "<group>";
337 + };
338 + A07936712885E65C00064122 /* models */ = {
339 + isa = PBXGroup;
340 + children = (
341 + A07936722885E67400064122 /* AnalysisItem.swift */,
342 + );
343 + name = models;
344 + sourceTree = "<group>";
345 + };
346 + A07936742885E96A00064122 /* utilities */ = {
347 + isa = PBXGroup;
348 + children = (
349 + A07936752885E9CC00064122 /* UIColorExtensions.swift */,
350 + );
351 + name = utilities;
352 + sourceTree = "<group>";
353 + };
354 + A079367A2885F2D100064122 /* cells */ = {
355 + isa = PBXGroup;
356 + children = (
357 + A079366F2885D95600064122 /* AnalysisItemViewCell.swift */,
358 + A079367B2885F2F500064122 /* AnalysisHeaderViewCell.swift */,
359 + A079367D2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift */,
360 + );
361 + name = cells;
362 + sourceTree = "<group>";
363 + };
314 C049E0423E2B72D796B777A3 /* Pods */ = { 364 C049E0423E2B72D796B777A3 /* Pods */ = {
315 isa = PBXGroup; 365 isa = PBXGroup;
316 children = ( 366 children = (
...@@ -341,6 +391,9 @@ ...@@ -341,6 +391,9 @@
341 E6A77850282933340045BBA8 /* SwiftWarplyFramework */ = { 391 E6A77850282933340045BBA8 /* SwiftWarplyFramework */ = {
342 isa = PBXGroup; 392 isa = PBXGroup;
343 children = ( 393 children = (
394 + A07936712885E65C00064122 /* models */,
395 + A079366A2885CDDC00064122 /* analysis */,
396 + A07936742885E96A00064122 /* utilities */,
344 E6A7785E282933E40045BBA8 /* CouponsViewController.swift */, 397 E6A7785E282933E40045BBA8 /* CouponsViewController.swift */,
345 1EA1AF092835346A008998AA /* CouponsTableViewCell.swift */, 398 1EA1AF092835346A008998AA /* CouponsTableViewCell.swift */,
346 E6A7785D282933E40045BBA8 /* CouponViewController.swift */, 399 E6A7785D282933E40045BBA8 /* CouponViewController.swift */,
...@@ -359,7 +412,6 @@ ...@@ -359,7 +412,6 @@
359 1EB236AA28816B680063777A /* ShareViewController.swift */, 412 1EB236AA28816B680063777A /* ShareViewController.swift */,
360 1EB236AC28816C560063777A /* NumberPopupViewController.swift */, 413 1EB236AC28816C560063777A /* NumberPopupViewController.swift */,
361 1EB236AE28816CAB0063777A /* NumbersTableViewCell.swift */, 414 1EB236AE28816CAB0063777A /* NumbersTableViewCell.swift */,
362 - 1EB5F4C9285370C90016F36E /* LoyaltyAnalysisViewController.swift */,
363 1EB5F4C728536FD60016F36E /* StepsViewController.swift */, 415 1EB5F4C728536FD60016F36E /* StepsViewController.swift */,
364 E6A77860282933E40045BBA8 /* MyApi.h */, 416 E6A77860282933E40045BBA8 /* MyApi.h */,
365 E6A778DC282933E60045BBA8 /* MyApi.m */, 417 E6A778DC282933E60045BBA8 /* MyApi.m */,
...@@ -669,6 +721,7 @@ ...@@ -669,6 +721,7 @@
669 packageProductDependencies = ( 721 packageProductDependencies = (
670 1E2966E92837A21D00F83FAC /* RSBarcodes_Swift */, 722 1E2966E92837A21D00F83FAC /* RSBarcodes_Swift */,
671 1EBF5F062840E13F00B8B17F /* SwiftEventBus */, 723 1EBF5F062840E13F00B8B17F /* SwiftEventBus */,
724 + A07936782885EF9400064122 /* RESegmentedControl */,
672 ); 725 );
673 productName = SwiftWarplyFramework; 726 productName = SwiftWarplyFramework;
674 productReference = E6A7784E282933340045BBA8 /* SwiftWarplyFramework.framework */; 727 productReference = E6A7784E282933340045BBA8 /* SwiftWarplyFramework.framework */;
...@@ -701,6 +754,7 @@ ...@@ -701,6 +754,7 @@
701 packageReferences = ( 754 packageReferences = (
702 1E2966E82837A21D00F83FAC /* XCRemoteSwiftPackageReference "RSBarcodes_Swift" */, 755 1E2966E82837A21D00F83FAC /* XCRemoteSwiftPackageReference "RSBarcodes_Swift" */,
703 1EBF5F052840E13F00B8B17F /* XCRemoteSwiftPackageReference "SwiftEventBus" */, 756 1EBF5F052840E13F00B8B17F /* XCRemoteSwiftPackageReference "SwiftEventBus" */,
757 + A07936772885EF9400064122 /* XCRemoteSwiftPackageReference "RESegmentedControl" */,
704 ); 758 );
705 productRefGroup = E6A7784F282933340045BBA8 /* Products */; 759 productRefGroup = E6A7784F282933340045BBA8 /* Products */;
706 projectDirPath = ""; 760 projectDirPath = "";
...@@ -787,6 +841,8 @@ ...@@ -787,6 +841,8 @@
787 E6A77904282933E60045BBA8 /* WLEvent.m in Sources */, 841 E6A77904282933E60045BBA8 /* WLEvent.m in Sources */,
788 E6A77927282933E70045BBA8 /* UIRefreshControl+AFNetworking.m in Sources */, 842 E6A77927282933E70045BBA8 /* UIRefreshControl+AFNetworking.m in Sources */,
789 E6A77955282933E70045BBA8 /* ViewControllerExtensions.swift in Sources */, 843 E6A77955282933E70045BBA8 /* ViewControllerExtensions.swift in Sources */,
844 + A07936762885E9CC00064122 /* UIColorExtensions.swift in Sources */,
845 + A079367C2885F2F500064122 /* AnalysisHeaderViewCell.swift in Sources */,
790 E6A7795A28293D390045BBA8 /* swiftApi.swift in Sources */, 846 E6A7795A28293D390045BBA8 /* swiftApi.swift in Sources */,
791 E6A77935282933E70045BBA8 /* UIWebView+AFNetworking.m in Sources */, 847 E6A77935282933E70045BBA8 /* UIWebView+AFNetworking.m in Sources */,
792 E6A77925282933E70045BBA8 /* UIProgressView+AFNetworking.m in Sources */, 848 E6A77925282933E70045BBA8 /* UIProgressView+AFNetworking.m in Sources */,
...@@ -796,6 +852,7 @@ ...@@ -796,6 +852,7 @@
796 E6A77917282933E60045BBA8 /* UIViewController+WLAdditions.m in Sources */, 852 E6A77917282933E60045BBA8 /* UIViewController+WLAdditions.m in Sources */,
797 1EA2BB792865BFE8003F2AB0 /* InboxTableViewCell.swift in Sources */, 853 1EA2BB792865BFE8003F2AB0 /* InboxTableViewCell.swift in Sources */,
798 E6A77943282933E70045BBA8 /* AFNetworkReachabilityManager.m in Sources */, 854 E6A77943282933E70045BBA8 /* AFNetworkReachabilityManager.m in Sources */,
855 + A07936702885D95600064122 /* AnalysisItemViewCell.swift in Sources */,
799 E6A77956282933E70045BBA8 /* GiftsViewController.swift in Sources */, 856 E6A77956282933E70045BBA8 /* GiftsViewController.swift in Sources */,
800 E6A778F1282933E60045BBA8 /* WLNativeAdTableViewCell.m in Sources */, 857 E6A778F1282933E60045BBA8 /* WLNativeAdTableViewCell.m in Sources */,
801 E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */, 858 E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */,
...@@ -806,6 +863,7 @@ ...@@ -806,6 +863,7 @@
806 1EBE97212865EE460080EFF7 /* MFYInboxTableViewCell.swift in Sources */, 863 1EBE97212865EE460080EFF7 /* MFYInboxTableViewCell.swift in Sources */,
807 E6A778FD282933E60045BBA8 /* WLInboxItem.m in Sources */, 864 E6A778FD282933E60045BBA8 /* WLInboxItem.m in Sources */,
808 E6A778EE282933E60045BBA8 /* WLNativeAdsTableMode.m in Sources */, 865 E6A778EE282933E60045BBA8 /* WLNativeAdsTableMode.m in Sources */,
866 + A07936732885E67400064122 /* AnalysisItem.swift in Sources */,
809 E6A778DF282933E60045BBA8 /* WarplyReactMethods.m in Sources */, 867 E6A778DF282933E60045BBA8 /* WarplyReactMethods.m in Sources */,
810 E6A77941282933E70045BBA8 /* AFURLRequestSerialization.m in Sources */, 868 E6A77941282933E70045BBA8 /* AFURLRequestSerialization.m in Sources */,
811 E6A77915282933E60045BBA8 /* WLUtils.m in Sources */, 869 E6A77915282933E60045BBA8 /* WLUtils.m in Sources */,
...@@ -818,8 +876,10 @@ ...@@ -818,8 +876,10 @@
818 E6A7794A282933E70045BBA8 /* FMDatabaseAdditions.m in Sources */, 876 E6A7794A282933E70045BBA8 /* FMDatabaseAdditions.m in Sources */,
819 E6A77903282933E60045BBA8 /* WLAPSItem.m in Sources */, 877 E6A77903282933E60045BBA8 /* WLAPSItem.m in Sources */,
820 E6A7790B282933E60045BBA8 /* WLPushManager.m in Sources */, 878 E6A7790B282933E60045BBA8 /* WLPushManager.m in Sources */,
879 + A079366E2885D07700064122 /* AnalysisChildViewController.swift in Sources */,
821 E6A77950282933E70045BBA8 /* FMResultSet.m in Sources */, 880 E6A77950282933E70045BBA8 /* FMResultSet.m in Sources */,
822 E6A77936282933E70045BBA8 /* AFAutoPurgingImageCache.m in Sources */, 881 E6A77936282933E70045BBA8 /* AFAutoPurgingImageCache.m in Sources */,
882 + A079367E2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift in Sources */,
823 E6A778FF282933E60045BBA8 /* WLBeacon.m in Sources */, 883 E6A778FF282933E60045BBA8 /* WLBeacon.m in Sources */,
824 E6A7791A282933E60045BBA8 /* WLAPPActionHandler.m in Sources */, 884 E6A7791A282933E60045BBA8 /* WLAPPActionHandler.m in Sources */,
825 E6A778E1282933E60045BBA8 /* CouponViewController.swift in Sources */, 885 E6A778E1282933E60045BBA8 /* CouponViewController.swift in Sources */,
...@@ -1069,6 +1129,14 @@ ...@@ -1069,6 +1129,14 @@
1069 minimumVersion = 5.0.0; 1129 minimumVersion = 5.0.0;
1070 }; 1130 };
1071 }; 1131 };
1132 + A07936772885EF9400064122 /* XCRemoteSwiftPackageReference "RESegmentedControl" */ = {
1133 + isa = XCRemoteSwiftPackageReference;
1134 + repositoryURL = "https://github.com/sh-khashimov/RESegmentedControl";
1135 + requirement = {
1136 + kind = upToNextMajorVersion;
1137 + minimumVersion = 0.5.1;
1138 + };
1139 + };
1072 /* End XCRemoteSwiftPackageReference section */ 1140 /* End XCRemoteSwiftPackageReference section */
1073 1141
1074 /* Begin XCSwiftPackageProductDependency section */ 1142 /* Begin XCSwiftPackageProductDependency section */
...@@ -1082,6 +1150,11 @@ ...@@ -1082,6 +1150,11 @@
1082 package = 1EBF5F052840E13F00B8B17F /* XCRemoteSwiftPackageReference "SwiftEventBus" */; 1150 package = 1EBF5F052840E13F00B8B17F /* XCRemoteSwiftPackageReference "SwiftEventBus" */;
1083 productName = SwiftEventBus; 1151 productName = SwiftEventBus;
1084 }; 1152 };
1153 + A07936782885EF9400064122 /* RESegmentedControl */ = {
1154 + isa = XCSwiftPackageProductDependency;
1155 + package = A07936772885EF9400064122 /* XCRemoteSwiftPackageReference "RESegmentedControl" */;
1156 + productName = RESegmentedControl;
1157 + };
1085 /* End XCSwiftPackageProductDependency section */ 1158 /* End XCSwiftPackageProductDependency section */
1086 }; 1159 };
1087 rootObject = E6A77845282933340045BBA8 /* Project object */; 1160 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 +// AnalysisChildViewController.swift
3 +// SwiftWarplyFramework
4 +//
5 +// Created by Manos Chorianopoulos on 18/7/22.
6 +//
7 +
8 +import UIKit
9 +
10 +class AnalysisChildViewController: UITableViewController {
11 +
12 + public var index: Int = -1
13 + var items: Array<AnalysisItem> = Array()
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 + loadData()
27 + }
28 +
29 + // mvp
30 + private func loadData() {
31 +
32 + self.items = Array()
33 + }
34 +
35 + private func showLoading() {
36 + }
37 +
38 + private func showError() {
39 + }
40 +
41 + private func showContent() {
42 + }
43 +
44 + // private
45 + @objc func handleRefresh(_ refreshControl: UIRefreshControl) {
46 +
47 + loadData()
48 + }
49 +
50 + // MARK: - Table view data source
51 + override func numberOfSections(in tableView: UITableView) -> Int {
52 + return 2
53 + }
54 +
55 + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
56 + if (section == 0) {
57 + return 1;
58 + }
59 +
60 + return items.count
61 + }
62 +
63 + override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
64 + if (indexPath.section == 0) {
65 + return hasMessage ? 380.0 : 280
66 + }
67 +
68 + return 160.0
69 + }
70 +
71 + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
72 +
73 + // header
74 + if (indexPath.section == 0) {
75 + if (hasMessage) {
76 + return tableView.dequeueReusableCell(withIdentifier: "AnalysisHeaderMessageViewCell", for: indexPath) as! AnalysisHeaderMessageViewCell
77 + }
78 +
79 + return tableView.dequeueReusableCell(withIdentifier: "AnalysisHeaderViewCell", for: indexPath) as! AnalysisHeaderViewCell
80 + }
81 +
82 + let cell = tableView.dequeueReusableCell(withIdentifier: "AnalysisItemViewCell", for: indexPath) as! AnalysisItemViewCell
83 + cell.configureCell(item: items[indexPath.row])
84 +
85 + return cell
86 + }
87 +}
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 + // lifecycle
18 + override func awakeFromNib() {
19 + super.awakeFromNib()
20 +
21 + // title
22 + titleLabel.textColor = UIColor(rgb: 0x435563)
23 + titleLabel.text = "Αναλυτικά:"
24 +
25 + // message
26 + messageLabel.textColor = UIColor(rgb: 0x435563)
27 + messageLabel.layer.borderWidth = 1.0
28 + messageLabel.layer.borderColor = UIColor(rgb: 0xB2CE69).cgColor
29 + messageLabel.text = "Μέχρι τώρα έχεις κερδίσει 20,00€ σε προσφορές από 3 κουπόνια!"
30 + }
31 +}
32 +
33 +extension AnalysisHeaderMessageViewCell {
34 + func configureCell(item: AnalysisItem) {
35 +
36 + // TODO: TO BE IMPLEMENTED
37 + }
38 +}
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 + // title
21 + titleLabel.textColor = UIColor(rgb: 0x435563)
22 + titleLabel.text = "Αναλυτικά:"
23 + }
24 +}
25 +
26 +extension AnalysisHeaderViewCell {
27 + func configureCell(item: AnalysisItem) {
28 +
29 + // TODO: TO BE IMPLEMENTED
30 + }
31 +}
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: AnalysisItem) {
38 +
39 + // TODO: this is not optimal. we need a static date formatter. we cannot instantiate a new object each time we render a new item.
40 + let dateFormatter = DateFormatter()
41 + dateFormatter.dateFormat = "dd-MM-yyyy"
42 +
43 + dateLabel.text = dateFormatter.string(from: item.date)
44 + //itemImage.image =
45 + titleLabel.text = item.title
46 + priceLabel.text = String(format: "%.2f€", item.price)
47 + subtitleLabel.text = item.subtitle
48 +
49 + }
50 +}
...@@ -2,30 +2,102 @@ ...@@ -2,30 +2,102 @@
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 tabView: RESegmentedControl!
14 + @IBOutlet weak var contentView: UIView!
15 + var pageController: UIPageViewController!
16 +
12 public override func viewDidLoad() { 17 public override func viewDidLoad() {
13 super.viewDidLoad() 18 super.viewDidLoad()
14 19
15 self.hidesBottomBarWhenPushed = true 20 self.hidesBottomBarWhenPushed = true
16 21
17 - // Do any additional setup after loading the view. 22 + // setup view
23 + setBackButton()
24 + setNavigationTitle("Analysis")
25 +
26 + // tab
27 + let titles = ["Εξαργυρωμένα", "Μοιρασμένα δώρα"]
28 + var segmentItems: [SegmentModel] {
29 + return titles.map({ SegmentModel(title: $0) })
30 + }
31 +
32 + let preset = BootstapPreset(backgroundColor: .white, selectedBackgroundColor: .white, border)
33 + tabView.configure(segmentItems: segmentItems, preset: preset)
34 +
35 + // pages
36 + pageController = UIPageViewController(transitionStyle:.scroll, navigationOrientation:.horizontal)
37 + pageController.dataSource = self;
38 + pageController.delegate = self;
39 +
40 + pageController.view.frame = contentView.bounds;
41 + addChild(pageController)
42 + contentView.addSubview(pageController.view)
43 + pageController .didMove(toParent: self)
18 } 44 }
19 45
46 + ////////////////////////////////////////////////////////////////////////////////
47 + private func viewControllerAt(_ index:Int) -> AnalysisChildViewController?
48 + {
49 + let analysisVC = AnalysisChildViewController()
50 + analysisVC.index = index;
51 +
52 + return analysisVC;
53 + }
20 54
21 - /* 55 +}
22 - // MARK: - Navigation 56 +
57 +// MARK: - PageViewController
58 +extension LoyaltyAnalysisViewController: UIPageViewControllerDataSource, UIPageViewControllerDelegate {
59 +
60 + public func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
61 +
62 + if let analysisVC = viewController as? AnalysisChildViewController {
63 + var index = analysisVC.index
64 + if (index == 1) {
65 + return nil;
66 + }
67 +
68 + index += 1;
69 + return viewControllerAt(index);
70 + }
23 71
24 - // In a storyboard-based application, you will often want to do a little preparation before navigation 72 + return nil;
25 - override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
26 - // Get the new view controller using segue.destination.
27 - // Pass the selected object to the new view controller.
28 } 73 }
29 - */
30 74
75 + public func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
76 +
77 + if let analysisVC = viewController as? AnalysisChildViewController {
78 + var index = analysisVC.index
79 + if (index == 0) {
80 + return nil;
81 + }
82 +
83 + index -= 1;
84 + return viewControllerAt(index);
85 + }
86 +
87 + return nil;
88 + }
89 +
90 +
91 + public func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
92 +
93 + if (!completed) {
94 + return;
95 + }
96 +
97 +
98 + if let childVCs = pageViewController.viewControllers as? [AnalysisChildViewController] {
99 + let currentIndex = childVCs[0].index
100 + tabView.selectedSegmentIndex = currentIndex
101 + }
102 + }
31 } 103 }
......
...@@ -403,13 +403,215 @@ ...@@ -403,13 +403,215 @@
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" customClass="RESegmentedControl" customModule="RESegmentedControl">
408 + <rect key="frame" x="0.0" y="44" width="414" height="50"/>
409 + <color key="backgroundColor" systemColor="systemBackgroundColor"/>
410 + <constraints>
411 + <constraint firstAttribute="height" constant="50" id="W4o-5O-kfL"/>
412 + </constraints>
413 + </view>
414 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FyK-3t-liP">
415 + <rect key="frame" x="0.0" y="94" width="414" height="802"/>
416 + <color key="backgroundColor" systemColor="systemBackgroundColor"/>
417 + </view>
418 + </subviews>
406 <viewLayoutGuide key="safeArea" id="cej-iH-8gP"/> 419 <viewLayoutGuide key="safeArea" id="cej-iH-8gP"/>
407 <color key="backgroundColor" systemColor="systemBackgroundColor"/> 420 <color key="backgroundColor" systemColor="systemBackgroundColor"/>
421 + <constraints>
422 + <constraint firstItem="Z7V-En-7Tl" firstAttribute="leading" secondItem="cej-iH-8gP" secondAttribute="leading" id="2VB-wC-r2b"/>
423 + <constraint firstItem="FyK-3t-liP" firstAttribute="top" secondItem="Z7V-En-7Tl" secondAttribute="bottom" id="E4I-cW-BL9"/>
424 + <constraint firstItem="FyK-3t-liP" firstAttribute="trailing" secondItem="cej-iH-8gP" secondAttribute="trailing" id="NTr-5G-XH5"/>
425 + <constraint firstItem="Z7V-En-7Tl" firstAttribute="trailing" secondItem="cej-iH-8gP" secondAttribute="trailing" id="PwM-0Q-xtQ"/>
426 + <constraint firstAttribute="bottom" secondItem="FyK-3t-liP" secondAttribute="bottom" id="fbh-Cd-dHd"/>
427 + <constraint firstItem="Z7V-En-7Tl" firstAttribute="top" secondItem="cej-iH-8gP" secondAttribute="top" id="l8U-kf-IRu"/>
428 + <constraint firstItem="FyK-3t-liP" firstAttribute="leading" secondItem="cej-iH-8gP" secondAttribute="leading" id="qiJ-nX-tRU"/>
429 + </constraints>
408 </view> 430 </view>
431 + <connections>
432 + <outlet property="contentView" destination="FyK-3t-liP" id="lBC-DU-jIb"/>
433 + </connections>
409 </viewController> 434 </viewController>
410 <placeholder placeholderIdentifier="IBFirstResponder" id="jF4-GM-aCp" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> 435 <placeholder placeholderIdentifier="IBFirstResponder" id="jF4-GM-aCp" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
411 </objects> 436 </objects>
412 - <point key="canvasLocation" x="3126" y="836"/> 437 + <point key="canvasLocation" x="3229" y="836"/>
438 + </scene>
439 + <!--Analysis Child View Controller-->
440 + <scene sceneID="Yng-iu-80u">
441 + <objects>
442 + <tableViewController id="xOZ-Af-1Nw" customClass="AnalysisChildViewController" customModule="SwiftWarplyFramework" customModuleProvider="target" sceneMemberID="viewController">
443 + <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">
444 + <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
445 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
446 + <color key="backgroundColor" systemColor="systemBackgroundColor"/>
447 + <prototypes>
448 + <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">
449 + <rect key="frame" x="0.0" y="44.5" width="414" height="160"/>
450 + <autoresizingMask key="autoresizingMask"/>
451 + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="iNx-Id-iLB" id="X28-3l-fcy">
452 + <rect key="frame" x="0.0" y="0.0" width="414" height="160"/>
453 + <autoresizingMask key="autoresizingMask"/>
454 + <subviews>
455 + <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">
456 + <rect key="frame" x="10" y="20" width="394" height="16"/>
457 + <constraints>
458 + <constraint firstAttribute="height" constant="16" id="5pR-Xb-nB2"/>
459 + </constraints>
460 + <fontDescription key="fontDescription" type="boldSystem" pointSize="13"/>
461 + <nil key="textColor"/>
462 + <nil key="highlightedColor"/>
463 + </label>
464 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="rW5-M3-c7s">
465 + <rect key="frame" x="10" y="46" width="28" height="28"/>
466 + <constraints>
467 + <constraint firstAttribute="height" constant="28" id="Nw7-Mi-QTe"/>
468 + <constraint firstAttribute="width" constant="28" id="hEI-zc-TX4"/>
469 + </constraints>
470 + </imageView>
471 + <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">
472 + <rect key="frame" x="341.5" y="50" width="52.5" height="20"/>
473 + <constraints>
474 + <constraint firstAttribute="height" constant="20" id="WPI-8H-zbd"/>
475 + </constraints>
476 + <fontDescription key="fontDescription" type="boldSystem" pointSize="18"/>
477 + <nil key="textColor"/>
478 + <nil key="highlightedColor"/>
479 + </label>
480 + <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">
481 + <rect key="frame" x="42" y="50" width="295.5" height="20"/>
482 + <constraints>
483 + <constraint firstAttribute="height" constant="20" id="D6h-47-exa"/>
484 + </constraints>
485 + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/>
486 + <nil key="textColor"/>
487 + <nil key="highlightedColor"/>
488 + </label>
489 + <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">
490 + <rect key="frame" x="42" y="72" width="295.5" height="21.5"/>
491 + <fontDescription key="fontDescription" type="system" pointSize="18"/>
492 + <nil key="textColor"/>
493 + <nil key="highlightedColor"/>
494 + </label>
495 + </subviews>
496 + <constraints>
497 + <constraint firstItem="fWY-zJ-P1c" firstAttribute="top" secondItem="X28-3l-fcy" secondAttribute="top" constant="20" id="Gj8-gE-gbj"/>
498 + <constraint firstAttribute="trailing" secondItem="fWY-zJ-P1c" secondAttribute="trailing" constant="10" id="MNz-as-PZd"/>
499 + <constraint firstItem="hqA-F6-n9s" firstAttribute="centerY" secondItem="rW5-M3-c7s" secondAttribute="centerY" id="OpX-dx-J0h"/>
500 + <constraint firstItem="rW5-M3-c7s" firstAttribute="top" secondItem="fWY-zJ-P1c" secondAttribute="bottom" constant="10" id="Sbw-Ar-xiH"/>
501 + <constraint firstItem="xac-fs-J8S" firstAttribute="leading" secondItem="hqA-F6-n9s" secondAttribute="leading" id="UYN-ui-q74"/>
502 + <constraint firstItem="rW5-M3-c7s" firstAttribute="leading" secondItem="X28-3l-fcy" secondAttribute="leading" constant="10" id="Vco-mW-IpG"/>
503 + <constraint firstItem="fWY-zJ-P1c" firstAttribute="leading" secondItem="X28-3l-fcy" secondAttribute="leading" constant="10" id="Ynl-uB-QjI"/>
504 + <constraint firstItem="xac-fs-J8S" firstAttribute="trailing" secondItem="hqA-F6-n9s" secondAttribute="trailing" id="bKd-IG-1da"/>
505 + <constraint firstItem="xac-fs-J8S" firstAttribute="top" secondItem="hqA-F6-n9s" secondAttribute="bottom" constant="2" id="mQi-g5-OUm"/>
506 + <constraint firstItem="Pyr-Jo-zxl" firstAttribute="leading" secondItem="hqA-F6-n9s" secondAttribute="trailing" constant="4" id="mzB-xA-7SR"/>
507 + <constraint firstAttribute="trailing" secondItem="Pyr-Jo-zxl" secondAttribute="trailing" constant="20" id="nYY-Th-Hob"/>
508 + <constraint firstItem="hqA-F6-n9s" firstAttribute="leading" secondItem="rW5-M3-c7s" secondAttribute="trailing" constant="4" id="r8B-Tl-KPA"/>
509 + <constraint firstItem="Pyr-Jo-zxl" firstAttribute="centerY" secondItem="rW5-M3-c7s" secondAttribute="centerY" id="zif-gr-5SM"/>
510 + </constraints>
511 + </tableViewCellContentView>
512 + <connections>
513 + <outlet property="dateLabel" destination="fWY-zJ-P1c" id="zmh-T6-Uia"/>
514 + <outlet property="itemImage" destination="rW5-M3-c7s" id="27r-CK-e8f"/>
515 + <outlet property="priceLabel" destination="Pyr-Jo-zxl" id="hWV-75-Gqf"/>
516 + <outlet property="subtitleLabel" destination="xac-fs-J8S" id="7ml-5a-zmc"/>
517 + <outlet property="titleLabel" destination="hqA-F6-n9s" id="zlL-DU-81T"/>
518 + </connections>
519 + </tableViewCell>
520 + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" rowHeight="280" id="HMC-zK-06F" customClass="AnalysisHeaderViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target">
521 + <rect key="frame" x="0.0" y="204.5" width="414" height="280"/>
522 + <autoresizingMask key="autoresizingMask"/>
523 + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="HMC-zK-06F" id="RtV-Li-Dnj">
524 + <rect key="frame" x="0.0" y="0.0" width="414" height="280"/>
525 + <autoresizingMask key="autoresizingMask"/>
526 + <subviews>
527 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="xmN-ke-oBj">
528 + <rect key="frame" x="124" y="31" width="166" height="166"/>
529 + <constraints>
530 + <constraint firstAttribute="height" constant="166" id="OG9-xL-K4U"/>
531 + <constraint firstAttribute="width" constant="166" id="Xgj-YV-J4n"/>
532 + </constraints>
533 + </imageView>
534 + <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">
535 + <rect key="frame" x="162" y="248" width="90" height="22"/>
536 + <constraints>
537 + <constraint firstAttribute="height" constant="22" id="T1B-pX-6hx"/>
538 + </constraints>
539 + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/>
540 + <nil key="textColor"/>
541 + <nil key="highlightedColor"/>
542 + </label>
543 + </subviews>
544 + <constraints>
545 + <constraint firstItem="xmN-ke-oBj" firstAttribute="centerX" secondItem="RtV-Li-Dnj" secondAttribute="centerX" id="LvL-o4-MTE"/>
546 + <constraint firstAttribute="bottom" secondItem="LKw-8l-mRY" secondAttribute="bottom" constant="10" id="jlt-UV-Eud"/>
547 + <constraint firstItem="xmN-ke-oBj" firstAttribute="top" secondItem="RtV-Li-Dnj" secondAttribute="topMargin" constant="20" id="v4Z-tl-gBX"/>
548 + <constraint firstItem="LKw-8l-mRY" firstAttribute="centerX" secondItem="RtV-Li-Dnj" secondAttribute="centerX" id="yJq-7A-H3r"/>
549 + </constraints>
550 + </tableViewCellContentView>
551 + <connections>
552 + <outlet property="itemImage" destination="xmN-ke-oBj" id="zRs-Ks-2Re"/>
553 + <outlet property="titleLabel" destination="LKw-8l-mRY" id="2Nl-uC-2aJ"/>
554 + </connections>
555 + </tableViewCell>
556 + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" rowHeight="380" id="oPh-jz-GSZ" customClass="AnalysisHeaderMessageViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target">
557 + <rect key="frame" x="0.0" y="484.5" width="414" height="380"/>
558 + <autoresizingMask key="autoresizingMask"/>
559 + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="oPh-jz-GSZ" id="8oK-tI-pLa">
560 + <rect key="frame" x="0.0" y="0.0" width="414" height="380"/>
561 + <autoresizingMask key="autoresizingMask"/>
562 + <subviews>
563 + <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">
564 + <rect key="frame" x="50" y="237" width="314" height="60"/>
565 + <constraints>
566 + <constraint firstAttribute="height" constant="60" id="ZEz-dt-NJa"/>
567 + </constraints>
568 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
569 + <nil key="textColor"/>
570 + <nil key="highlightedColor"/>
571 + </label>
572 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="sdY-Vd-bbW">
573 + <rect key="frame" x="124" y="31" width="166" height="166"/>
574 + <constraints>
575 + <constraint firstAttribute="height" constant="166" id="ZHj-a8-3y1"/>
576 + <constraint firstAttribute="width" constant="166" id="oqg-jC-ibc"/>
577 + </constraints>
578 + </imageView>
579 + <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">
580 + <rect key="frame" x="166" y="339" width="82" height="20"/>
581 + <constraints>
582 + <constraint firstAttribute="height" constant="20" id="XkT-At-XWY"/>
583 + </constraints>
584 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
585 + <nil key="textColor"/>
586 + <nil key="highlightedColor"/>
587 + </label>
588 + </subviews>
589 + <constraints>
590 + <constraint firstItem="nkc-wO-by3" firstAttribute="top" secondItem="sdY-Vd-bbW" secondAttribute="bottom" constant="40" id="2Yl-Fb-ksG"/>
591 + <constraint firstItem="sdY-Vd-bbW" firstAttribute="top" secondItem="8oK-tI-pLa" secondAttribute="topMargin" constant="20" id="CEe-Np-pPS"/>
592 + <constraint firstAttribute="bottomMargin" secondItem="9MF-rh-eec" secondAttribute="bottom" constant="10" id="E0e-rS-Vwh"/>
593 + <constraint firstItem="sdY-Vd-bbW" firstAttribute="centerX" secondItem="8oK-tI-pLa" secondAttribute="centerX" id="L16-AP-9gA"/>
594 + <constraint firstItem="nkc-wO-by3" firstAttribute="leading" secondItem="8oK-tI-pLa" secondAttribute="leadingMargin" constant="30" id="MhA-nS-gcP"/>
595 + <constraint firstAttribute="trailingMargin" secondItem="nkc-wO-by3" secondAttribute="trailing" constant="30" id="dIv-s4-jcV"/>
596 + <constraint firstItem="9MF-rh-eec" firstAttribute="centerX" secondItem="8oK-tI-pLa" secondAttribute="centerX" id="pKh-jT-Xoe"/>
597 + </constraints>
598 + </tableViewCellContentView>
599 + <connections>
600 + <outlet property="itemImage" destination="sdY-Vd-bbW" id="FPk-8S-kCA"/>
601 + <outlet property="messageLabel" destination="nkc-wO-by3" id="4gl-nq-4jN"/>
602 + <outlet property="titleLabel" destination="9MF-rh-eec" id="ogv-9c-JWm"/>
603 + </connections>
604 + </tableViewCell>
605 + </prototypes>
606 + <connections>
607 + <outlet property="dataSource" destination="xOZ-Af-1Nw" id="rM1-30-TpG"/>
608 + <outlet property="delegate" destination="xOZ-Af-1Nw" id="YFj-hI-ntL"/>
609 + </connections>
610 + </tableView>
611 + </tableViewController>
612 + <placeholder placeholderIdentifier="IBFirstResponder" id="4gQ-3O-aEc" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
613 + </objects>
614 + <point key="canvasLocation" x="3942.0289855072465" y="835.71428571428567"/>
413 </scene> 615 </scene>
414 <!--Wallet View Controller--> 616 <!--Wallet View Controller-->
415 <scene sceneID="tSr-9x-GQW"> 617 <scene sceneID="tSr-9x-GQW">
......
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 +}