Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Правки по спринту 14 #1

Merged
merged 40 commits into from
Aug 29, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
47fd398
Верстка LaunchScreen и экранов Трекер и Статистика
freeagles1991 Jul 26, 2024
fe76cfb
Добавил экраны для создания трекера
freeagles1991 Aug 5, 2024
9b8f1fd
Добавил экран с выбором расписания
freeagles1991 Aug 8, 2024
c5d06f4
Сохраняем выбранные дни недели
freeagles1991 Aug 8, 2024
1feecb3
Добавил UIDatePicker и заголовок
freeagles1991 Aug 8, 2024
7a97082
Сверстал ячейку для UICollectionView
freeagles1991 Aug 9, 2024
94c9da5
Настроил отображение UISearchBar
freeagles1991 Aug 9, 2024
d57422c
Добавил категории для ячеек
freeagles1991 Aug 9, 2024
19c9774
Правки по верстке экрана трекеров
freeagles1991 Aug 9, 2024
b1fe019
Добавил экраны для добавления категорий и сервис хранения трекеров
freeagles1991 Aug 10, 2024
075ddc8
Добавил таблицу на экран выбора категории
freeagles1991 Aug 10, 2024
489e063
Добавил сохранение созданных категорий в DataService
freeagles1991 Aug 11, 2024
a148204
Добавил отображение выбранной категории на кнопку
freeagles1991 Aug 11, 2024
ad0ad87
Добавил отображение выбранных дней недели в кнопке
freeagles1991 Aug 13, 2024
4762815
Добавил кнопки Отмена и Создать на экране создания трекера
freeagles1991 Aug 13, 2024
9777283
Правки верстки экрана создания нового трекера
freeagles1991 Aug 13, 2024
fb450eb
Сделал сохранение новых трекеров в сервис
freeagles1991 Aug 13, 2024
2505173
Отображение созданных трекеров из сервиса
freeagles1991 Aug 14, 2024
8155b22
Добавил фильтрацию трекеров по выбранной дате
freeagles1991 Aug 14, 2024
35c2e19
Добавил логику увеличения/уменьшения каунтера для трекера и проверку …
freeagles1991 Aug 14, 2024
47b2c42
Добавил записи в TrackerDataService
freeagles1991 Aug 15, 2024
17e6a35
Настройка отображения данных в ячейке
freeagles1991 Aug 15, 2024
acab97c
Трекер отображается сразу в выбранный день после добавления
freeagles1991 Aug 15, 2024
3a48254
Динамический размер ячеек в коллекции
freeagles1991 Aug 16, 2024
750040c
Добавил изменение состояния кнопки при создании трекера
freeagles1991 Aug 16, 2024
a4d67af
Почистил ненужные комментарии
freeagles1991 Aug 16, 2024
cd52f6c
Перенес хранение в TrackersVC
freeagles1991 Aug 17, 2024
c45b19d
Добавил склонение День для разного кол-ва выполненных дней
freeagles1991 Aug 17, 2024
c608ab7
Добавил бордер к TabBar и увеличил высоту
freeagles1991 Aug 17, 2024
9a68498
Исправил использование шрифтов
freeagles1991 Aug 17, 2024
9bb8c2c
Переименовал цвет и изменил цвет свичей в расписании
freeagles1991 Aug 17, 2024
a402ebf
Изменил цвет кнопок
freeagles1991 Aug 17, 2024
b8b0c48
Изменил логику выполнения трекера по выбранным дням
freeagles1991 Aug 18, 2024
7a59a97
Исправил верстку кнопки ячейки
freeagles1991 Aug 18, 2024
5d42b43
Скрываем клавиатуру при тапе на область экрана
freeagles1991 Aug 18, 2024
e601f9a
Добавил создание нерегулярных событий
freeagles1991 Aug 18, 2024
1b2e985
Переименовал контроллеры
freeagles1991 Aug 18, 2024
5fde007
Добавил подложку для эмоджи, динамическая верстка элементов ячейки
freeagles1991 Aug 18, 2024
b3e28a9
Верстка заголовка секции
freeagles1991 Aug 18, 2024
5932792
Указал final для классов
freeagles1991 Aug 18, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Добавил создание нерегулярных событий
  • Loading branch information
freeagles1991 committed Aug 18, 2024
commit e601f9ae8d88348536a2657749f8c98fec06d34f
17 changes: 17 additions & 0 deletions Tracker/Models/Tracker.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,23 @@ enum Weekday: String, CaseIterable, Codable {
case friday = "Пятница"
case saturday = "Суббота"
case sunday = "Воскресенье"

static func fromDate(_ date: Date) -> Weekday? {
let calendar = Calendar.current
let weekdayIndex = calendar.component(.weekday, from: date)

let weekdays = [
Weekday.sunday,
Weekday.monday,
Weekday.tuesday,
Weekday.wednesday,
Weekday.thursday,
Weekday.friday,
Weekday.saturday
]

return weekdays[weekdayIndex - 1]
}
}

struct Tracker: Identifiable, Codable, Equatable {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ final class CreateNewHabitViewController: UIViewController {
private let scheduleScreenVC = ScheduleScreenViewController()
weak var delegate: CreateNewTrackerViewController?

private var isRegularEvent = true

let notificationName = Notification.Name("MyCustomNotification")

private var selectedCategory: TrackerCategory?
Expand Down Expand Up @@ -62,6 +64,11 @@ final class CreateNewHabitViewController: UIViewController {
setupParametresStackView()
setupScreenControlsStackView()
updateCreateButtonState()

if !isRegularEvent {
guard let weekday = Weekday.fromDate(Date()) else { return }
selectedWeekdays.insert(weekday)
}
}

private func setupScreenTitle() {
Expand Down Expand Up @@ -116,7 +123,6 @@ final class CreateNewHabitViewController: UIViewController {
button.titleLabel?.font = UIFont.systemFont(ofSize: 17)
button.contentHorizontalAlignment = .left
button.backgroundColor = UIColor(named: "background")
button.layer.cornerRadius = 16
button.contentEdgeInsets = UIEdgeInsets(top: 0, left: 16, bottom: 0, right: 40)

button.titleLabel?.numberOfLines = 0
Expand Down Expand Up @@ -201,11 +207,19 @@ final class CreateNewHabitViewController: UIViewController {
setupCategoryButton()
setupScheduleButton()

let stackView = UIStackView(arrangedSubviews: [categoryButton, separator, scheduleButton])
var arrangedSubviews = [categoryButton, separator, scheduleButton]

if !isRegularEvent {
arrangedSubviews = [categoryButton]
}

let stackView = UIStackView(arrangedSubviews: arrangedSubviews)
stackView.axis = .vertical
stackView.spacing = 0
stackView.alignment = .fill
stackView.distribution = .fill
stackView.layer.cornerRadius = 16
stackView.layer.masksToBounds = true

stackView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(stackView)
Expand Down Expand Up @@ -318,6 +332,10 @@ final class CreateNewHabitViewController: UIViewController {
trackersVC?.updateCollectionViewWithNewTracker()
}

func configureTrackerType(isRegularEvent: Bool) {
self.isRegularEvent = isRegularEvent
}

@objc private func categoryButtonTapped(_ sender: UIButton) {
chooseCategoryVC.trackersVC = self.trackersVC
present(chooseCategoryVC, animated: true)
Expand All @@ -329,7 +347,7 @@ final class CreateNewHabitViewController: UIViewController {

@objc private func createButtonTapped(_ sender: UIButton) {
createNewTracker()

self.dismiss(animated: true) { [weak self] in
guard let delegate = self?.delegate else { return }
delegate.dismiss(animated: false, completion: nil)
Expand All @@ -345,14 +363,23 @@ final class CreateNewHabitViewController: UIViewController {
}

private func updateCreateButtonState() {
if selectedCategory != nil && !selectedWeekdays.isEmpty && !(trackerNameTextField.text?.isEmpty ?? true) {
createButton.isEnabled = true
createButton.alpha = 1.0
if isRegularEvent {
if selectedCategory != nil && !selectedWeekdays.isEmpty && !(trackerNameTextField.text?.isEmpty ?? true) {
createButton.isEnabled = true
createButton.alpha = 1.0
} else {
createButton.isEnabled = false
createButton.alpha = 0.5
}
} else {
createButton.isEnabled = false
createButton.alpha = 0.5
if selectedCategory != nil && !(trackerNameTextField.text?.isEmpty ?? true) {
createButton.isEnabled = true
createButton.alpha = 1.0
} else {
createButton.isEnabled = false
createButton.alpha = 0.5
}

}
}
}


Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import UIKit
final class CreateNewTrackerViewController: UIViewController {
weak var trackersVC: TrackersViewController?
private let createNewHabitVC = CreateNewHabitViewController()
private let createNewEventVC = CreateNewHabitViewController()

private var screenTitle: UILabel?
private let screenTitleString = "Создание трекера"
Expand All @@ -25,8 +26,6 @@ final class CreateNewTrackerViewController: UIViewController {
super.viewDidLoad()
view.backgroundColor = .white

createNewHabitVC.delegate = self

setupScreenTitle()
setupHabitButton()
setupEventButton()
Expand Down Expand Up @@ -99,11 +98,16 @@ final class CreateNewTrackerViewController: UIViewController {
}

@objc private func habitButtonTapped(_ sender: UIButton) {
createNewHabitVC.delegate = self
createNewHabitVC.trackersVC = self.trackersVC
createNewHabitVC.configureTrackerType(isRegularEvent: true)
present(createNewHabitVC, animated: true)
}

@objc private func eventButtonTapped(_ sender: UIButton) {

createNewEventVC.delegate = self
createNewEventVC.trackersVC = self.trackersVC
createNewEventVC.configureTrackerType(isRegularEvent: false)
present(createNewEventVC, animated: true)
}
}
11 changes: 4 additions & 7 deletions Tracker/TrackersScreen/TrackersCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -74,24 +74,21 @@ class TrackerCell: UICollectionViewCell {

titleLabel.leadingAnchor.constraint(equalTo: colorPanelView.leadingAnchor, constant: 12),
titleLabel.trailingAnchor.constraint(equalTo: colorPanelView.trailingAnchor, constant: -12),
titleLabel.topAnchor.constraint(equalTo: emojiLabel.bottomAnchor, constant: 8),
titleLabel.topAnchor.constraint(equalTo: colorPanelView.topAnchor, constant: 44),
titleLabel.bottomAnchor.constraint(equalTo: colorPanelView.bottomAnchor, constant: -12)
])

let bottomBlockView = UIView()
bottomBlockView.translatesAutoresizingMaskIntoConstraints = false

// Настраиваем кнопку
completeButton.translatesAutoresizingMaskIntoConstraints = false
completeButton.backgroundColor = .systemBlue // Начальный цвет фона
completeButton.tintColor = .white // Цвет изображения

// Устанавливаем системное изображение "плюс" из SF Symbols
let plusImage = UIImage(systemName: "plus") // Системное изображение "плюс"
let plusImage = UIImage(systemName: "plus")
completeButton.setImage(plusImage, for: .normal)
completeButton.tintColor = .white // Цвет изображения "плюс"
completeButton.tintColor = .white

// Настраиваем круглую форму кнопки
completeButton.layer.cornerRadius = 17
completeButton.clipsToBounds = true

Expand All @@ -101,7 +98,7 @@ class TrackerCell: UICollectionViewCell {
durationLabel.translatesAutoresizingMaskIntoConstraints = false
durationLabel.font = UIFont.systemFont(ofSize: 12)
durationLabel.textColor = .black
// Убедитесь, что label использует Dynamic Type

durationLabel.adjustsFontForContentSizeCategory = true
durationLabel.numberOfLines = 0

Expand Down
1 change: 1 addition & 0 deletions Tracker/TrackersScreen/TrackersViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,7 @@ final class TrackersViewController: UIViewController {
updatedCategories.append(newCategory)
}
categories = updatedCategories
print("Новый трекер добавлен \(tracker.schedule)")
}

private func removeTracker(_ tracker: Tracker, from categoryTitle: String) {
Expand Down