//
//  InspectListViewController.m
//  redstar
//
//  Created by admin on 15/10/27.
//  Copyright © 2015年 ZWF. All rights reserved.
//

#import "InspectListViewController.h"
#import "InspectListCell.h"
#import "MenuButton.h"
#import "InspectTaskViewController.h"

#import "HttpClient.h"
#import "MenuView.h"
#import "MenuButton.h"
#import "TaxisView.h"
#import "ScreenView.h"

#import "TaskListModel.h"
#import <MBProgressHUD.h>
#import "NoDataView.h"

#define kTAxisBtnTag 500232

#define kInspectListCell @"InspectListCellTableViewCell"

@interface InspectListViewController ()<UITableViewDelegate, UITableViewDataSource, ScreenTableDelegate , TaxisViewDelegate, InspectTableViewDelegate>
@property (nonatomic, strong) UITableView *tableView;
@property (nonatomic, strong) MenuView *menuView;

@property (nonatomic, strong) TaxisView *taxisView;
@property (nonatomic, strong) ScreenView *screenView;

@property (nonatomic, strong) UIView *bgView;
@property (nonatomic, strong) MenuButton *selctedButton;

@property (nonatomic, strong) UIButton *selectBtn;

@property (nonatomic, strong) NSMutableArray *taskListDataArray;

@property (nonatomic, assign) NSInteger selectRow;
@property (nonatomic, assign) NSInteger timeSelectNum;

@property (nonatomic, strong) NoDataView *noDataView;

@end

@implementation InspectListViewController
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor whiteColor];
    
    UILabel *customLab = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 40, 30)];
    [customLab setTextColor:[UIColor whiteColor]];
    [customLab setText:@"巡检列表"];
    customLab.font = [UIFont boldSystemFontOfSize:19];
    self.navigationItem.titleView = customLab;
    
    UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    backBtn.frame = CGRectMake(0, 0, 30, 44);
    
    [backBtn setImage:[UIImage imageNamed:@"back_btn"] forState:UIControlStateNormal];
    [backBtn addTarget:self action:@selector(doBack:) forControlEvents:UIControlEventTouchUpInside];
    
    UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithCustomView:backBtn];
    self.navigationItem.leftBarButtonItem = backItem;
    
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
        self.edgesForExtendedLayout = UIRectEdgeNone;
        self.extendedLayoutIncludesOpaqueBars = NO;
        self.modalPresentationCapturesStatusBarAppearance = NO;
        self.navigationController.navigationBar.translucent = NO;
    }
    
    
    // 初始化数组
    self.taskListDataArray = [NSMutableArray array];
    
    [self requestInspectList];
    
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(requestCurrentList)
                                                 name:kRefreshInspectPointNotification
                                               object:nil];
    
}

- (void)dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    
    self.tabBarController.tabBar.hidden = YES;
    [self.menuView.taxiButton addTarget:self action:@selector(dropCilck:) forControlEvents:UIControlEventTouchUpInside];
    [self.menuView.screenButton addTarget:self action:@selector(dropCilck:) forControlEvents:UIControlEventTouchUpInside];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [self.menuView removeFromSuperview];
    self.menuView = nil;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - Private

- (void)requestCurrentList
{
    NSString *url = [NSString stringWithFormat:@"%@%@", kRedStarURL, kInspectListURL];
    HttpClient *httpCilent = [[HttpClient alloc] initWithUrl:url];
    NSDictionary *parameters = @{
                                 @"userUuid":[[NSUserDefaults standardUserDefaults] objectForKey:@"user_uuid"],
                                 @"queryOrders":@[@{@"field":@"lastModifyInfo"}],
                                 @"pageNumber":@(0),
                                 @"pageSize":@(20)
                                 };
    [MBProgressHUD showHUDAddedTo:self.view animated:YES];
    
    [httpCilent getInspectListWithParameters:parameters completion:^(id response, NSError *error) {
        
        NSLog(@"巡检列表%@", response);
        
        NSDictionary *dataDict = response[@"data"];
        NSArray *dataArray = dataDict[@"records"];
        NSMutableArray *taskArray = [NSMutableArray array];
        for (NSDictionary *dict in dataArray) {
            TaskListModel *taskList = [[TaskListModel alloc] init];
            [taskList setValuesForKeysWithDictionary:dict];
            [taskArray addObject:taskList];
        }
        _taskListDataArray = taskArray;
        
        
        if (_taskListDataArray.count == 0) {
            self.noDataView.backgroundColor = [UIColor whiteColor];
            [MBProgressHUD hideHUDForView:self.view animated:YES];
            
        } else {
            self.tableView.delegate = self;
            self.tableView.dataSource = self;
            [MBProgressHUD hideHUDForView:self.view animated:YES];
            
        }
        
        [self.tableView reloadData];
    }];

}


- (void)taxisBtnCilck:(UIButton *)sender
{
    NSLog(@"拍讯");
}

-(void)doBack:(id)sender
{
    [self.navigationController dismissViewControllerAnimated:YES completion:nil];
}

- (void)requestInspectList
{
    
    NSString *url = [NSString stringWithFormat:@"%@%@", kRedStarURL, kInspectListURL];
    NSLog(@"uuurl = %@", url);
    HttpClient *httpCilent = [[HttpClient alloc] initWithUrl:url];
    NSDictionary *parameters = @{
                                 @"userUuid":[[NSUserDefaults standardUserDefaults] objectForKey:@"user_uuid"],
                                 @"queryOrders":@[@{@"field":@"lastModifyInfo"}],
                                 @"pageNumber":@(0),
                                 @"pageSize":@(20)
                                 };
    NSLog(@"parameters = %@", parameters);
    [MBProgressHUD showHUDAddedTo:self.view animated:YES];

    [httpCilent getInspectListWithParameters:parameters completion:^(id response, NSError *error) {
        
        NSLog(@"巡检列表%@", response);
        
        NSDictionary *dataDict = response[@"data"];
        NSArray *dataArray = dataDict[@"records"];
        for (NSDictionary *dict in dataArray) {
            TaskListModel *taskList = [[TaskListModel alloc] init];
            [taskList setValuesForKeysWithDictionary:dict];
            [_taskListDataArray addObject:taskList];
        }
        if (_taskListDataArray.count == 0) {
            self.noDataView.backgroundColor = [UIColor whiteColor];
            [MBProgressHUD hideHUDForView:self.view animated:YES];

        } else {
            self.tableView.delegate = self;
            self.tableView.dataSource = self;
            [MBProgressHUD hideHUDForView:self.view animated:YES];

        }
    }];
}

- (void)dropCilck:(MenuButton *)sender
{
    sender.isDrop = !sender.isDrop;
    
    if (_selctedButton.tag == sender.tag) {
        
        
        if (sender.isDrop) {
            if (sender.tag == 4001) {
                [self showRedView];
            } else {
                [self showGreenView];
            }
            sender.selected = YES;
            
        } else {
            if (sender.tag == 4001) {
                [self closeRedView];
            } else {
                [self closeGreenView];
            }
            sender.selected = NO;

        }
    } else {
        // 前一次选中的按钮 选中状态置为NO
        _selctedButton.selected = NO;
        _selctedButton.isDrop = NO;
        // 进行选中状态为NO 的操作
        //   2.判断当前是否有bgView 有->移除， 没有->跳过
        if (_bgView) {
            // _bgView存在
            [_bgView removeFromSuperview];
            _bgView = nil;
        }
        
        if (_taxisView) {
            [_taxisView removeFromSuperview];
            _taxisView = nil;
        }
        
        if (_screenView) {
            [_screenView removeFromSuperview];
            _screenView = nil;
        }
        
        
        // 将当前选中的按钮设置 选中状态为YES;
        sender.selected = YES;
        // 对选中按钮 进行相关操作
        _selctedButton = (MenuButton *)sender;
        
        if (sender.tag == 4001) {
            [self showRedView];
        } else {
            [self showGreenView];
        }
    }
}

- (void)showRedView
{
    if (!_bgView) {
        _bgView = [[UIView alloc] initWithFrame:self.view.bounds];
        UITapGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(closeRedView)];
        [_bgView addGestureRecognizer:tapGR];
    }
    if (!_taxisView) {
        _taxisView = [[TaxisView alloc] init];
        _taxisView.tag = 3928342;
        _taxisView.backgroundColor = [UIColor whiteColor];
    }
    _taxisView.delegate = self;
    [self.view addSubview:_bgView];
    [self.view insertSubview:_taxisView aboveSubview:_bgView];
    
    _bgView.alpha = 0;
    _bgView.backgroundColor = [UIColor blackColor];
    
    CGRect toFrame = CGRectMake(0, 45, kScreenWidth, kTaxisViewHeight);
    CGRect fromFrame = CGRectMake(0, -kTaxisViewHeight, kScreenWidth, kTaxisViewHeight);
    
    _taxisView.frame = fromFrame;
    [UIView animateWithDuration:0.3 animations:^{
        _bgView.alpha = 0.6;
        _taxisView.frame = toFrame;
    }];
    
}

- (void)closeRedView
{
    _selctedButton.isDrop = NO;
    _selctedButton.selected = NO;
    CGRect fromFrame = CGRectMake(0, -kTaxisViewHeight, kScreenWidth, kTaxisViewHeight);
    [UIView animateWithDuration:0.3 animations:^{
        _bgView.alpha = .0f;
        _taxisView.frame = fromFrame;
    } completion:^(BOOL finished) {
        [_bgView removeFromSuperview];
        [_taxisView removeFromSuperview];
    }];
}


- (void)showGreenView
{
    if (!_bgView) {
        _bgView = [[UIView alloc] initWithFrame:self.view.bounds];
        UITapGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(closeGreenView)];
        [_bgView addGestureRecognizer:tapGR];
    }
    if (!_screenView) {
        _screenView = [[ScreenView alloc] initWithTitleArray:[NSArray arrayWithObjects:@"全部", @"未处理",@"进行中",@"已上报",@"已评分", @"已发布", @"已过期",nil]];
        _screenView.delegate = self;
        _screenView.inspectTableView.inspectDelegate = self;
        _screenView.backgroundColor = [UIColor whiteColor];
    }
    [_screenView.resetBtn addTarget:self action:@selector(resetClick:) forControlEvents:UIControlEventTouchUpInside];
    [_screenView.submitBtn addTarget:self action:@selector(submitClick:) forControlEvents:UIControlEventTouchUpInside];
    
    
    [self.view addSubview:_bgView];
    [self.view insertSubview:_screenView aboveSubview:_bgView];
    
    _bgView.alpha = 0;
    _bgView.backgroundColor = [UIColor blackColor];
    
    CGRect toFrame = CGRectMake(0, 45, kScreenWidth, kScreenViewHeight);
    CGRect fromFrame = CGRectMake(0, -kScreenViewHeight, kScreenWidth, kScreenViewHeight);
    
    _screenView.frame = fromFrame;
    [UIView animateWithDuration:0.3 animations:^{
        _bgView.alpha = 0.6;
        _screenView.frame = toFrame;
    }];
    
}

- (void)closeGreenView
{
    _selctedButton.isDrop = NO;
    _selctedButton.selected = NO;
    [_selctedButton setTitleColor:kInspectSectionButtonTextColor forState:UIControlStateNormal];
    CGRect fromFrame = CGRectMake(0, -kScreenViewHeight, kScreenWidth, kScreenViewHeight);
    [UIView animateWithDuration:0.3 animations:^{
        _bgView.alpha = .0f;
        _screenView.frame = fromFrame;
    } completion:^(BOOL finished) {
        [_bgView removeFromSuperview];
        [_screenView removeFromSuperview];
    }];
}

// 重置按钮
- (void)resetClick:(UIButton *)sender
{
    NSInteger selectedIndex = 0;
    NSIndexPath *selectedIndexPath = [NSIndexPath indexPathForRow:selectedIndex inSection:0];
    [_screenView.tableView selectRowAtIndexPath:selectedIndexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
    
    _screenView.textView.text = @"";
    
    NSInteger timeIndex = 0;
    NSIndexPath *timeIndexPath = [NSIndexPath indexPathForRow:timeIndex inSection:0];
    [_screenView.tableView selectRowAtIndexPath:timeIndexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
    _selectRow = 0;
}
// 提交按钮
- (void)submitClick:(UIButton *)sender
{
    NSString *url = [NSString stringWithFormat:@"%@%@", kRedStarURL, kInspectListURL];
    HttpClient *httpCilent = [[HttpClient alloc] initWithUrl:url];

    NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                       [[NSUserDefaults standardUserDefaults] objectForKey:@"user_uuid"],@"userUuid",
                                       @[],@"queryOrders",
                                       @(0),@"pageNumber",
                                       @(10),@"pageSize", nil];

    if (_screenView.groupTabBar.selectNumber == 0) {
        
        if (_selectRow == 0) {
            
        } else if (_selectRow == 1) {
            _screenView.textView.text = @"";
            [parameters setObject:@"initial" forKey:@"state"];
        } else if (_selectRow == 2) {
            _screenView.textView.text = @"";
            [parameters setObject:@"processing" forKey:@"state"];
        } else if (_selectRow == 3) {
            _screenView.textView.text = @"";
            [parameters setObject:@"reported" forKey:@"state"];
        } else if (_selectRow == 4) {
            _screenView.textView.text = @"";
            [parameters setObject:@"finished" forKey:@"state"];
        } else if (_selectRow == 5) {
            _screenView.textView.text = @"";
            [parameters setObject:@"published" forKey:@"state"];
        } else if (_selectRow == 6){
            _screenView.textView.text = @"";
            [parameters setObject:@"expired" forKey:@"state"];
        }
        NSArray *array = @[@{@"field":@"state"}];
        [parameters setObject:array forKey:@"queryOrders"];
        
    } else if (_screenView.groupTabBar.selectNumber == 1) {
        if (_screenView.textView.text.length != 0){
            [parameters setObject:_screenView.textView.text forKey:@"nameLike"];
            NSArray *array = @[@{@"field":@"name"}];
            [parameters setObject:array forKey:@"queryOrders"];
        } else {
            NSArray *array = @[];
            [parameters setObject:_screenView.textView.text forKey:@"nameLike"];
            [parameters setObject:array forKey:@"queryOrders"];
        }

    } else {
        
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
        
        // 当前时间
        NSDate *today = [NSDate date];
        NSString *todayStr = [dateFormatter stringFromDate:today];
        
        if (_timeSelectNum == 0) {
            
            NSDate *week = [today dateByAddingTimeInterval:-60*60*24*7];
            NSString *weekStr = [dateFormatter stringFromDate:week];
            
            [parameters setObject:weekStr forKey:@"beginDateFrom"];
            [parameters setObject:todayStr forKey:@"endDateTo"];
        } else if (_timeSelectNum == 1) {
            
            NSDate *oneMonth = [self getPriousorLaterDateFromDate:today withMonth:-1];
            NSString *oneMonthStr = [dateFormatter stringFromDate:oneMonth];
            NSLog(@"oneMonth = %@", oneMonthStr);
            
            [parameters setObject:oneMonthStr forKey:@"beginDateFrom"];
            [parameters setObject:todayStr forKey:@"endDateTo"];
            
        } else if (_timeSelectNum == 2) {
            NSDate *threeMonth = [self getPriousorLaterDateFromDate:today withMonth:-3];
            NSString *threeMonthStr = [dateFormatter stringFromDate:threeMonth];
            
            [parameters setObject:threeMonthStr forKey:@"beginDateFrom"];
            [parameters setObject:todayStr forKey:@"endDateTo"];
        } else if (_timeSelectNum == 3) {
            NSDate *oneYear = [self getPriousorLaterDateFromDate:today withMonth:-12];
            NSString *oneYearStr = [dateFormatter stringFromDate:oneYear];
            
            [parameters setObject:oneYearStr forKey:@"beginDateFrom"];
            [parameters setObject:todayStr forKey:@"endDateTo"];
        } else {
            NSDate *oneYear = [self getPriousorLaterDateFromDate:today withMonth:-12];
            NSString *oneYearStr = [dateFormatter stringFromDate:oneYear];
            [parameters setObject:oneYearStr forKey:@"endDateTo"];
        }
        
        NSArray *array = @[@{@"field":@"lastModifyInfo",
                             @"direction":@"asc"}];
        [parameters setObject:array forKey:@"queryOrders"];
        NSLog(@"parameters = %@",parameters);
    }
    
    
    
    


    
    
    
    [MBProgressHUD showHUDAddedTo:self.view animated:YES];
    [httpCilent getInspectListWithParameters:parameters completion:^(id response, NSError *error) {
        NSLog(@"respones = %@", response);
        NSDictionary *dataDict = response[@"data"];
        NSArray *dataArray = dataDict[@"records"];
        NSMutableArray *tempArray = [NSMutableArray array];
        for (NSDictionary *dict in dataArray) {
            TaskListModel *taskList = [[TaskListModel alloc] init];
            [taskList setValuesForKeysWithDictionary:dict];
            [tempArray addObject:taskList];
        }
        _taskListDataArray = tempArray;
        
        if (_taskListDataArray.count == 0) {
            if (_tableView) {
                [_tableView removeFromSuperview];
                _tableView = nil;
            }
            self.noDataView.backgroundColor = [UIColor whiteColor];
            [MBProgressHUD hideHUDForView:self.view animated:YES];
            [self closeGreenView];

        } else {
            if (_noDataView) {
                [_noDataView removeFromSuperview];
                _noDataView = nil;
            }
            self.tableView.delegate = self;
            self.tableView.dataSource = self;
            [self.tableView reloadData];
            [MBProgressHUD hideHUDForView:self.view animated:YES];
            _screenView.textView.text = @"";
            [self closeGreenView];
        }
        
        
        
    }];

}

- (NSDate *)getPriousorLaterDateFromDate:(NSDate *)date withMonth:(int)month
{
    NSDateComponents *comps = [[NSDateComponents alloc] init];
    [comps setMonth:month];
    NSCalendar *calender = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDate *mDate = [calender dateByAddingComponents:comps toDate:date options:0];
    return mDate;
}

#pragma mark - InspectTableViewDelegate
- (void)inspectTableViewDidSelectWithRow:(NSInteger)row
{
    _selectRow = row;
}

#pragma mark - ScreenDelegate
- (void)tableViewDidSelectRow:(NSInteger)row
{
    _timeSelectNum = row;
}
#pragma mark - TaxisDelegate
- (void)timeChange:(UIButton *)sender
{
    
    NSString *url = [NSString stringWithFormat:@"%@%@", kRedStarURL, kInspectListURL];
    HttpClient *httpCilent = [[HttpClient alloc] initWithUrl:url];
    NSArray *queryOrders;
    
    if (sender.tag - kTAxisBtnTag == 1) {
        queryOrders = @[];
        
    } else if (sender.tag - kTAxisBtnTag == 2) {
        
        queryOrders = @[@{@"field":@"lastModifyInfo",
                        @"direction":@"desc"}];
        
    } else {
        queryOrders = @[@{@"field":@"lastModifyInfo",
                        @"direction":@"asc"}];
    }
    
    NSDictionary *parameters = @{@"userUuid":@"",
                                 @"queryOrders":queryOrders,
                                 @"pageNumber":@(0),
                                 @"pageSize":@(10)
                                 };
    [MBProgressHUD showHUDAddedTo:self.view animated:YES];
    [httpCilent getInspectListWithParameters:parameters completion:^(id response, NSError *error) {
        NSLog(@"测试 rresponse = %@", response);
        NSDictionary *dataDict = response[@"data"];
        NSArray *dataArray = dataDict[@"records"];
        NSMutableArray *tempArray = [NSMutableArray array];
        for (NSDictionary *dict in dataArray) {
            TaskListModel *taskList = [[TaskListModel alloc] init];
            [taskList setValuesForKeysWithDictionary:dict];
            [tempArray addObject:taskList];
        }
        _taskListDataArray = tempArray;
        
        if (_taskListDataArray.count == 0) {
            if (_tableView) {
                [_tableView removeFromSuperview];
                _tableView = nil;
            }
            self.noDataView.backgroundColor = [UIColor whiteColor];
            [MBProgressHUD hideHUDForView:self.view animated:YES];
            
        } else {
            if (_noDataView) {
                [_noDataView removeFromSuperview];
                _noDataView = nil;
            }
            self.tableView.delegate = self;
            self.tableView.dataSource = self;
            [self.tableView reloadData];
            [MBProgressHUD hideHUDForView:self.view animated:YES];
            _screenView.textView.text = @"";
        }
}];
    
    
    _selectBtn = sender;
    
   [self closeRedView];
}


#pragma mark - UITableView Delegate/DataSource
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.taskListDataArray.count;
}

// cell显示的内容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     NSString *CellIdentifier = [NSString stringWithFormat:@"Cell%ld%ld", (long)[indexPath section], (long)[indexPath row]];
    InspectListCell *cell=[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (!cell) {
        cell = [[InspectListCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
    }
    
    cell.taskList = (TaskListModel *)_taskListDataArray[indexPath.row];
    
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    
    return cell;
}

// cell的点击事件
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    TaskListModel *taskList = _taskListDataArray[indexPath.row];
    InspectTaskViewController *inspectTaskVC = [[InspectTaskViewController alloc] init];
    inspectTaskVC.uuid = taskList.uuid;
    inspectTaskVC.store_uuid = taskList.store_uuid;
    inspectTaskVC.multiplier = (CGFloat)taskList.reportCount / taskList.questionCount;
    [self.navigationController pushViewController:inspectTaskVC animated:YES];
}

//// cell的高度
//- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
//{
//    return 145;
//}

// section高度
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 0;
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
    return 0;
}



#pragma mark - lazy loading
- (MenuView *)menuView
{
    if (!_menuView) {
        _menuView = [[MenuView alloc] init];
        _menuView.translatesAutoresizingMaskIntoConstraints = NO;
        _menuView.backgroundColor = kInspectSectionBackGroundColor;
        UIWindow *window = [[UIApplication sharedApplication].windows lastObject];
        [window addSubview:_menuView];
        
        NSLayoutConstraint *menuTop = [NSLayoutConstraint constraintWithItem:_menuView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:window attribute:NSLayoutAttributeTop multiplier:1.0 constant:64];
        [window addConstraint:menuTop];
        
        NSLayoutConstraint *menuLeft = [NSLayoutConstraint constraintWithItem:_menuView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:window attribute:NSLayoutAttributeLeft multiplier:1.0 constant:0];
        [window addConstraint:menuLeft];
        
        NSLayoutConstraint *menuRight = [NSLayoutConstraint constraintWithItem:_menuView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:window attribute:NSLayoutAttributeRight multiplier:1.0 constant:0];
        [window addConstraint:menuRight];
        
        NSLayoutConstraint *menuHeight = [NSLayoutConstraint constraintWithItem:_menuView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:45];
        [window addConstraint:menuHeight];
    }
    return _menuView;
}

- (UITableView *)tableView
{
    if (!_tableView) {
        _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
        _tableView.translatesAutoresizingMaskIntoConstraints = NO;
        _tableView.showsVerticalScrollIndicator = NO;
        _tableView.showsHorizontalScrollIndicator = NO;
        _tableView.tableFooterView = [[UIView alloc] init];
        _tableView.rowHeight = UITableViewAutomaticDimension;
        _tableView.estimatedRowHeight = 150.0;
        [self.view addSubview:_tableView];
        
        NSLayoutConstraint *tableTop = [NSLayoutConstraint constraintWithItem:_tableView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:45];
        [self.view addConstraint:tableTop];
        
        NSLayoutConstraint *tableLeft = [NSLayoutConstraint constraintWithItem:_tableView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:0];
        [self.view addConstraint:tableLeft];
        
        NSLayoutConstraint *tableRight = [NSLayoutConstraint constraintWithItem:_tableView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1.0 constant:0];
        [self.view addConstraint:tableRight];
        
        NSLayoutConstraint *tableBottom = [NSLayoutConstraint constraintWithItem:_tableView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0];
        [self.view addConstraint:tableBottom];
    }
    return _tableView;
}

- (NoDataView *)noDataView
{
    if (!_noDataView) {
        _noDataView = [[NoDataView alloc] init];
        _noDataView.translatesAutoresizingMaskIntoConstraints = NO;
        [self.view addSubview:_noDataView];
        
        NSLayoutConstraint *tableTop = [NSLayoutConstraint constraintWithItem:_noDataView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:0];
        [self.view addConstraint:tableTop];
        
        NSLayoutConstraint *tableLeft = [NSLayoutConstraint constraintWithItem:_noDataView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:0];
        [self.view addConstraint:tableLeft];
        
        NSLayoutConstraint *tableRight = [NSLayoutConstraint constraintWithItem:_noDataView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1.0 constant:0];
        [self.view addConstraint:tableRight];
        
        NSLayoutConstraint *tableBottom = [NSLayoutConstraint constraintWithItem:_noDataView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0];
        [self.view addConstraint:tableBottom];
    }
    return _noDataView;
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    if (![_screenView.textView isExclusiveTouch]) {
        [_screenView.textView resignFirstResponder];
    }
}



@end
