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

문서 기능 #160

Open
hotsixman opened this issue Aug 16, 2024 · 0 comments
Open

문서 기능 #160

hotsixman opened this issue Aug 16, 2024 · 0 comments
Assignees
Labels
enhancement New feature or request

Comments

@hotsixman
Copy link
Member

hotsixman commented Aug 16, 2024

문서기능

개요

타 위키처럼 문서를 작성/열람/관리 할 수 있는 시스템

sql

document

{
order: "int",
title: "text",
editorUUID: "tinytext",
type: "text",//WikiDocument의 type 프로퍼티 참고
content: "longtext", //markdown
subParagraphs: "longtext", //WikiParagraph 타입 객체들의 배열
editedDate: "timestamp",
editableGrade: "int",
annotaion: "longtext"
}

document/log

{
order: "int",
title: "text",
originalOrder: "int", //원본 문서
type: "text", //WikiDocument의 type 프로퍼티 참고
content: "longtext", //markdown
subParagraphs: "longtext", //WikiParagraph 타입 객체들의 배열
editedDate: "timestamp",
logOrder: "int" //같은 원본 문서를 가지는 글들의 순서,
annotaion: "longtext"
}

types

interface WikiParagraph{
    title: string;
    content: string;//markdown
    subParagraphs: WikiParagraph[]
}

interface WikiRedirectDocumentType{
    name: 'redirect',
    to: string; //리다이렉트 할 문서 제목
}
interface WikiSongDocumentType{
    name: 'song',
    songNo: string; //연결할 곡의 songNo
}
interface WikiNormalDocumentType{
    name: 'normal';
}

interface UnrecordedWikiDocument{
    type: WikiRedirectDocumentType | WikiSongDocumentType | WikiNormalDocumentType;
    title: string;
    content: string; //markdown
    subParagraphs: WikiParagraph[];
    annotaion: string[];//markdown
}

interface WikiDocument extends UnrecordedWikiDocument{
    order:number;
    editorUUID: string;
    editedDate: Date;
    editableGrade: number;
}

문서 작성/수정/열람

  • 각 문단은 제목, 내용(content)과 하위 문단(subParagraph)들을 가질 수 있다.
  • 하위문단은 . 을 통해 구분한다. 예를 들어 첫 문단의 두 번째 하위 문단의 네 번째 하위 문단은 1.2.4를 문단 제목 앞에 표기한다.
  • 문단의 작성은 기본적으로 마크다운을 사용한다.
  • 각 문단을 작성할 때는 rawtoast 두 가지 모드를 사용할 수 있다.
    • rawtextarea를 사용한다.
    • toast 는 토스트 UI의 에디터를 사용한다.
  • customElement를 정의하여 추가적인 기능을 하는 element들을 사용할 수 있도록 한다.
    • 이 기능을 사용하여 기능 등을 만든다.
  • 각 문단 및 하위 문단은 각각의 iframe을 사용하여 표시한다.
  • 문서를 수정하면, 원래 document 테이블에 있던 데이터가 document/log로 이동하고, originalOrderdocument에 있을 때의 order로 한다. 이후 새 데이터를 document 테이블에 삽입한다. \
  • 두 문서를 적절히 직렬화 하여 변경사항을 표기할 수 있도록 한다.
@hotsixman hotsixman added the enhancement New feature or request label Aug 16, 2024
@hotsixman hotsixman self-assigned this Aug 16, 2024
@hotsixman hotsixman moved this to In progress in Taikowiki Svelte Nov 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Status: In progress
Development

No branches or pull requests

1 participant