62ab883d24
- 막대 몸통 드래그로 일정 통째 이동, 양 끝 드래그로 시작/마감일만 조절
(vis-timeline editable.updateTime + onMove, PUT /api/tasks/{id} 로 저장,
실패 시 vis 표시만 원래 자리로 롤백 — 전체 재렌더 없이).
- 단일 클릭은 선택만(끝 손잡이가 나타나게) 하도록 바꾸고, 편집 열기는
더블클릭 또는 우클릭 메뉴의 "열기"로 옮김 — 기존엔 클릭 한 번에 모달이
떠서 손잡이가 나타나자마자 가려져 드래그를 할 수 없던 문제.
- 마우스 오버 시 그 업무의 날짜 구간을 전체 높이 배경 밴드로 강조(아사나
타임라인에서 막대에 올리면 헤더 날짜가 진해지는 것과 같은 목적).
- 막대를 둥근 알약형으로, 호버 시 살짝 뜨는 그림자 추가. "오늘" 버튼으로
현재 날짜로 바로 이동.
- 실제 드래그(핸들 좌표 기준)로 헤드리스 크롬에서 검증 — 기간 연장/이동
둘 다 서버에 정확히 저장되는 것까지 확인.
50 lines
1.7 KiB
HTML
50 lines
1.7 KiB
HTML
{% extends "erp_base.html" %}
|
|
|
|
{% block head_extra %}
|
|
<link rel="stylesheet" href="/static/project.css?v=20260917i" />
|
|
<link rel="stylesheet" href="/static/vendor/material-symbols/material-symbols.css" />
|
|
{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="pj-wrap">
|
|
<div class="pj-section-head">
|
|
<h2>알림센터</h2>
|
|
<div style="display:flex; gap:8px;">
|
|
<a class="pj-btn" href="/project/">← 프로젝트</a>
|
|
<button type="button" class="pj-btn pj-btn-primary" id="pj-readall">모두 읽음</button>
|
|
</div>
|
|
</div>
|
|
|
|
{% if not notifications %}
|
|
<div class="pj-empty">알림이 없습니다.</div>
|
|
{% else %}
|
|
<ul class="pj-inbox" id="pj-inbox">
|
|
{% for n in notifications %}
|
|
<li class="pj-inbox-item {% if not n.is_read %}is-unread{% endif %}"
|
|
data-id="{{ n.id }}"
|
|
{% if n.task_id %}data-project="{{ n.project_id }}"{% endif %}>
|
|
<span class="material-symbols-outlined pj-inbox-icon">
|
|
{% if n.type == 'assigned' %}assignment_ind
|
|
{% elif n.type == 'completed' %}task_alt
|
|
{% elif n.type == 'comment' %}chat_bubble
|
|
{% else %}notifications{% endif %}
|
|
</span>
|
|
<div class="pj-inbox-body">
|
|
<div class="pj-inbox-title">{{ n.title }}</div>
|
|
{% if n.body %}<div class="pj-inbox-sub">{{ n.body }}</div>{% endif %}
|
|
<div class="pj-inbox-meta">
|
|
{% if n.actor_email %}{{ n.actor_email.split('@')[0] }} · {% endif %}{{ n.created_at[:16].replace('T',' ') }}
|
|
</div>
|
|
</div>
|
|
{% if n.project_id %}
|
|
<a class="pj-btn pj-inbox-go" href="/project/p/{{ n.project_id }}">이동</a>
|
|
{% endif %}
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
{% endif %}
|
|
</div>
|
|
|
|
<script src="/static/project.js?v=20260917n" defer></script>
|
|
{% endblock %}
|