Lashtw commited on
Commit
9ff6a06
·
verified ·
1 Parent(s): dddcc42

Upload index.html

Browse files
Files changed (1) hide show
  1. index.html +265 -22
index.html CHANGED
@@ -1,6 +1,6 @@
1
  <!DOCTYPE html>
2
  <html lang="zh-TW">
3
- <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
6
  <title>Classroom Focus OS - 班級旗艦極光看板</title>
@@ -598,19 +598,139 @@
598
  }
599
  </style>
600
  </head>
601
- <body data-theme="dark-slate">
602
 
603
- <canvas id="aurora-canvas"></canvas>
604
 
605
  <div class="top-bar">
606
  <div class="live-clock-line">
607
- <div class="live-clock" id="liveClock">00:00:00</div>
608
  <div class="period-indicator" id="periodIndicator">課堂專注模式</div>
609
  </div>
610
- <div class="quote-capsule" id="dailyQuoteText">載入每日名言...</div>
611
  </div>
612
 
613
- <div id="canvas-workspace"></div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
614
 
615
  <!-- 編輯狀態控制列 -->
616
  <div class="edit-banner" id="editBanner">
@@ -623,20 +743,20 @@
623
  <!-- 齒輪解鎖按鈕 -->
624
  <div class="settings-trigger" onclick="openPinModal()" title="開啟看板設定">
625
  <svg width="26" height="26" fill="currentColor" viewBox="0 0 24 24">
626
- <path d="M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"/>
627
  </svg>
628
  </div>
629
 
630
  <!-- 螢幕數位按鍵鎖 -->
631
- <div class="modal-backdrop" id="pinModal">
632
  <div class="pin-modal-box">
633
  <h3>管理員驗證</h3>
634
  <p style="font-size:0.8rem; color:#94a3b8; margin-top:4px;">請點擊螢幕按鈕輸入 PIN 碼 (902)</p>
635
 
636
  <div class="pin-dots-display" id="pinDots">
637
- <div class="pin-dot"></div>
638
- <div class="pin-dot"></div>
639
- <div class="pin-dot"></div>
640
  </div>
641
 
642
  <div class="pin-keypad">
@@ -659,7 +779,7 @@
659
  </div>
660
 
661
  <!-- 後台側拉抽屜 -->
662
- <div class="admin-drawer" id="adminDrawer">
663
  <div class="drawer-header">
664
  <h3>看板與上下課作息設定</h3>
665
  <button class="btn btn-secondary" onclick="closeAdminDrawer()">關閉</button>
@@ -706,7 +826,75 @@
706
  <h4>倒數項目資料庫 (可複選多個高亮)</h4>
707
  <button class="btn btn-primary" onclick="addNewEvent()">+ 新增卡片</button>
708
  </div>
709
- <div id="editorItemList" style="display:flex; flex-direction:column; gap:10px;"></div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
710
  </div>
711
  </div>
712
 
@@ -839,14 +1027,68 @@
839
 
840
  /*START_DEFAULT_DATA*/
841
  const DEFAULT_DATA = {
842
- theme: "dark-slate",
843
- schedule: DEFAULT_SCHEDULE,
844
- cards: [
845
- { id: '1', title: "第一次定期評量", date: "2026-10-15", cat: "exam", highlight: false, x: 100, y: 150, w: 320, h: 260, totalSpan: 60 },
846
- { id: '2', title: "校慶運動大會", date: "2026-11-20", cat: "sports", highlight: false, x: 100, y: 440, w: 320, h: 260, totalSpan: 90 },
847
- { id: '3', title: "國中教育會考", date: "2027-05-15", cat: "exam", highlight: true, x: 460, y: 150, w: 420, h: 550, totalSpan: 300 }
848
- ]
849
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
850
  /*END_DEFAULT_DATA*/
851
 
852
  const STORAGE_KEY = "classroom_focus_master_data";
@@ -1449,5 +1691,6 @@
1449
 
1450
  renderBoard();
1451
  </script>
1452
- </body>
 
1453
  </html>
 
1
  <!DOCTYPE html>
2
  <html lang="zh-TW">
3
+ <html lang="zh-TW"><head><script>window.huggingface={variables:{"SPACE_CREATOR_USER_ID":"675d88eddd3e9eeed66ba88f"}};</script>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
6
  <title>Classroom Focus OS - 班級旗艦極光看板</title>
 
598
  }
599
  </style>
600
  </head>
601
+ <body data-theme="dark-slate" class="is-editing">
602
 
603
+ <canvas id="aurora-canvas" width="1536" height="680"></canvas>
604
 
605
  <div class="top-bar">
606
  <div class="live-clock-line">
607
+ <div class="live-clock" id="liveClock">08:58:48</div>
608
  <div class="period-indicator" id="periodIndicator">課堂專注模式</div>
609
  </div>
610
+ <div class="quote-capsule" id="dailyQuoteText">緊張是因為你在乎,把在乎換成多做一題。</div>
611
  </div>
612
 
613
+ <div id="canvas-workspace"><div class="board-card " id="card-1" data-cat="exam" style="left: 1069px; top: 109.6px; width: 448.8px; height: 281.8px;">
614
+ <div class="card-inner">
615
+ <div class="card-top">
616
+ <div class="card-header-line">
617
+ <div class="cat-icon"><svg fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"></path><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"></path></svg></div>
618
+ <div class="card-title">第一次定期評量</div>
619
+ </div>
620
+ <div class="card-target-date">2026.10.14</div>
621
+ </div>
622
+
623
+ <div class="card-center-metric">
624
+ <span class="metric-number" style="font-size: 7.012500762939453rem;">25</span>
625
+ <span class="metric-unit">天</span>
626
+ </div>
627
+
628
+ <div class="card-dynamic-body" style="display: none;">
629
+ <div class="progress-track">
630
+ <div class="progress-fill" style="width: 58%;"></div>
631
+ </div>
632
+ <div class="metric-details">
633
+ <span>備考準備期進度:58%</span>
634
+ <span>約合 <b>3.6</b> 週</span>
635
+ </div>
636
+ </div>
637
+
638
+ <div class="card-badge-wrap">
639
+ <div class="status-capsule">倒數 25 天</div>
640
+ </div>
641
+ </div>
642
+ <div class="resize-handle"></div>
643
+ </div><div class="board-card " id="card-2" data-cat="sports" style="left: 1066.6px; top: 402px; width: 457.8px; height: 256.6px;">
644
+ <div class="card-inner">
645
+ <div class="card-top">
646
+ <div class="card-header-line">
647
+ <div class="cat-icon"><svg fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="M6 9H4.5a2.5 2.5 0 0 1 0-5H6"></path><path d="M18 9h1.5a2.5 2.5 0 0 0 0-5H18"></path><path d="M4 22h16"></path><path d="M10 14.66V17c0 .55-.45 1-1 1H7v4h10v-4h-2c-.55 0-1-.45-1-1v-2.34c3.08-.63 5.4-3.3 5.4-6.66V4H4v4c0 3.36 2.32 6.03 5.4 6.66z"></path></svg></div>
648
+ <div class="card-title">校慶運動大會</div>
649
+ </div>
650
+ <div class="card-target-date">2026.11.14</div>
651
+ </div>
652
+
653
+ <div class="card-center-metric">
654
+ <span class="metric-number" style="font-size: 6.414999389648438rem;">56</span>
655
+ <span class="metric-unit">天</span>
656
+ </div>
657
+
658
+ <div class="card-dynamic-body" style="display: none;">
659
+ <div class="progress-track">
660
+ <div class="progress-fill" style="width: 38%;"></div>
661
+ </div>
662
+ <div class="metric-details">
663
+ <span>備考準備期進度:38%</span>
664
+ <span>約合 <b>8.0</b> 週</span>
665
+ </div>
666
+ </div>
667
+
668
+ <div class="card-badge-wrap">
669
+ <div class="status-capsule">倒數 56 天</div>
670
+ </div>
671
+ </div>
672
+ <div class="resize-handle"></div>
673
+ </div><div class="board-card highlight" id="card-3" data-cat="exam" style="left: 32px; top: 115px; width: 550.6px; height: 534px;">
674
+ <div class="card-inner">
675
+ <div class="card-top">
676
+ <div class="card-header-line">
677
+ <div class="cat-icon"><svg fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"></path><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"></path></svg></div>
678
+ <div class="card-title">國中教育會考</div>
679
+ </div>
680
+ <div class="card-target-date">2027.05.15</div>
681
+ </div>
682
+
683
+ <div class="card-center-metric">
684
+ <span class="metric-number" style="font-size: 7.5rem;">238</span>
685
+ <span class="metric-unit">天</span>
686
+ </div>
687
+
688
+ <div class="card-dynamic-body" style="display: flex;">
689
+ <div class="progress-track">
690
+ <div class="progress-fill" style="width: 21%;"></div>
691
+ </div>
692
+ <div class="metric-details">
693
+ <span>備考準備期進度:21%</span>
694
+ <span>約合 <b>34.0</b> 週</span>
695
+ </div>
696
+ </div>
697
+
698
+ <div class="card-badge-wrap">
699
+ <div class="status-capsule">倒數 238 天</div>
700
+ </div>
701
+ </div>
702
+ <div class="resize-handle"></div>
703
+ </div><div class="board-card highlight" id="card-1789777581106" data-cat="exam" style="left: 601.6px; top: 116.2px; width: 434.2px; height: 534px;">
704
+ <div class="card-inner">
705
+ <div class="card-top">
706
+ <div class="card-header-line">
707
+ <div class="cat-icon"><svg fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"></path><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"></path></svg></div>
708
+ <div class="card-title">全縣模擬考(1-4冊)</div>
709
+ </div>
710
+ <div class="card-target-date">2026.12.23</div>
711
+ </div>
712
+
713
+ <div class="card-center-metric">
714
+ <span class="metric-number" style="font-size: 6.784375190734863rem;">95</span>
715
+ <span class="metric-unit">天</span>
716
+ </div>
717
+
718
+ <div class="card-dynamic-body" style="display: flex;">
719
+ <div class="progress-track">
720
+ <div class="progress-fill" style="width: 5%;"></div>
721
+ </div>
722
+ <div class="metric-details">
723
+ <span>備考準備期進度:5%</span>
724
+ <span>約合 <b>13.6</b> 週</span>
725
+ </div>
726
+ </div>
727
+
728
+ <div class="card-badge-wrap">
729
+ <div class="status-capsule">倒數 95 天</div>
730
+ </div>
731
+ </div>
732
+ <div class="resize-handle"></div>
733
+ </div></div>
734
 
735
  <!-- 編輯狀態控制列 -->
736
  <div class="edit-banner" id="editBanner">
 
743
  <!-- 齒輪解鎖按鈕 -->
744
  <div class="settings-trigger" onclick="openPinModal()" title="開啟看板設定">
745
  <svg width="26" height="26" fill="currentColor" viewBox="0 0 24 24">
746
+ <path d="M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"></path>
747
  </svg>
748
  </div>
749
 
750
  <!-- 螢幕數位按鍵鎖 -->
751
+ <div class="modal-backdrop" id="pinModal" style="display: none;">
752
  <div class="pin-modal-box">
753
  <h3>管理員驗證</h3>
754
  <p style="font-size:0.8rem; color:#94a3b8; margin-top:4px;">請點擊螢幕按鈕輸入 PIN 碼 (902)</p>
755
 
756
  <div class="pin-dots-display" id="pinDots">
757
+ <div class="pin-dot filled"></div>
758
+ <div class="pin-dot filled"></div>
759
+ <div class="pin-dot filled"></div>
760
  </div>
761
 
762
  <div class="pin-keypad">
 
779
  </div>
780
 
781
  <!-- 後台側拉抽屜 -->
782
+ <div class="admin-drawer" id="adminDrawer" style="display: flex;">
783
  <div class="drawer-header">
784
  <h3>看板與上下課作息設定</h3>
785
  <button class="btn btn-secondary" onclick="closeAdminDrawer()">關閉</button>
 
826
  <h4>倒數項目資料庫 (可複選多個高亮)</h4>
827
  <button class="btn btn-primary" onclick="addNewEvent()">+ 新增卡片</button>
828
  </div>
829
+ <div id="editorItemList" style="display:flex; flex-direction:column; gap:10px;"><div class="item-row">
830
+ <div class="item-inputs">
831
+ <input type="text" value="第一次定期評量" placeholder="名稱" onchange="appState.cards[0].title=this.value">
832
+ <input type="date" value="2026-10-14" onchange="appState.cards[0].date=this.value">
833
+ </div>
834
+ <div style="display:flex; justify-content:space-between; align-items:center;">
835
+ <select onchange="appState.cards[0].cat=this.value; renderBoard();">
836
+ <option value="exam" selected="">學業考試 (書本)</option>
837
+ <option value="sports">運動競賽 (獎盃)</option>
838
+ <option value="event">校慶活動 (旗幟)</option>
839
+ <option value="life">常態生活 (時鐘)</option>
840
+ </select>
841
+ <label style="font-size:0.8rem; color:#cbd5e1; display:flex; align-items:center; gap:4px; cursor:pointer;">
842
+ <input type="checkbox" onchange="toggleCardHighlight(0, this.checked)"> 重要高亮
843
+ </label>
844
+ <button class="btn btn-danger" style="padding:4px 8px;" onclick="removeCard(0)">刪除</button>
845
+ </div>
846
+ </div><div class="item-row">
847
+ <div class="item-inputs">
848
+ <input type="text" value="校慶運動大會" placeholder="名稱" onchange="appState.cards[1].title=this.value">
849
+ <input type="date" value="2026-11-14" onchange="appState.cards[1].date=this.value">
850
+ </div>
851
+ <div style="display:flex; justify-content:space-between; align-items:center;">
852
+ <select onchange="appState.cards[1].cat=this.value; renderBoard();">
853
+ <option value="exam">學業考試 (書本)</option>
854
+ <option value="sports" selected="">運動競賽 (獎盃)</option>
855
+ <option value="event">校慶活動 (旗幟)</option>
856
+ <option value="life">常態生活 (時鐘)</option>
857
+ </select>
858
+ <label style="font-size:0.8rem; color:#cbd5e1; display:flex; align-items:center; gap:4px; cursor:pointer;">
859
+ <input type="checkbox" onchange="toggleCardHighlight(1, this.checked)"> 重要高亮
860
+ </label>
861
+ <button class="btn btn-danger" style="padding:4px 8px;" onclick="removeCard(1)">刪除</button>
862
+ </div>
863
+ </div><div class="item-row">
864
+ <div class="item-inputs">
865
+ <input type="text" value="國中教育會考" placeholder="名稱" onchange="appState.cards[2].title=this.value">
866
+ <input type="date" value="2027-05-15" onchange="appState.cards[2].date=this.value">
867
+ </div>
868
+ <div style="display:flex; justify-content:space-between; align-items:center;">
869
+ <select onchange="appState.cards[2].cat=this.value; renderBoard();">
870
+ <option value="exam" selected="">學業考試 (書本)</option>
871
+ <option value="sports">運動競賽 (獎盃)</option>
872
+ <option value="event">校慶活動 (旗幟)</option>
873
+ <option value="life">常態生活 (時鐘)</option>
874
+ </select>
875
+ <label style="font-size:0.8rem; color:#cbd5e1; display:flex; align-items:center; gap:4px; cursor:pointer;">
876
+ <input type="checkbox" checked="" onchange="toggleCardHighlight(2, this.checked)"> 重要高亮
877
+ </label>
878
+ <button class="btn btn-danger" style="padding:4px 8px;" onclick="removeCard(2)">刪除</button>
879
+ </div>
880
+ </div><div class="item-row">
881
+ <div class="item-inputs">
882
+ <input type="text" value="全縣模擬考(1-4冊)" placeholder="名稱" onchange="appState.cards[3].title=this.value">
883
+ <input type="date" value="2026-12-23" onchange="appState.cards[3].date=this.value">
884
+ </div>
885
+ <div style="display:flex; justify-content:space-between; align-items:center;">
886
+ <select onchange="appState.cards[3].cat=this.value; renderBoard();">
887
+ <option value="exam" selected="">學業考試 (書本)</option>
888
+ <option value="sports">運動競賽 (獎盃)</option>
889
+ <option value="event">校慶活動 (旗幟)</option>
890
+ <option value="life">常態生活 (時鐘)</option>
891
+ </select>
892
+ <label style="font-size:0.8rem; color:#cbd5e1; display:flex; align-items:center; gap:4px; cursor:pointer;">
893
+ <input type="checkbox" checked="" onchange="toggleCardHighlight(3, this.checked)"> 重要高亮
894
+ </label>
895
+ <button class="btn btn-danger" style="padding:4px 8px;" onclick="removeCard(3)">刪除</button>
896
+ </div>
897
+ </div></div>
898
  </div>
899
  </div>
900
 
 
1027
 
1028
  /*START_DEFAULT_DATA*/
1029
  const DEFAULT_DATA = {
1030
+ "theme": "dark-slate",
1031
+ "schedule": [
1032
+ "08:15-09:00",
1033
+ "09:10-09:55",
1034
+ "10:10-10:55",
1035
+ "11:05-11:50",
1036
+ "13:10-13:55",
1037
+ "14:05-14:50",
1038
+ "15:05-15:50",
1039
+ "16:00-16:45"
1040
+ ],
1041
+ "cards": [
1042
+ {
1043
+ "id": "1",
1044
+ "title": "第一次定期評量",
1045
+ "date": "2026-10-14",
1046
+ "cat": "exam",
1047
+ "highlight": false,
1048
+ "x": 1069,
1049
+ "y": 109.5999984741211,
1050
+ "w": 448.800048828125,
1051
+ "h": 281.800048828125,
1052
+ "totalSpan": 60
1053
+ },
1054
+ {
1055
+ "id": "2",
1056
+ "title": "校慶運動大會",
1057
+ "date": "2026-11-14",
1058
+ "cat": "sports",
1059
+ "highlight": false,
1060
+ "x": 1066.60009765625,
1061
+ "y": 402,
1062
+ "w": 457.7999267578125,
1063
+ "h": 256.5999755859375,
1064
+ "totalSpan": 90
1065
+ },
1066
+ {
1067
+ "id": "3",
1068
+ "title": "國中教育會考",
1069
+ "date": "2027-05-15",
1070
+ "cat": "exam",
1071
+ "highlight": true,
1072
+ "x": 32,
1073
+ "y": 115,
1074
+ "w": 550.5999755859375,
1075
+ "h": 534,
1076
+ "totalSpan": 300
1077
+ },
1078
+ {
1079
+ "id": "1789777581106",
1080
+ "title": "全縣模擬考(1-4冊)",
1081
+ "date": "2026-12-23",
1082
+ "cat": "exam",
1083
+ "highlight": true,
1084
+ "x": 601.6000366210938,
1085
+ "y": 116.19998168945312,
1086
+ "w": 434.20001220703125,
1087
+ "h": 534,
1088
+ "totalSpan": 100
1089
+ }
1090
+ ]
1091
+ };
1092
  /*END_DEFAULT_DATA*/
1093
 
1094
  const STORAGE_KEY = "classroom_focus_master_data";
 
1691
 
1692
  renderBoard();
1693
  </script>
1694
+
1695
+ </body></html>
1696
  </html>