diff --git a/AvH Plan/DataFetcher.swift b/AvH Plan/DataFetcher.swift index c324faf..1530a17 100644 --- a/AvH Plan/DataFetcher.swift +++ b/AvH Plan/DataFetcher.swift @@ -31,6 +31,7 @@ class DataFetcher { let time = Expression("time") let room = Expression("room") let teacher = Expression("teacher") + let substType = Expression("type") let text = Expression("text") func doAsync(do task: String, completionHandler: @escaping (_ substitutions: [Any]) -> ()) { @@ -76,6 +77,7 @@ class DataFetcher { t.column(time) t.column(room) t.column(teacher) + t.column(substType) }) try db.run(personal.create(ifNotExists: true) { t in @@ -87,6 +89,7 @@ class DataFetcher { t.column(time) t.column(room) t.column(teacher) + t.column(substType) }) try db.run(substitutions.delete()) @@ -103,26 +106,27 @@ class DataFetcher { let mTime = try cols.get(2).text() let mRoom = try cols.get(4).text() let mTeacher = try cols.get(6).text() + let mType = try cols.get(7).text() subst.append(SubstModel(group: mGroup, course: mCourse, additional: mAdditional, - date: mDate, time: mTime, room: mRoom, teacher: mTeacher)) + date: mDate, time: mTime, room: mRoom, teacher: mTeacher, type: mType)) let insert = substitutions.insert(group <- mGroup, course <- mCourse, additional <- mAdditional, - date <- mDate, time <- mTime, room <- mRoom, teacher <- mTeacher) - _ = try db.run(insert) + date <- mDate, time <- mTime, room <- mRoom, teacher <- mTeacher, substType <- mType) + try db.run(insert) if mDate.count > 2 && mDate[...mDate.index(mDate.startIndex, offsetBy: 2)] == "psa" { personalSubst.append(SubstModel(group: mGroup, course: mCourse, additional: mAdditional, - date: mDate, time: mTime, room: mRoom, teacher: mTeacher)) + date: mDate, time: mTime, room: mRoom, teacher: mTeacher, type: mType)) let insertPersonal = personal.insert(group <- mGroup, course <- mCourse, additional <- mAdditional, - date <- mDate, time <- mTime, room <- mRoom, teacher <- mTeacher) - _ = try db.run(insertPersonal) + date <- mDate, time <- mTime, room <- mRoom, teacher <- mTeacher, substType <- mType) + try db.run(insertPersonal) } else if courses == nil || courses == "", classes != nil && classes != "" { if !mGroup.isEmpty && mGroup != "" { if classes!.contains(mGroup) || mGroup.contains(classes!) { personalSubst.append(SubstModel(group: mGroup, course: mCourse, additional: mAdditional, - date: mDate, time: mTime, room: mRoom, teacher: mTeacher)) + date: mDate, time: mTime, room: mRoom, teacher: mTeacher, type: mType)) let insertPersonal = personal.insert(group <- mGroup, course <- mCourse, additional <- mAdditional, - date <- mDate, time <- mTime, room <- mRoom, teacher <- mTeacher) - _ = try db.run(insertPersonal) + date <- mDate, time <- mTime, room <- mRoom, teacher <- mTeacher, substType <- mType) + try db.run(insertPersonal) isPersonalEmpty = false personalPlanCount += 1 } @@ -132,10 +136,10 @@ class DataFetcher { if courses!.contains(mCourse) { if classes!.contains(mGroup) || mGroup.contains(classes!) { personalSubst.append(SubstModel(group: mGroup, course: mCourse, additional: mAdditional, - date: mDate, time: mTime, room: mRoom, teacher: mTeacher)) + date: mDate, time: mTime, room: mRoom, teacher: mTeacher, type: mType)) let insertPersonal = personal.insert(group <- mGroup, course <- mCourse, additional <- mAdditional, - date <- mDate, time <- mTime, room <- mRoom, teacher <- mTeacher) - _ = try db.run(insertPersonal) + date <- mDate, time <- mTime, room <- mRoom, teacher <- mTeacher, substType <- mType) + try db.run(insertPersonal) isPersonalEmpty = false personalPlanCount += 1 } @@ -147,9 +151,9 @@ class DataFetcher { prefs.set(personalPlanCount, forKey: "personalPlanCount") if isPersonalEmpty { - personalSubst.append(SubstModel(group: NSLocalizedString("personal_plan_empty", comment: ""), course: "", additional: "", date: "", time: "", room: "", teacher: "")) - let insertPersonal = personal.insert(group <- NSLocalizedString("personal_plan_empty", comment: ""), course <- "", additional <- "", date <- "", time <- "", room <- "", teacher <- "") - _ = try db.run(insertPersonal) + personalSubst.append(SubstModel(group: NSLocalizedString("personal_plan_empty", comment: ""), course: "", additional: "", date: "", time: "", room: "", teacher: "", type: "")) + let insertPersonal = personal.insert(group <- NSLocalizedString("personal_plan_empty", comment: ""), course <- "", additional <- "", date <- "", time <- "", room <- "", teacher <- "", substType <- "") + try db.run(insertPersonal) } let lastUpdated = try doc.select("h1").get(0).text() @@ -159,11 +163,11 @@ class DataFetcher { for item in pi { info += "\n\n\(try item.text())" } - _ = prefs.set(info, forKey: "information") + prefs.set(info.trimmingCharacters(in: .whitespacesAndNewlines), forKey: "information") } catch {} - infoList.append(info) + infoList.append(info.trimmingCharacters(in: .whitespacesAndNewlines)) do { let foodDoc: Document = try SwiftSoup.parse(food) @@ -197,10 +201,11 @@ class DataFetcher { } } menuList.append(s) - _ = try db.run(foodmenu.insert(text <- s)) + try db.run(foodmenu.insert(text <- s)) } - } catch {} + } catch { + } switch type { case "plan": @@ -229,7 +234,7 @@ class DataFetcher { do { let db = try Connection("\(path)/db.sqlite3") for subst in try db.prepare(substitutions) { - substs.append(SubstModel(group: subst[group], course: subst[course], additional: subst[additional], date: subst[date], time: subst[time], room: subst[room], teacher: subst[teacher])) + substs.append(SubstModel(group: subst[group], course: subst[course], additional: subst[additional], date: subst[date], time: subst[time], room: subst[room], teacher: subst[teacher], type: subst[substType])) } } catch {} return substs @@ -240,7 +245,7 @@ class DataFetcher { do { let db = try Connection("\(path)/db.sqlite3") for subst in try db.prepare(personal) { - substs.append(SubstModel(group: subst[group], course: subst[course], additional: subst[additional], date: subst[date], time: subst[time], room: subst[room], teacher: subst[teacher])) + substs.append(SubstModel(group: subst[group], course: subst[course], additional: subst[additional], date: subst[date], time: subst[time], room: subst[room], teacher: subst[teacher], type: subst[substType])) } } catch {} return substs @@ -373,4 +378,12 @@ class DataFetcher { } } } + + func setCardFormatting(for layer: CALayer) { + layer.cornerRadius = 12.0 + layer.shadowColor = UIColor.gray.cgColor + layer.shadowOffset = CGSize(width: 0.0, height: 0.0) + layer.shadowRadius = 1.5 + layer.shadowOpacity = 0.7 + } } diff --git a/AvH Plan/InfoViewController.swift b/AvH Plan/InfoViewController.swift index 7cefcec..f7b29ad 100644 --- a/AvH Plan/InfoViewController.swift +++ b/AvH Plan/InfoViewController.swift @@ -35,11 +35,7 @@ class InfoViewController : UIViewController { self.extendedLayoutIncludesOpaqueBars = true self.navigationController?.navigationBar.topItem?.title = NSLocalizedString("information", comment: "") let layer = contentView.layer - layer.cornerRadius = 12.0 - layer.shadowColor = UIColor.gray.cgColor - layer.shadowOffset = CGSize(width: 0.0, height: 0.0) - layer.shadowRadius = 1.5 - layer.shadowOpacity = 0.7 + df.setCardFormatting(for: layer) } @objc private func objDoAsync(_ sender: Any) { diff --git a/AvH Plan/MenuViewController.swift b/AvH Plan/MenuViewController.swift index c2352c6..377f3fb 100644 --- a/AvH Plan/MenuViewController.swift +++ b/AvH Plan/MenuViewController.swift @@ -78,11 +78,7 @@ class MenuViewController : UICollectionViewController, UICollectionViewDelegateM cell.content.text = self.items[indexPath.item] cell.tintView.backgroundColor = #colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0) let layer = cell.tintView.layer - layer.cornerRadius = 12.0 - layer.shadowColor = UIColor.gray.cgColor - layer.shadowOffset = CGSize(width: 0.0, height: 0.0) - layer.shadowRadius = 1.5 - layer.shadowOpacity = 0.7 + df.setCardFormatting(for: layer) return cell } diff --git a/AvH Plan/PlanViewController.swift b/AvH Plan/PlanViewController.swift index fd2b828..03d8dc1 100644 --- a/AvH Plan/PlanViewController.swift +++ b/AvH Plan/PlanViewController.swift @@ -20,6 +20,7 @@ class PlanViewController : UICollectionViewController, UICollectionViewDelegateM let layout = MagazineLayout() var url = "" var indexOfPSA: Int? = nil + let cancellations = ["eigenverantwortliches arbeiten", "entfall", "entfällt", "fällt aus", "freisetzung", "vtr. ohne lehrer"] required init?(coder decoder: NSCoder) { super.init(coder: decoder) @@ -106,11 +107,7 @@ class PlanViewController : UICollectionViewController, UICollectionViewDelegateM var image = df.getImage(from: course) let layer = cell.tintView.layer - layer.cornerRadius = 12.0 - layer.shadowColor = UIColor.gray.cgColor - layer.shadowOffset = CGSize(width: 0.0, height: 0.0) - layer.shadowRadius = 1.5 - layer.shadowOpacity = 0.7 + df.setCardFormatting(for: layer) cell.tintView.backgroundColor = self.df.getColour(for: course) let dateString = self.substs[indexPath.item].date @@ -144,14 +141,31 @@ class PlanViewController : UICollectionViewController, UICollectionViewDelegateM } let add = self.substs[indexPath.item].additional.lowercased() + let type = self.substs[indexPath.item].type.lowercased() if add.contains("eigenverantwortliches arbeiten") || add.contains("entfall") || add.contains("fällt aus"){ - for i in 2...4 { - mutableStrings[i].addAttribute(NSAttributedString.Key.strikethroughStyle, value: 2, range: NSMakeRange(0, mutableStrings[i].length)) + + } + + if !add.isEmpty { + if check(string: add, for: cancellations) { + for i in 2...4 { + mutableStrings[i].addAttribute(NSAttributedString.Key.strikethroughStyle, value: 2, range: NSMakeRange(0, mutableStrings[i].length)) + } + } + } else { + if check(string: type, for: cancellations) { + for i in 2...4 { + mutableStrings[i].addAttribute(NSAttributedString.Key.strikethroughStyle, value: 2, range: NSMakeRange(0, mutableStrings[i].length)) + } } } cell.group.attributedText = mutableStrings[0] - cell.additional.text = self.substs[indexPath.item].additional + if !self.substs[indexPath.item].additional.isEmpty { + cell.additional.text = self.substs[indexPath.item].additional + } else { + cell.additional.text = self.substs[indexPath.item].type + } cell.time.attributedText = mutableStrings[1] cell.room.attributedText = mutableStrings[3] @@ -189,6 +203,16 @@ class PlanViewController : UICollectionViewController, UICollectionViewDelegateM return cell } + private func check(string s: String, for array: [String]) -> Bool { + var b = false + array.forEach { string in + if s.contains(string) { + b = true + } + } + return b + } + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeModeForItemAt indexPath: IndexPath) -> MagazineLayoutItemSizeMode { var widthMode: MagazineLayoutItemWidthMode if UIDevice.current.userInterfaceIdiom == .pad { // iPad diff --git a/AvH Plan/SubstModel.swift b/AvH Plan/SubstModel.swift index e498a05..b95a79c 100644 --- a/AvH Plan/SubstModel.swift +++ b/AvH Plan/SubstModel.swift @@ -16,8 +16,9 @@ class SubstModel { var time: String var room: String var teacher: String + var type: String - init(group: String, course: String, additional: String, date: String, time: String, room: String, teacher: String) { + init(group: String, course: String, additional: String, date: String, time: String, room: String, teacher: String, type: String) { self.group = group self.course = course self.additional = additional @@ -25,5 +26,6 @@ class SubstModel { self.time = time self.room = room self.teacher = teacher + self.type = type } }