374 lines
24 KiB
PHP
374 lines
24 KiB
PHP
<?php
|
|
require_once __DIR__ . '/../../bbs/auth.php';
|
|
edu_require_login();
|
|
|
|
include_once '../../bbs/db_conn.php';
|
|
include_once 'header.php';
|
|
|
|
$pdo = db_conn();
|
|
|
|
// 분기 선택 데이터
|
|
$stmt_quarters = $pdo->query("SELECT base_code AS code, code_name FROM edu_codes WHERE group_code = 'CA200' AND DESC01 = 'CA10001' ORDER BY base_code ASC");
|
|
$quarters = $stmt_quarters->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
// 현재 연도 및 디폴트 분기 설정
|
|
$current_year = date('Y');
|
|
$current_quarter = ceil(date('n') / 3);
|
|
|
|
// 법정의무교육 기간 (하드코딩된 예시 텍스트 대체용, 필요시 DB 조회)
|
|
$legal_edu_period = '2026.04.13 ~ 2026.12.31';
|
|
?>
|
|
|
|
<main class="max-w-[1600px] mx-auto p-6 bg-gray-50/50 min-h-screen font-sans">
|
|
<header class="flex flex-col md:flex-row justify-between items-end md:items-center mb-6 gap-4">
|
|
<div>
|
|
<h2 class="text-2xl font-bold text-gray-800 flex items-center">
|
|
전체 학습현황
|
|
</h2>
|
|
<p class="text-sm text-gray-400 mt-1">법정의무교육 기간: <?php echo htmlspecialchars($legal_edu_period); ?></p>
|
|
</div>
|
|
|
|
<div class="flex items-center space-x-3">
|
|
<div class="text-sm font-bold text-gray-600 mr-2">이번 분기 핵심 지표</div>
|
|
<div class="flex bg-white border border-gray-200 p-1 rounded-md shadow-sm">
|
|
<button id="btn_year_prev" class="px-3 py-1.5 text-sm rounded transition text-gray-500 hover:bg-gray-50"
|
|
onclick="dashboard.changeYear(<?php echo $current_year - 1; ?>)"><?php echo $current_year - 1; ?>년</button>
|
|
<button id="btn_year_curr" class="px-3 py-1.5 text-sm rounded transition bg-[#114b3d] text-white shadow-sm font-bold"
|
|
onclick="dashboard.changeYear(<?php echo $current_year; ?>)"><?php echo $current_year; ?>년</button>
|
|
</div>
|
|
|
|
<select id="select_quarter" class="bg-white border border-gray-200 text-gray-700 text-sm rounded-md px-4 py-2 font-medium shadow-sm outline-none focus:ring-2 focus:ring-[#114b3d]/50" onchange="dashboard.changeQuarter(this.value)">
|
|
<?php foreach ($quarters as $q): ?>
|
|
<option value="<?php echo htmlspecialchars($q['code']); ?>" <?php echo substr($q['code'], -1) == $current_quarter ? 'selected' : ''; ?>>
|
|
<?php echo htmlspecialchars($q['code_name']); ?>
|
|
</option>
|
|
<?php endforeach; ?>
|
|
<?php if(empty($quarters)): ?>
|
|
<option value="1">1분기 (1~3월)</option>
|
|
<option value="2" selected>2분기 (4~6월)</option>
|
|
<option value="3">3분기 (7~9월)</option>
|
|
<option value="4">4분기 (10~12월)</option>
|
|
<?php endif; ?>
|
|
</select>
|
|
</div>
|
|
</header>
|
|
|
|
<!-- KPI 섹션 -->
|
|
<section class="grid grid-cols-1 md:grid-cols-4 gap-4 mb-6">
|
|
<!-- 전체 접속률 -->
|
|
<div class="bg-[#114b3d] text-white p-5 rounded-xl shadow-md relative overflow-hidden flex flex-col justify-between">
|
|
<h3 class="text-sm font-bold opacity-90 mb-4">전체 접속률</h3>
|
|
|
|
<div class="flex justify-between mb-6">
|
|
<!-- 이번 분기 -->
|
|
<div class="flex-1 pr-4">
|
|
<div class="text-[11px] opacity-70 mb-1">이번 분기</div>
|
|
<div class="text-3xl font-extrabold flex items-baseline gap-1 mb-1" id="kpi_access_rate_current">
|
|
0<span class="text-lg font-bold">%</span>
|
|
</div>
|
|
<div class="text-[10px] opacity-70" id="kpi_access_desc_current">-명 중 -명 접속</div>
|
|
</div>
|
|
<!-- 전분기 -->
|
|
<div class="flex-1 pl-4 border-l border-white/20">
|
|
<div class="text-[11px] opacity-70 mb-1">전분기</div>
|
|
<div class="text-2xl font-bold flex items-baseline gap-1 mb-1 opacity-80" id="kpi_access_rate_prev">
|
|
0<span class="text-sm font-bold">%</span>
|
|
</div>
|
|
<div class="text-[10px] opacity-70" id="kpi_access_desc_prev">-명 중 -명 접속</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 하단 게이지 -->
|
|
<div class="space-y-3">
|
|
<div class="flex items-center gap-2">
|
|
<span class="text-[10px] opacity-70 w-8">전분기</span>
|
|
<div class="flex-1 bg-white/10 rounded-full h-1.5">
|
|
<div class="bg-gray-400 h-1.5 rounded-full transition-all duration-1000" id="kpi_access_bar_prev" style="width: 0%"></div>
|
|
</div>
|
|
</div>
|
|
<div class="flex items-center gap-2">
|
|
<span class="text-[10px] opacity-70 w-8">현재</span>
|
|
<div class="flex-1 bg-white/10 rounded-full h-1.5">
|
|
<div class="bg-[#4ade80] h-1.5 rounded-full transition-all duration-1000" id="kpi_access_bar_current" style="width: 0%"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 법정의무교육 이수율 -->
|
|
<div class="bg-white border border-gray-200 p-5 rounded-xl shadow-sm flex flex-col justify-between">
|
|
<h3 class="text-sm font-bold text-gray-700 mb-2">법정의무교육 이수율</h3>
|
|
<div class="flex justify-between items-center mb-1">
|
|
<div class="text-xs font-bold text-[#eab308]" id="kpi_legal_uncompleted">미이수 -명 잔여</div>
|
|
</div>
|
|
<div class="text-3xl font-extrabold text-[#16a34a] flex items-baseline gap-1 mb-2" id="kpi_legal_rate">
|
|
0<span class="text-lg">%</span>
|
|
</div>
|
|
<div class="text-xs text-gray-500" id="kpi_legal_desc">이수 -명 / 전체 -명</div>
|
|
<div class="w-full bg-gray-100 rounded-full h-1.5 mt-2">
|
|
<div class="bg-[#16a34a] h-1.5 rounded-full transition-all duration-1000" id="kpi_legal_bar" style="width: 0%"></div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 마이클래스 -->
|
|
<div class="bg-white border border-gray-200 p-5 rounded-xl shadow-sm flex flex-col justify-between">
|
|
<h3 class="text-sm font-bold text-gray-700 mb-4">마이클래스</h3>
|
|
<div class="flex justify-between items-end mb-4">
|
|
<div>
|
|
<div class="text-[10px] text-gray-400 mb-1">목표 설정률</div>
|
|
<div class="text-2xl font-bold text-blue-600 flex items-baseline gap-1" id="kpi_myclass_target_rate">
|
|
0<span class="text-sm">%</span>
|
|
</div>
|
|
<div class="text-[11px] text-gray-500 mt-1" id="kpi_myclass_target_desc">설정 -명</div>
|
|
</div>
|
|
<div>
|
|
<div class="text-[10px] text-gray-400 mb-1">목표 달성률</div>
|
|
<div class="text-xl font-bold text-[#eab308] flex items-baseline gap-1" id="kpi_myclass_achieve_rate">
|
|
0<span class="text-sm">%</span>
|
|
</div>
|
|
<div class="text-[11px] text-gray-500 mt-1" id="kpi_myclass_achieve_desc">달성 -명</div>
|
|
</div>
|
|
</div>
|
|
<button class="w-full py-2 border border-gray-200 rounded text-xs font-bold text-gray-600 hover:bg-gray-50 transition flex justify-center items-center gap-1 mb-3" onclick="myclassModal.open()">
|
|
상세보기 <i class="fa-solid fa-arrow-right text-[10px]"></i>
|
|
</button>
|
|
<div class="w-full bg-gray-100 rounded-full h-1.5">
|
|
<div class="bg-[#eab308] h-1.5 rounded-full transition-all duration-1000" id="kpi_myclass_bar" style="width: 0%"></div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 접속자 1인당 완주 콘텐츠 -->
|
|
<div class="bg-white border border-gray-200 p-5 rounded-xl shadow-sm flex flex-col justify-between relative overflow-hidden">
|
|
<h3 class="text-sm font-bold text-gray-700 mb-2">접속자 1인당 완주 콘텐츠</h3>
|
|
<div class="text-xs font-bold text-[#16a34a] mb-1 flex items-center gap-1" id="kpi_content_diff">
|
|
<i class="fa-solid fa-caret-up"></i> 전분기 대비 +-편
|
|
</div>
|
|
<div class="text-3xl font-extrabold text-gray-800 flex items-baseline gap-1 mb-2" id="kpi_content_per_user">
|
|
0<span class="text-lg">편</span>
|
|
</div>
|
|
<div class="text-xs text-gray-500" id="kpi_content_desc">접속자 -명 기준<br>총 완수 -회</div>
|
|
<div class="w-full bg-gray-100 rounded-full h-1.5 mt-2 relative z-10">
|
|
<div class="bg-[#f97316] h-1.5 rounded-full transition-all duration-1000" id="kpi_content_bar" style="width: 0%"></div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- 접속 현황 상세 섹션 -->
|
|
<div class="text-xs text-gray-400 mb-2 font-medium">접속 현황 상세</div>
|
|
<section class="grid grid-cols-1 lg:grid-cols-2 gap-4 mb-6">
|
|
|
|
<!-- 법인별 접속률 -->
|
|
<div class="bg-white border border-gray-200 rounded-xl shadow-sm overflow-hidden flex flex-col h-[320px]">
|
|
<div class="px-5 py-4 flex justify-between items-center border-b border-gray-100">
|
|
<h3 class="font-bold text-gray-800 text-sm">법인별 접속률</h3>
|
|
<div class="text-[11px] text-gray-500 flex items-center gap-2 bg-gray-50 px-2 py-1 rounded">
|
|
기간 <i class="fa-regular fa-calendar"></i> <span id="txt_period_start">-</span> ~ <i class="fa-regular fa-calendar"></i> <span id="txt_period_end">-</span>
|
|
</div>
|
|
</div>
|
|
<div class="overflow-y-auto flex-1 p-0">
|
|
<table class="w-full text-xs text-left">
|
|
<thead class="bg-gray-50 text-gray-500 sticky top-0 z-10">
|
|
<tr>
|
|
<th class="py-3 px-5 font-medium">법인</th>
|
|
<th class="py-3 px-2 font-medium text-center">전분기 대비</th>
|
|
<th class="py-3 px-2 font-medium text-center">전체</th>
|
|
<th class="py-3 px-2 font-medium text-center">접속인원</th>
|
|
<th class="py-3 px-2 font-medium text-center">접속률</th>
|
|
<th class="py-3 px-5 font-medium text-right">미접속</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="tbody_corp_access" class="divide-y divide-gray-50">
|
|
<!-- JS 렌더링 -->
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 스택 바 차트 그룹 -->
|
|
<div class="bg-white border border-gray-200 rounded-xl shadow-sm p-6 flex flex-col justify-between h-[320px]">
|
|
|
|
<!-- 학습자 접속 빈도 -->
|
|
<div>
|
|
<h3 class="font-bold text-gray-800 text-sm mb-3">학습자 접속 빈도</h3>
|
|
<div class="flex w-full h-8 rounded-md overflow-hidden mb-2" id="bar_access_freq">
|
|
<div class="bg-[#114b3d] h-full flex items-center justify-center text-white font-bold text-xs transition-all duration-1000" style="width: 0%"></div>
|
|
<div class="bg-[#22c55e] h-full flex items-center justify-center text-white font-bold text-xs transition-all duration-1000" style="width: 0%"></div>
|
|
<div class="bg-[#f97316] h-full flex items-center justify-center text-white font-bold text-xs transition-all duration-1000" style="width: 0%"></div>
|
|
<div class="bg-gray-200 h-full flex items-center justify-center text-gray-500 font-bold text-xs transition-all duration-1000" style="width: 0%"></div>
|
|
</div>
|
|
<div class="flex text-[10px] text-gray-500 gap-4">
|
|
<div class="flex items-center gap-1"><span class="w-2 h-2 rounded-sm bg-[#114b3d]"></span> 적극적 12회↑</div>
|
|
<div class="flex items-center gap-1"><span class="w-2 h-2 rounded-sm bg-[#22c55e]"></span> 보통 5~11회</div>
|
|
<div class="flex items-center gap-1"><span class="w-2 h-2 rounded-sm bg-[#f97316]"></span> 저 1~4회</div>
|
|
<div class="flex items-center gap-1"><span class="w-2 h-2 rounded-sm bg-gray-200"></span> 미사용</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 접속 시간대 -->
|
|
<div>
|
|
<h3 class="font-bold text-gray-800 text-sm mb-3">접속 시간대</h3>
|
|
<div class="flex w-full h-8 rounded-md overflow-hidden mb-2" id="bar_access_time">
|
|
<div class="bg-[#114b3d] h-full flex items-center justify-center text-white font-bold text-xs transition-all duration-1000" style="width: 0%"></div>
|
|
<div class="bg-[#22c55e] h-full flex items-center justify-center text-white font-bold text-xs transition-all duration-1000" style="width: 0%"></div>
|
|
<div class="bg-gray-200 h-full flex items-center justify-center text-gray-500 font-bold text-xs transition-all duration-1000" style="width: 0%"></div>
|
|
</div>
|
|
<div class="flex text-[10px] text-gray-500 gap-4">
|
|
<div class="flex items-center gap-1"><span class="w-2 h-2 rounded-sm bg-[#114b3d]"></span> 업무시간 09:00~17:00</div>
|
|
<div class="flex items-center gap-1"><span class="w-2 h-2 rounded-sm bg-[#22c55e]"></span> 점심시간 11:30~13:30</div>
|
|
<div class="flex items-center gap-1"><span class="w-2 h-2 rounded-sm bg-gray-200"></span> 업무외시간 9시 이전·17시 이후</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 접속 방법 -->
|
|
<div>
|
|
<h3 class="font-bold text-gray-800 text-sm mb-3">접속 방법</h3>
|
|
<div class="flex w-full h-8 rounded-md overflow-hidden mb-2" id="bar_access_device">
|
|
<div class="bg-[#114b3d] border-r border-white/20 h-full flex items-center justify-center text-white font-bold text-xs transition-all duration-1000" style="width: 0%"></div>
|
|
<div class="bg-[#22c55e] h-full flex items-center justify-center text-white font-bold text-xs transition-all duration-1000" style="width: 0%"></div>
|
|
</div>
|
|
<div class="flex text-[10px] text-gray-500 gap-4">
|
|
<div class="flex items-center gap-1"><span class="w-2 h-2 rounded-sm bg-[#114b3d]"></span> PC</div>
|
|
<div class="flex items-center gap-1"><span class="w-2 h-2 rounded-sm bg-[#22c55e]"></span> 모바일</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</section>
|
|
|
|
<!-- 콘텐츠 이용 현황 섹션 -->
|
|
<div class="text-xs text-gray-400 mb-2 font-medium">콘텐츠 이용 현황</div>
|
|
<section class="grid grid-cols-1 lg:grid-cols-3 gap-4 pb-10">
|
|
|
|
<!-- 카테고리별 이용 현황 -->
|
|
<div class="lg:col-span-1 bg-white border border-gray-200 rounded-xl shadow-sm p-5">
|
|
<h3 class="font-bold text-gray-800 text-sm mb-5">카테고리별 이용 현황</h3>
|
|
<div class="space-y-6" id="list_content_usage">
|
|
<!-- JS 렌더링 -->
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 가장 많이 본 콘텐츠 -->
|
|
<div class="lg:col-span-2 bg-white border border-gray-200 rounded-xl shadow-sm overflow-hidden flex flex-col">
|
|
<div class="px-5 py-4 flex justify-between items-center border-b border-gray-100">
|
|
<h3 class="font-bold text-gray-800 text-sm">가장 많이 본 콘텐츠</h3>
|
|
<div class="flex gap-2" id="tab_popular_categories">
|
|
<button class="px-3 py-1 text-[11px] font-bold rounded-full border border-gray-200 bg-[#114b3d] text-white" data-category="ALL">전체</button>
|
|
<button class="px-3 py-1 text-[11px] font-bold rounded-full border border-gray-200 text-gray-500 hover:bg-gray-50" data-category="CA10001">마이클래스</button>
|
|
<button class="px-3 py-1 text-[11px] font-bold rounded-full border border-gray-200 text-gray-500 hover:bg-gray-50" data-category="CA10005">인사이트</button>
|
|
<button class="px-3 py-1 text-[11px] font-bold rounded-full border border-gray-200 text-gray-500 hover:bg-gray-50" data-category="CA10004">리더십</button>
|
|
<button class="px-3 py-1 text-[11px] font-bold rounded-full border border-gray-200 text-gray-500 hover:bg-gray-50" data-category="CA10006">비즈트렌드</button>
|
|
</div>
|
|
</div>
|
|
<div class="overflow-y-auto flex-1 p-0 max-h-[295px]">
|
|
<table class="w-full text-[11px] text-left">
|
|
<thead class="bg-gray-50 text-gray-500 sticky top-0 z-10">
|
|
<tr>
|
|
<th class="py-3 px-5 font-medium text-center w-20">순위</th>
|
|
<th class="py-3 px-2 font-medium">영상명</th>
|
|
<th class="py-3 px-2 font-medium text-center w-24">카테고리</th>
|
|
<th class="py-3 px-2 font-medium text-center w-24">시청수</th>
|
|
<th class="py-3 px-2 font-medium text-center w-24">완주율</th>
|
|
<th class="py-3 px-5 font-medium text-center w-24">댓글수</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="tbody_popular_contents" class="divide-y divide-gray-50">
|
|
<!-- JS 렌더링 -->
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div class="px-5 py-2 bg-gray-50 border-t border-gray-100 text-[10px] text-gray-400">
|
|
정렬기준 : 시청수
|
|
</div>
|
|
</div>
|
|
|
|
</section>
|
|
|
|
<!-- 마이클래스 모달 -->
|
|
<div id="modal_myclass" class="fixed inset-0 z-50 hidden">
|
|
<!-- 배경 -->
|
|
<div class="absolute inset-0 bg-black/40 backdrop-blur-sm" onclick="myclassModal.close()"></div>
|
|
<!-- 모달 컨텐츠 -->
|
|
<div class="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[90%] max-w-4xl bg-white rounded-xl shadow-2xl flex flex-col max-h-[90vh]">
|
|
|
|
<!-- 헤더 -->
|
|
<div class="flex justify-between items-start p-6 border-b border-gray-100">
|
|
<div>
|
|
<h2 class="text-xl font-extrabold text-gray-800">마이클래스 현황</h2>
|
|
<p class="text-sm text-gray-500 mt-1">이번 분기 마이클래스 목표 선택 및 달성 현황을 확인할 수 있습니다.</p>
|
|
</div>
|
|
<div class="flex items-center gap-2">
|
|
<!-- 분기 선택 -->
|
|
<select id="modal_myclass_quarter" class="bg-white border border-gray-200 text-gray-700 text-sm rounded px-3 py-1.5 focus:ring-1 focus:ring-blue-500" onchange="myclassModal.fetchData(this.value)">
|
|
<?php foreach ($quarters as $q): ?>
|
|
<option value="<?php echo htmlspecialchars($q['code']); ?>" <?php echo substr($q['code'], -1) == $current_quarter ? 'selected' : ''; ?>>
|
|
<?php echo htmlspecialchars($q['code_name']); ?>
|
|
</option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
<button class="p-1.5 rounded border border-gray-200 text-gray-500 hover:bg-gray-50" onclick="myclassModal.fetchData()">
|
|
<i class="fa-solid fa-rotate-right"></i>
|
|
</button>
|
|
<button class="p-1.5 rounded border border-gray-200 text-gray-500 hover:bg-gray-50" onclick="myclassModal.close()">
|
|
<i class="fa-solid fa-xmark"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- KPI 영역 -->
|
|
<div class="grid grid-cols-3 divide-x divide-gray-100 border-b border-gray-100">
|
|
<div class="p-6">
|
|
<div class="text-xs font-bold text-gray-500 mb-2 flex items-center gap-1.5">
|
|
<span class="bg-blue-100 text-blue-600 rounded-full w-5 h-5 flex items-center justify-center text-[10px]"><i class="fa-solid fa-bullseye"></i></span> 목표 선택률
|
|
</div>
|
|
<div class="text-3xl font-extrabold text-blue-600 mb-1" id="modal_mc_target_rate">0<span class="text-lg">%</span></div>
|
|
<div class="text-[11px] text-gray-400" id="modal_mc_target_desc">선택자 0명 / 전체 0명</div>
|
|
</div>
|
|
<div class="p-6">
|
|
<div class="text-xs font-bold text-gray-500 mb-2 flex items-center gap-1.5">
|
|
<span class="bg-green-100 text-green-600 rounded-full w-5 h-5 flex items-center justify-center text-[10px]"><i class="fa-solid fa-trophy"></i></span> 목표 달성률
|
|
</div>
|
|
<div class="text-3xl font-extrabold text-[#4ade80] mb-1" id="modal_mc_achieve_rate">0<span class="text-lg">%</span></div>
|
|
<div class="text-[11px] text-gray-400" id="modal_mc_achieve_desc">달성자 0명 / 선택자 0명</div>
|
|
</div>
|
|
<div class="p-6">
|
|
<div class="text-xs font-bold text-gray-500 mb-2 flex items-center gap-1.5">
|
|
<span class="bg-gray-100 text-gray-800 rounded-full w-5 h-5 flex items-center justify-center text-[10px]"><i class="fa-solid fa-user-minus"></i></span> 미선택자 수
|
|
</div>
|
|
<div class="text-3xl font-extrabold text-[#f97316] mb-1" id="modal_mc_unselect_qty">0<span class="text-lg">명</span></div>
|
|
<div class="text-[11px] text-gray-400" id="modal_mc_unselect_desc">전체 학습자의 0%</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 탭 영역 -->
|
|
<div class="px-6 flex gap-6 border-b border-gray-100">
|
|
<button class="py-3 text-sm font-bold border-b-2 border-blue-600 text-blue-600 transition" id="tab_btn_goals" onclick="myclassModal.switchTab('goals')">목표별 선택률</button>
|
|
<button class="py-3 text-sm font-bold border-b-2 border-transparent text-gray-400 hover:text-gray-600" id="tab_btn_comps" onclick="myclassModal.switchTab('comps')">법인별 비교</button>
|
|
</div>
|
|
|
|
<!-- 리스트 컨텐츠 -->
|
|
<div class="overflow-y-auto flex-1 p-6 relative min-h-[300px]">
|
|
<div class="absolute right-6 top-2 text-[10px] text-gray-400">(단위: %)</div>
|
|
<table class="w-full text-sm mt-4">
|
|
<thead class="bg-gray-50 text-gray-500 text-xs hidden" id="modal_table_thead">
|
|
<tr>
|
|
<th class="py-2 px-4 text-left w-1/3" id="modal_table_th1">목표</th>
|
|
<th class="py-2 px-4 text-right text-[10px] font-normal w-2/3" id="modal_table_th2">목표 선택률</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="modal_list_tbody" class="divide-y divide-gray-50">
|
|
<tr><td class="text-center py-10 text-gray-400">데이터를 불러오는 중입니다...</td></tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<!-- 하단 닫기 -->
|
|
<div class="p-4 border-t border-gray-100 flex justify-end">
|
|
<button class="px-4 py-2 bg-white border border-gray-200 text-sm font-bold text-gray-600 rounded hover:bg-gray-50 transition" onclick="myclassModal.close()">닫기</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</main>
|
|
|
|
<script src="../js/dashboard.js?v=<?php echo time(); ?>"></script>
|