---
# System prepended metadata

title: サービスクラス設計TODOS
tags: [PJ_proofreading]

---

## 次席表関連のオブジェクト設計
- GuestObject
    - property
        - type: GuestType('groom' | 'bride')
        - relation: string
        - lastName: string
        - firstName: string
        - honorificName: string

- MainSeatObject extends RenderObject
    - property
        - name: string
        - objects: RenderObject[]

- GuestSeatObject extends RenderObject
    - property
        - name: string
        - symbolFontProperties: FontProperties
        - nameFontProperties: FontProperties
        - nameVerticalSpacing: number
        - nameHorizontalSpacing: number

- CircleSeatObject extends GuestSeatObject
    - property
        - patterns: CircleSeatPattern[]
            - CircleSeatPattern extends RenderObject
                - property
                    - guests: GuestObject[]
                    - sizeA: number | undefined
                    - sizeB: number | undefined
                    - rule: CircleSeatingRule
                    - defaultCount: number

- RectSeatObject extends GuestSeatObject
    - property
        - patterns: RectSeatPattern[]
            - RectSeatPattern extends RenderObject
                - property
                    - guests: GuestObject[]
                    - sizeA: number | undefined
                    - sizeB: number | undefined
                    - rule: RectSeatingRule
                    - defaultCount: number

- CustomSeatObject extends GuestSeatObject
    - property
        - type: CustomSeatObjectType('circle' | 'rect')
        - circlePattern: CircleSeatPattern
        - rectPattern: RectSeatPattern

## ユーザー側の次席表設計

- SeatingDesignObject
    - property
        - isEditing: boolean
        - mainSeatObject: MainSeatObject
        - plusChildMainSeatObject: MainSeatObject
        - plusChildrenMainSeatObject: MainSeatObject
        - guestSeatObjects: GuestSeatObject[]
        - tableSizeFactor: number
        - tableName: string
        - tableArrangeType: enum
        - verticalSpacingFactor: number
        - horizontalSpacingFactor: number
        - showMainSeat: boolean
        - mainSeatType: enum
    - methods
        - rearrangeObjects(layoutType)
        - enterEditing
        - leaveEditing
        - setGuestObject(seatObjectId, index, guestObject)
            - params
                - seatObjectId: guestSeatObjectsのアイテムのID
                - index: GuestObjectSeatのobjects配列でのIndex
                - guestObject: 登録しているゲスト情報のオブジェクト
        - removeGuestObject(seatObjectId, index)
            - paramsは setGuestObjectのものと同じ

- DesignSeatBasicControlPanel

- DesignSeatLayoutControlPanel
    - property
    - methods
        - changeTableLayout
        - enterTableEditing
        - leaveTableEditing
        - addTable
        - changeTableName

- DesignSeatGuestControlPanel
    - property
        - guestObjects: GuestObject[]
            - 未設定のゲストオブジェクト
    - methods
        - addGuestObject()
        - removeGuestObject()

## サービスクラス設計TODOs
- TemplateBuilderService
    - property
        - currentMenu: Enum('main', 'base', 'text', 'image', 'icon', 'other', 'group');
        - viewControlService: TemplateViewControlService;
            - property
                - showFullScreen: Boolean;
                - zoomScale: Double;
                - showGrid: Boolean;
                - gridSize: Number;
        - objectsTreeService: ObjectTreeService;
            - property
                - objects: array(BaseObject);
                - tree: json(?);
        - mainService: MainPaneService;
            - property
                - id: String;
                - manageNumber: String;
                - componentName: String;
                - targetName: String;
                - classCode: Number;
                - typeCode: Number;
        - baseDesignService: BaseDesignPaneService;
            - property
                - background: String;
                - pageType: Number;
                - pageWidth: Number;
                - pageHeight: Number;
                - margin: Number;
                - bendingLines: array({direct: Enum('DirectX', 'DirectY'), position: Number})
        - textPaneService: TextPaneService;
            - property
                - type: Enum('HorizontalText', 'HorizontalTextArea', 'VerticalText', 'VerticalTextArea')
                - text: String;
                - autoSize: Boolean;
                - width: Number;
                - height: Number;
                - positionFixed: Boolean;
                - x: Number;
                - y: Number;
                - fontFamily: String;
                - fontSize: Number;
                - fontColor: String;
                - lineHeight: Number;
                - letterSpacing: Number;
                - textAlign: Number;
        - imagePaneService: ImagePaneService;
            - property
                - type: Enum('Ellipse', 'Rectangle');
                - placeholder: String;
                - width: Number;
                - height: Number;
                - positionFixed: Boolean;
                - x: Number;
                - y: Number;
                - showBorder: Boolean;
                - borderWidth: Number;
                - borderColor: String;
        - iconPaneService: IconPaneService;
            - property
                - iconId: Number;
                - width: Number;
                - height: Number;
                - positionFixed: Boolean;
                - x: Number;
                - y: Number;
                - opacity: Number;
        - otherPaneService: OtherPaneService;
            - property
                - type: Enum('Table', 'Line');
                - table: *TableBaseComponent*;
                    - property
                        - rows: Number;
                        - cols: Number;
                        - cellWidth: Number;
                        - cellHeight: Number;
                        - borderType: Enum('Standard', 'Double', 'Dashed', 'None');
                        - ~~セルを結合~~
                        - ~~セルを分割~~
                - line: *LineBaseComponent*;
                    - property
                        - 
                - x: Number;
                - y: Number;
        - groupPaneService: GroupPaneService
            - property
                - name: String;
                - objects: array(BaseObject);
        - componentPaneService: ComponentPaneService
            - property
                - name: String;
                - componentId: String;
                - positionFixed: Boolean;
                - x: Number;
                - y: Number;


## コンポーネント設計TODOs
- TextPositionComponent
    - ![](https://hackmd.io/_uploads/Bk0oxXs1a.png)

- TemplateBuilderComponent
    - property
        - templateBuilderServiceInstance;
    - children
        - TemplateBuilderMenuComponent
            - ![](https://hackmd.io/_uploads/rJrAxmo1a.png)
            - property
                - currentMenu
        - MainInfoControlPanel
            - ![](https://hackmd.io/_uploads/Hkn--Xo1p.png)
            - property
                - mainServiceInstance
        - BaseDesignControlPanel
            - ![](https://hackmd.io/_uploads/SksXbmiJa.png)
            - property
                - baseDesignServiceInstance
        - TextControlPanel
            - ![](https://hackmd.io/_uploads/BkXSWQj1p.png)
            - ![](https://hackmd.io/_uploads/S1lLbmoJp.png)

            - property
                - textPaneServiceInstance
            - children
                - TextPositionComponent
                - TextObjectCreateModal
                    - ![](https://hackmd.io/_uploads/H1ROZQskp.png)

        - ImageControlPanel
            - ![](https://hackmd.io/_uploads/HyX5ZQjJT.png)
            - ![](https://hackmd.io/_uploads/B1WjZ7s1p.png)

            - property
                - imagePaneServiceInstance
            - children
                - ImageObjectCreateModal
                    - ![](https://hackmd.io/_uploads/SyM2ZQika.png)

        - IconControlPanel
            - ![](https://hackmd.io/_uploads/BJt6Wmj1a.png)
            - ![](https://hackmd.io/_uploads/ry40bQsya.png)

            - property
                - iconPaneServiceInstance
            - children
                - IconObjectCreateModal
                    - ![](https://hackmd.io/_uploads/ryxkG7i1p.png)

        - OtherControlPanel
            - ![](https://hackmd.io/_uploads/HkXlGQskp.png)
            - ![](https://hackmd.io/_uploads/S1Aez7ika.png)

            - property
                - otherPaneServiceInstance
            - children
                - TableObjectCreateModal
                    - ![](https://hackmd.io/_uploads/SJnbG7oJT.png)
                - TableObjectEditModal
                    - ![](https://hackmd.io/_uploads/r1jmzmjyT.png)

                - TextPositionComponent
        - GroupControlPanel
            - ![](https://hackmd.io/_uploads/SJTaNQj1T.png)

            - property
                - groupPaneServiceInstance
        - ComponentControlPanel
            - ![](https://hackmd.io/_uploads/ry91rQoya.png)

            - property
                - componentPaneServiceInstance
            - children
                - ComponentSelectModal
                    - ![](https://hackmd.io/_uploads/HkreSXjkT.png)

        - TemplateRenderPanel
            - ![](https://hackmd.io/_uploads/ryxzr7skT.png)

            - property
                - objects
            - children
                - TemplateViewControl
                    - ![](https://hackmd.io/_uploads/S1lQSmjka.png)

                    - property
                        - viewControlService
                - ObjectsTreeView
                    - ![](https://hackmd.io/_uploads/Hy3mSQjJ6.png)

                    - property
                        - objectsTreeService

## レンダーオブジェクト設計TODOs
- RenderObject
    - id: number
    - x: number
    - y: number
    - width: number
    - height: number
    - priority: number

- BackgroundImageObject
    - image

- TextObject
    - dfa
- ImageObject
- IconObject
- LineObject
- TableObject
- GroupObject


