본문 바로가기
[피터] 창업가_IT

Bubble.io 노코드 툴 - 35일차- (서비스5일차)

by Rulemakers 2022. 11. 14.

지난 글에서와 같이 현재 ministones 서비스의 핵심 기능은 구현했지만 디테일한 부분에서 손봐야할 부분이 많이 있다.

오늘 추가로 구현하려는 기능은 두가지다.

 

1. 서비스 접속 시, 마지막 접속과 현재 접속 사이의 일자들에 해당하는 리스트 생성시키기

 [AS IS] 예를 들어 11월 1일에 접속한 후, 11월 10일에 접속하게 되면 List는 두 개만 생성됨. 11월1일, 11월10일.

 [TO BE] 11월 10일 접속 시에, 11월 2일, 3일, 4일, 5일, 6일, 7일, 8일, 9일, 즉 마지막 접속일(11/1)과 현재 접속일(11/10) 사이의 일자들에 해당하는 리스트들을 생성시키고자 한다.

 [구현방법] 11월 10일 접속 시에, 그 이전 리스트들이 존재하지 않는 경우 리스트를 하나씩 생성하도록 하기

결과적으로 위 접근은 잘못된 접근이었다. 위에서는 current date/time에서 day만 1일 빼는 것으로 설정하였는데, 이렇게 되면 동일한 month에서는 문제가 없겠지만 12월 1일 접속 시, 11월30일이 생성되지 않고 12월30일이 생성되는 문제가 생길 것이다. 이 문제는 아래에서 해결한다.

 

List 생성 이후에 User의 List of DailyList에 꼭 추가해주어야 함.

2. 리스트 1행(Row)마다 최대 7개(7일)의 리스트만 두기. 7개가 넘어가면 위쪽으로 신규 row 생성시키기.

  [AS IS] 리스트 신규 생성 시, 오른쪽으로 무한히 증가하도록 구현됨.

  [TO BE] 한 행에 7개 리스트 생성하기. 하단으로 무한히 증가하도록 구현하기.

  [구현방법] Repeating Group에서 Fixed column: 7개, 반면에 Row개수는 계속 증가하도록 하기

 

----

1번 기능을 추가하는 과정에서 문제를 발견했다. 현재 List를 노출하는 순서를 List의 생성일을 기준으로 하다보니, 아래와 같이 순서가 뒤죽박죽이 된다. 현재 List의 Title은 Text 형식이다. (current date/time에서 year/month/day)를 text로 추출하여 저장하는 방식이었다. Title 부분을 Date으로 저장하도록 하고 페이지에서 리스트를 보여줄 때만 year/month/day 형식으로 노출시키고 + Title의 날짜를 기준으로 리스트가 나열되도록 하면 문제가 해결될 것 같다.

문제가 생겼다. 아래와 같이 Current date/time이 동일한 경우, 같은 리스트를 생성하지 않도록 설정했는데, 막상 테스트를 해보니 같은 날짜의 리스트가 생성되었다. 이는 아마도 Current date으로 비교한 것이 아니라, Current date과 time으로 비교했기 때문이라고 생각된다. 그렇다면 Only when 조건을 생성할 때 Title_date에도 date만 추출하고 / Current date/time에서도 date만 추출하여 date 값을 기준으로 비교하도록 해야한다.

ㄴ Current date/time 에서 date만 추출하는 것은 가능한데, Title_date (date)에서 date만 추출하는 부분이 어려웠다.

ㄴ 그래서 Title_date_forfilter 라는 필드를 추가 생성하여 MM/DD/YY를 텍스트로 저장하도록 하여 문제를 해결했다.

문제를 만든 Current date/time
같은 Date의 리스트가 생성되었다. 두 개는 같은 Date이지만 뒷단에서는 다른 Time이 적용되어 있을 것이다.
Title_date_forfilter라는 text 필드를 생성하여, 중복된 List가 있는지 비교하도록 함.
Title_date_forfilter 필드를 통해 리스트가 중복 생성되는 문제를 해결하였다.

----

1번 기능 추가를 위해서, 마지막 생성한 리스트의 title 날짜와 오늘 생성하려는 리스트 날짜를 비교하여

{마지막 생성 리스트 날짜}+2 > {오늘 생성하려는 리스트 날짜} 인 경우 workflow를 종료하도록 했다.

(사실 {마지막 생성 리스트 날짜 + 1 = {오늘 생성하려는 리스트 날짜} 로 조건 설정하는게 더 깔끔한데, 워크플로우 상에 < > 만 있어서, 위와 같이 수식을 정했다.)

 

위 수식이 동작하는 예시를 보면,

마지막 생성된 리스트 날짜가 '수요일'인데, 오늘이 '금요일'이라면 '수요일+2일 = 금요일 > 금요일'이 되어 조건 충족 X

>>> 다음 워크플로우를 진행하며 사이에 생성되지 않았던 '목요일' 리스트를 생성하게 된다.

반면에, 마지막 생성된 리스트 날짜가 '목요일'인데 오늘이 '금요일'이라면 '목요일+2일 = 토요일 > 금요일'이 되어 조건 충족 O

>>> Terminate this workflow가 동작하며 다음 워크플로우가 진행되지 않는다.

 

위와 같은 수식을 차례대로 적용해주면 마지막 리스트 날짜와 현재 리스트 날짜 사이에 비어있는 리스트들을 채울 수 있다.

(for 문을 사용할 수 있다면 훨씬 좋을텐데, 버블 for문 사용하는 방법을 아직 잘 몰라서 아래와 같이 하나씩 일일이 적용했다. 아래 워크플로우에서는 마지막 생성된 리스트 날짜와 오늘 날짜 사이에 최대 6개의 비어있는 리스트를 채우도록 했다.)

------

현재 문제

terminate this workflow 조건이 잘 동작하지 않아서, 마지막 생성된 리스트 이전 날짜 리스트들도 계속 생성되는 문제 발생

 

아래에서 11/11과 11/10 등은 생성되지 말아야 한다.

댓글