|
|
|
//
|
|
|
|
// CourseViewController.m
|
|
|
|
// tongxin
|
|
|
|
//
|
|
|
|
// Created by ecell on 2021/11/24.
|
|
|
|
// Copyright © 2021 xTT. All rights reserved.
|
|
|
|
//
|
|
|
|
|
|
|
|
#import "CourseViewController.h"
|
|
|
|
#import "GWPCourseListView.h"
|
|
|
|
#import "CourseModel.h"
|
|
|
|
#import "AddCourseViewController.h"
|
|
|
|
#import "CourseSchedule.h"
|
|
|
|
|
|
|
|
//#import <GWPKit/GWPKit.h>
|
|
|
|
|
|
|
|
@interface CourseViewController ()<GWPCourseListViewDataSource, GWPCourseListViewDelegate, AddCousrDelegate>
|
|
|
|
|
|
|
|
@property (nonatomic, strong) GWPCourseListView *courseListView;
|
|
|
|
@property (nonatomic, strong) UILabel *addBtn;
|
|
|
|
@property (nonatomic, strong) NSMutableArray<CourseModel*> *courseArr;
|
|
|
|
@property (nonatomic, strong) CourseSchedule *curSchedule;
|
|
|
|
@property (nonatomic, strong) NSMutableDictionary *timetableDict;
|
|
|
|
@property (nonatomic, strong) NSArray *keyArray;
|
|
|
|
|
|
|
|
@end
|
|
|
|
|
|
|
|
@implementation CourseViewController
|
|
|
|
|
|
|
|
- (NSMutableArray<CourseModel *> *)courseArr{
|
|
|
|
if (!_courseArr) {
|
|
|
|
//CourseModel *a = [CourseModel courseWithName:@"PHP" dayIndex:1 startCourseIndex:1 endCourseIndex:2];
|
|
|
|
//CourseModel *b = [CourseModel courseWithName:@"Java" dayIndex:1 startCourseIndex:3 endCourseIndex:3];
|
|
|
|
//CourseModel *c = [CourseModel courseWithName:@"C++" dayIndex:1 startCourseIndex:4 endCourseIndex:6];
|
|
|
|
//CourseModel *d = [CourseModel courseWithName:@"C#" dayIndex:2 startCourseIndex:4 endCourseIndex:4];
|
|
|
|
//CourseModel *e = [CourseModel courseWithName:@"javascript" dayIndex:7 startCourseIndex:5 endCourseIndex:6];
|
|
|
|
//_courseArr = [NSMutableArray arrayWithArray:@[a,b,c,d,e]];
|
|
|
|
_courseArr = [NSMutableArray new];
|
|
|
|
}
|
|
|
|
return _courseArr;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void)viewDidLoad {
|
|
|
|
[super viewDidLoad];
|
|
|
|
|
|
|
|
if (self.navigationController.viewControllers.count > 1) {
|
|
|
|
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[myHelper getImageWithName:@"返回"]
|
|
|
|
style:UIBarButtonItemStylePlain
|
|
|
|
target:self
|
|
|
|
action:@selector(goBack:)];
|
|
|
|
|
|
|
|
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"保存" style:UIBarButtonItemStylePlain target:self action:@selector(saveSchedule:)];
|
|
|
|
}
|
|
|
|
|
|
|
|
self.title = @"课程表";
|
|
|
|
self.curSchedule = [[CourseSchedule alloc] init];
|
|
|
|
self.keyArray = @[@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8"];
|
|
|
|
[self initTimeTable];
|
|
|
|
|
|
|
|
self.courseListView = [[GWPCourseListView alloc] initWithFrame:CGRectMake(0, 0, ScreenWidth, ScreenHeight)];
|
|
|
|
self.courseListView.delegate = self;
|
|
|
|
self.courseListView.dataSource = self;
|
|
|
|
[self.view addSubview:self.courseListView];
|
|
|
|
|
|
|
|
self.addBtn = [[UILabel alloc] initWithFrame:CGRectMake(ScreenWidth-120, ScreenHeight-240, 68, 68)];
|
|
|
|
self.addBtn.text = @"+";
|
|
|
|
self.addBtn.textAlignment = NSTextAlignmentCenter;
|
|
|
|
self.addBtn.font = [UIFont systemFontOfSize:48];
|
|
|
|
self.addBtn.textColor = RGB(255, 255, 255);
|
|
|
|
self.addBtn.userInteractionEnabled = YES;
|
|
|
|
self.addBtn.layer.cornerRadius = 34;
|
|
|
|
self.addBtn.clipsToBounds = YES;
|
|
|
|
self.addBtn.backgroundColor = mainColor;
|
|
|
|
[self.addBtn addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(addCourse)]];
|
|
|
|
[self.view addSubview:self.addBtn];
|
|
|
|
|
|
|
|
[self getScheduleFromServer];
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
- (void)saveSchedule:(id)sender {
|
|
|
|
|
|
|
|
CourseSchedule *api = [[CourseSchedule alloc] init];
|
|
|
|
[api save:[self getTimeTableParameter] schedule:[self getScheduleParameter] success:^{
|
|
|
|
[UICommon MessageSuccessText:@"保存成功" isImg:YES];
|
|
|
|
} failure:^(NSError *error) {
|
|
|
|
[UICommon MessageErrorText:@"保存失败"];
|
|
|
|
}];
|
|
|
|
|
|
|
|
NSLog(@"%@ %@",[self getScheduleParameter],[self getTimeTableParameter]);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
- (NSString *)getTimeTableParameter {
|
|
|
|
NSString *result = @"";
|
|
|
|
for (NSString *timeKey in _keyArray) {
|
|
|
|
NSString *timeValue = [_timetableDict objectForKey:timeKey];
|
|
|
|
result = [result stringByAppendingString:@"-"];
|
|
|
|
result = [result stringByAppendingString:timeValue];
|
|
|
|
}
|
|
|
|
return [result substringFromIndex:1];
|
|
|
|
}
|
|
|
|
|
|
|
|
- (NSString *)getScheduleParameter {
|
|
|
|
NSString *result = @"";
|
|
|
|
for (CourseModel *model in self.courseArr) {
|
|
|
|
result = [result stringByAppendingString:@"-"];
|
|
|
|
result = [result stringByAppendingString:[NSString stringWithFormat:@"%zd_%zd_%@",model.dayIndex,model.startCourseIndex,model.courseName]];
|
|
|
|
}
|
|
|
|
return [result substringFromIndex:1];
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void)getScheduleFromServer {
|
|
|
|
WEAKSELF
|
|
|
|
[self.curSchedule query:^(CourseSchedule *model) {
|
|
|
|
[weakSelf dealOriginalSchedule:model];
|
|
|
|
} failure:^(NSError *error) {
|
|
|
|
|
|
|
|
}];
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void)dealOriginalSchedule:(CourseSchedule *)model {
|
|
|
|
if (model.schedule) {
|
|
|
|
NSArray *array = [model.schedule componentsSeparatedByString:@"-"]; // 星期_节次_课程-...-星期_节次_课程-...-星期_节次_课程
|
|
|
|
|
|
|
|
for (NSString *course in array) {
|
|
|
|
NSArray *cor = [course componentsSeparatedByString:@"_"];
|
|
|
|
if (cor.count != 3) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
CourseModel *cm = [CourseModel courseWithName:cor[2] dayIndex:[cor[0] intValue] startCourseIndex:[cor[1] intValue] endCourseIndex:[cor[1] intValue]];
|
|
|
|
[self.courseArr addObject:cm];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//xxxxxxxx-xxxxxxxx-hhmmhhmm-xxxxxxxx
|
|
|
|
if (model.timetable && model.timetable.length > 8) {
|
|
|
|
NSArray *items = [model.timetable componentsSeparatedByString:@"-"];
|
|
|
|
if (items.count == 8) {
|
|
|
|
for (int i=0; i<_keyArray.count; i++) {
|
|
|
|
[self.timetableDict setValue:items[i] forKey:_keyArray[i]];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
[self.courseListView reloadData];
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void)initTimeTable {
|
|
|
|
_timetableDict = [NSMutableDictionary dictionary];
|
|
|
|
for (int i=0; i<_keyArray.count; i++) {
|
|
|
|
[_timetableDict setValue:@"00000000" forKey:_keyArray[i]];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
- (NSString *)getStartTimeAndEndTime:(NSString *)key {
|
|
|
|
|
|
|
|
NSString *time = [_timetableDict objectForKey:key];
|
|
|
|
NSString *hh = [time substringWithRange:NSMakeRange(0, 2)];
|
|
|
|
NSString *mm = [time substringWithRange:NSMakeRange(2, 2)];
|
|
|
|
NSString *hh2 = [time substringWithRange:NSMakeRange(4, 2)];
|
|
|
|
NSString *mm2 = [time substringWithRange:NSMakeRange(6, 2)];
|
|
|
|
|
|
|
|
return [NSString stringWithFormat:@"%@:%@-%@:%@",hh,mm,hh2,mm2];
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
- (void)addCourse {
|
|
|
|
|
|
|
|
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
|
|
|
|
AddCourseViewController *vc =[sb instantiateViewControllerWithIdentifier:@"AddCourseViewController"];
|
|
|
|
vc.delegate = self;
|
|
|
|
|
|
|
|
[self.navigationController pushViewController:vc animated:YES];
|
|
|
|
}
|
|
|
|
|
|
|
|
#pragma call back
|
|
|
|
- (void)addCourse:(AddCourseViewController *)vc course:(CourseModel *)model time:time {
|
|
|
|
//CourseModel *a = [CourseModel courseWithName:@"Golang Hello World" dayIndex:3 startCourseIndex:1 endCourseIndex:2];
|
|
|
|
[self.timetableDict setValue:time forKey:[NSString stringWithFormat:@"%ld",model.startCourseIndex]];
|
|
|
|
|
|
|
|
BOOL found = NO;
|
|
|
|
for (CourseModel *cm in self.courseArr) {
|
|
|
|
//修改
|
|
|
|
if ([cm isSameCourse:model]) {
|
|
|
|
cm.courseName = model.courseName;
|
|
|
|
found = YES;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 新增 化学 物理 自然 劳动 科技 自然 英文 数学 语文
|
|
|
|
if (!found) {
|
|
|
|
[self.courseArr addObject:model];
|
|
|
|
}
|
|
|
|
|
|
|
|
[self.courseListView reloadData];
|
|
|
|
|
|
|
|
NSLog(@"============%@", time);
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void)goBack:(id)sender {
|
|
|
|
if (self.navigationController.viewControllers.count > 1) {
|
|
|
|
[self.navigationController popViewControllerAnimated:YES];
|
|
|
|
}else{
|
|
|
|
[self dismissViewControllerAnimated:YES completion:nil];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#pragma mark - GWPCourseListViewDataSource
|
|
|
|
- (NSArray<id<Course>> *)courseForCourseListView:(GWPCourseListView *)courseListView{
|
|
|
|
return self.courseArr;
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 课程单元背景色自定义 */
|
|
|
|
- (UIColor *)courseListView:(GWPCourseListView *)courseListView courseTitleBackgroundColorForCourse:(id<Course>)course{
|
|
|
|
|
|
|
|
//if ([course isEqual:[self.courseArr firstObject]]) { // 第一个,返回自定义颜色
|
|
|
|
// return [UIColor blueColor];
|
|
|
|
//}
|
|
|
|
|
|
|
|
// 其他返回默认的随机色
|
|
|
|
return nil;
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 设置选项卡的title的文字属性,如果实现该方法,该方法返回的attribute将会是attributeString的属性 */
|
|
|
|
- (NSDictionary*)courseListView:(GWPCourseListView *)courseListView titleAttributesInTopbarAtIndex:(NSInteger)index{
|
|
|
|
//if (index==0) {
|
|
|
|
// return @{NSForegroundColorAttributeName:[UIColor greenColor], NSFontAttributeName:[UIFont systemFontOfSize:18]};
|
|
|
|
//}
|
|
|
|
|
|
|
|
return nil;
|
|
|
|
}
|
|
|
|
/** 设置选项卡的title的背景颜色,默认白色 */
|
|
|
|
- (UIColor*)courseListView:(GWPCourseListView *)courseListView titleBackgroundColorInTopbarAtIndex:(NSInteger)index{
|
|
|
|
//if (index==1) {
|
|
|
|
// return [UIColor purpleColor];
|
|
|
|
//}
|
|
|
|
|
|
|
|
return nil;
|
|
|
|
}
|
|
|
|
|
|
|
|
#pragma mark - GWPCourseListViewDelegate
|
|
|
|
/** 选中(点击)某一个课程单元之后的回调 */
|
|
|
|
- (void)courseListView:(GWPCourseListView *)courseListView didSelectedCourse:(id<Course>)course{
|
|
|
|
CourseModel *model = (CourseModel *)course;
|
|
|
|
|
|
|
|
if (model) {
|
|
|
|
[self showOperationDialog:model];
|
|
|
|
}
|
|
|
|
|
|
|
|
//NSLog(@"SELECT %zd_%zd", courseListView.selectedIndex, courseListView.selectedRow);
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void)showOperationDialog:(CourseModel *)model {
|
|
|
|
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"修改或删除数据" message:@"删除数据将不可恢复" preferredStyle: UIAlertControllerStyleActionSheet];
|
|
|
|
|
|
|
|
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) {
|
|
|
|
NSLog(@"点击了取消");
|
|
|
|
}];
|
|
|
|
|
|
|
|
UIAlertAction *deleteAction = [UIAlertAction actionWithTitle:@"删除" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * action) {
|
|
|
|
NSLog(@"点击了删除");
|
|
|
|
for (int i=0; i < [self.courseArr count]; i++) {
|
|
|
|
CourseModel *cm = [self.courseArr objectAtIndex:i];
|
|
|
|
if ([cm isSameCourse:model]) {
|
|
|
|
[self.courseArr removeObject:cm];
|
|
|
|
[self.courseListView reloadData];
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}];
|
|
|
|
|
|
|
|
UIAlertAction *archiveAction = [UIAlertAction actionWithTitle:@"修改" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
|
|
|
|
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
|
|
|
|
AddCourseViewController *vc =[sb instantiateViewControllerWithIdentifier:@"AddCourseViewController"];
|
|
|
|
vc.delegate = self;
|
|
|
|
vc.curModel = model;
|
|
|
|
vc.courseTime = [self getStartTimeAndEndTime:[NSString stringWithFormat:@"%zd",model.startCourseIndex]];
|
|
|
|
[self.navigationController pushViewController:vc animated:YES];
|
|
|
|
}];
|
|
|
|
|
|
|
|
[alertController addAction:cancelAction];
|
|
|
|
[alertController addAction:deleteAction];
|
|
|
|
[alertController addAction:archiveAction];
|
|
|
|
|
|
|
|
[self presentViewController:alertController animated:YES completion:nil];
|
|
|
|
}
|
|
|
|
|
|
|
|
@end
|