// // PBViewPointDetailsController.m // IphoneBIMe // // Created by zjf on 2018/7/24. // Copyright © 2018年 ProBIM. All rights reserved. // #import "PBViewPointDetailsController.h" #import "PBProjectModel.h" #import "PBModelsModel.h" #import "PBViewPointModel.h" #import "PBViewPointDetailCell.h" #import "PBLoadModelDisplayController.h" #import "PBImageShowViewController.h" @interface PBViewPointDetailsController () @property (nonatomic, strong) UITableView *tableView; @property (nonatomic, strong) NSMutableArray *dataList; @property (nonatomic, weak) UIImageView *viewPointImageV; @property (nonatomic, strong) UIImage *image; @property (nonatomic, weak) UIButton *loadViewPointBtn; @end @implementation PBViewPointDetailsController - (void)viewDidLoad { [super viewDidLoad]; [self setupNav]; [self setupUI]; [self loadData]; } - (void)setupNav { PBBackNavItem *backNav = [PBBackNavItem backNacItem]; if ([self.viewPointModel.Type isEqualToString:@"0"]) { backNav.title = @"视点"; }else { backNav.title = @"批注"; } [backNav addTarget:self action:@selector(backItemAction) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *backNavItem = [[UIBarButtonItem alloc] initWithCustomView:backNav]; self.navigationItem.leftBarButtonItem = backNavItem; if ([self.viewPointModel.Type isEqualToString:@"0"]) { UIBarButtonItem *setToDefaultItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"Model_previewItem_default"] style:UIBarButtonItemStylePlain target:self action:@selector(setToDefaultViewPoint)]; self.navigationItem.rightBarButtonItem = setToDefaultItem; if (self.viewPointModel.IsDefault) { self.navigationItem.rightBarButtonItem.enabled = NO; }else { self.navigationItem.rightBarButtonItem.enabled = YES; } } } - (void)backItemAction { [self.navigationController popViewControllerAnimated:YES]; } - (void)setToDefaultViewPoint { [YJProgressHUD showProgress:@"" inView:self.view]; [[PBNetworkTools sharedTools] RequestSetDefaultViewpointWithProjectID:_modelsModel.ProjectID andModelId:_modelsModel.ID andViewpointID:_viewPointModel.ID andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) { if (error){ NSLog(@"%@",error); [YJProgressHUD showMessage:@"设置失败" inView:self.view]; return; } [YJProgressHUD hide]; NSString *str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; NSLog(@"%@",str); if ([str isEqualToString:@"\"\""]) { self.dataList[0].IsDefault = YES; [self.tableView reloadData]; if (self.updataDefaultViewPointBlock) { self.updataDefaultViewPointBlock(); } }else { [YJProgressHUD showMessage:@"设置失败" inView:self.view]; } }]; } - (void)setupUI { self.title = self.viewPointModel.Name; self.view.backgroundColor = [UIColor whiteColor]; self.tableView = [[UITableView alloc] init]; self.tableView.bounces = NO; self.tableView.rowHeight = UITableViewAutomaticDimension; self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; self.tableView.estimatedRowHeight = 180; self.tableView.dataSource = self; self.tableView.delegate = self; [self.view addSubview:self.tableView]; CGFloat height; if (IS_IPHONE_X) { height = 110.0f; }else { height = 76.0f; } [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.left.right.equalTo(self.view); make.bottom.equalTo(self.view).offset(-(height)); }]; NSString *btnText; if (self.isExamineShow) { btnText = @"确认"; }else { btnText = [self.viewPointModel.Type isEqualToString:@"0"] ? @"加载视点" : @"加载批注"; } UIButton *loadViewPointBtn = [UIButton z_textButton:btnText boldFontSize:18 normalColor:[UIColor whiteColor]]; [loadViewPointBtn addTarget:self action:@selector(LoadModelDisplayVC) forControlEvents:UIControlEventTouchUpInside]; [loadViewPointBtn setBackgroundImage:[UIImage imageNamed:@"Model_loadViewPointBtn_bg"] forState:UIControlStateNormal]; [self.view addSubview:loadViewPointBtn]; [loadViewPointBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.tableView.mas_bottom).offset(10); make.left.equalTo(self.view).offset(16); make.right.equalTo(self.view).offset(-16); make.height.equalTo(@50); }]; self.loadViewPointBtn = loadViewPointBtn; self.loadViewPointBtn.hidden = YES; } - (void)LoadModelDisplayVC { PBLoadModelDisplayController *modelDisplayVC = [[PBLoadModelDisplayController alloc] init]; modelDisplayVC.projectModel = _projectModel; modelDisplayVC.modelID = _modelsModel.ID; modelDisplayVC.viewID = _viewPointModel.ViewID; modelDisplayVC.viewPointID = _viewPointModel.ID; [self.navigationController pushViewController:modelDisplayVC animated:YES]; } - (void)loadData { // [YJProgressHUD showCustomAnimation:@"" inview:self.view]; [YJProgressHUD showProgress:@"" inView:self.view]; [[PBNetworkTools sharedTools] RequestGetFullViewpointWithProjectID:_modelsModel.ProjectID andViewpointID:_viewPointModel.ID andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) { if (error) { NSLog(@"%@",error); [YJProgressHUD showMessage:@"加载失败" inView:self.view]; return; } [YJProgressHUD hide]; self.loadViewPointBtn.hidden = NO; NSString *str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; str = [str stringByReplacingOccurrencesOfString:@"\\\"" withString:@"\""]; str = [str stringByReplacingOccurrencesOfString:@"\\\\" withString:@"\\"]; NSMutableString *mString = [NSMutableString stringWithString:str]; [mString deleteCharactersInRange:NSMakeRange(0, 1)]; [mString deleteCharactersInRange:NSMakeRange(mString.length-1, 1)]; PBViewPointModel *viewPointModel = [PBViewPointModel yy_modelWithJSON:mString.copy]; [self.dataList addObject:viewPointModel]; self.loadViewPointModel = viewPointModel; if (viewPointModel.Links.count == 0) { self.image = [UIImage imageNamed:@"Model_viewPoint_ failureImage"]; }else { NSString *thumbnail = [viewPointModel.Links[0] valueForKey:@"Content"]; NSRange range = [thumbnail rangeOfString:@"base64,"]; thumbnail = [thumbnail substringFromIndex:range.location + range.length]; self.image = [NSString imageDecoding:thumbnail]; } self.tableView.tableHeaderView = [self tableHeadViewWithImage:self.image]; [self.tableView reloadData]; }]; } - (UIView *)tableHeadViewWithImage:(UIImage *)image { NSInteger imageW = image.size.width; NSInteger imageH = image.size.height; CGFloat scale = (CGFloat)self.view.width / (CGFloat)imageW; imageH = imageH *scale; UIView *bgView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.width, imageH)]; UIImageView *imageV = [[UIImageView alloc] initWithImage:image]; [bgView addSubview:imageV]; [imageV mas_makeConstraints:^(MASConstraintMaker *make) { make.top.bottom.left.right.equalTo(bgView); }]; imageV.userInteractionEnabled = YES; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction)]; [imageV addGestureRecognizer:tap]; self.viewPointImageV = imageV; return bgView; } - (void)tapAction { PBImageShowViewController *imageShowVC = [[PBImageShowViewController alloc] init]; imageShowVC.image = self.image; imageShowVC.modalPresentationStyle = UIModalPresentationFullScreen; [self presentViewController:imageShowVC animated:NO completion:nil]; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.dataList.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { PBViewPointDetailCell *cell = [PBViewPointDetailCell new]; cell.viewPointModel = self.dataList[indexPath.row]; cell.selectionStyle = UITableViewCellSelectionStyleNone; return cell; } - (void)setProjectModel:(PBProjectModel *)projectModel { _projectModel = projectModel; } - (void)setViewPointModel:(PBViewPointModel *)viewPointModel { _viewPointModel = viewPointModel; } - (void)setModelsModel:(PBModelsModel *)modelsModel { _modelsModel = modelsModel; } - (NSMutableArray *)dataList { if (_dataList == nil) { _dataList = [[NSMutableArray alloc] init]; } return _dataList; } - (void)setIsExamineShow:(BOOL)isExamineShow { _isExamineShow = isExamineShow; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } /* #pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller. } */ @end