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

[Feat] #137- 출석조회하기 레이아웃 구현 #152

Merged
Merged
Show file tree
Hide file tree
Changes from 30 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
64d84c5
[Feat] #137- String Literal 추가
devxsby Apr 11, 2023
9bdd868
[Add] #137- 기본 세팅 (폴더링 등)
devxsby Apr 11, 2023
65908ac
[Merge] #137- 브랜치 최신화
devxsby Apr 11, 2023
02cfcdc
[Merge] #137- 브랜치 최신화
devxsby Apr 12, 2023
0b65672
[Add] #137- 이미지 에셋 추가
devxsby Apr 12, 2023
ef1176a
[Chore] #137 - 에셋 오타 수정
devxsby Apr 12, 2023
b15595d
[Add] #137- xmark 아이콘 추가
devxsby Apr 12, 2023
5077cd5
[Add] #137- StringLiteral에 파트 추가
devxsby Apr 12, 2023
c425e6d
[Feat] #137- OPNavigationBar 추가
devxsby Apr 12, 2023
d070eca
[Add] #137- 출석 상태 이미지 4개 추가
devxsby Apr 13, 2023
a8b6e0c
[Chore] #137- 불필요한 코드 삭제
devxsby Apr 13, 2023
736cb48
[Add] #137- 폰트 스타일 추가
devxsby Apr 13, 2023
7b64579
[Feat] #137- 상단 오늘의 일정 뷰 구현
devxsby Apr 13, 2023
54f23c0
[Feat] #137- 출석점수 전체 조회 뷰 1차 구현
devxsby Apr 13, 2023
082d588
[Feat] #137- 출석조회하기 뷰컨과 커스텀 뷰 2개 연결
devxsby Apr 13, 2023
c6d6c70
[Chore] #137- String Literals 수정
devxsby Apr 13, 2023
0f9cd36
[Feat] #137- 출석 조회하기 전체 레이아웃
devxsby Apr 13, 2023
777d6a6
[Chore] #137- 레이아웃 조정
devxsby Apr 13, 2023
f0009ba
[Chore] #137- 레이아웃 조정
devxsby Apr 13, 2023
7c402b7
[Chore] #137- MyAttendance UIView에서 TVC로 변경
devxsby Apr 14, 2023
063a5f9
[Fix] #137- tvc 스크롤 문제 수정
devxsby Apr 14, 2023
12d481c
[Chore] #137- 에셋이름 변경
devxsby Apr 14, 2023
537e850
[Chore] #137- 더미 변경
devxsby Apr 14, 2023
f7b9b0f
[Chore] #137- 주석 수정
devxsby Apr 14, 2023
25547cd
[Feat] #137- 뷰컨 final 키워드 추가
devxsby Apr 14, 2023
741f3b9
[Fix\ #137- 잘못 삭제된 코드 추가
devxsby Apr 14, 2023
11d88b5
[Chore] #137- tvc 구성 변경
devxsby Apr 14, 2023
e736e49
[Chore] #137- 코드리뷰 반영
devxsby Apr 14, 2023
3f34f99
[Chore] #137- 불필요한 코드 삭제
devxsby Apr 14, 2023
883b937
[Chore] #137- 코드리뷰 반영
devxsby Apr 14, 2023
d0bb475
[Chore] #137- 루트뷰변경
devxsby Apr 14, 2023
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
30 changes: 30 additions & 0 deletions SOPT-iOS/Projects/Core/Sources/Literals/StringLiterals.swift
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,36 @@ public struct I18N {
public static let soptamp = "SOPT AMP!"
}
}

public struct Attendance {
public static let attendance = "출석"
public static let absent = "결석"
public static let tardy = "지각"
public static let leaveEarly = "조퇴"
public static let participate = "참여"
public static let all = "전체"

public static let planPart = "기획파트"
public static let designPart = "디자인파트"
public static let webPart = "웹파트"
public static let iosPart = "iOS파트"
public static let aosPart = "안드로이드파트"
public static let serverPart = "서버파트"

public static let today = "오늘은 "
public static let dayIs = " 날이에요"
public static let unscheduledDay = "일정이 없는"
public static let notCheckedDay = "출석점수를 체크하지 않습니다"
public static let currentAttendanceScore = "현재 출석점수는 "
public static let scoreIs = " 입니다!"
public static let myAttendance = "나의 출결 현황"
public static let count = "회"

public static let takeAttendance = "출석하기"
public static let beforeAttendance = "출석 전"
public static let completeAttendacne = "출석완료"
public static let giveFeedback = "세션 피드백하기"
}
}

extension I18N {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
//
// ShowAttendanceRepository.swift
// Data
//
// Created by devxsby on 2023/04/11.
// Copyright © 2023 SOPT-iOS. All rights reserved.
//

import Combine

import Core

import Domain
import Network

public class ShowAttendanceRepository {

private let networkService: AttendanceService
private let cancelBag = CancelBag()

public init(service: AttendanceService) {
self.networkService = service
}
}

extension ShowAttendanceRepository: ShowAttendanceRepositoryInterface {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
//
// ShowAttendanceTransform.swift
// Data
//
// Created by devxsby on 2023/04/11.
// Copyright © 2023 SOPT-iOS. All rights reserved.
//

import Foundation

import Domain
import Network

extension ShowAttendanceEntity {

public func toDomain() -> ShowAttendanceModel {
return ShowAttendanceModel.init()
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Dummy
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

16 changes: 16 additions & 0 deletions SOPT-iOS/Projects/Domain/Sources/Model/ShowAttendanceModel.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
//
// ShowAttendanceModel.swift
// Domain
//
// Created by devxsby on 2023/04/11.
// Copyright © 2023 SOPT-iOS. All rights reserved.
//

import Foundation

public struct ShowAttendanceModel {

public init() {

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
//
// ShowAttendanceRepositoryInterface.swift
// Domain
//
// Created by devxsby on 2023/04/11.
// Copyright © 2023 SOPT-iOS. All rights reserved.
//

import Combine

public protocol ShowAttendanceRepositoryInterface {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
//
// ShowAttendanceUseCase.swift
// Domain
//
// Created by devxsby on 2023/04/11.
// Copyright © 2023 SOPT-iOS. All rights reserved.
//

import Combine
import Core

public protocol ShowAttendanceUseCase {

}

public class DefaultShowAttendanceUseCase {

private let repository: ShowAttendanceRepositoryInterface
private var cancelBag = CancelBag()

public init(repository: ShowAttendanceRepositoryInterface) {
self.repository = repository
}
}

extension DefaultShowAttendanceUseCase: ShowAttendanceUseCase {

}
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
//
// AttendanceFeatureViewControllable.swift
// AttendanceFeatureTests
// AttendanceFeature
//
// Created by 김영인 on 2023/03/18.
// Copyright © 2023 SOPT-iOS. All rights reserved.
//

import BaseFeatureDependency

public protocol AttendanceFeatureViewControllable: ViewControllable { }
public protocol ShowAttendanceViewControllable: ViewControllable { }

public protocol AttendanceFeatureViewBuildable { }
public protocol AttendanceFeatureViewBuildable {
func makeShowAttendanceVC() -> ShowAttendanceViewControllable
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
//
// ShowAttendanceViewModel.swift
// AttendanceFeature
//
// Created by devxsby on 2023/04/11.
// Copyright © 2023 SOPT-iOS. All rights reserved.
//

import Combine

import Core
import Domain

public final class ShowAttendanceViewModel: ViewModelType {

// MARK: - Properties

private let useCase: ShowAttendanceUseCase
private var cancelBag = CancelBag()

// MARK: - Inputs

public struct Input {

}

// MARK: - Outputs

public struct Output {

}

// MARK: - init

public init(useCase: ShowAttendanceUseCase) {
self.useCase = useCase
}
}

extension ShowAttendanceViewModel {

public func transform(from input: Input, cancelBag: CancelBag) -> Output {
let output = Output()
self.bindOutput(output: output, cancelBag: cancelBag)
// input,output 상관관계 작성

return output
}

private func bindOutput(output: Output, cancelBag: CancelBag) {

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
//
// MyAttendanceStateView.swift
// AttendanceFeature
//
// Created by devxsby on 2023/04/13.
// Copyright © 2023 SOPT-iOS. All rights reserved.
//

import UIKit

import Core
import DSKit

/*
나의 출결 현황 스택뷰에 1줄짜리 상태(출석, 1차 세미나, 00월 00일)를 나타내는 테이블뷰 셀입니다.
*/

final class MyAttendanceStateTVC: UITableViewCell {

// MARK: - UI Components

private let stateImageView = UIImageView()

private let titleLabel: UILabel = {
let label = UILabel()
label.font = DSKitFontFamily.Suit.bold.font(size: 15)
label.textColor = .white
return label
}()

private let dateLabel: UILabel = {
let label = UILabel()
label.font = .Main.body2
label.textColor = DSKitAsset.Colors.gray30.color
return label
}()

// MARK: - Initialization

override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setUI()
setLayout()
}

required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

// MARK: - UI & Layout

extension MyAttendanceStateTVC {

private func setUI() {
backgroundColor = .clear
}

private func setLayout() {
addSubviews(stateImageView, titleLabel, dateLabel)

stateImageView.snp.makeConstraints {
$0.leading.centerY.equalToSuperview()
$0.width.equalTo(34)
$0.height.equalTo(20)
}

titleLabel.snp.makeConstraints {
$0.leading.equalTo(stateImageView.snp.trailing).offset(8)
$0.centerY.equalToSuperview()
}

dateLabel.snp.makeConstraints {
$0.trailing.centerY.equalToSuperview()
}
}
}

// MARK: - Methods

extension MyAttendanceStateTVC {

func setData(title: String, image: UIImage, date: String) {
stateImageView.image = image
titleLabel.text = title
dateLabel.text = date
}
}
Loading