RQSimulationResultsViewModel.m 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. //
  2. // RQSimulationResultsViewModel.m
  3. // SDJK
  4. //
  5. // Created by 张嵘 on 2021/8/6.
  6. //
  7. #import "RQSimulationResultsViewModel.h"
  8. @interface RQSimulationResultsViewModel ()
  9. /// 总数
  10. @property (nonatomic, readwrite, copy) NSString *totalStr;
  11. @end
  12. @implementation RQSimulationResultsViewModel
  13. #pragma mark - Public Method
  14. - (instancetype)initWithServices:(id<RQViewModelServices>)services params:(NSDictionary *)params{
  15. if (self = [super initWithServices:services params:params]) {
  16. }
  17. return self;
  18. }
  19. - (void)initialize{
  20. [super initialize];
  21. /// 允许下拉刷新
  22. self.shouldPullUpToLoadMore = YES;
  23. self.shouldPullDownToRefresh = YES;
  24. self.prefersNavigationBarHidden = YES;
  25. self.prefersNavigationBarBottomLineHidden = YES;
  26. self.perPage = 10;
  27. /// 配置数据
  28. [self rq_configureData];
  29. }
  30. #pragma mark - PrivateMethod
  31. - (void)rq_configureData {
  32. @weakify(self);
  33. /// 列表
  34. RAC(self, items) = self.requestRemoteDataCommand.executionSignals.switchToLatest;
  35. /// 数据源
  36. RAC(self, dataSource) = [RACObserve(self, items) map:^(NSArray * items) {
  37. @strongify(self)
  38. RQScoreRecordModel *lastScoreRecordModel = items.lastObject;
  39. self.dataTotalNum = lastScoreRecordModel.total;
  40. self.totalStr = [NSString stringWithFormat:@"%ld",lastScoreRecordModel.total? : 0];
  41. return [self dataSourceWithItems:items];
  42. }];
  43. /// 选中cell 跳转的命令
  44. self.didSelectCommand = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(NSIndexPath * indexPath) {
  45. return [RACSignal empty];
  46. }];
  47. }
  48. /// 请求数据
  49. - (RACSignal *)requestRemoteDataSignalWithPage:(NSUInteger)page {
  50. NSArray * (^itemsBlock)(NSArray *) = ^(NSArray *products) {
  51. if (page == 1 || page == 0) {
  52. /// 下拉刷新
  53. } else {
  54. /// 上拉加载
  55. products = @[(self.items ?: @[]).rac_sequence, products.rac_sequence].rac_sequence.flatten.array;
  56. }
  57. return products;
  58. };
  59. ///
  60. return [[[RQ_HTTP_Service getScoreInfoListWithPageNum:self.page pageSize:self.perPage] map:itemsBlock] doError:^(NSError * _Nonnull error) {
  61. [MBProgressHUD rq_showErrorTips:error];
  62. }];
  63. }
  64. #pragma mark - 辅助方法
  65. - (NSArray *)dataSourceWithItems:(NSArray *)items {
  66. NSArray *viewModels = [items.rac_sequence map:^(RQScoreRecordModel *scoreRecordModel) {
  67. RQCommonGroupViewModel *group = [RQCommonGroupViewModel groupViewModel];
  68. RQSimulationResultsListItemViewModel *simulationResultsListItemViewModel = [[RQSimulationResultsListItemViewModel alloc] initWithRQScoreRecordModel:scoreRecordModel];
  69. simulationResultsListItemViewModel.rowHeight = RQ_FIT_HORIZONTAL(44.f);
  70. group.itemViewModels = @[simulationResultsListItemViewModel];
  71. return group;
  72. }].array;
  73. return viewModels ?: @[];
  74. }
  75. @end