123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- //
- // RQHomeSubPageSortViewModel.m
- // SDJK
- //
- // Created by 张嵘 on 2021/8/5.
- //
- #import "RQHomeSubPageSortViewModel.h"
- @interface RQHomeSubPageSortViewModel ()
- /// homePageCarType
- @property (nonatomic, readwrite, assign) RQHomePageCarType homePageCarType;
- /// homePageSubjectType
- @property (nonatomic, readwrite, assign) RQHomePageSubjectType homePageSubjectType;
- /// homeSubPageType
- @property (nonatomic, readwrite, assign) RQHomeSubPageType homeSubPageType;
- /// groupDicArr
- @property (nonatomic, readwrite, copy) NSArray *groupDicArr;
- @end
- @implementation RQHomeSubPageSortViewModel
- #pragma mark - Public Method
- - (instancetype)initWithServices:(id<RQViewModelServices>)services params:(NSDictionary *)params{
- if (self = [super initWithServices:services params:params]) {
- self.homePageCarType = [params[RQHomePageCarTypeKey] integerValue];
- self.homePageSubjectType = [params[RQHomePageSubjectTypeKey] integerValue];
- self.homeSubPageType = [params[RQHomeSubPageTypeKey] integerValue];
- }
- return self;
- }
- - (void)initialize {
- [super initialize];
- /// 配置标题
- [self rq_configureTitle];
- /// 配置数据
- [self rq_configureData];
- }
- #pragma mark - PrivateMethod
- - (void)rq_configureTitle {
- [[RACSignal combineLatest:@[RACObserve(self, homePageCarType), RACObserve(self, homePageSubjectType), RACObserve(self, homeSubPageType)]
- reduce:^id(NSNumber *homePageCarType, NSNumber *homePageSubjectType, NSNumber *homeSubPageType){
- NSString *homePageCarTypeStr = @"";
-
- switch (homePageCarType.integerValue) {
- case RQHomePageCarType_Car:
- homePageCarTypeStr = @"轿车(C1/C2/C3)";
- break;
- case RQHomePageCarType_Bus:
- homePageCarTypeStr = @"客车(A1/A3/B1)";
- break;
- case RQHomePageCarType_Truck:
- homePageCarTypeStr = @"货车(A2/B2)";
- break;
- case RQHomePageCarType_Motorcycle:
- homePageCarTypeStr = @"摩托车(D/E/F)";
- break;
-
- default:
- break;
- }
-
- NSString *homePageSubjectTypeStr = @"";
-
- switch (homePageSubjectType.integerValue) {
- case RQHomePageSubjectType_SubjectOne:
- homePageSubjectTypeStr = @"科目一";
- break;
- case RQHomePageSubjectType_SubjectTwo:
- homePageSubjectTypeStr = @"科目二";
- break;
- case RQHomePageSubjectType_SubjectThree:
- homePageSubjectTypeStr = @"科目三";
- break;
- case RQHomePageSubjectType_SubjectFour:
- homePageSubjectTypeStr = @"科目四";
- break;
-
- default:
- break;
- }
- NSString *homeSubPageTypeStr = (homeSubPageType.integerValue == RQHomeSubPageType_ClassificationExercise)? @"分类练习" : @"精选考题";
- return [NSString stringWithFormat:@"%@/%@/%@",homePageCarTypeStr,homePageSubjectTypeStr,homeSubPageTypeStr];
- }] subscribeNext:^(NSString *titleStr) {
- self.title = titleStr;
- }];
- }
- - (void)rq_configureData {
- @weakify(self);
- /// 第零组
- RQCommonGroupViewModel *group = [RQCommonGroupViewModel groupViewModel];
- group.headerHeight = CGFLOAT_MIN;
- group.footerHeight = CGFLOAT_MIN;
-
- RQCommonGroupViewModel *group0 = [RQCommonGroupViewModel groupViewModel];
- group0.headerHeight = 30.f;
- group0.footerHeight = CGFLOAT_MIN;
- group0.header = @"温馨提示";
-
-
-
- NSArray *columnArr = columnArr = [RQ_QUESTION_DB_MANAGER getColumnWithCarType:self.homePageCarType subject:self.homePageSubjectType pageType:self.homeSubPageType];
-
- if (self.homeSubPageType == RQHomeSubPageType_ClassificationExercise) {
-
- group0.itemViewModels = [@[@"1、分类练习,学员可重点学习自己不懂的题目。 \n2、建议学员直接看软件必考题技巧,快速学习。"].rac_sequence.signal map:^id _Nullable(NSString *title) {
- RQCommonCollecttionItemViewModel *itemViewModel = [[RQCommonCollecttionItemViewModel alloc] init];
- itemViewModel.title = title;
- itemViewModel.itemSize = CGSizeMake(RQ_SCREEN_WIDTH - 32.f, [title heightForFont:RQRegularFont_17 width:(RQ_SCREEN_WIDTH - 32.f)] + 10.f);
- return itemViewModel;
- }].toArray;
-
- NSMutableArray *groupArr = @[].mutableCopy;
- [columnArr.rac_sequence.signal subscribeNext:^(NSString *titleStr) {
- RQHomeSubPageSortItemViewModel *item = [[RQHomeSubPageSortItemViewModel alloc] init];
- @weakify(item)
- item.title = titleStr;
- item.serialNumberStr = [NSString stringWithFormat:@"%ld",[columnArr indexOfObject:titleStr] + 1];
- item.itemSize = CGSizeMake((RQ_SCREEN_WIDTH - 42.f) / 2.f, 70.f);
- item.operation = ^{
- @strongify(item);
- if ([item.title isEqualToString:@"地方题"]) {
- RQHomeSubPageLocalTopicListViewModel *homeSubPageLocalTopicListViewModel = [[RQHomeSubPageLocalTopicListViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
- RQHomePageCarTypeKey : @(self.homePageCarType),
- RQHomePageSubjectTypeKey : @(self.homePageSubjectType),
- RQHomeSubPageTypeKey : @(RQHomeSubPageType_LocalTopics)}];
- [RQ_APPDELEGATE.services pushViewModel:homeSubPageLocalTopicListViewModel animated:YES];
- } else {
- RQExerciseViewModel *exerciseViewModel = [[RQExerciseViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
- RQHomePageCarTypeKey : @(self.homePageCarType),
- RQHomePageSubjectTypeKey : @(self.homePageSubjectType),
- RQHomeSubPageTypeKey : @(self.homeSubPageType),
- RQViewModelIDKey : titleStr,
- RQViewCommonValueKey : @(0),
- }];
- [RQ_APPDELEGATE.services pushViewModel:exerciseViewModel animated:YES];
- }
- };
- [groupArr addObject:item];
- } completed:^{
- @strongify(self);
- group.itemViewModels = groupArr.copy;
- self.dataSource = @[group,group0];
- }];
- } else {
- group0.itemViewModels = [@[@"1、软件题库已同步更新至车管所最新,左边的红色必学题,每套题必须学完。 \n2、模拟考试能连续5次以上达到96分左右,即可参加考试。 \n3、如果模拟考试达不到要求,请把右边的选学题也学习一遍。"].rac_sequence.signal map:^id _Nullable(NSString *title) {
- RQCommonCollecttionItemViewModel *itemViewModel = [[RQCommonCollecttionItemViewModel alloc] init];
- itemViewModel.title = title;
- itemViewModel.itemSize = CGSizeMake(RQ_SCREEN_WIDTH - 32.f, [title heightForFont:RQRegularFont_17 width:(RQ_SCREEN_WIDTH - 32.f)] + 10.f);
- return itemViewModel;
- }].toArray;
-
- NSMutableArray *groupArr = @[].mutableCopy;
- NSMutableArray *itemsArr = @[].mutableCopy;
- __block NSInteger leftIndex = 0;
- __block NSInteger rightIndex = 0;
-
- NSArray *groupOneArr = [columnArr.rac_sequence.signal filter:^BOOL(NSString *titleStr) {
- return [titleStr containsString:@"必"] || [titleStr containsString:@"摩托"] || [titleStr containsString:@"新"] || [titleStr containsString:@"地方"] || [titleStr containsString:@"专用"]
- || [titleStr containsString:@"考"];
- }].toArray;
- NSArray *groupTwoArr = [columnArr.rac_sequence.signal filter:^BOOL(NSString *titleStr) {
- return [titleStr containsString:@"选"] || [titleStr containsString:@"货运资格证"];
- }].toArray;
- for (int i = 0; i < groupOneArr.count; i ++) {
- if (i % 2 == 0) {
- if (groupOneArr.count > i) [groupArr addObject:groupOneArr[i]];
- if (groupTwoArr.count > i) [groupArr addObject:groupTwoArr[i]];
- } else if (i % 2 == 1) {
- if (groupOneArr.count > i) [groupArr addObject:groupOneArr[i]];
- if (groupTwoArr.count > i) [groupArr addObject:groupTwoArr[i]];
- }
- }
-
- [groupArr.rac_sequence.signal subscribeNext:^(NSString *myTitleStr) {
- RQHomeSubPageSortItemViewModel *item = [[RQHomeSubPageSortItemViewModel alloc] init];
- @weakify(item)
- item.title = myTitleStr;
- if ([myTitleStr isEqualToString:@"地方题"]) {
- item.serialNumberStr = @"地";
- } else if ([myTitleStr containsString:@"新"]) {
- item.serialNumberStr = @"新";
- } else {
- if (self.homePageCarType == RQHomePageCarType_Motorcycle) {
- item.serialNumberStr = [NSString stringWithFormat:@"%@",@([groupArr indexOfObject:myTitleStr] + 1)];
- } else {
- if (([groupArr indexOfObject:myTitleStr] + 1) %2 == 0) {
- rightIndex++;
- item.serialNumberStr = [NSString stringWithFormat:@"%@",@(rightIndex)];
- } else {
- leftIndex++;
- item.serialNumberStr = [NSString stringWithFormat:@"%@",@(leftIndex)];
- }
- }
- }
-
- item.itemSize = CGSizeMake((RQ_SCREEN_WIDTH - 42.f) / 2.f, 70.f);
- item.operation = ^{
- @strongify(item);
- if ([item.title isEqualToString:@"地方题"]) {
- RQHomeSubPageLocalTopicListViewModel *homeSubPageLocalTopicListViewModel = [[RQHomeSubPageLocalTopicListViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
- RQHomePageCarTypeKey : @(self.homePageCarType),
- RQHomePageSubjectTypeKey : @(self.homePageSubjectType),
- RQHomeSubPageTypeKey : @(RQHomeSubPageType_LocalTopics)}];
- [RQ_APPDELEGATE.services pushViewModel:homeSubPageLocalTopicListViewModel animated:YES];
- } else {
- RQExerciseViewModel *exerciseViewModel = [[RQExerciseViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
- RQHomePageCarTypeKey : @(self.homePageCarType),
- RQHomePageSubjectTypeKey : @(self.homePageSubjectType),
- RQHomeSubPageTypeKey : @(self.homeSubPageType),
- RQViewModelIDKey : myTitleStr,
- RQViewCommonValueKey : @(0),
- }];
- [RQ_APPDELEGATE.services pushViewModel:exerciseViewModel animated:YES];
- }
- };
- [itemsArr addObject:item];
- } completed:^{
- @strongify(self);
- group.itemViewModels = itemsArr.copy;
- self.dataSource = @[group,group0];
- }];
- }
- }
- #pragma mark - LazyLoad
- @end
|