타임라인 이름 '비디오2'인 경우도 정답처리

This commit is contained in:
2025-04-01 14:41:14 +09:00
parent b842db795d
commit 493aca1ed1
7 changed files with 40 additions and 28 deletions

View File

@@ -15,7 +15,6 @@ const todayDate = getToday();
// const scoringJson = require('./DIC_2503A.json');
// const scoringJson = require('./DIC_2503B.json');
const scoringJson = require('./DIC_2503C.json');
const { get } = require('http');
// const scoringJson = require('./DIC_2503D.json');
// TEST
@@ -127,6 +126,8 @@ const flattenedData = scoringResultList.map(student => {
// excel에 표시하지 않을 key값들
const exceptKeys = [
"0", // 학생 이름 항상 제외
"1", // psd1
"2", // psd2
]
const exceptSubkeys = [
"videoStartTime",
@@ -151,6 +152,17 @@ const flattenedData = scoringResultList.map(student => {
const worksheet = XLSX.utils.json_to_sheet(flattenedData);
const workbook = XLSX.utils.book_new();
// 열 너비 계산
const columnWidths = Object.keys(flattenedData[0]).map(key => {
const maxLength = Math.max(
key.length, // 열 제목의 길이
...flattenedData.map(row => (row[key] ? row[key].toString().length : 0)) // 각 셀의 데이터 길이
);
return { wch: maxLength + 1 }; // 여유 공간 추가
});
// 열 너비 설정
worksheet['!cols'] = columnWidths;
// Add the worksheet to the workbook
XLSX.utils.book_append_sheet(workbook, worksheet, '채점 결과');
@@ -171,8 +183,8 @@ function getTrackClipNode(xmlDoc, type, videoStartTime, openingStartTime) {
const startTime = type === 'video' ? videoStartTime : openingStartTime;
// xpath 구문을 통해 CRTrackClip 요소의 ClipIndex를 찾음
const trackClipNode1 = xpath.select1(`//CRTrackList[@Name="텍스트"]/CRTrackClip[not(@ClipIndex='-1')][${subtitleOrder}]`, xmlDoc);
const trackClipNode2 = xpath.select1(`//CRTrackList[@Name='텍스트']/CRTrackClip[sum(preceding-sibling::CRTrackClip/@Length) = ${startTime}]`, xmlDoc);
const trackClipNode1 = xpath.select1(`//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[not(@ClipIndex='-1')][${subtitleOrder}]`, xmlDoc);
const trackClipNode2 = xpath.select1(`//CRTrackList[@Name='텍스트' or @Name='비디오2']/CRTrackClip[sum(preceding-sibling::CRTrackClip/@Length) = ${startTime}]`, xmlDoc);
return trackClipNode = trackClipNode1 ?? trackClipNode2;
}