-
Notifications
You must be signed in to change notification settings - Fork 0
/
script.js
114 lines (102 loc) · 4.16 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
document.addEventListener("DOMContentLoaded", () => {
var file_input = document.getElementById("file");
var holder = document.getElementsByClassName("holder")[0];
var empty = document.getElementById('empty');
var notes = document.getElementById("notes");
var notes_txt = document.getElementById("notes_txt");
async function extract_target_slides(zip) {
var note_contents = [];
var parser = new DOMParser();
for (const [key,file] of Object.entries(zip.files)) {
if (file.name.startsWith("ppt/notesSlides/") && file.name.endsWith(".xml")) {
var content = await zip.file(file.name).async("string");
var xmlDoc = parser.parseFromString(content,"text/xml");
var page = new Page(xmlDoc);
if (page.sldNum >= 0) {
note_contents.push(page);
}
}
};
note_contents.sort((a,b) => a.sldNum - b.sldNum);
return note_contents;
}
function render_notes(slides) {
notes.innerHTML = "";
var table = document.createElement("table");
// header
var thead = document.createElement("thead");
var tr = document.createElement("tr");
var th_page = document.createElement("th");
th_page.innerHTML = "Page";
var th_content = document.createElement("th");
th_content.innerHTML = "Notes";
tr.appendChild(th_page);
tr.appendChild(th_content);
thead.appendChild(tr);
table.appendChild(thead);
// body
var tbody = document.createElement("tbody");
table.appendChild(tbody);
content = '';
for (var i = 0; i < slides.length; i++) {
var row = document.createElement("tr");
var pageCell = document.createElement("td");
pageCell.innerHTML = slides[i].sldNum;
var contentCell = document.createElement("td");
contentCell.innerHTML = slides[i].getContent();
if (contentCell.innerText.length == 0)
continue;
content += 'Page ' + slides[i].sldNum + '<br>' + slides[i].getRawContent() + '<br>';
row.appendChild(pageCell);
row.appendChild(contentCell);
tbody.appendChild(row);
}
notes.appendChild(table);
notes_txt.innerHTML = content;
if (content.length == 0) {
holder.classList.add("hidden");
empty.classList.remove("hidden");
}
}
file_input.addEventListener("change", () => {
empty.classList.add("hidden");
if (file_input.files.length == 0) {
holder.classList.add("hidden");
return;
}
holder.classList.remove("hidden");
var file = file_input.files[0];
var ppt_file = new JSZip();
ppt_file.loadAsync(file)
.then(function(zip) {
return extract_target_slides(zip)
}).then(slides => {
render_notes(slides);
});
});
var toggle = document.getElementById("toggle");
var header = document.getElementById("header");
var footer = document.getElementsByTagName("footer")[0];
var table_holder = document.getElementById("table_holder");
var txt_holder = document.getElementById("txt_holder");
var mode = 0;
toggle.addEventListener("click", () => {
mode = (mode + 1) % 3;
if (mode == 0) {
header.classList.remove("hidden");
footer.classList.remove("hidden");
table_holder.classList.remove("hidden");
txt_holder.children[0].classList.remove("hidden");
} else if (mode == 1) {
header.classList.add("hidden");
footer.classList.add("hidden");
txt_holder.classList.add("hidden");
table_holder.children[0].classList.add("hidden");
} else if (mode == 2) {
txt_holder.classList.remove("hidden");
txt_holder.children[0].classList.add("hidden");
table_holder.classList.add("hidden");
table_holder.children[0].classList.remove("hidden");
}
});
});