오늘은 오자마자 작업 일정을 계획했는데
생각보다 할 일이 너무 많아서 일정 작성에만 40분 이상을 소모했다.
게시판 내부 데이터를 받아오기 위해
특정 게시글의 제목 등을 클릭할 경우 id를 받아오고
해당 id를 통해 게시글의 내용을 wire를 통해 받아오려고 했지만
에러코드 500과 함께 제대로 된 힌트 하나 없이 막혀버렸다.
wire, refresh, track 등 여러가지 방법을 시도해봤지만
메서드 방식으로는 진행이 되지 않는 것 같아서
결국 id:data mapping을 통한 값 확인 방식으로 진행했다.
사실 모든 데이터는 이미 게시판을 만들기 위해 받아오고 있어서
현재로서는 큰 차이가 없지만
사실 게시판의 내용 및 첨부파일까지 모두 불러와서 하는 것은 미친짓일 것 같다.
정상적인 프로그래밍 진행이라면
제목, id, 작성일 정도만 가져와서 뿌려주고
클릭했을 경우 해당 id에 맞는 본문, 첨부파일 등을 가져와야겠지만
사실 과제의 주 내용은 권한설정 부분이기 때문에
과제 시연을 위해 일단 이 부분은 mapping으로 처리하고 넘어가기로 했다.
게시판을 구현하는데 예전의 table에서 css에서 엄청 고통받았던 것과는 다르게
이번에는 생각한대로 얼추 css가 먹히는 것 같았다.
물론 이번에는 height 등이 먹히지 않을 때 바로 max, min 두개로 적용해버려서 그렇기도 하지만
확실히 적응만 하면 크게 지장이 갈 정도로 불편함을 느끼지는 않게 된 것 같다.
점심을 먹은 후 게시글 생성을 위한 기능을 추가하려고 하는데
lightning-input-rich-text에서는 높이 조절이 먹히지 않았다.
개발자 도구를 통해 내부 구조들을 확인한 다음
해당 에디터 부분, 텍스트 부분 등 여러 부분에 사이즈를 먹여보고 !impotant등을 넣어봤지만
일반적인 height, px, %, vh, max, min 또한 통하지 않았다.
에디터 부분의 수정은 원래 곤란한 것 같았는데
검색을 통해 결국 host를 통해 사이즈를 조절할 수 있었다.
:host {
--sds-c-textarea-sizing-min-height: 600px;
}
다시 필요한 부분을 확인하기 위해
BoardPost 페이지로 들어가 게시글을 생성해봤는데
지역 선택, 등급을 선택해야 했다.
등급 부분은 전체 지역 선택이 되는 경우 7개 지역 선택은 의미가 없었고
전체 지역을 선택하지 않는 경우 7개 중 다중 선택이 가능해야 했는데
이걸 모두 true/false로 두기에는 보기에도 좀 애매하고 뭔가 손이 가지 않았다.
고민한 결과 7개의 지역은 다중 선택이 가능한 lightning-dual-listbox를 사용했고
전체 지역은 lightning-input를 사용해 체크박스로 이용했다.
여기서 전체 지역을 선택할 경우 7개의 지역 선택 리스트 부분을 보이지 않게 변경하고
전체 지역을 선택 해제할 경우 다중 지역 선택 리스트를 다시 보이게 만들었다.
뜬금없지만 파트너 사용자의 파일 업로드 부분에 관여하는 것은
프로필의 Select Files from Salesforce 부분으로
기본 checked 상태이기 때문에 프로필에서 제거해줘야한다.
또한 Content Version Validation Rule 부분에 유효성 검사를 추가해
파트너 유저(프로필 이름이 Partner 또는 VIP)인 경우 업로드 불가 메세지를 출력하게 했다.
유효성을 통해 파일 업로드를 막은 것 까지는 좋고 과제 요구사항 하나를 드디어 해결한 것이지만
아쉽게도 파트너 유저로 편하게 변경사항을 확인하며 작업하는 것에는 문제가 생겼는데
결국 어드민 계정으로 접속해 파일 생성을 진행해야 할 것 같다.
결론적으로는 이게 좋은 진행 방향이 되었는데
어드민으로 하니 여태막혀있던 업로드가 정상 처리되고 콘텐트 버전에서 확인이 가능했다.
알고보니 유저는 업로드 권한 자체가 애매하게 막혀 있어서
이전에는 업로드 시도는 가능했지만 실제 올라가지는 않았기 때문에
콘솔에는 아이디와 정보가 출력되지만 실제 데이터를 조회하면 없었던 문제가 발생했던 것이다.
어드민 계정으로 업로드를 진행하니 아래와 같은 file 데이터를 받아볼 수 있었는데
name: '고양이.jfif', documentId: '0695i00000C63ugAAB', contentVersionId: '0685i00000Ca4ZPAAZ', contentBodyId: '05T5i00000fkzUjEAI', mimeType: 'image/jpeg'}
이것만 가지고서 썸네일은 무리겠지만 파일이 업로드되었다는 표시 정도는 가능할 것 같았다.
해당 파일이 성공적으로 업로드 되어있는 것 까지는 알 수 있었기 때문에
파일 업로드를 할 때 받은 데이터를 바탕으로 해당 contentId를 따로 모아서 저장하기로 했다.
버전 아이디만 있으면 다운로드 및 썸네일 제작이 가능하기 때문에 거의 해결이지만
문제는 해당 파일의 제목을 알 수 없다는 부분이었다.
결국 저장할 때는 파일명과 아이디 사이에 @를 넣어 만든 후 받아올 때 분리하기로 했다.
const DOWNLOAD_URL = '<https://brave-impala-mp3st1-dev-ed.trailblaze.lightning.force.com/sfc/servlet.shepherd/version/download/>'
const TUMNAILFIRST = '<https://brave-impala-mp3st1-dev-ed.trailblaze.file.force.com/sfc/servlet.shepherd/version/renditionDownload?rendition=THUMB120BY90&versionId=>'
자기 멋대로 하는 다운로드 URL
<https://brave-impala-mp3st1-dev-ed.trailblaze.lightning.force.com/sfc/servlet.shepherd/version/download/0685i00000Ca4O6AAJ?operationContext=S1>
일단 가진 도구들을 사용해 업로드를 시도할 경우
해당 데이터의 필수 정보인 제목과 아이디를 담은 객체를 배열에 담아두고
해당 숫자만큼 돌며 썸네일과 이름을 하단에 표기하게 만들고
저장할 때는 각 객체마다 이름을 합치고 해당 이름을 다시 또 ‘//’로 구문해 커스텀 필드에 넣기로 했다.
파일 전송은 미친듯이 되지 않았는데
주요 문제점들은 객체 내부 데이터를 조회할 때 obj[aa]형태로 넣었는데
변수명과 비슷한 필드 String 값들이 많아 헷갈렸지만 모두 obj[’aa’]형태로 넣어야 했고
객체를 전달할 때는 객체를 넣어서 되는 것이 아니고
{paramName : object} 형태로 한번 더 객체로 감싸서 넘겨줘야 한다.
이 문제를 해결하지 못해서 2시간을 날렸지만 값이 제대로 넘어가는 것을 보니 뿌듯하다.
값을 넣어서 생성하고 가려고 했지만
다시 또 객체 형태로 값이 넘어와서 내부 값에 접근을 못하게 땡깡부리고 있기 때문에
내일 해결하기로 하고 이만 마무리했다.
벌써 10시가 다 되었는데
이제 퇴근하면 집에 도착해서 문제를 풀고 회고, 일기를 쓰면 12시는 돼야 잘 수 있을 것 같다.
(1).백준 17548번 Greetings!는h와 y 사이의 e의 갯수를 두배로 만드는 문제였다.
확실하게 h, y가 들어있음을 알 수 있기 때문에 전체 길이의 2배 -4(h, y 각 1개씩 두번)로 해결했다.
const input = `hey`
console.log('h' + 'e'.repeat(input.length *2 -4) + 'y')
'회고' 카테고리의 다른 글
| [수습일지] - 67 (0) | 2023.06.01 |
|---|---|
| [수습일지] - 66 (0) | 2023.05.31 |
| [수습일지] - 64(석가탄신일 대체공휴일) (0) | 2023.05.29 |
| [수습일지] - 63(주말) (0) | 2023.05.28 |
| [수습일지] - 62(주말) (0) | 2023.05.27 |
