// // RQSimulationResultsViewModel.m // SDJK // // Created by 张嵘 on 2021/8/6. // #import "RQSimulationResultsViewModel.h" @interface RQSimulationResultsViewModel () /// 总数 @property (nonatomic, readwrite, copy) NSString *totalStr; @end @implementation RQSimulationResultsViewModel #pragma mark - Public Method - (instancetype)initWithServices:(id)services params:(NSDictionary *)params{ if (self = [super initWithServices:services params:params]) { } return self; } - (void)initialize{ [super initialize]; /// 允许下拉刷新 self.shouldPullUpToLoadMore = YES; self.shouldPullDownToRefresh = YES; self.prefersNavigationBarHidden = YES; self.prefersNavigationBarBottomLineHidden = YES; self.perPage = 10; /// 配置数据 [self rq_configureData]; } #pragma mark - PrivateMethod - (void)rq_configureData { @weakify(self); /// 列表 RAC(self, items) = self.requestRemoteDataCommand.executionSignals.switchToLatest; /// 数据源 RAC(self, dataSource) = [RACObserve(self, items) map:^(NSArray * items) { @strongify(self) RQScoreRecordModel *lastScoreRecordModel = items.lastObject; self.dataTotalNum = lastScoreRecordModel.total; self.totalStr = [NSString stringWithFormat:@"%ld",lastScoreRecordModel.total? : 0]; return [self dataSourceWithItems:items]; }]; /// 选中cell 跳转的命令 self.didSelectCommand = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(NSIndexPath * indexPath) { return [RACSignal empty]; }]; } /// 请求数据 - (RACSignal *)requestRemoteDataSignalWithPage:(NSUInteger)page { NSArray * (^itemsBlock)(NSArray *) = ^(NSArray *products) { if (page == 1 || page == 0) { /// 下拉刷新 } else { /// 上拉加载 products = @[(self.items ?: @[]).rac_sequence, products.rac_sequence].rac_sequence.flatten.array; } return products; }; /// return [[[RQ_HTTP_Service getScoreInfoListWithPageNum:self.page pageSize:self.perPage] map:itemsBlock] doError:^(NSError * _Nonnull error) { [MBProgressHUD rq_showErrorTips:error]; }]; } #pragma mark - 辅助方法 - (NSArray *)dataSourceWithItems:(NSArray *)items { NSArray *viewModels = [items.rac_sequence map:^(RQScoreRecordModel *scoreRecordModel) { RQCommonGroupViewModel *group = [RQCommonGroupViewModel groupViewModel]; RQSimulationResultsListItemViewModel *simulationResultsListItemViewModel = [[RQSimulationResultsListItemViewModel alloc] initWithRQScoreRecordModel:scoreRecordModel]; simulationResultsListItemViewModel.rowHeight = RQ_FIT_HORIZONTAL(44.f); group.itemViewModels = @[simulationResultsListItemViewModel]; return group; }].array; return viewModels ?: @[]; } @end