diff --git a/popup.js b/popup.js
index 5de4e9e..c601f31 100644
--- a/popup.js
+++ b/popup.js
@@ -19,13 +19,21 @@ $('#masterToggle').addEventListener('change', async (e) => {
});
// ---- PDF settings: truncate long course descriptions (default ON) ----
-async function loadTruncate() {
- const { truncateDescription } = await browser.storage.local.get('truncateDescription');
- $('#truncateToggle').checked = truncateDescription !== false;
+async function loadPdfSettings() {
+ const s = await browser.storage.local.get(['truncateDescription', 'showYearLevel', 'customYearLevel']);
+ $('#truncateToggle').checked = s.truncateDescription !== false;
+ $('#showYearToggle').checked = s.showYearLevel !== false;
+ $('#customYear').value = s.customYearLevel || '';
}
$('#truncateToggle').addEventListener('change', async (e) => {
await browser.storage.local.set({ truncateDescription: e.target.checked });
});
+$('#showYearToggle').addEventListener('change', async (e) => {
+ await browser.storage.local.set({ showYearLevel: e.target.checked });
+});
+$('#customYear').addEventListener('change', async (e) => {
+ await browser.storage.local.set({ customYearLevel: e.target.value.trim() });
+});
// ---- Profiles ----
async function getProfiles() {
@@ -113,6 +121,6 @@ $('#saveProfile').addEventListener('click', async () => {
// ---- Init ----
(async function init() {
await loadMaster();
- await loadTruncate();
+ await loadPdfSettings();
renderProfiles(await getProfiles());
})();
diff --git a/test/pdf.test.js b/test/pdf.test.js
index be95d7b..b02362b 100644
--- a/test/pdf.test.js
+++ b/test/pdf.test.js
@@ -5,7 +5,7 @@ const os = require('node:os');
const path = require('node:path');
const { execFileSync } = require('node:child_process');
global.PDFLib = require('pdf-lib');
-const { buildStudyLoadPdf, compactProgram, deriveDateRange, formatSchedule, formatFullName, truncateToWidth } = require('../pdf.js');
+const { buildStudyLoadPdf, compactProgram, deriveDateRange, formatSchedule, formatFullName, formatTeacher, truncateToWidth } = require('../pdf.js');
const sampleData = {
header: {
@@ -82,6 +82,16 @@ test('formatFullName reorders first-last names to last-first', () => {
assert.strictEqual(formatFullName(''), '');
});
+test('formatTeacher renders names First [MiddleInitial] Last like the reference', () => {
+ assert.strictEqual(formatTeacher('FILLO, FR. PETER'), 'FR. PETER FILLO');
+ assert.strictEqual(formatTeacher('BACALSO, REUELLA J. AWAYAN'), 'REUELLA J. BACALSO');
+ assert.strictEqual(formatTeacher('PEPITO, GLENN BULLECER'), 'GLENN PEPITO');
+ assert.strictEqual(formatTeacher('MADERAZO, CHRISTIAN'), 'CHRISTIAN MADERAZO');
+ assert.strictEqual(formatTeacher('DELA PAZ, KHENT'), 'KHENT DELA PAZ');
+ assert.strictEqual(formatTeacher('CHRISTIAN MADERAZO'), 'CHRISTIAN MADERAZO');
+ assert.strictEqual(formatTeacher(''), '');
+});
+
test('deriveDateRange maps semesters', () => {
assert.strictEqual(deriveDateRange('1ST Semester 2026'), 'AUGUST - JANUARY');
assert.strictEqual(deriveDateRange('2ND Semester 2026'), 'JANUARY - MAY');