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

KDT0_KimTeukHee 직원관리서비스 #51

Open
wants to merge 37 commits into
base: main
Choose a base branch
from
Open

Conversation

turkey-kim
Copy link

TK Company 직원 관리 서비스

  • 가상회사 TK company의 직원 DB 개발
  • 개발 기간 : 2023.08.08 ~ 2023.08.18
  • 배포주소

스택

요구사항

  1. 필수
  • “AWS S3 / Firebase 같은 서비스”를 이용하여 사진을 관리할 수 있는 페이지를 구현하세요.
  • 프로필 페이지를 개발하세요.
  • 스크롤이 가능한 형태의 리스팅 페이지를 개발하세요.
  • 전체 페이지 데스크탑-모바일 반응형 페이지를 개발하세요.
  • 사진을 등록, 수정, 삭제가 가능해야 합니다.
  • 유저 플로우를 제작하여 리드미에 추가하세요.
  • 애니메이션 구현
  • DOM 조작
  1. 선택
  • 직원을 등록, 수정, 삭제가 가능하게 해보세요.
  • LocalStorage 사용

주요 기능

  • 직원 정보 등록 (사진 & 인적사항)
  • 직원 정보 상세 보기
  • 직원 정보 수정 / 삭제

주요 기능 상세

기능 이미지 설명
1. 직원 조회 - S3의 직원목록 로드
2. 직원 등록 - 모달창 구현
- 업로드 사진 미리보기
- 사진 미등록 시,
기본프로필 이미지 설정
3. 정보 수정 - 모달창 구현
- 사진/인적사항 변경
4. 직원 정보 삭제
5. 반응형 웹

USER-FLOW

2023.08.09
1. index.html 추가 및 일부 작성
2. general.css 추가 및 일부 작성
3. theme.css 추가 및 일부 작성
2022.08.09
1. 폼 레이아웃 구성
2. 이미지 프리뷰 기능 구현
3. 추가 기능 구현 예정
2023.08.09
1. 테이블 레이아웃 구현
2. 모바일 반응형 고려
(모바일시 블록디스플레이로 변경)
2023.08.11
1. 자주 쓰는 DOM객체 상수화
2. 프로필 등록 폼 스타일 수정
2023.08.11
1.SDK 설정
2. AWS 환경변수 설정(gitingnore)
2023.08.14
1. S3에 프로필 당 하나의 폴더 생성 후 해당 폴더에 사진 및 추가 정보 저장
2. 파일 분리 및 리펙토링 예정
2023.08.14
1. addProfile => uploadProfile 파일명 변경
2. api 폴더 추가 및 파일 분리
2023.08.16
1. profile.html 추가
2. profile.css 추가
3. 해당 html 스크립트파일 추가
2023.08.16
1. profile.html 전용 스크립트 파일로 분리
2. listProfile.js에서 호출
3. Index.html 도큐멘트 스크립트로 로드된 특정 프로필 정보 key값 로컬스토리지에 저장 후,
profile.html 도큐멘트 스크립트에서 해당 키값 활용가능하도록 구현함.
2023.08.16
1. main.js 파일 index.html 내부 스크립트로 이전
2. 관리 상 해당 방법이 좋을 것이라 판단.
2023.08.16
1. root경로로 변경
2023.08.16
1. constant 폴더 생성
2. Rename : constant.js -> home.js
3. profile.html 객체 상수화 예정
2023.08.16
1. 기능과 무관한 변경사항
2023.08.17
1. 수정 폼 열기 기능 추가
2. 수정 폼 닫기 기능 추가
2023.08.17
- 프로필 사진 및 정보 수정 기능 구현
2023.08.18
- 직원 등록 폼 모달창으로 변경
2023.08.18
1. 프로필 수정 폼 모달창으로 구현
2. 프로필 상세페이지 반응형 디자인 추가
2023.08.18
- 헤더 보완
- 모달창 보완
2023.08.18
- 사진 미업로드시 기본 이미지로 설정
2023.08.18
- 마우스오버 시 애니메이션
2023.08.18
- 배포 url 추가
2023.08.18
- 사진첨부 오류 수정
Copy link

@zoeyourlife zoeyourlife left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

반응형 웹으로 만드신 부분이 좋았던 것 같습니다.
저도 참고해서 리팩토링 과정 때 한번 적용해보려고 합니다.
localStorage 저장하고 사용하신 부분도 좋은 것 같습니다.

position: edit_position.value,
}; // 사진을 제외한 프로필 정보

const key = localStorage.getItem("profile");

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 부분처럼 local에 저장해놓고 사용했으면 정보 가져오기 편했을 것 같아요 ~

Comment on lines +1 to +4
export const bucketName = "turkey-mm-bucket";
export const region = "ap-northeast-2";
export const S3endpoint =
"https://turkey-mm-bucket.s3.ap-northeast-2.amazonaws.com";

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

aws 실제로 사용하는건 처음봤어요!

@wowba
Copy link

wowba commented Aug 25, 2023

폴더구조가 정말 깔끔하고, 각 파일별로 역할을 잘 분담하여 어떤 역할을 하는지 직관적으로 알 수 있어서 좋았습니다!
각 페이지에 필요한 api를 통합하여 해당 파일에서만 api를 불러오게 한다면 관리 측면에서 용이할 것 같아요!

@applevalley
Copy link

폴더 구조나 파일명을 명확하게 잡아주셔서, 각 폴더나 파일의 이름만으로 어떤 기능에 대한 내용인지 또는 어떤 목적을 가지고 있는지에 대해 알 수 있게 만들어주신 부분이 좋았습니다!

그리고 constant 폴더를 통해서 특정 id값을 가지는 DOM 요소를 미리 정의해두고, api쪽 js 파일에서는 import해와서 사용하신 부분 보고 정말 놀랐습니다! 필요할 때마다 getElementById() 메서드를 통해 요소에 접근할수도 있지만, 이렇게 따로 선언해두시고, 가져와서 사용하는 편이 구조도 더 간결해지고 보기 편하다는 걸 이번 특희님 프로젝트를 통해서 배울 수 있었습니다!

Copy link
Member

@iamidlek iamidlek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

깔끔하게 필수 요소와 기능들을 구현하시고
js 도 잘 짜주신 것 같아서 좋습니다.
일부 사항에 대하여 코멘트 하였고
중복되는 부분은 생략하였습니다.

고생하셨습니다.


// 프로필 상세 컨테이너
export const profile = document.getElementsByClassName("profile")[0];
export const manageBar = document.getElementsByClassName("manage-bar")[0]; // 수정 및 삭제 버튼 컨테이너
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

사용하는 곳이 없는 것 같습니다.

<script type="module" src="/js/api/editProfile.js"></script>
<script type="module" src="/js/api/deleteProfile.js"></script>
<script type="module">
import { S3endpoint } from "/js/constant/aws.js";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

다른 경우와 동일하게 파일로 빼서 작성하는 것이 좋을 것 같습니다.

let nameInput = document.querySelector("#edit-name");
nameInput.value = key;
editForm.style.display = "block";
modal.style.visibility = "visible";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

직접적으로 스타일을 변경하는 것이 아닌
class로 관리하는 것이 좋을 것 같습니다.

const container = document.createElement("div");
container.classList.add(`member-info__${key}`);
container.innerText = info[key];
tableRow.appendChild(container);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

반복문 안에서 appendChild 와 같이 DOM 조작은 줄이고
한번에 붙이는 방법이 좋을 것 같습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants