RQHomeSubPageLocalTopicListViewModel.m 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. //
  2. // RQHomeSubPageLocalTopicListViewModel.m
  3. // SDJK
  4. //
  5. // Created by 张嵘 on 2021/10/15.
  6. //
  7. #import "RQHomeSubPageLocalTopicListViewModel.h"
  8. @interface RQHomeSubPageLocalTopicListViewModel ()
  9. /// homePageCarType
  10. @property (nonatomic, readwrite, assign) RQHomePageCarType homePageCarType;
  11. /// homePageSubjectType
  12. @property (nonatomic, readwrite, assign) RQHomePageSubjectType homePageSubjectType;
  13. /// homeSubPageType
  14. @property (nonatomic, readwrite, assign) RQHomeSubPageType homeSubPageType;
  15. /// groupDicArr
  16. @property (nonatomic, readwrite, copy) NSArray *groupDicArr;
  17. @end
  18. @implementation RQHomeSubPageLocalTopicListViewModel
  19. #pragma mark - Public Method
  20. - (instancetype)initWithServices:(id<RQViewModelServices>)services params:(NSDictionary *)params{
  21. if (self = [super initWithServices:services params:params]) {
  22. self.homePageCarType = [params[RQHomePageCarTypeKey] integerValue];
  23. self.homePageSubjectType = [params[RQHomePageSubjectTypeKey] integerValue];
  24. self.homeSubPageType = [params[RQHomeSubPageTypeKey] integerValue];
  25. }
  26. return self;
  27. }
  28. - (void)initialize{
  29. [super initialize];
  30. /// 配置标题
  31. [self rq_configureTitle];
  32. ///配置数据
  33. [self rq_configureData];
  34. }
  35. #pragma mark - PrivateMethod
  36. - (void)rq_configureTitle {
  37. [[RACSignal combineLatest:@[RACObserve(self, homePageCarType), RACObserve(self, homePageSubjectType), RACObserve(self, homeSubPageType)]
  38. reduce:^id(NSNumber *homePageCarType, NSNumber *homePageSubjectType, NSNumber *homeSubPageType){
  39. NSString *homePageCarTypeStr = @"";
  40. switch (homePageCarType.integerValue) {
  41. case RQHomePageCarType_Car:
  42. homePageCarTypeStr = @"轿车(C1/C2/C3)";
  43. break;
  44. case RQHomePageCarType_Bus:
  45. homePageCarTypeStr = @"客车(A1/A3/B1)";
  46. break;
  47. case RQHomePageCarType_Truck:
  48. homePageCarTypeStr = @"货车(A2/B2)";
  49. break;
  50. case RQHomePageCarType_Motorcycle:
  51. homePageCarTypeStr = @"摩托车(D/E/F)";
  52. break;
  53. default:
  54. break;
  55. }
  56. NSString *homePageSubjectTypeStr = @"";
  57. switch (homePageSubjectType.integerValue) {
  58. case RQHomePageSubjectType_SubjectOne:
  59. homePageSubjectTypeStr = @"科目一";
  60. break;
  61. case RQHomePageSubjectType_SubjectTwo:
  62. homePageSubjectTypeStr = @"科目二";
  63. break;
  64. case RQHomePageSubjectType_SubjectThree:
  65. homePageSubjectTypeStr = @"科目三";
  66. break;
  67. case RQHomePageSubjectType_SubjectFour:
  68. homePageSubjectTypeStr = @"科目四";
  69. break;
  70. default:
  71. break;
  72. }
  73. NSString *homeSubPageTypeStr = (homeSubPageType.integerValue == RQHomeSubPageType_SequentialPractice)? @"顺序练习" : @"地方专题";
  74. return [NSString stringWithFormat:@"%@/%@/%@",homePageCarTypeStr,homePageSubjectTypeStr,homeSubPageTypeStr];
  75. }] subscribeNext:^(NSString *titleStr) {
  76. self.title = titleStr;
  77. }];
  78. }
  79. - (void)rq_configureData {
  80. @weakify(self);
  81. /// 第零组
  82. RQCommonGroupViewModel *group = [RQCommonGroupViewModel groupViewModel];
  83. group.headerHeight = CGFLOAT_MIN;
  84. group.footerHeight = CGFLOAT_MIN;
  85. NSMutableArray *groupArr = @[].mutableCopy;
  86. NSArray *columnArr = [RQ_QUESTION_DB_MANAGER getColumnWithCarType:self.homePageCarType subject:self.homePageSubjectType pageType:self.homeSubPageType];
  87. [columnArr.rac_sequence.signal subscribeNext:^(NSString *titleStr) {
  88. RQHomeSubPageListItemViewModel *item = [[RQHomeSubPageListItemViewModel alloc] init];
  89. item.homePageCarType = self.homePageCarType;
  90. item.homePageSubjectType = self.homePageSubjectType;
  91. item.homeSubPageType = self.homeSubPageType;
  92. item.title = titleStr;
  93. item.rowHeight = RQ_FIT_HORIZONTAL(76.f);
  94. [groupArr addObject:item];
  95. } completed:^{
  96. @strongify(self);
  97. group.itemViewModels = groupArr.copy;
  98. self.dataSource = @[group];
  99. }];
  100. }
  101. #pragma mark - LazyLoad
  102. @end