본문 바로가기
소프트웨어 마에스트로/개발

[개발 관련] lexorank 적용기..

by alpakaka 2024. 7. 18.

일단 백엔드에서 Lexorank 적용하는 걸 포기해봤다..!

일단 내가 사용하는 Django 에서 적당하게 쓸 만한게 없는게 제일 컸다.

 

그리고 우리는 투두 리스트라.. 기껏 많아봐야 한 레벨에 100개 정도라 예상했다...!

그래서 딱히 백엔드에서 계산할 필요도 없고.. 바로바로 프론트에선 눈에 띄어야하니 프론트에서 개발하는 게 나을 것 같았다.

그래서 lexorank를 js로 적용해보려고 한다. 

 

https://github.com/kvandake/lexorank-ts

 

GitHub - kvandake/lexorank-ts: A reference implementation of a list ordering system like JIRA's Lexorank algorithm

A reference implementation of a list ordering system like JIRA's Lexorank algorithm - kvandake/lexorank-ts

github.com

위의 라이브러리를 참고할 예정

 

일단 예상은 이렇게 진행된다.

간단하게 투두가 이동하고자 할 때 
1. 없는 경우에는 lexorank.middle()
2. 한 투두가 가장 나중으로 이동하고자 한다면 genNext()
3. 한 투두가 중앙으로 이동하고자 한다면 between()
4. 한 투두가 가장 앞으로 가고자 한다면 getPrev()

다른 레벨로 이동하고자 할 떄 
1. 2단계에 자식이 있는 애가 3단계로 가고자 하는 일 -> 금지
2. 2단계에 자식이 없는 애가 3단계로 가고자 하는 일 -> 가능
3. 넣고자 하는 단계 + 자식 수 > 3 이면 금지
이동할 때에는 '간단하게 투두가 이동하고자 할 때'의 규칙을 따른다

order 의 값은 일단 프론트에서 계산
backend는 프론트에서 준 값 받아서 넣기
만약 연산량이 프론트에서 계산하기 버거워진다면 backend에서 계산

 

아주 간단하게 진행하는건 정말 쉽게 되어서 팀원분이 지금까지 개발한 내용에 스리슬쩍 넣어볼 예정이다.