From 220100c6c60d988922bf335bd276bfb4ddad4a65 Mon Sep 17 00:00:00 2001
From: tinaxd <31384595+tinaxd@users.noreply.github.com>
Date: Wed, 26 May 2021 11:51:29 +0900
Subject: [PATCH 001/196] add a dependency: mustache
---
package.json | 1 +
1 file changed, 1 insertion(+)
diff --git a/package.json b/package.json
index 90b934a..934453f 100644
--- a/package.json
+++ b/package.json
@@ -13,6 +13,7 @@
"dependencies": {
"@types/chrome": "^0.0.130",
"copy-webpack-plugin": "^7.0.0",
+ "mustache": "^4.2.0",
"ts-loader": "^8.0.17",
"typescript": "^4.1.5",
"webpack": "^5.22.0"
From ce96a909977c6a5d5f45c5de6fc015b45322eed3 Mon Sep 17 00:00:00 2001
From: tinaxd <31384595+tinaxd@users.noreply.github.com>
Date: Wed, 26 May 2021 12:52:16 +0900
Subject: [PATCH 002/196] template 1
---
package-lock.json | 14 ++++++
public/views/minipanda.mustache | 75 +++++++++++++++++++++++++++++++++
src/minipanda.ts | 63 ++++++++++-----------------
3 files changed, 112 insertions(+), 40 deletions(-)
create mode 100644 public/views/minipanda.mustache
diff --git a/package-lock.json b/package-lock.json
index 86ffa1c..01202ba 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,6 +11,7 @@
"dependencies": {
"@types/chrome": "^0.0.130",
"copy-webpack-plugin": "^7.0.0",
+ "mustache": "^4.2.0",
"ts-loader": "^8.0.17",
"typescript": "^4.1.5",
"webpack": "^5.22.0"
@@ -1898,6 +1899,14 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
+ "node_modules/mustache": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz",
+ "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==",
+ "bin": {
+ "mustache": "bin/mustache"
+ }
+ },
"node_modules/natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
@@ -4381,6 +4390,11 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
+ "mustache": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz",
+ "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ=="
+ },
"natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
diff --git a/public/views/minipanda.mustache b/public/views/minipanda.mustache
new file mode 100644
index 0000000..6f08e45
--- /dev/null
+++ b/public/views/minipanda.mustache
@@ -0,0 +1,75 @@
+
+
Version {{VERSION}}
+x
+
+
+
+
+
+課題取得日時: {{kadaiFetchedTime}}
+クイズ取得日時: {{quizFetchedTime}}
+
+ {{#showDanger}}
+
+
+
+ {{#dangerElements}}
+
+ {{/dangerElements}}
+
+ {{/showDanger}}
+
+ {{#showWarning}}
+
+
+
+ {{#warningElements}}
+
+ {{/warningElements}}
+
+ {{/showWarning}}
+
+ {{#showSuccess}}
+
+
+
+ {{#successElements}}
+
+ {{/successElements}}
+
+ {{/showSuccess}}
+
+ {{#showOther}}
+
+
+
+ {{#otherElements}}
+
+ {{/otherElements}}
+
+ {{/showOther}}
+
\ No newline at end of file
diff --git a/src/minipanda.ts b/src/minipanda.ts
index 6a97f30..e6fa5ec 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -37,6 +37,8 @@ import {
quizFetchedTime,
VERSION,
} from "./content_script";
+// @ts-ignore
+import Mustache = require('mustache');
function createHanburgerButton(): void {
const topbar = document.getElementById("mastLogin");
@@ -47,47 +49,28 @@ function createHanburgerButton(): void {
}
}
-function createMiniPandA(): void {
- const miniPandALogo = createElem("img", {
- className: "logo",
- alt: "logo",
- src: chrome.extension.getURL("img/logo.png"),
- });
- const version = createElem("p", { classList: "cp-version", innerText: `Version ${VERSION}`});
-
- const miniPandACloseBtn = createElem("a", { href: "#", id: "close_btn", textContent: "×" });
- miniPandACloseBtn.classList.add("closebtn", "q");
- miniPandACloseBtn.addEventListener("click", toggleMiniPandA);
-
- const kadaiTab = createElem("input", { type: "radio", id: "kadaiTab", name: "cp_tab", checked: true }, {"click": toggleKadaiTab});
- const kadaiTabLabel = createElem("label", { htmlFor: "kadaiTab", innerText: " 課題一覧 " });
- const settingsTab = createElem("input", { type: "radio", id: "settingsTab", name: "cp_tab", checked: false }, {"click": toggleSettingsTab});
- const settingsTabLabel = createElem("label", { htmlFor: "settingsTab", innerText: " 詳細設定 " });
- const addMemoButton = createElem("button", { className: "plus-button", innerText: "+" },{"click": toggleMemoBox});
-
+function createMiniPandA(kadaiList: Array, lectureIDList: Array): void {
const kadaiFetchedTimestamp = new Date( (typeof kadaiFetchedTime === "number")? kadaiFetchedTime : nowTime);
- const kadaiFetchedTimeString = createElem("p", { className: "kadai-time" });
- kadaiFetchedTimeString.innerText = "課題取得日時: " + kadaiFetchedTimestamp.toLocaleDateString() + " " + kadaiFetchedTimestamp.getHours() + ":" + ("00" + kadaiFetchedTimestamp.getMinutes()).slice(-2) + ":" + ("00" + kadaiFetchedTimestamp.getSeconds()).slice(-2);
+ const kadaiFetchedTimeString = "課題取得日時: " + kadaiFetchedTimestamp.toLocaleDateString() + " " + kadaiFetchedTimestamp.getHours() + ":" + ("00" + kadaiFetchedTimestamp.getMinutes()).slice(-2) + ":" + ("00" + kadaiFetchedTimestamp.getSeconds()).slice(-2);
const quizFetchedTimestamp = new Date((typeof quizFetchedTime === "number")? quizFetchedTime : nowTime);
- const quizFetchedTimeString = createElem("p", { className: "quiz-time" });
- quizFetchedTimeString.innerText = "クイズ取得日時: " + quizFetchedTimestamp.toLocaleDateString() + " " + quizFetchedTimestamp.getHours() + ":" + ("00" + quizFetchedTimestamp.getMinutes()).slice(-2) + ":" + ("00" + quizFetchedTimestamp.getSeconds()).slice(-2);
- appendChildAll(miniPandA, [
- miniPandALogo,
- version,
- miniPandACloseBtn,
- kadaiTab,
- kadaiTabLabel,
- settingsTab,
- settingsTabLabel,
- addMemoButton,
- kadaiFetchedTimeString,
- quizFetchedTimeString,
- ]);
-
- const parent = document.getElementById("pageBody");
- const ref = document.getElementById("toolMenuWrap");
-
- parent?.insertBefore(miniPandA, ref);
+ const quizFetchedTimeString = "クイズ取得日時: " + quizFetchedTimestamp.toLocaleDateString() + " " + quizFetchedTimestamp.getHours() + ":" + ("00" + quizFetchedTimestamp.getMinutes()).slice(-2) + ":" + ("00" + quizFetchedTimestamp.getSeconds()).slice(-2);
+
+ const templateVars = {
+ kadaiFetchedTime: kadaiFetchedTimeString,
+ quizFetchedTime: quizFetchedTimeString,
+ minipandaLogo: chrome.extension.getURL("img/logo.png"),
+ VERSION: VERSION,
+ };
+
+ fetch(chrome.extension.getURL("views/minipanda.mustache"))
+ .then((res) => res.text())
+ .then((template) => {
+ const rendered = Mustache.render(template, templateVars);
+ miniPandA.innerHTML = rendered;
+ const parent = document.getElementById("pageBody");
+ const ref = document.getElementById("toolMenuWrap");
+ parent?.insertBefore(miniPandA, ref);
+ });
}
function appendMemoBox(lectureIDList: Array): void {
@@ -120,7 +103,7 @@ function appendMemoBox(lectureIDList: Array): void {
}
async function displayMiniPandA(mergedKadaiList: Array, lectureIDList: Array): Promise{
- createMiniPandA();
+ createMiniPandA(mergedKadaiList, lectureIDList);
appendMemoBox(lectureIDList);
await createSettingsTab();
updateMiniPandA(mergedKadaiList, lectureIDList);
From 5338beaaa0f157f9dc865f689e0ab236187ef0b6 Mon Sep 17 00:00:00 2001
From: tinaxd <31384595+tinaxd@users.noreply.github.com>
Date: Wed, 26 May 2021 13:06:13 +0900
Subject: [PATCH 003/196] kadai title duedate lectureName
---
public/views/minipanda.mustache | 4 +++
src/minipanda.ts | 48 ++++++++++++++++++++++++++++++++-
2 files changed, 51 insertions(+), 1 deletion(-)
diff --git a/public/views/minipanda.mustache b/public/views/minipanda.mustache
index 6f08e45..8161bca 100644
--- a/public/views/minipanda.mustache
+++ b/public/views/minipanda.mustache
@@ -11,6 +11,7 @@
{{#showDanger}}
+ 締め切り24時間以内
{{#dangerElements}}
@@ -27,6 +28,7 @@
{{#showWarning}}
+ 締め切り5日以内
{{#warningElements}}
@@ -43,6 +45,7 @@
{{#showSuccess}}
+ 締め切り14日以内
{{#successElements}}
@@ -59,6 +62,7 @@
{{#showOther}}
+ その他
{{#otherElements}}
diff --git a/src/minipanda.ts b/src/minipanda.ts
index e6fa5ec..e68a304 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -54,12 +54,58 @@ function createMiniPandA(kadaiList: Array
, lectureIDList: Array = [];
+ const warningElements: Array
{{/dangerElements}}
@@ -37,6 +44,13 @@
{{date}}
{{remain}}
+ {{#isMemo}}
+
メモ
+
×
+ {{/isMemo}}
+ {{#isQuiz}}
+
クイズ
+ {{/isQuiz}}
{{title}}
{{/warningElements}}
@@ -54,6 +68,13 @@
{{date}}
{{remain}}
+ {{#isMemo}}
+
メモ
+
×
+ {{/isMemo}}
+ {{#isQuiz}}
+
クイズ
+ {{/isQuiz}}
{{title}}
{{/successElements}}
@@ -71,6 +92,13 @@
{{date}}
{{remain}}
+ {{#isMemo}}
+
メモ
+
×
+ {{/isMemo}}
+ {{#isQuiz}}
+
クイズ
+ {{/isQuiz}}
{{title}}
{{/otherElements}}
diff --git a/src/minipanda.ts b/src/minipanda.ts
index e68a304..9e9fef7 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -78,7 +78,9 @@ function createMiniPandA(kadaiList: Array
, lectureIDList: Array 0 && daysUntilDue <= 1) {
From a91e20a2e0722c425b2a324df2a12dd8680d12d3 Mon Sep 17 00:00:00 2001
From: tinaxd <31384595+tinaxd@users.noreply.github.com>
Date: Wed, 26 May 2021 22:30:35 +0900
Subject: [PATCH 005/196] minipanda mustache
---
public/views/minipanda.mustache | 52 +++++---
src/dom.ts | 1 -
src/minipanda.ts | 202 +++++++++-----------------------
src/subpanda.ts | 4 +-
4 files changed, 91 insertions(+), 168 deletions(-)
diff --git a/public/views/minipanda.mustache b/public/views/minipanda.mustache
index a081d69..9213f83 100644
--- a/public/views/minipanda.mustache
+++ b/public/views/minipanda.mustache
@@ -9,25 +9,39 @@
課題取得日時: {{kadaiFetchedTime}}
クイズ取得日時: {{quizFetchedTime}}
+
+
+
+
+
+
+
{{#showDanger}}
締め切り24時間以内
{{#dangerElements}}
-
+
{{lectureName}}
-
+
+
{{date}}
{{remain}}
- {{#isMemo}}
-
メモ
-
×
- {{/isMemo}}
- {{#isQuiz}}
-
クイズ
- {{/isQuiz}}
-
{{title}}
+
+ {{#isMemo}}
+ メモ
+ ×
+ {{/isMemo}}
+ {{#isQuiz}}
+ クイズ
+ {{/isQuiz}}
+ {{title}}
+
{{/dangerElements}}
@@ -39,9 +53,10 @@
{{#warningElements}}
-
+
{{#successElements}}
-
+
{{#otherElements}}
-
+
+
\ No newline at end of file
diff --git a/src/dom.ts b/src/dom.ts
index 0c70d28..2cb6185 100644
--- a/src/dom.ts
+++ b/src/dom.ts
@@ -41,7 +41,6 @@ miniPandA.classList.add("cp_tab");
export const subPandA = createElem("div", { id: "subPandA" });
export const kadaiDiv = createElem("div", { className: "kadai-tab" });
-export const settingsDiv = createElem("div", { className: "settings-tab" });
export const hamburger = createElem("div", { className: "loader" }, {"click": toggleMiniPandA});
diff --git a/src/minipanda.ts b/src/minipanda.ts
index 9e9fef7..90ad8a3 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -7,16 +7,10 @@ import {
nowTime,
} from "./utils";
import {
- addAttributes,
appendChildAll,
cloneElem,
- createElem,
- DueGroupDom,
hamburger,
- kadaiDiv,
- KadaiEntryDom,
miniPandA,
- settingsDiv,
SettingsDom
} from "./dom";
import {
@@ -51,9 +45,11 @@ function createHanburgerButton(): void {
function createMiniPandA(kadaiList: Array
, lectureIDList: Array): void {
const kadaiFetchedTimestamp = new Date( (typeof kadaiFetchedTime === "number")? kadaiFetchedTime : nowTime);
- const kadaiFetchedTimeString = "課題取得日時: " + kadaiFetchedTimestamp.toLocaleDateString() + " " + kadaiFetchedTimestamp.getHours() + ":" + ("00" + kadaiFetchedTimestamp.getMinutes()).slice(-2) + ":" + ("00" + kadaiFetchedTimestamp.getSeconds()).slice(-2);
+ const kadaiFetchedTimeString = kadaiFetchedTimestamp.toLocaleDateString() + " " + kadaiFetchedTimestamp.getHours() + ":" + ("00" + kadaiFetchedTimestamp.getMinutes()).slice(-2) + ":" + ("00" + kadaiFetchedTimestamp.getSeconds()).slice(-2);
const quizFetchedTimestamp = new Date((typeof quizFetchedTime === "number")? quizFetchedTime : nowTime);
- const quizFetchedTimeString = "クイズ取得日時: " + quizFetchedTimestamp.toLocaleDateString() + " " + quizFetchedTimestamp.getHours() + ":" + ("00" + quizFetchedTimestamp.getMinutes()).slice(-2) + ":" + ("00" + quizFetchedTimestamp.getSeconds()).slice(-2);
+ const quizFetchedTimeString = quizFetchedTimestamp.toLocaleDateString() + " " + quizFetchedTimestamp.getHours() + ":" + ("00" + quizFetchedTimestamp.getMinutes()).slice(-2) + ":" + ("00" + quizFetchedTimestamp.getSeconds()).slice(-2);
+
+ const addMemoBoxLectures: Array = [];
const lectureIDMap = createLectureIDMap(lectureIDList);
const dangerElements: Array = [];
@@ -80,7 +76,10 @@ function createMiniPandA(kadaiList: Array, lectureIDList: Array 0 && daysUntilDue <= 1) {
@@ -93,6 +92,11 @@ function createMiniPandA(kadaiList: Array, lectureIDList: Array, lectureIDList: Array 0,
otherElements: otherElements,
- showOther: otherElements.length > 0
+ showOther: otherElements.length > 0,
+ addMemoBoxLectures: addMemoBoxLectures
};
fetch(chrome.extension.getURL("views/minipanda.mustache"))
@@ -118,46 +123,37 @@ function createMiniPandA(kadaiList: Array, lectureIDList: Array): void {
- const memoEditBox = createElem("div", {className: "settingsBox addMemoBox", style: "none"});
- const memoLabel = createElem("label", {style: "block"});
- const todoLecLabel = cloneElem(memoLabel, {innerText: "講義名"});
- const todoLecSelect = createElem("select", { className: "todoLecName" });
- const todoLecOption = createElem("option");
-
- for (const lecture of lectureIDList) {
- const c_todoLecOption = cloneElem(todoLecOption, {text: lecture.lectureName, id: lecture.lectureID});
- todoLecSelect.appendChild(c_todoLecOption);
- }
-
- todoLecLabel.appendChild(todoLecSelect);
-
- const todoContentLabel = cloneElem(memoLabel, { innerText: "メモ" });
- const todoContentInput = createElem("input", { type: "text", className: "todoContent" });
- todoContentLabel.appendChild(todoContentInput);
-
- const todoDueLabel = cloneElem(memoLabel, {innerText: "期限"});
- const todoDueInput = createElem("input", { type: "datetime-local", className: "todoDue" });
- todoDueInput.value = new Date(`${new Date().toISOString().substr(0, 16)}-10:00`).toISOString().substr(0, 16);
- todoDueLabel.appendChild(todoDueInput);
+async function createSettingsTab(root: Element): Promise {
+ createSettingItem(root, "完了済の課題も色付けする", CPsettings.displayCheckedKadai ?? true, "displayCheckedKadai");
+ createSettingItem(root, "課題キャッシュ時間 [秒]", CPsettings.kadaiCacheInterval ?? kadaiCacheInterval, "kadaiCacheInterval");
+ createSettingItem(root, "クイズキャッシュ時間 [秒]", CPsettings.quizCacheInterval ?? quizCacheInterval, "quizCacheInterval");
+ createSettingItem(root, "デバッグモード", CPsettings.makePandAGreatAgain ?? false, "makePandAGreatAgain", false);
- const todoSubmitButton = createElem("button", { type: "submit", id: "todo-add", innerText: "追加" }, {"click": addKadaiMemo});
+ createSettingItem(root, "カラー① 締切24時間前", CPsettings.topColorDanger ?? "#f78989", "topColorDanger");
+ createSettingItem(root, "カラー① 締切5日前", CPsettings.topColorWarning ?? "#fdd783", "topColorWarning");
+ createSettingItem(root, "カラー① 締切14日前", CPsettings.topColorSuccess ?? "#8bd48d", "topColorSuccess");
- appendChildAll(memoEditBox, [todoLecLabel, todoContentLabel, todoDueLabel, todoSubmitButton]);
- kadaiDiv.appendChild(memoEditBox);
-}
+ createSettingItem(root, "カラー② 締切24時間前", CPsettings.miniColorDanger ?? "#e85555", "miniColorDanger");
+ createSettingItem(root, "カラー② 締切5日前", CPsettings.miniColorWarning ?? "#d7aa57", "miniColorWarning");
+ createSettingItem(root, "カラー② 締切14日前", CPsettings.miniColorSuccess ?? "#62b665", "miniColorSuccess");
-async function displayMiniPandA(mergedKadaiList: Array, lectureIDList: Array): Promise{
- createMiniPandA(mergedKadaiList, lectureIDList);
- appendMemoBox(lectureIDList);
- await createSettingsTab();
- updateMiniPandA(mergedKadaiList, lectureIDList);
+ createSettingItem(root, "デフォルト色に戻す", "reset", "reset");
+ // @ts-ignore
+ root.querySelector('.settings-tab')?.style.display = "none";
}
-function createSettingItem(itemDescription: string, value: boolean | number | string | null, id: string, display = true) {
+function createSettingItem(root: Element, itemDescription: string, value: boolean | number | string | null, id: string, display = true) {
+ const settingsDiv = root.querySelector('.settings-tab');
+ if (settingsDiv == null) {
+ console.log('.settings-tab not found');
+ return;
+ }
const mainDiv = SettingsDom.mainDiv.cloneNode(true);
const label = SettingsDom.label.cloneNode(true);
const p = SettingsDom.p.cloneNode(true);
@@ -191,112 +187,23 @@ function createSettingItem(itemDescription: string, value: boolean | number | st
settingsDiv.appendChild(mainDiv);
}
-async function createSettingsTab(): Promise {
- createSettingItem("完了済の課題も色付けする", CPsettings.displayCheckedKadai ?? true, "displayCheckedKadai");
- createSettingItem("課題キャッシュ時間 [秒]", CPsettings.kadaiCacheInterval ?? kadaiCacheInterval, "kadaiCacheInterval");
- createSettingItem("クイズキャッシュ時間 [秒]", CPsettings.quizCacheInterval ?? quizCacheInterval, "quizCacheInterval");
- createSettingItem("デバッグモード", CPsettings.makePandAGreatAgain ?? false, "makePandAGreatAgain", false);
-
- createSettingItem("カラー① 締切24時間前", CPsettings.topColorDanger ?? "#f78989", "topColorDanger");
- createSettingItem("カラー① 締切5日前", CPsettings.topColorWarning ?? "#fdd783", "topColorWarning");
- createSettingItem("カラー① 締切14日前", CPsettings.topColorSuccess ?? "#8bd48d", "topColorSuccess");
-
- createSettingItem("カラー② 締切24時間前", CPsettings.miniColorDanger ?? "#e85555", "miniColorDanger");
- createSettingItem("カラー② 締切5日前", CPsettings.miniColorWarning ?? "#d7aa57", "miniColorWarning");
- createSettingItem("カラー② 締切14日前", CPsettings.miniColorSuccess ?? "#62b665", "miniColorSuccess");
-
- createSettingItem("デフォルト色に戻す", "reset", "reset");
- settingsDiv.style.display = "none";
+function registerEventHandlers(root: Element) {
+ root.querySelector('#kadaiTab')?.addEventListener('click', () => toggleKadaiTab());
+ root.querySelector('#settingsTab')?.addEventListener('click', () => toggleSettingsTab());
+ root.querySelectorAll('.todo-check').forEach(c => c.addEventListener('change', (e) => toggleKadaiFinishedFlag(e)));
+ root.querySelector('#close_btn')?.addEventListener('click', () => toggleMiniPandA());
+ root.querySelector('.plus-button')?.addEventListener('click', () => toggleMemoBox());
+ root.querySelector('#todo-add')?.addEventListener('click', () => addKadaiMemo());
+ root.querySelectorAll('.del-button').forEach(b => b.addEventListener('click', (e) => deleteKadaiMemo(e)));
}
-function updateMiniPandA(kadaiList: Array, lectureIDList: Array): void {
- const dueGroupHeaderName = ["締め切り24時間以内", "締め切り5日以内", "締め切り14日以内", "その他"];
- const dueGroupColor = ["danger", "warning", "success", "other"];
- const initLetter = ["a", "b", "c", "d"];
- const lectureIDMap = createLectureIDMap(lectureIDList);
-
- // 0: <24h, 1: <5d, 2: <14d, 3: >14d
- for (let i = 0; i < 4; i++) {
- let entryCount = 0;
- // 色別のグループを作成する
- const dueGroupHeader = cloneElem(DueGroupDom.header, {className: `sidenav-${dueGroupColor[i]}`, style:"none"});
- const dueGroupHeaderTitle = cloneElem(DueGroupDom.headerTitle, {textContent: `${dueGroupHeaderName[i]}`});
- const dueGroupContainer = cloneElem(DueGroupDom.container, {style:"none"});
- dueGroupHeader.appendChild(dueGroupHeaderTitle);
- dueGroupContainer.classList.add(`sidenav-list-${dueGroupColor[i]}`);
-
- // 各講義についてループ
- for (const item of kadaiList) {
- // 課題アイテムを入れるやつを作成
- const dueGroupBody = cloneElem(DueGroupDom.body, {className: `kadai-${dueGroupColor[i]}`, id:initLetter[i] + item.lectureID});
- const dueGroupLectureName = DueGroupDom.lectureName.cloneNode(true) as HTMLAnchorElement;
- dueGroupLectureName.classList.add(`lecture-${dueGroupColor[i]}`, "lecture-name")
- dueGroupLectureName.textContent = "" + lectureIDMap.get(item.lectureID);
- dueGroupBody.appendChild(dueGroupLectureName);
- const topSite = item.getTopSite();
- if (topSite != null) dueGroupLectureName.href = topSite;
-
- // 各講義の課題一覧についてループ
- let cnt = 0;
- for (const kadai of item.kadaiEntries) {
- let kadaiCheckbox = cloneElem(KadaiEntryDom.checkbox);
- const kadaiLabel = cloneElem(KadaiEntryDom.label);
- const kadaiDueDate = cloneElem(KadaiEntryDom.dueDate);
- const kadaiRemainTime = cloneElem(KadaiEntryDom.remainTime);
- const kadaiTitle = cloneElem(KadaiEntryDom.title);
- const memoBadge = createElem("span", {classList: "add-badge add-badge-success", innerText: "メモ"});
- const quizBadge = createElem("span", {classList: "add-badge add-badge-quiz", innerText: "クイズ"});
- const deleteBadge = createElem("span", {className: "del-button", id: kadai.kadaiID, innerText:"×"}, {"click": deleteKadaiMemo});
-
- const dispDue = formatTimestamp(kadai.dueDateTimestamp);
- const timeRemain = getTimeRemain((kadai.dueDateTimestamp * 1000 - nowTime) / 1000);
-
- const daysUntilDue = getDaysUntil(nowTime, kadai.dueDateTimestamp * 1000);
- if ((daysUntilDue > 0 && daysUntilDue <= 1 && i === 0) || (daysUntilDue > 1 && daysUntilDue <= 5 && i === 1) || (daysUntilDue > 5 && daysUntilDue <= 14 && i === 2) || (daysUntilDue > 14 && i === 3)) {
- kadaiDueDate.textContent = "" + dispDue;
- kadaiRemainTime.textContent = `あと${timeRemain[0]}日${timeRemain[1]}時間${timeRemain[2]}分`;
- kadaiTitle.textContent = "" + kadai.assignmentTitle;
- if (kadai.isFinished) kadaiCheckbox.checked = true;
- kadaiCheckbox = addAttributes(kadaiCheckbox, {id: kadai.kadaiID, lectureID:item.lectureID}, {"change": toggleKadaiFinishedFlag})
- kadaiLabel.htmlFor = kadai.kadaiID;
-
- const addBadge = function (badge: any, deleteBadge?: any) {
- kadaiTitle.textContent = "";
- kadaiTitle.appendChild(badge);
- kadaiTitle.append(kadai.assignmentTitle);
- if (deleteBadge) kadaiTitle.appendChild(deleteBadge);
- };
-
- if (kadai.isMemo) addBadge(memoBadge, deleteBadge);
- if (kadai.isQuiz) addBadge(quizBadge);
-
- appendChildAll(dueGroupBody, [kadaiCheckbox, kadaiLabel, kadaiDueDate, kadaiRemainTime, kadaiTitle]);
- cnt++;
- }
- }
- // 各講義の課題で該当するものがある場合はグループに追加
- if (cnt > 0) {
- dueGroupContainer.appendChild(dueGroupBody);
- entryCount++;
- }
- }
- if (entryCount > 0) {
- dueGroupHeader.style.display = "";
- dueGroupContainer.style.display = "";
- }
- appendChildAll(miniPandA, [kadaiDiv, settingsDiv]);
- appendChildAll(kadaiDiv, [dueGroupHeader, dueGroupContainer]);
- }
+function initState(root: Element) {
+ // @ts-ignore
+ root.querySelector('#kadaiTab')?.checked = true;
+}
- // 何もない時はRelaxPandAを表示する
- if (kadaiList.length === 0) {
- const kadaiTab = kadaiDiv;
- const relaxDiv = createElem("div", { className: "relaxpanda" });
- const relaxPandaP = createElem("p", { className: "relaxpanda-p", innerText: "現在表示できる課題はありません" });
- const relaxPandaImg = createElem("img", { className: "relaxpanda-img", alt: "logo", src: chrome.extension.getURL("img/relaxPanda.png")});
- appendChildAll(relaxDiv, [relaxPandaP, relaxPandaImg]);
- kadaiTab.appendChild(relaxDiv);
- }
+async function displayMiniPandA(mergedKadaiList: Array, lectureIDList: Array): Promise{
+ createMiniPandA(mergedKadaiList, lectureIDList);
}
function deleteNavBarNotification(): void {
@@ -395,10 +302,7 @@ function overrideCSSColor() {
export {
createHanburgerButton,
createMiniPandA,
- appendMemoBox,
- createSettingsTab,
- updateMiniPandA,
displayMiniPandA,
deleteNavBarNotification,
- createNavBarNotification,
+ createNavBarNotification
};
diff --git a/src/subpanda.ts b/src/subpanda.ts
index 8251642..8c2507e 100644
--- a/src/subpanda.ts
+++ b/src/subpanda.ts
@@ -1,4 +1,4 @@
-import { appendChildAll, createElem, DueGroupDom, settingsDiv, kadaiDiv, KadaiEntryDom, subPandA } from './dom';
+import { appendChildAll, createElem, DueGroupDom, kadaiDiv, KadaiEntryDom, subPandA } from './dom';
import { toggleKadaiFinishedFlag } from './eventListener';
import { Kadai, LectureInfo } from './kadai';
import { loadFromStorage } from './storage'
@@ -134,7 +134,7 @@ function updateSubPandA(kadaiList: Array, lectureIDList: Array
Date: Wed, 26 May 2021 23:13:22 +0900
Subject: [PATCH 006/196] subpanda & memo badge fix
---
public/css/subpanda.css | 17 +++-
public/popup.html | 2 +-
public/views/minipanda.mustache | 62 +++++++------
src/dom.ts | 2 -
src/minipanda.ts | 25 ++++--
src/subpanda.ts | 155 +++-----------------------------
6 files changed, 84 insertions(+), 179 deletions(-)
diff --git a/public/css/subpanda.css b/public/css/subpanda.css
index 5412d62..47c8ce1 100644
--- a/public/css/subpanda.css
+++ b/public/css/subpanda.css
@@ -9,6 +9,7 @@ body {
span {
font-family: "Open Sans", sans-serif;
}
+
.kadai-title {
font-family: "Open Sans", sans-serif;
font-size: 12px !important;
@@ -38,10 +39,24 @@ span {
color: #464646;
font-size: small;
}
-.subpanda-logo {
+
+.quiz-time {
+ font-family: "Open Sans", sans-serif;
+ padding-top: 5px;
+ padding-bottom: 5px;
+ padding-left: 10px;
+ margin: 10px;
+ border: inset;
+ font-weight: bold;
+ color: #464646;
+ font-size: small;
+}
+
+.logo {
top: 7px;
left: 2px;
height: 40px;
+ position: unset;
}
.cp-version{
diff --git a/public/popup.html b/public/popup.html
index ca0a97b..6b8fe8c 100644
--- a/public/popup.html
+++ b/public/popup.html
@@ -14,7 +14,7 @@
-
+
diff --git a/public/views/minipanda.mustache b/public/views/minipanda.mustache
index 9213f83..a678f4c 100644
--- a/public/views/minipanda.mustache
+++ b/public/views/minipanda.mustache
@@ -1,14 +1,17 @@
Version {{VERSION}}
+{{^subset}}
x
+{{/subset}}
課題取得日時: {{kadaiFetchedTime}}
クイズ取得日時: {{quizFetchedTime}}
+ {{^subset}}
+ {{/subset}}
{{#showDanger}}
@@ -59,14 +63,16 @@
{{date}}
{{remain}}
- {{#isMemo}}
-
メモ
-
×
- {{/isMemo}}
- {{#isQuiz}}
-
クイズ
- {{/isQuiz}}
-
{{title}}
+
+ {{#isMemo}}
+ メモ
+ ×
+ {{/isMemo}}
+ {{#isQuiz}}
+ クイズ
+ {{/isQuiz}}
+ {{title}}
+
{{/warningElements}}
@@ -84,14 +90,16 @@
{{date}}
{{remain}}
- {{#isMemo}}
-
メモ
-
×
- {{/isMemo}}
- {{#isQuiz}}
-
クイズ
- {{/isQuiz}}
-
{{title}}
+
+ {{#isMemo}}
+ メモ
+ ×
+ {{/isMemo}}
+ {{#isQuiz}}
+ クイズ
+ {{/isQuiz}}
+ {{title}}
+
{{/successElements}}
@@ -109,19 +117,23 @@
{{date}}
{{remain}}
- {{#isMemo}}
- メモ
- ×
- {{/isMemo}}
- {{#isQuiz}}
- クイズ
- {{/isQuiz}}
- {{title}}
+
+ {{#isMemo}}
+ メモ
+ ×
+ {{/isMemo}}
+ {{#isQuiz}}
+ クイズ
+ {{/isQuiz}}
+ {{title}}
+
{{/otherElements}}
{{/showOther}}
+{{^subset}}
-
\ No newline at end of file
+
+{{/subset}}
\ No newline at end of file
diff --git a/src/dom.ts b/src/dom.ts
index 2cb6185..ad249f9 100644
--- a/src/dom.ts
+++ b/src/dom.ts
@@ -38,8 +38,6 @@ export const miniPandA = createElem("div", { id: "miniPandA" });
miniPandA.classList.add("sidenav");
miniPandA.classList.add("cp_tab");
-export const subPandA = createElem("div", { id: "subPandA" });
-
export const kadaiDiv = createElem("div", { className: "kadai-tab" });
export const hamburger = createElem("div", { className: "loader" }, {"click": toggleMiniPandA});
diff --git a/src/minipanda.ts b/src/minipanda.ts
index 90ad8a3..891056e 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -43,7 +43,7 @@ function createHanburgerButton(): void {
}
}
-function createMiniPandA(kadaiList: Array
, lectureIDList: Array): void {
+export function createMiniPandAGeneralized(root: Element, kadaiList: Array, lectureIDList: Array, subset: boolean, insertionProcess: (rendered: string) => void): void {
const kadaiFetchedTimestamp = new Date( (typeof kadaiFetchedTime === "number")? kadaiFetchedTime : nowTime);
const kadaiFetchedTimeString = kadaiFetchedTimestamp.toLocaleDateString() + " " + kadaiFetchedTimestamp.getHours() + ":" + ("00" + kadaiFetchedTimestamp.getMinutes()).slice(-2) + ":" + ("00" + kadaiFetchedTimestamp.getSeconds()).slice(-2);
const quizFetchedTimestamp = new Date((typeof quizFetchedTime === "number")? quizFetchedTime : nowTime);
@@ -112,23 +112,30 @@ function createMiniPandA(kadaiList: Array, lectureIDList: Array 0,
otherElements: otherElements,
showOther: otherElements.length > 0,
- addMemoBoxLectures: addMemoBoxLectures
+ addMemoBoxLectures: addMemoBoxLectures,
+ subset: subset
};
fetch(chrome.extension.getURL("views/minipanda.mustache"))
.then((res) => res.text())
.then((template) => {
const rendered = Mustache.render(template, templateVars);
- miniPandA.innerHTML = rendered;
- const parent = document.getElementById("pageBody");
- const ref = document.getElementById("toolMenuWrap");
- parent?.insertBefore(miniPandA, ref);
- registerEventHandlers(miniPandA);
- createSettingsTab(miniPandA);
- initState(miniPandA);
+ insertionProcess(rendered);
+ registerEventHandlers(root);
+ if (!subset) createSettingsTab(root);
+ initState(root);
});
}
+function createMiniPandA(kadaiList: Array, lectureIDList: Array): void {
+ createMiniPandAGeneralized(miniPandA, kadaiList, lectureIDList, false, (rendered) => {
+ miniPandA.innerHTML = rendered;
+ const parent = document.getElementById("pageBody");
+ const ref = document.getElementById("toolMenuWrap");
+ parent?.insertBefore(miniPandA, ref);
+ });
+}
+
async function createSettingsTab(root: Element): Promise {
createSettingItem(root, "完了済の課題も色付けする", CPsettings.displayCheckedKadai ?? true, "displayCheckedKadai");
createSettingItem(root, "課題キャッシュ時間 [秒]", CPsettings.kadaiCacheInterval ?? kadaiCacheInterval, "kadaiCacheInterval");
diff --git a/src/subpanda.ts b/src/subpanda.ts
index ed33cc7..f5f96e8 100644
--- a/src/subpanda.ts
+++ b/src/subpanda.ts
@@ -1,170 +1,43 @@
-import { appendChildAll, createElem, DueGroupDom, kadaiDiv, KadaiEntryDom, subPandA } from './dom';
-import { toggleKadaiFinishedFlag } from './eventListener';
import { Kadai, LectureInfo } from './kadai';
import { loadFromStorage } from './storage'
import {
convertArrayToKadai,
- createLectureIDMap,
- getDaysUntil,
- getTimeRemain,
mergeIntoKadaiList,
- nowTime,
sortKadaiList
} from "./utils";
import {
- VERSION
+ lectureIDList
} from "./content_script"
+import { createMiniPandAGeneralized } from "./minipanda"
const subpandaRoot = document.querySelector("#subpanda");
-async function dumpCache() {
- if (subpandaRoot == null) return;
+async function updateSubPandA(root: Element) {
let mergedKadaiList: Array;
const kadais = await loadFromStorage("TSkadaiList") as Array;
const quizList = await loadFromStorage("TSQuizList") as Array;
const kadaiMemoList = convertArrayToKadai(await loadFromStorage("TSkadaiMemoList"));
+ const lectureIDs = await loadFromStorage("TSlectureids") as Array;
mergedKadaiList = mergeIntoKadaiList(kadais, quizList);
mergedKadaiList = mergeIntoKadaiList(mergedKadaiList, kadaiMemoList);
- const lectureIDs = await loadFromStorage("TSlectureids") as Array;
- const fetchedTime = await loadFromStorage("TSkadaiFetchedTime") as number;
- const quizFetchedTime = await loadFromStorage("TSquizFetchedTime") as number;
- updateSubPandA(sortKadaiList(mergedKadaiList), lectureIDs, fetchedTime, quizFetchedTime);
-}
+ mergedKadaiList = sortKadaiList(mergedKadaiList);
-function addSubPandAToPopup() {
- if (subpandaRoot == null) return;
- const subPandALogo = createElem("img", {
- className: "subpanda-logo",
- alt: "logo",
- src: chrome.extension.getURL("img/logo.png"),
+ createMiniPandAGeneralized(root, mergedKadaiList, lectureIDs, true, (rendered) => {
+ console.log(rendered);
+ root.innerHTML = rendered;
});
- appendChildAll(subPandA, [subPandALogo])
- subpandaRoot.appendChild(subPandA);
}
-function updateSubPandA(kadaiList: Array, lectureIDList: Array, fetchedTime: number, quizFetchedTime: number): void {
- const version = createElem("p", { classList: "cp-version", innerText: `Version ${VERSION}`});
-
- const fetchedTimestamp = new Date(fetchedTime);
- const fetchedTimeString = createElem("p", { className: "kadai-time" });
- fetchedTimeString.innerText = "取得日時: " + fetchedTimestamp.toLocaleDateString() + " " + fetchedTimestamp.getHours() + ":" + ("00" + fetchedTimestamp.getMinutes()).slice(-2) + ":" + ("00" + fetchedTimestamp.getSeconds()).slice(-2);
- const quizFetchedTimestamp = new Date((typeof quizFetchedTime === "number")? quizFetchedTime : nowTime);
- const quizFetchedTimeString = createElem("p", { className: "kadai-time" });
- quizFetchedTimeString.innerText = "クイズ取得日時: " + quizFetchedTimestamp.toLocaleDateString() + " " + quizFetchedTimestamp.getHours() + ":" + ("00" + quizFetchedTimestamp.getMinutes()).slice(-2) + ":" + ("00" + quizFetchedTimestamp.getSeconds()).slice(-2);
-
- const dueGroupHeaderName = ["締め切り24時間以内", "締め切り5日以内", "締め切り14日以内", "その他"];
- const dueGroupColor = ["danger", "warning", "success", "other"];
- const initLetter = ["a", "b", "c", "d"];
- const lectureIDMap = createLectureIDMap(lectureIDList);
-
- // 0: <24h, 1: <5d, 2: <14d, 3: >14d
- for (let i = 0; i < 4; i++) {
- let entryCount = 0;
- // 色別のグループを作成する
- const dueGroupHeader = DueGroupDom.header.cloneNode(true);
- const dueGroupHeaderTitle = DueGroupDom.headerTitle.cloneNode(true);
- dueGroupHeader.className = `sidenav-${dueGroupColor[i]}`;
- dueGroupHeader.style.display = "none";
- dueGroupHeaderTitle.textContent = `${dueGroupHeaderName[i]}`;
- dueGroupHeader.appendChild(dueGroupHeaderTitle);
- const dueGroupContainer = DueGroupDom.container.cloneNode(true);
- dueGroupContainer.classList.add(`sidenav-list-${dueGroupColor[i]}`);
- dueGroupContainer.style.display = "none";
-
- // 各講義についてループ
- for (const item of kadaiList) {
- // 課題アイテムを入れるやつを作成
- const dueGroupBody = DueGroupDom.body.cloneNode(true);
- dueGroupBody.className = `kadai-${dueGroupColor[i]}`;
- dueGroupBody.id = initLetter[i] + item.lectureID;
- const dueGroupLectureName = DueGroupDom.lectureName.cloneNode(true) as HTMLAnchorElement;
- dueGroupLectureName.classList.add(`lecture-${dueGroupColor[i]}`, "lecture-name")
- dueGroupLectureName.textContent = "" + (lectureIDMap.get(item.lectureID) || "???");
- // const topSite = item.getTopSite();
- // if (topSite != null) {
- // dueGroupLectureName.href = topSite;
- // }
- dueGroupBody.appendChild(dueGroupLectureName);
-
- // 各講義の課題一覧についてループ
- let cnt = 0;
- for (const kadai of item.kadaiEntries) {
- let kadaiCheckbox = KadaiEntryDom.checkbox.cloneNode(true);
- const kadaiLabel = KadaiEntryDom.label.cloneNode(true);
- const kadaiDueDate = KadaiEntryDom.dueDate.cloneNode(true);
- const kadaiRemainTime = KadaiEntryDom.remainTime.cloneNode(true);
- const kadaiTitle = KadaiEntryDom.title.cloneNode(true);
- const memoBadge = document.createElement("span");
- memoBadge.classList.add("add-badge", "add-badge-success");
- memoBadge.innerText = "メモ";
- const quizBadge = document.createElement("span");
- quizBadge.classList.add("add-badge", "add-badge-quiz");
- quizBadge.innerText = "クイズ";
-
- const _date = new Date(kadai.dueDateTimestamp * 1000);
- const dispDue = _date.toLocaleDateString() + " " + _date.getHours() + ":" + ("00" + _date.getMinutes()).slice(-2);
- const timeRemain = getTimeRemain((kadai.dueDateTimestamp * 1000 - nowTime) / 1000);
-
- const daysUntilDue = getDaysUntil(nowTime, kadai.dueDateTimestamp * 1000);
- if ((daysUntilDue > 0 && daysUntilDue <= 1 && i === 0) || (daysUntilDue > 1 && daysUntilDue <= 5 && i === 1) || (daysUntilDue > 5 && daysUntilDue <= 14 && i === 2) || (daysUntilDue > 14 && i === 3)) {
- kadaiDueDate.textContent = "" + dispDue;
- kadaiRemainTime.textContent = `あと${timeRemain[0]}日${timeRemain[1]}時間${timeRemain[2]}分`;
- kadaiTitle.textContent = "" + kadai.assignmentTitle;
- if (kadai.isFinished) kadaiCheckbox.checked = true;
- kadaiCheckbox.id = kadai.kadaiID;
- kadaiCheckbox.lectureID = item.lectureID;
- kadaiCheckbox.addEventListener("change", toggleKadaiFinishedFlag, false);
- kadaiLabel.htmlFor = kadai.kadaiID;
-
- if (kadai.isMemo) {
- kadaiTitle.textContent = "";
- kadaiTitle.appendChild(memoBadge);
- kadaiTitle.append(kadai.assignmentTitle);
- }
-
- if (kadai.isQuiz) {
- kadaiTitle.textContent = "";
- kadaiTitle.appendChild(quizBadge);
- kadaiTitle.append(kadai.assignmentTitle);
- }
-
- appendChildAll(dueGroupBody, [kadaiCheckbox, kadaiLabel, kadaiDueDate, kadaiRemainTime, kadaiTitle]);
- cnt++;
- }
- }
- // 各講義の課題で該当するものがある場合はグループに追加
- if (cnt > 0) {
- dueGroupContainer.appendChild(dueGroupBody);
- entryCount++;
- }
- }
- if (entryCount > 0) {
- dueGroupHeader.style.display = "";
- dueGroupContainer.style.display = "";
- }
- appendChildAll(subPandA, [version, fetchedTimeString, quizFetchedTimeString, kadaiDiv]);
- appendChildAll(kadaiDiv, [dueGroupHeader, dueGroupContainer]);
- }
-
- // 何もない時はRelaxPandAを表示する
- if (kadaiList.length === 0) {
- const kadaiTab = kadaiDiv;
- const relaxDiv = createElem("div", { className: "relaxpanda" });
- const relaxPandaP = createElem("p", { className: "relaxpanda-p", innerText: "現在表示できる課題はありません" });
- const relaxPandaImg = createElem("img", {
- className: "relaxpanda-img",
- alt: "logo",
- src: chrome.extension.getURL("img/relaxPanda.png"),
- });
- appendChildAll(relaxDiv, [relaxPandaP, relaxPandaImg]);
- kadaiTab.appendChild(relaxDiv);
- }
+function addSubPandAToPopup(): Element | null {
+ if (subpandaRoot == null) return null;
+ console.log(subpandaRoot);
+ return subpandaRoot;
}
function initSubPandA() {
- addSubPandAToPopup();
- dumpCache();
+ const root = addSubPandAToPopup();
+ root && updateSubPandA(root);
}
initSubPandA();
From c6a23188473e8c6a57e474779e52334a8bc3772c Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 26 May 2021 23:14:41 +0900
Subject: [PATCH 007/196] =?UTF-8?q?fix:=20mustache=E3=82=92accessible?=
=?UTF-8?q?=E3=81=AB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
public/manifest.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/public/manifest.json b/public/manifest.json
index 10daabe..4aad3e5 100644
--- a/public/manifest.json
+++ b/public/manifest.json
@@ -40,6 +40,7 @@
"web_accessible_resources": [
"css/custom-panda.css",
"img/logo.png",
- "img/relaxPanda.png"
+ "img/relaxPanda.png",
+ "views/minipanda.mustache"
]
}
\ No newline at end of file
From 2fd733ff732fc98e6034051b9789acc197234db6 Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 26 May 2021 23:24:27 +0900
Subject: [PATCH 008/196] =?UTF-8?q?=E3=83=A1=E3=83=A2=E3=81=AE=E6=9C=9F?=
=?UTF-8?q?=E9=99=90=E3=81=AE=E3=83=87=E3=83=95=E3=82=A9=E3=83=AB=E3=83=88?=
=?UTF-8?q?=E5=80=A4=E3=82=92=E8=A8=AD=E5=AE=9A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/minipanda.ts | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/minipanda.ts b/src/minipanda.ts
index 891056e..2480b22 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -207,6 +207,8 @@ function registerEventHandlers(root: Element) {
function initState(root: Element) {
// @ts-ignore
root.querySelector('#kadaiTab')?.checked = true;
+ // @ts-ignore
+ root.querySelector('.todoDue')?.value = new Date(`${new Date().toISOString().substr(0, 16)}-10:00`).toISOString().substr(0, 16);
}
async function displayMiniPandA(mergedKadaiList: Array, lectureIDList: Array): Promise{
From 4b10ae701667460de85e8be5956da9de2ffa94f4 Mon Sep 17 00:00:00 2001
From: das08
Date: Thu, 27 May 2021 11:41:19 +0900
Subject: [PATCH 009/196] =?UTF-8?q?template=E3=81=AE=E7=B7=A8=E9=9B=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
public/views/minipanda.mustache | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/public/views/minipanda.mustache b/public/views/minipanda.mustache
index a678f4c..25bc4fd 100644
--- a/public/views/minipanda.mustache
+++ b/public/views/minipanda.mustache
@@ -32,6 +32,7 @@
{{#dangerElements}}
{{lectureName}}
+ {{#entries}}
{{date}}
@@ -46,6 +47,7 @@
{{/isQuiz}}
{{title}}
+ {{/entries}}
{{/dangerElements}}
@@ -59,6 +61,7 @@
{{#warningElements}}
{{lectureName}}
+ {{#entries}}
{{date}}
@@ -73,6 +76,7 @@
{{/isQuiz}}
{{title}}
+ {{/entries}}
{{/warningElements}}
@@ -86,6 +90,7 @@
{{#successElements}}
{{lectureName}}
+ {{#entries}}
{{date}}
@@ -100,6 +105,7 @@
{{/isQuiz}}
{{title}}
+ {{/entries}}
{{/successElements}}
@@ -113,6 +119,7 @@
{{#otherElements}}
{{lectureName}}
+ {{#entries}}
{{date}}
@@ -127,6 +134,7 @@
{{/isQuiz}}
{{title}}
+ {{/entries}}
{{/otherElements}}
From ba16ab5048b2248031d40bf5a38dbc1f5061f6c4 Mon Sep 17 00:00:00 2001
From: das08
Date: Thu, 27 May 2021 11:42:43 +0900
Subject: [PATCH 010/196] =?UTF-8?q?=E5=90=8C=E4=B8=80=E8=AC=9B=E7=BE=A9?=
=?UTF-8?q?=E5=90=8D=E3=81=AE=E8=AA=B2=E9=A1=8C=E3=82=92=E3=81=BE=E3=81=A8?=
=?UTF-8?q?=E3=82=81=E3=81=9F=EF=BC=8B=E3=82=BD=E3=83=BC=E3=83=88=E3=81=99?=
=?UTF-8?q?=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E3=81=97=E3=81=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/minipanda.ts | 49 +++++++++++++++++++++++++++++++++++++-----------
1 file changed, 38 insertions(+), 11 deletions(-)
diff --git a/src/minipanda.ts b/src/minipanda.ts
index 2480b22..46b7994 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -70,8 +70,8 @@ export function createMiniPandAGeneralized(root: Element, kadaiList: Array) => {
+ // @ts-ignore
+ const lecName = elements.map(e => e.lectureName);
+ if (lecName.includes(lectureName)){
+ const idx = lecName.indexOf(lectureName);
+ // @ts-ignore
+ elements[idx].entries.push(entry);
+ // @ts-ignore ソートする
+ elements[idx].entries.sort((a, b) => {return a.timestamp - b.timestamp})
+ } else {
+ elements.push(vars);
+ }
};
if (daysUntilDue > 0 && daysUntilDue <= 1) {
- dangerElements.push(vars);
+ appendElement(lectureName, dangerElements);
} else if (daysUntilDue > 1 && daysUntilDue <= 5) {
- warningElements.push(vars);
+ appendElement(lectureName, warningElements);
} else if (daysUntilDue > 5 && daysUntilDue <= 14) {
- successElements.push(vars);
+ appendElement(lectureName, successElements);
} else {
- otherElements.push(vars);
+ appendElement(lectureName, otherElements);
}
});
@@ -99,18 +117,27 @@ export function createMiniPandAGeneralized(root: Element, kadaiList: Array) => {
+ elements.sort((a, b) => {
+ // @ts-ignore
+ const timestamp = (o) => Math.min(...o.entries.map((p) => p.timestamp));
+ return timestamp(a) - timestamp(b);
+ });
+ return elements;
+ };
+
const templateVars = {
kadaiFetchedTime: kadaiFetchedTimeString,
quizFetchedTime: quizFetchedTimeString,
minipandaLogo: chrome.extension.getURL("img/logo.png"),
VERSION: VERSION,
- dangerElements: dangerElements,
+ dangerElements: sortElements(dangerElements),
showDanger: dangerElements.length > 0,
- warningElements: warningElements,
+ warningElements: sortElements(warningElements),
showWarning: warningElements.length > 0,
- successElements: successElements,
+ successElements: sortElements(successElements),
showSuccess: successElements.length > 0,
- otherElements: otherElements,
+ otherElements: sortElements(otherElements),
showOther: otherElements.length > 0,
addMemoBoxLectures: addMemoBoxLectures,
subset: subset
From 3abd750d99f5dc3f971b7cfa76603a7004a3a04f Mon Sep 17 00:00:00 2001
From: tinaxd <31384595+tinaxd@users.noreply.github.com>
Date: Sat, 5 Jun 2021 22:11:52 +0900
Subject: [PATCH 011/196] =?UTF-8?q?=E8=AC=9B=E7=BE=A9=E5=90=8D=E3=82=B8?=
=?UTF-8?q?=E3=83=A3=E3=83=B3=E3=83=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/minipanda.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/minipanda.ts b/src/minipanda.ts
index 46b7994..7f31429 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -80,6 +80,7 @@ export function createMiniPandAGeneralized(root: Element, kadaiList: Array
Date: Tue, 15 Jun 2021 13:16:27 +0900
Subject: [PATCH 012/196] =?UTF-8?q?=E8=AA=B2=E9=A1=8C=E3=82=B8=E3=83=A3?=
=?UTF-8?q?=E3=83=B3=E3=83=97=E3=81=AE=E5=BE=AE=E4=BF=AE=E6=AD=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
public/views/minipanda.mustache | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/public/views/minipanda.mustache b/public/views/minipanda.mustache
index 25bc4fd..64458b0 100644
--- a/public/views/minipanda.mustache
+++ b/public/views/minipanda.mustache
@@ -31,8 +31,8 @@
{{#dangerElements}}
-
{{lectureName}}
{{#entries}}
+
{{lectureName}}
{{date}}
@@ -60,8 +60,8 @@
{{#warningElements}}
-
{{lectureName}}
{{#entries}}
+
{{lectureName}}
{{date}}
@@ -89,8 +89,8 @@
{{#successElements}}
-
{{lectureName}}
{{#entries}}
+
{{lectureName}}
{{date}}
@@ -118,8 +118,8 @@
{{#otherElements}}
-
{{lectureName}}
{{#entries}}
+
{{lectureName}}
{{date}}
From 270cdcb2fb1f332ff70166f88d4ed605139eccac Mon Sep 17 00:00:00 2001
From: tinaxd <31384595+tinaxd@users.noreply.github.com>
Date: Fri, 18 Jun 2021 12:54:04 +0900
Subject: [PATCH 013/196] relaxpanda
---
public/views/minipanda.mustache | 7 +++++++
src/minipanda.ts | 10 +++++++++-
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/public/views/minipanda.mustache b/public/views/minipanda.mustache
index 64458b0..7442f4f 100644
--- a/public/views/minipanda.mustache
+++ b/public/views/minipanda.mustache
@@ -139,6 +139,13 @@
{{/otherElements}}
{{/showOther}}
+
+ {{#showRelaxPandA}}
+
+
現在表示できる課題はありません
+

+
+ {{/showRelaxPandA}}
{{^subset}}
diff --git a/src/minipanda.ts b/src/minipanda.ts
index 7f31429..e392a86 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -127,6 +127,13 @@ export function createMiniPandAGeneralized(root: Element, kadaiList: Array
0,
addMemoBoxLectures: addMemoBoxLectures,
- subset: subset
+ subset: subset,
+ showRelaxPandA: relaxPandA
};
fetch(chrome.extension.getURL("views/minipanda.mustache"))
From 88fbddbc0a495260a636946606d663876694f641 Mon Sep 17 00:00:00 2001
From: tinaxd <31384595+tinaxd@users.noreply.github.com>
Date: Fri, 18 Jun 2021 13:06:03 +0900
Subject: [PATCH 014/196] dom-refactoring-lecture-merge-fix
---
public/views/minipanda.mustache | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/public/views/minipanda.mustache b/public/views/minipanda.mustache
index 7442f4f..b5442dd 100644
--- a/public/views/minipanda.mustache
+++ b/public/views/minipanda.mustache
@@ -118,8 +118,8 @@
{{#otherElements}}
+
{{lectureName}}
{{#entries}}
-
{{lectureName}}
{{date}}
From 0347b41ed8df0457a432c5afc93b8a1a5151229b Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 1 Sep 2021 12:03:18 +0900
Subject: [PATCH 015/196] =?UTF-8?q?fix:=20README=E3=81=AE=E5=A4=89?=
=?UTF-8?q?=E6=9B=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 78 ++++-------------------------------------------
README_en.md | 85 ++--------------------------------------------------
package.json | 6 ++--
3 files changed, 11 insertions(+), 158 deletions(-)
diff --git a/README.md b/README.md
index 3b0f77d..19e9b9f 100644
--- a/README.md
+++ b/README.md
@@ -1,79 +1,13 @@
-# ComfortablePandATS
-PandAを快適にするブラウザ拡張機能です.
+# Comfortable Sakai
+京都大学発の拡張機能「Comfortable PandA」をSakai Communityへコントリビューションするプロジェクトです。
-# ダウンロードリンク
-- [Google Chrome](https://chrome.google.com/webstore/detail/comfortable-panda/cecjhdkagakhonnmddjgncmdldmppnoe)
-- [Firefox](https://tinaxd.github.io/comfortable-panda-firefox-updates/index.html)
-- [Microsoft Edge](https://microsoftedge.microsoft.com/addons/detail/njbljhcmnodocldppoiejkcmcebpmljc)
-# 使い方
-1. 拡張機能をブラウザにインストールします.
-1. PandAにログインします.
-1. PandAの右上に☰ボタンが追加されていたら導入成功です.
-
-# 機能紹介
-## タブの色付け
-課題やクイズの締め切り期日に応じて講義タブが色付けされます.
-- 
- 締め切り24時間以内
-- 
- 締め切り5日以内
-- 
- 締め切り14日以内
-
-## 新規課題通知
-前回アクセス時から新たに追加された課題があった場合,講義タブの左上に赤丸の通知バッジを表示します.
-通知バッジが表示されているサイトを開くと通知バッジは消えます.
-
-## miniPandA
-右上の☰を押すとminiPandAが開きます.
-公開されている課題とクイズの一覧が表示されます.
-また,メモ機能を使うことでminiPandA上に課題メモを追加することができます.
-
-
-# キャッシュ機能
-PandAへの負荷を軽減するために課題・クイズ取得にキャッシュ機能を導入しています.
-デフォルトのキャッシュ間隔は以下のとおりです.
-- 課題取得---2分間
-- クイズ取得---10分間
-キャッシュ時間は設定から変更することができます
-
-
-# Screenshot
-
-
-# 更新履歴
-- 2020/05/20 v0.9.0 Prototype release
-- 2020/05/21 v1.0.0 一般公開
-- 2020/05/22 v1.0.1 小さなバグを修正。
-- 2020/05/26 v1.0.2 通知バッジに関するバグを修正。
-- 2020/06/10 v1.1.0 全ての課題を表示するサイドメニューを追加。
-- 2020/06/11 v1.1.3 小さなバグを修正。
-- 2020/06/13 v1.2.0 課題チェックボタンを追加。
-- 2020/06/23 v1.3.0 クイズ・試験タブを追加。
-- 2020/06/24 v1.3.1 バグを修正。
-- 2020/06/30 v1.4.0 カスタムToDo機能を追加。
-- 2020/08/16 v1.4.1 冗長な行を削除。
-- 2020/08/17 v1.5.0 relax PandA と更新中インジケーターを追加。
-- 2020/10/02 v1.5.2 通知バッジがリセットされるバグを修正。
-- 2020/10/25 v1.6.0 キャッシュを使用するようになった。
-- 2020/10/28 v1.6.1 Storage アクセスを非同期化。
-- 2020/12/22 v1.7.0 締め切り順に課題がソートされるようになった。
-- 2021/03/28 v2.0.0 Sakai 21 のサポート
-- 2021/04/10 v2.1.0 エラー修正。
-- 2021/04/13 v3.0.0 Typescript で一から作り直し。
-- 2021/04/13 v3.0.4 バグ修正。
-- 2021/04/13 v3.1.0 バグ修正。
-- 2021/05/05 v3.2.0 SubPandA 実装。
-- 2021/05/15 v3.3.0 クイズを取得可能にした。
-- 2021/05/16 v3.4.0 設定画面を追加。
-- 2021/05/16 v3.4.1 小さなバグを修正。
-- 2021/05/16 v3.4.3 小さなバグを修正。
-- 2021/05/17 v3.5.0 カラーユニバーサルデザインに対応
-- 2021/05/17 v3.5.2 締切が14日以上の課題も色付けするように
+# 動作保証
+- Sakai 20, 21(安定)
+- Sakai 12(β版)
# コンパイル方法
-Run
+`comfortable-sakai`ディレクトリで下記コマンドを実行する。
```
npx webpack
```
diff --git a/README_en.md b/README_en.md
index 3d4b1a2..5800e9a 100644
--- a/README_en.md
+++ b/README_en.md
@@ -1,83 +1,2 @@
-# ComfortablePandATS
-A browser extention that makes PandA life comfortable
-
-# Installation links
-- [Google Chrome](https://chrome.google.com/webstore/detail/comfortable-panda/cecjhdkagakhonnmddjgncmdldmppnoe)
-- [Firefox](https://tinaxd.github.io/comfortable-panda-firefox-updates/index.html)
-- [Microsoft Edge](https://microsoftedge.microsoft.com/addons/detail/njbljhcmnodocldppoiejkcmcebpmljc)
-
-
-# Manual installation(not recommended)
-1. Go to `chrome://extensions/` on your GoogleChrome
-1. Enable **developer mode**.
-1. Click **LOAD UNPACKED** button on upper left hand corner.
-1. Select this folder(comfortable-panda) and install.
-1. You are all set:)
-
-# How to compile
-Run
-```
-npx webpack
-```
-in the root directory of cloned repository.
-
-# Usage
-1. Login to PandA
-1. Proceed to main page.
-1. Done. Your upper tab color is changed and ☰ icon is displayed.
-
-# Features
-## Tab coloring
-Colors lecture tab according to due date.
-- 
- Due date <= 1 Day ahead
-- 
- Due date <= 5 Days ahead
-- 
- Due date <= 14 Days ahead
-
-## Notification Badge
-Tells your unchecked latest assignments.
-
-If you open lecture page with notification badge on, the badge will disappear.
-
-## miniPandA (Side-menu)
-Click ☰ to open miniPandA.
-All available assignments as well as quizzes will be displayed.
-You can add your custom assignment to miniPandA with PLUS button located on the upper right hand side.
-
-Also check box is available for you to distinguish completed assignments from working assignments.
-
-# Screenshot
-
-
-# Update Log
-- 2020/05/20 v0.9.0 Prototype release
-- 2020/05/21 v1.0.0 Release
-- 2020/05/22 v1.0.1 Fixed some minor bugs & refactored
-- 2020/05/26 v1.0.2 Fixed notification badge related bug
-- 2020/06/10 v1.1.0 Added side menu for displaying all available kadais.
-- 2020/06/11 v1.1.3 Minor bug fix & enhancement.
-- 2020/06/13 v1.2.0 Added check button.
-- 2020/06/23 v1.3.0 Added quiz/exam tab.
-- 2020/06/24 v1.3.1 Fixed bug.
-- 2020/06/30 v1.4.0 Add custom todo.
-- 2020/08/16 v1.4.1 Removed redundant lines.
-- 2020/08/17 v1.5.0 Added relax PandA and spinning wheel.
-- 2020/10/02 v1.5.2 Fixed badge reset bug.
-- 2020/10/25 v1.6.0 Add cache.
-- 2020/10/28 v1.6.1 Using async on storage.get
-- 2020/12/22 v1.7.0 Order assignments by closestTime.
-- 2021/03/28 v2.0.0 Support for Sakai21.
-- 2021/04/10 v2.1.0 Fixed errors.
-- 2021/04/13 v3.0.0 Re-wrote everything using Typescript.
-- 2021/04/13 v3.0.4 Bug fix.
-- 2021/04/13 v3.1.0 Bug fix.
-- 2021/05/05 v3.2.0 SubPandA first release.
-- 2021/05/15 v3.3.0 Add quiz-fetch feature.
-- 2021/05/16 v3.4.0 Add setting tab.
-- 2021/05/16 v3.4.1 Fixed minor bugs.
-- 2021/05/17 v3.5.0 Support for color universal design.
-
-# License
-Apache-2.0 License
+# Comfortable Sakai
+tbd
diff --git a/package.json b/package.json
index 82cdf1e..33e7c42 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
- "name": "comfortable-panda-ts",
+ "name": "comfortable-sakai",
"version": "1.0.0",
- "description": "The TypeScript version of Comfortable PandA",
+ "description": "Comfortable Sakai is a browser extension for managing assignments and quizzes on Sakai LMS.",
"main": "index.ts",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
@@ -9,7 +9,7 @@
"build": "webpack"
},
"author": "",
- "license": "MIT",
+ "license": "Apache-2.0",
"dependencies": {
"@types/chrome": "^0.0.144",
"copy-webpack-plugin": "^9.0.0",
From a9d1ede6a80f57117df807f3c910451e24a31f8b Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 1 Sep 2021 12:08:55 +0900
Subject: [PATCH 016/196] =?UTF-8?q?fix:=20package=E3=81=AE=E6=9B=B4?=
=?UTF-8?q?=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
package-lock.json | 5 ++---
package.json | 2 +-
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 7a117a6..eadb363 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,13 +1,12 @@
{
- "name": "comfortable-panda-ts",
+ "name": "comfortable-sakai",
"version": "1.0.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
- "name": "comfortable-panda-ts",
"version": "1.0.0",
- "license": "MIT",
+ "license": "Apache-2.0",
"dependencies": {
"@types/chrome": "^0.0.144",
"copy-webpack-plugin": "^9.0.0",
diff --git a/package.json b/package.json
index 33e7c42..6157092 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,7 @@
"tsc": "tsc",
"build": "webpack"
},
- "author": "",
+ "author": "das08(Kyoto University)",
"license": "Apache-2.0",
"dependencies": {
"@types/chrome": "^0.0.144",
From c66d3526a5ecf1b36868b6af24558aa7bf0e189d Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 1 Sep 2021 12:10:40 +0900
Subject: [PATCH 017/196] =?UTF-8?q?fix:=20=E5=90=8D=E7=A7=B0=E3=81=AE?=
=?UTF-8?q?=E5=A4=89=E6=9B=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
public/manifest.json | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/public/manifest.json b/public/manifest.json
index 10daabe..957158e 100644
--- a/public/manifest.json
+++ b/public/manifest.json
@@ -1,7 +1,7 @@
{
- "name": "Comfortable PandA",
- "description": "Makes our PandA life more comfortable!",
- "version": "3.5.2",
+ "name": "Comfortable Sakai",
+ "description": "Comfortable Sakai is a browser extension for managing assignments and quizzes on Sakai LMS.",
+ "version": "1.0.0",
"manifest_version": 2,
"icons": {
"16": "img/icon16.png",
@@ -14,7 +14,7 @@
"24": "img/icon24.png",
"32": "img/icon32.png"
},
- "default_title": "Comfortable PandA",
+ "default_title": "Comfortable Sakai",
"default_popup": "popup.html"
},
"content_scripts": [
From 4053e820be6b4f2e36c7a7128acebe9973a1f62c Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 1 Sep 2021 12:13:48 +0900
Subject: [PATCH 018/196] =?UTF-8?q?fix:=20eslint=E3=81=AE=E4=BF=AE?=
=?UTF-8?q?=E6=AD=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.eslintrc.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.eslintrc.json b/.eslintrc.json
index 7b84a70..4220ebd 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -4,7 +4,7 @@
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended",
- "prettier/@typescript-eslint"
+ "prettier"
],
"plugins": [
"@typescript-eslint"
From 71930d986b3ff161782141d976e385864357743c Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 1 Sep 2021 12:15:06 +0900
Subject: [PATCH 019/196] =?UTF-8?q?fix:=20=E3=83=90=E3=83=BC=E3=82=B8?=
=?UTF-8?q?=E3=83=A7=E3=83=B3=E3=81=AE=E5=A4=89=E6=9B=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/content_script.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/content_script.ts b/src/content_script.ts
index 5e1b8fd..f9a1196 100644
--- a/src/content_script.ts
+++ b/src/content_script.ts
@@ -21,7 +21,7 @@ import {
import { Settings } from "./settings";
const baseURL = "https://panda.ecs.kyoto-u.ac.jp";
-export const VERSION = "3.5.2";
+export const VERSION = "1.0.0";
export let kadaiCacheInterval = 60 * 2;
export let quizCacheInterval = 60 * 10;
export let kadaiFetchedTime: number;
From 8fa9f153ca371c0c3e15f8f5c3f113028ff2dc68 Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 1 Sep 2021 13:22:23 +0900
Subject: [PATCH 020/196] =?UTF-8?q?fix:=20manifest.json=E3=81=AE=E5=A0=B4?=
=?UTF-8?q?=E6=89=80=E3=82=92=E5=A4=89=E6=9B=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
public/manifest.json => manifest.json | 0
webpack.config.js | 3 ++-
2 files changed, 2 insertions(+), 1 deletion(-)
rename public/manifest.json => manifest.json (100%)
diff --git a/public/manifest.json b/manifest.json
similarity index 100%
rename from public/manifest.json
rename to manifest.json
diff --git a/webpack.config.js b/webpack.config.js
index 627974f..4a3c1c4 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -28,7 +28,8 @@ module.exports = {
plugins: [
new CopyPlugin({
patterns:[
- {from: "./public", to: "./"}
+ {from: "./public", to: "./"},
+ {from: "./manifest.json", }
],
}),
]
From 20c31d638a348461fdeb3b99dca579e3db02d50f Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 1 Sep 2021 13:48:57 +0900
Subject: [PATCH 021/196] =?UTF-8?q?add:=20locale=E3=83=95=E3=82=A1?=
=?UTF-8?q?=E3=82=A4=E3=83=AB=E3=81=AE=E8=A8=AD=E5=AE=9A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
_locales/en/messages.json | 3 +++
_locales/ja/messages.json | 3 +++
manifest.json | 3 ++-
webpack.config.js | 1 +
4 files changed, 9 insertions(+), 1 deletion(-)
create mode 100644 _locales/en/messages.json
create mode 100644 _locales/ja/messages.json
diff --git a/_locales/en/messages.json b/_locales/en/messages.json
new file mode 100644
index 0000000..55945d8
--- /dev/null
+++ b/_locales/en/messages.json
@@ -0,0 +1,3 @@
+{
+ "EXTENSION_DESCRIPTION": {"message": "Comfortable Sakai is a browser extension for managing assignments and quizzes on Sakai LMS."}
+}
\ No newline at end of file
diff --git a/_locales/ja/messages.json b/_locales/ja/messages.json
new file mode 100644
index 0000000..e0b87aa
--- /dev/null
+++ b/_locales/ja/messages.json
@@ -0,0 +1,3 @@
+{
+ "EXTENSION_DESCRIPTION": {"message":"Comfortable SakaiはSakai LMS上の課題やクイズを管理するための拡張機能です。"}
+}
\ No newline at end of file
diff --git a/manifest.json b/manifest.json
index 957158e..121a37c 100644
--- a/manifest.json
+++ b/manifest.json
@@ -1,8 +1,9 @@
{
"name": "Comfortable Sakai",
- "description": "Comfortable Sakai is a browser extension for managing assignments and quizzes on Sakai LMS.",
+ "description": "__MSG_EXTENSION_DESCRIPTION__",
"version": "1.0.0",
"manifest_version": 2,
+ "default_locale": "en",
"icons": {
"16": "img/icon16.png",
"48": "img/icon48.png",
diff --git a/webpack.config.js b/webpack.config.js
index 4a3c1c4..9a1854d 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -29,6 +29,7 @@ module.exports = {
new CopyPlugin({
patterns:[
{from: "./public", to: "./"},
+ {from: "./_locales", to: "./_locales"},
{from: "./manifest.json", }
],
}),
From f48c3af23d40f85175f10f593631814d6b9f3d63 Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 1 Sep 2021 14:18:43 +0900
Subject: [PATCH 022/196] =?UTF-8?q?add:=20locale=E3=81=AB=E5=BF=9C?=
=?UTF-8?q?=E3=81=98=E3=81=A6=E3=83=86=E3=82=AD=E3=82=B9=E3=83=88=E3=82=92?=
=?UTF-8?q?=E7=BD=AE=E3=81=8D=E6=8F=9B=E3=81=881?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
_locales/en/messages.json | 10 +++++++++-
_locales/ja/messages.json | 10 +++++++++-
src/minipanda.ts | 19 +++++++++----------
src/network.ts | 4 +---
4 files changed, 28 insertions(+), 15 deletions(-)
diff --git a/_locales/en/messages.json b/_locales/en/messages.json
index 55945d8..545dbfb 100644
--- a/_locales/en/messages.json
+++ b/_locales/en/messages.json
@@ -1,3 +1,11 @@
{
- "EXTENSION_DESCRIPTION": {"message": "Comfortable Sakai is a browser extension for managing assignments and quizzes on Sakai LMS."}
+ "EXTENSION_DESCRIPTION": {"message": "Comfortable Sakai is a browser extension for managing assignments and quizzes on Sakai LMS."},
+ "tab_assignments": {"message": "Assignments"},
+ "tab_settings": {"message": "Settings"},
+ "todo_box_course_name": {"message": "Course Name"},
+ "todo_box_memo": {"message": "Memo"},
+ "todo_box_due_date": {"message": "Due Date"},
+ "todo_box_add": {"message": "Add"},
+ "badge_quiz": {"message": "Quiz"},
+ "badge_memo": {"message": "Memo"}
}
\ No newline at end of file
diff --git a/_locales/ja/messages.json b/_locales/ja/messages.json
index e0b87aa..67107d1 100644
--- a/_locales/ja/messages.json
+++ b/_locales/ja/messages.json
@@ -1,3 +1,11 @@
{
- "EXTENSION_DESCRIPTION": {"message":"Comfortable SakaiはSakai LMS上の課題やクイズを管理するための拡張機能です。"}
+ "EXTENSION_DESCRIPTION": {"message":"Comfortable SakaiはSakai LMS上の課題やクイズを管理するための拡張機能です。"},
+ "tab_assignments": {"message": "課題一覧"},
+ "tab_settings": {"message": "詳細設定"},
+ "todo_box_course_name": {"message": "講義名"},
+ "todo_box_memo": {"message": "メモ内容"},
+ "todo_box_due_date": {"message": "期限"},
+ "todo_box_add": {"message": "追加する"},
+ "badge_quiz": {"message": "クイズ"},
+ "badge_memo": {"message": "メモ"}
}
\ No newline at end of file
diff --git a/src/minipanda.ts b/src/minipanda.ts
index 6a97f30..42a0d11 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -60,9 +60,9 @@ function createMiniPandA(): void {
miniPandACloseBtn.addEventListener("click", toggleMiniPandA);
const kadaiTab = createElem("input", { type: "radio", id: "kadaiTab", name: "cp_tab", checked: true }, {"click": toggleKadaiTab});
- const kadaiTabLabel = createElem("label", { htmlFor: "kadaiTab", innerText: " 課題一覧 " });
+ const kadaiTabLabel = createElem("label", { htmlFor: "kadaiTab", innerText: chrome.i18n.getMessage('tab_assignments') });
const settingsTab = createElem("input", { type: "radio", id: "settingsTab", name: "cp_tab", checked: false }, {"click": toggleSettingsTab});
- const settingsTabLabel = createElem("label", { htmlFor: "settingsTab", innerText: " 詳細設定 " });
+ const settingsTabLabel = createElem("label", { htmlFor: "settingsTab", innerText: chrome.i18n.getMessage('tab_settings') });
const addMemoButton = createElem("button", { className: "plus-button", innerText: "+" },{"click": toggleMemoBox});
const kadaiFetchedTimestamp = new Date( (typeof kadaiFetchedTime === "number")? kadaiFetchedTime : nowTime);
@@ -93,7 +93,7 @@ function createMiniPandA(): void {
function appendMemoBox(lectureIDList: Array): void {
const memoEditBox = createElem("div", {className: "settingsBox addMemoBox", style: "none"});
const memoLabel = createElem("label", {style: "block"});
- const todoLecLabel = cloneElem(memoLabel, {innerText: "講義名"});
+ const todoLecLabel = cloneElem(memoLabel, {innerText: chrome.i18n.getMessage('todo_box_course_name')});
const todoLecSelect = createElem("select", { className: "todoLecName" });
const todoLecOption = createElem("option");
@@ -104,16 +104,16 @@ function appendMemoBox(lectureIDList: Array): void {
todoLecLabel.appendChild(todoLecSelect);
- const todoContentLabel = cloneElem(memoLabel, { innerText: "メモ" });
+ const todoContentLabel = cloneElem(memoLabel, { innerText: chrome.i18n.getMessage('todo_box_memo') });
const todoContentInput = createElem("input", { type: "text", className: "todoContent" });
todoContentLabel.appendChild(todoContentInput);
- const todoDueLabel = cloneElem(memoLabel, {innerText: "期限"});
+ const todoDueLabel = cloneElem(memoLabel, { innerText: chrome.i18n.getMessage('todo_box_due_date') });
const todoDueInput = createElem("input", { type: "datetime-local", className: "todoDue" });
todoDueInput.value = new Date(`${new Date().toISOString().substr(0, 16)}-10:00`).toISOString().substr(0, 16);
todoDueLabel.appendChild(todoDueInput);
- const todoSubmitButton = createElem("button", { type: "submit", id: "todo-add", innerText: "追加" }, {"click": addKadaiMemo});
+ const todoSubmitButton = createElem("button", { type: "submit", id: "todo-add", innerText: chrome.i18n.getMessage('todo_box_add') }, {"click": addKadaiMemo});
appendChildAll(memoEditBox, [todoLecLabel, todoContentLabel, todoDueLabel, todoSubmitButton]);
kadaiDiv.appendChild(memoEditBox);
@@ -164,8 +164,7 @@ async function createSettingsTab(): Promise {
createSettingItem("完了済の課題も色付けする", CPsettings.displayCheckedKadai ?? true, "displayCheckedKadai");
createSettingItem("課題キャッシュ時間 [秒]", CPsettings.kadaiCacheInterval ?? kadaiCacheInterval, "kadaiCacheInterval");
createSettingItem("クイズキャッシュ時間 [秒]", CPsettings.quizCacheInterval ?? quizCacheInterval, "quizCacheInterval");
- createSettingItem("デバッグモード", CPsettings.makePandAGreatAgain ?? false, "makePandAGreatAgain", false);
-
+
createSettingItem("カラー① 締切24時間前", CPsettings.topColorDanger ?? "#f78989", "topColorDanger");
createSettingItem("カラー① 締切5日前", CPsettings.topColorWarning ?? "#fdd783", "topColorWarning");
createSettingItem("カラー① 締切14日前", CPsettings.topColorSuccess ?? "#8bd48d", "topColorSuccess");
@@ -213,8 +212,8 @@ function updateMiniPandA(kadaiList: Array, lectureIDList: Array, baseURL: string, siteID: string): Array {
- let assignment_collection = data.assignment_collection;
- if (!CPsettings.makePandAGreatAgain)
- assignment_collection = assignment_collection.filter((json: any) => json.openTime.epochSecond * 1000 < nowTime)
+ const assignment_collection = data.assignment_collection;
return assignment_collection
.filter((json: any) => json.dueTime.epochSecond * 1000 >= nowTime)
.map((json: any) => {
From 373b7db9cbd2344f76e64ab400687bdd29b8e00b Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 1 Sep 2021 14:44:50 +0900
Subject: [PATCH 023/196] =?UTF-8?q?add:=20locale=E3=81=AB=E5=BF=9C?=
=?UTF-8?q?=E3=81=98=E3=81=A6=E3=83=86=E3=82=AD=E3=82=B9=E3=83=88=E3=82=92?=
=?UTF-8?q?=E7=BD=AE=E3=81=8D=E6=8F=9B=E3=81=882?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
_locales/en/messages.json | 18 +++++++++++++++++-
_locales/ja/messages.json | 18 +++++++++++++++++-
src/minipanda.ts | 26 +++++++++++++-------------
3 files changed, 47 insertions(+), 15 deletions(-)
diff --git a/_locales/en/messages.json b/_locales/en/messages.json
index 545dbfb..889f437 100644
--- a/_locales/en/messages.json
+++ b/_locales/en/messages.json
@@ -7,5 +7,21 @@
"todo_box_due_date": {"message": "Due Date"},
"todo_box_add": {"message": "Add"},
"badge_quiz": {"message": "Quiz"},
- "badge_memo": {"message": "Memo"}
+ "badge_memo": {"message": "Memo"},
+ "settings_assignment_cache": {"message": "Assignment Cache [s]"},
+ "settings_quizzes_cache": {"message": "Test&Quizzes Cache [s]"},
+ "settings_color_checked_item": {"message": "Color course tabs including checked items"},
+ "settings_reset_colors": {"message": "Reset to default colors"},
+ "settings_colors_hour": { "message": "Color #$color$ $time$ hours before due",
+ "placeholders": {
+ "color": { "content": "$1" },
+ "time": { "content": "$2" }
+ }
+ },
+ "settings_colors_day": { "message": "Color #$color$ $time$ days before due",
+ "placeholders": {
+ "color": { "content": "$1" },
+ "time": { "content": "$2" }
+ }
+ }
}
\ No newline at end of file
diff --git a/_locales/ja/messages.json b/_locales/ja/messages.json
index 67107d1..c24f2b0 100644
--- a/_locales/ja/messages.json
+++ b/_locales/ja/messages.json
@@ -7,5 +7,21 @@
"todo_box_due_date": {"message": "期限"},
"todo_box_add": {"message": "追加する"},
"badge_quiz": {"message": "クイズ"},
- "badge_memo": {"message": "メモ"}
+ "badge_memo": {"message": "メモ"},
+ "settings_assignment_cache": {"message": "課題キャッシュ時間 [秒]"},
+ "settings_quizzes_cache": {"message": "クイズキャッシュ時間 [秒]"},
+ "settings_color_checked_item": {"message": "チェック済の課題も色付けする"},
+ "settings_reset_colors": {"message": "デフォルト色に戻す"},
+ "settings_colors_hour": { "message": "カラー #$color$ 締切$time$時間前",
+ "placeholders": {
+ "color": { "content": "$1" },
+ "time": { "content": "$2" }
+ }
+ },
+ "settings_colors_day": { "message": "カラー #$color$ 締切$time$日前",
+ "placeholders": {
+ "color": { "content": "$1" },
+ "time": { "content": "$2" }
+ }
+ }
}
\ No newline at end of file
diff --git a/src/minipanda.ts b/src/minipanda.ts
index 42a0d11..32aad22 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -161,19 +161,19 @@ function createSettingItem(itemDescription: string, value: boolean | number | st
}
async function createSettingsTab(): Promise {
- createSettingItem("完了済の課題も色付けする", CPsettings.displayCheckedKadai ?? true, "displayCheckedKadai");
- createSettingItem("課題キャッシュ時間 [秒]", CPsettings.kadaiCacheInterval ?? kadaiCacheInterval, "kadaiCacheInterval");
- createSettingItem("クイズキャッシュ時間 [秒]", CPsettings.quizCacheInterval ?? quizCacheInterval, "quizCacheInterval");
-
- createSettingItem("カラー① 締切24時間前", CPsettings.topColorDanger ?? "#f78989", "topColorDanger");
- createSettingItem("カラー① 締切5日前", CPsettings.topColorWarning ?? "#fdd783", "topColorWarning");
- createSettingItem("カラー① 締切14日前", CPsettings.topColorSuccess ?? "#8bd48d", "topColorSuccess");
-
- createSettingItem("カラー② 締切24時間前", CPsettings.miniColorDanger ?? "#e85555", "miniColorDanger");
- createSettingItem("カラー② 締切5日前", CPsettings.miniColorWarning ?? "#d7aa57", "miniColorWarning");
- createSettingItem("カラー② 締切14日前", CPsettings.miniColorSuccess ?? "#62b665", "miniColorSuccess");
-
- createSettingItem("デフォルト色に戻す", "reset", "reset");
+ createSettingItem(chrome.i18n.getMessage('settings_color_checked_item'), CPsettings.displayCheckedKadai ?? true, "displayCheckedKadai");
+ createSettingItem(chrome.i18n.getMessage('settings_assignment_cache'), CPsettings.kadaiCacheInterval ?? kadaiCacheInterval, "kadaiCacheInterval");
+ createSettingItem(chrome.i18n.getMessage('settings_quizzes_cache'), CPsettings.quizCacheInterval ?? quizCacheInterval, "quizCacheInterval");
+
+ createSettingItem(chrome.i18n.getMessage('settings_colors_hour', ['1', 24]), CPsettings.topColorDanger ?? "#f78989", "topColorDanger");
+ createSettingItem(chrome.i18n.getMessage('settings_colors_day', ['1', 5]), CPsettings.topColorWarning ?? "#fdd783", "topColorWarning");
+ createSettingItem(chrome.i18n.getMessage('settings_colors_day', ['1', 14]), CPsettings.topColorSuccess ?? "#8bd48d", "topColorSuccess");
+
+ createSettingItem(chrome.i18n.getMessage('settings_colors_hour', ['2', 24]), CPsettings.miniColorDanger ?? "#e85555", "miniColorDanger");
+ createSettingItem(chrome.i18n.getMessage('settings_colors_day', ['2', 5]), CPsettings.miniColorWarning ?? "#d7aa57", "miniColorWarning");
+ createSettingItem(chrome.i18n.getMessage('settings_colors_day', ['2', 14]), CPsettings.miniColorSuccess ?? "#62b665", "miniColorSuccess");
+
+ createSettingItem(chrome.i18n.getMessage('settings_reset_colors'), "reset", "reset");
settingsDiv.style.display = "none";
}
From 472ffc5a64acca5f92b915c96a75acda19b122dc Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 1 Sep 2021 14:46:19 +0900
Subject: [PATCH 024/196] =?UTF-8?q?del:=20=E4=B8=8D=E8=A6=81=E3=81=AA?=
=?UTF-8?q?=E3=82=82=E3=81=AE=E3=82=92=E5=89=8A=E9=99=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/settings.ts | 2 --
src/subpanda.ts | 4 ----
2 files changed, 6 deletions(-)
diff --git a/src/settings.ts b/src/settings.ts
index e74d6b6..e266e0a 100644
--- a/src/settings.ts
+++ b/src/settings.ts
@@ -2,7 +2,6 @@ export class Settings {
kadaiCacheInterval?: number;
quizCacheInterval?: number;
displayCheckedKadai?: boolean;
- makePandAGreatAgain?: boolean;
topColorDanger?: string;
topColorWarning?: string;
topColorSuccess?: string;
@@ -15,7 +14,6 @@ export class DefaultSettings extends Settings {
static kadaiCacheInterval = 120;
static quizCacheInterval = 600;
static displayCheckedKadai = true;
- static makePandAGreatAgain = false;
static topColorDanger = "#f78989";
static topColorWarning = "#fdd783";
static topColorSuccess = "#8bd48d";
diff --git a/src/subpanda.ts b/src/subpanda.ts
index ed33cc7..b211e70 100644
--- a/src/subpanda.ts
+++ b/src/subpanda.ts
@@ -81,10 +81,6 @@ function updateSubPandA(kadaiList: Array, lectureIDList: Array
Date: Wed, 1 Sep 2021 14:58:21 +0900
Subject: [PATCH 025/196] =?UTF-8?q?add:=20locale=E3=81=AB=E5=BF=9C?=
=?UTF-8?q?=E3=81=98=E3=81=A6=E3=83=86=E3=82=AD=E3=82=B9=E3=83=88=E3=82=92?=
=?UTF-8?q?=E7=BD=AE=E3=81=8D=E6=8F=9B=E3=81=883?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
_locales/en/messages.json | 8 +++++---
_locales/ja/messages.json | 9 ++++++---
src/minipanda.ts | 4 ++--
src/subpanda.ts | 4 ++--
4 files changed, 15 insertions(+), 10 deletions(-)
diff --git a/_locales/en/messages.json b/_locales/en/messages.json
index 889f437..5af0c84 100644
--- a/_locales/en/messages.json
+++ b/_locales/en/messages.json
@@ -6,8 +6,8 @@
"todo_box_memo": {"message": "Memo"},
"todo_box_due_date": {"message": "Due Date"},
"todo_box_add": {"message": "Add"},
- "badge_quiz": {"message": "Quiz"},
- "badge_memo": {"message": "Memo"},
+ "quiz": {"message": "Quiz"},
+ "memo": {"message": "Memo"},
"settings_assignment_cache": {"message": "Assignment Cache [s]"},
"settings_quizzes_cache": {"message": "Test&Quizzes Cache [s]"},
"settings_color_checked_item": {"message": "Color course tabs including checked items"},
@@ -23,5 +23,7 @@
"color": { "content": "$1" },
"time": { "content": "$2" }
}
- }
+ },
+ "assignment_acquisition_date": {"message": "Assignment Acquisition Date: "},
+ "testquiz_acquisition_date": {"message": "Test&Quiz Acquisition Date: "}
}
\ No newline at end of file
diff --git a/_locales/ja/messages.json b/_locales/ja/messages.json
index c24f2b0..13cce98 100644
--- a/_locales/ja/messages.json
+++ b/_locales/ja/messages.json
@@ -6,8 +6,8 @@
"todo_box_memo": {"message": "メモ内容"},
"todo_box_due_date": {"message": "期限"},
"todo_box_add": {"message": "追加する"},
- "badge_quiz": {"message": "クイズ"},
- "badge_memo": {"message": "メモ"},
+ "quiz": {"message": "クイズ"},
+ "memo": {"message": "メモ"},
"settings_assignment_cache": {"message": "課題キャッシュ時間 [秒]"},
"settings_quizzes_cache": {"message": "クイズキャッシュ時間 [秒]"},
"settings_color_checked_item": {"message": "チェック済の課題も色付けする"},
@@ -23,5 +23,8 @@
"color": { "content": "$1" },
"time": { "content": "$2" }
}
- }
+ },
+ ,
+ "assignment_acquisition_date": {"message": "課題取得日時: "},
+ "testquiz_acquisition_date": {"message": "クイズ取得日時: "}
}
\ No newline at end of file
diff --git a/src/minipanda.ts b/src/minipanda.ts
index 32aad22..f0aef23 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -212,8 +212,8 @@ function updateMiniPandA(kadaiList: Array, lectureIDList: Array, lectureIDList: Array
Date: Wed, 8 Sep 2021 11:11:36 +0900
Subject: [PATCH 026/196] Merge branch 'cpanda-mustache' into mustache
# Conflicts:
# package-lock.json
# package.json
# src/minipanda.ts
# src/subpanda.ts
---
.eslintrc.json | 3 ++-
_locales/ja/messages.json | 1 -
...{minipanda.mustache => minisakai.mustache} | 0
src/minipanda.ts | 22 +++++++++----------
4 files changed, 13 insertions(+), 13 deletions(-)
rename public/views/{minipanda.mustache => minisakai.mustache} (100%)
diff --git a/.eslintrc.json b/.eslintrc.json
index 4220ebd..ceb7098 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -16,6 +16,7 @@
"project": "./tsconfig.json"
},
"rules": {
- "@typescript-eslint/ban-ts-comment": "off"
+ "@typescript-eslint/ban-ts-comment": "off",
+ "@typescript-eslint/no-namespace": "off"
}
}
diff --git a/_locales/ja/messages.json b/_locales/ja/messages.json
index 13cce98..df03f3a 100644
--- a/_locales/ja/messages.json
+++ b/_locales/ja/messages.json
@@ -24,7 +24,6 @@
"time": { "content": "$2" }
}
},
- ,
"assignment_acquisition_date": {"message": "課題取得日時: "},
"testquiz_acquisition_date": {"message": "クイズ取得日時: "}
}
\ No newline at end of file
diff --git a/public/views/minipanda.mustache b/public/views/minisakai.mustache
similarity index 100%
rename from public/views/minipanda.mustache
rename to public/views/minisakai.mustache
diff --git a/src/minipanda.ts b/src/minipanda.ts
index e392a86..c1d4d35 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -31,8 +31,8 @@ import {
quizFetchedTime,
VERSION,
} from "./content_script";
-// @ts-ignore
-import Mustache = require('mustache');
+// @ts-ignore// @ts-ignore
+import Mustache = require("mustache");
function createHanburgerButton(): void {
const topbar = document.getElementById("mastLogin");
@@ -152,7 +152,7 @@ export function createMiniPandAGeneralized(root: Element, kadaiList: Array res.text())
.then((template) => {
const rendered = Mustache.render(template, templateVars);
@@ -165,18 +165,18 @@ export function createMiniPandAGeneralized(root: Element, kadaiList: Array, lectureIDList: Array): void {
createMiniPandAGeneralized(miniPandA, kadaiList, lectureIDList, false, (rendered) => {
- miniPandA.innerHTML = rendered;
- const parent = document.getElementById("pageBody");
- const ref = document.getElementById("toolMenuWrap");
- parent?.insertBefore(miniPandA, ref);
- });
+ miniPandA.innerHTML = rendered;
+ const parent = document.getElementById("pageBody");
+ const ref = document.getElementById("toolMenuWrap");
+ parent?.insertBefore(miniPandA, ref);
+ }
+ );
}
async function createSettingsTab(root: Element): Promise {
createSettingItem(root, "完了済の課題も色付けする", CPsettings.displayCheckedKadai ?? true, "displayCheckedKadai");
createSettingItem(root, "課題キャッシュ時間 [秒]", CPsettings.kadaiCacheInterval ?? kadaiCacheInterval, "kadaiCacheInterval");
createSettingItem(root, "クイズキャッシュ時間 [秒]", CPsettings.quizCacheInterval ?? quizCacheInterval, "quizCacheInterval");
- createSettingItem(root, "デバッグモード", CPsettings.makePandAGreatAgain ?? false, "makePandAGreatAgain", false);
createSettingItem(root, "カラー① 締切24時間前", CPsettings.topColorDanger ?? "#f78989", "topColorDanger");
createSettingItem(root, "カラー① 締切5日前", CPsettings.topColorWarning ?? "#fdd783", "topColorWarning");
@@ -188,13 +188,13 @@ async function createSettingsTab(root: Element): Promise {
createSettingItem(root, "デフォルト色に戻す", "reset", "reset");
// @ts-ignore
- root.querySelector('.settings-tab')?.style.display = "none";
+ root.querySelector(".settings-tab")?.style.display = "none";
}
function createSettingItem(root: Element, itemDescription: string, value: boolean | number | string | null, id: string, display = true) {
const settingsDiv = root.querySelector('.settings-tab');
if (settingsDiv == null) {
- console.log('.settings-tab not found');
+ console.log(".settings-tab not found");
return;
}
const mainDiv = SettingsDom.mainDiv.cloneNode(true);
From 4b5a870568fb739e7fd8a5dba707b5f571d0975f Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 8 Sep 2021 11:31:26 +0900
Subject: [PATCH 027/196] =?UTF-8?q?add:=20i18n=E5=8C=96=E2=91=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
manifest.json | 2 +-
public/views/minisakai.mustache | 8 ++++----
src/minipanda.ts | 36 +++++++++++++++++++--------------
3 files changed, 26 insertions(+), 20 deletions(-)
diff --git a/manifest.json b/manifest.json
index 4f06590..6087c0a 100644
--- a/manifest.json
+++ b/manifest.json
@@ -42,6 +42,6 @@
"css/custom-panda.css",
"img/logo.png",
"img/relaxPanda.png",
- "views/minipanda.mustache"
+ "views/minisakai.mustache"
]
}
\ No newline at end of file
diff --git a/public/views/minisakai.mustache b/public/views/minisakai.mustache
index b5442dd..258be43 100644
--- a/public/views/minisakai.mustache
+++ b/public/views/minisakai.mustache
@@ -3,13 +3,13 @@
{{^subset}}
x
- 課題一覧
+ {{titles.kadaiTab}}
- 詳細設定
+ {{titles.settingsTab}}
{{/subset}}
-課題取得日時: {{kadaiFetchedTime}}
-クイズ取得日時: {{quizFetchedTime}}
+{{title.kadaiFetchedTime}}: {{kadaiFetchedTime}}
+{{title.quizFetchedTime}}: {{quizFetchedTime}}
{{^subset}}
diff --git a/src/minipanda.ts b/src/minipanda.ts
index c1d4d35..cd04579 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -31,7 +31,7 @@ import {
quizFetchedTime,
VERSION,
} from "./content_script";
-// @ts-ignore// @ts-ignore
+// @ts-ignore
import Mustache = require("mustache");
function createHanburgerButton(): void {
@@ -39,7 +39,7 @@ function createHanburgerButton(): void {
try {
topbar?.appendChild(hamburger);
} catch (e) {
- console.log("could not launch miniPandA.");
+ console.log("could not launch miniSakai.");
}
}
@@ -114,7 +114,7 @@ export function createMiniPandAGeneralized(root: Element, kadaiList: Array
0,
addMemoBoxLectures: addMemoBoxLectures,
subset: subset,
- showRelaxPandA: relaxPandA
+ showRelaxPandA: relaxPandA,
+ titles: {
+ kadaiTab: chrome.i18n.getMessage("tab_assignments"),
+ settingsTab: chrome.i18n.getMessage("tab_settings"),
+ kadaiFetchedTime: chrome.i18n.getMessage("assignment_acquisition_date"),
+ quizFetchedTime: chrome.i18n.getMessage("testquiz_acquisition_date"),
+ },
};
fetch(chrome.extension.getURL("views/minisakai.mustache"))
@@ -174,19 +180,19 @@ function createMiniPandA(kadaiList: Array, lectureIDList: Array {
- createSettingItem(root, "完了済の課題も色付けする", CPsettings.displayCheckedKadai ?? true, "displayCheckedKadai");
- createSettingItem(root, "課題キャッシュ時間 [秒]", CPsettings.kadaiCacheInterval ?? kadaiCacheInterval, "kadaiCacheInterval");
- createSettingItem(root, "クイズキャッシュ時間 [秒]", CPsettings.quizCacheInterval ?? quizCacheInterval, "quizCacheInterval");
+ createSettingItem(root, chrome.i18n.getMessage('settings_color_checked_item'), CPsettings.displayCheckedKadai ?? true, "displayCheckedKadai");
+ createSettingItem(root, chrome.i18n.getMessage('settings_assignment_cache'), CPsettings.kadaiCacheInterval ?? kadaiCacheInterval, "kadaiCacheInterval");
+ createSettingItem(root, chrome.i18n.getMessage('settings_quizzes_cache'), CPsettings.quizCacheInterval ?? quizCacheInterval, "quizCacheInterval");
- createSettingItem(root, "カラー① 締切24時間前", CPsettings.topColorDanger ?? "#f78989", "topColorDanger");
- createSettingItem(root, "カラー① 締切5日前", CPsettings.topColorWarning ?? "#fdd783", "topColorWarning");
- createSettingItem(root, "カラー① 締切14日前", CPsettings.topColorSuccess ?? "#8bd48d", "topColorSuccess");
+ createSettingItem(root, chrome.i18n.getMessage('settings_colors_hour', ['1', 24]), CPsettings.topColorDanger ?? "#f78989", "topColorDanger");
+ createSettingItem(root, chrome.i18n.getMessage('settings_colors_day', ['1', 5]), CPsettings.topColorWarning ?? "#fdd783", "topColorWarning");
+ createSettingItem(root, chrome.i18n.getMessage('settings_colors_day', ['1', 14]), CPsettings.topColorSuccess ?? "#8bd48d", "topColorSuccess");
- createSettingItem(root, "カラー② 締切24時間前", CPsettings.miniColorDanger ?? "#e85555", "miniColorDanger");
- createSettingItem(root, "カラー② 締切5日前", CPsettings.miniColorWarning ?? "#d7aa57", "miniColorWarning");
- createSettingItem(root, "カラー② 締切14日前", CPsettings.miniColorSuccess ?? "#62b665", "miniColorSuccess");
+ createSettingItem(root, chrome.i18n.getMessage('settings_colors_hour', ['2', 24]), CPsettings.miniColorDanger ?? "#e85555", "miniColorDanger");
+ createSettingItem(root, chrome.i18n.getMessage('settings_colors_day', ['2', 5]), CPsettings.miniColorWarning ?? "#d7aa57", "miniColorWarning");
+ createSettingItem(root, chrome.i18n.getMessage('settings_colors_day', ['2', 14]), CPsettings.miniColorSuccess ?? "#62b665", "miniColorSuccess");
- createSettingItem(root, "デフォルト色に戻す", "reset", "reset");
+ createSettingItem(root, chrome.i18n.getMessage('settings_reset_colors'), "reset", "reset");
// @ts-ignore
root.querySelector(".settings-tab")?.style.display = "none";
}
From a4570ef9fcfb93a76c780091a3c6c7004b113659 Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 8 Sep 2021 11:40:50 +0900
Subject: [PATCH 028/196] =?UTF-8?q?add:=20locale=E3=81=94=E3=81=A8?=
=?UTF-8?q?=E3=81=AB=E8=BF=BD=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
_locales/en/messages.json | 6 +++++-
_locales/ja/messages.json | 6 +++++-
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/_locales/en/messages.json b/_locales/en/messages.json
index 5af0c84..3d830f3 100644
--- a/_locales/en/messages.json
+++ b/_locales/en/messages.json
@@ -25,5 +25,9 @@
}
},
"assignment_acquisition_date": {"message": "Assignment Acquisition Date: "},
- "testquiz_acquisition_date": {"message": "Test&Quiz Acquisition Date: "}
+ "testquiz_acquisition_date": {"message": "Test&Quiz Acquisition Date: "},
+ "due24h": {"message": "Due within 24hrs"},
+ "due5d": {"message": "Due within 5days"},
+ "due14d": {"message": "Due within 14days"},
+ "no_available_assignments": {"message": "There are no available assignments now."}
}
\ No newline at end of file
diff --git a/_locales/ja/messages.json b/_locales/ja/messages.json
index df03f3a..3d760d1 100644
--- a/_locales/ja/messages.json
+++ b/_locales/ja/messages.json
@@ -25,5 +25,9 @@
}
},
"assignment_acquisition_date": {"message": "課題取得日時: "},
- "testquiz_acquisition_date": {"message": "クイズ取得日時: "}
+ "testquiz_acquisition_date": {"message": "クイズ取得日時: "},
+ "due24h": {"message": "締め切り24時間以内"},
+ "due5d": {"message": "締め切り5日以内"},
+ "due14d": {"message": "締め切り14日以内"},
+ "no_available_assignments": {"message": "現在表示できる課題はありません"}
}
\ No newline at end of file
From ba38a40e01f2f2e7c0cffc54c573621e173a5da8 Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 8 Sep 2021 11:45:59 +0900
Subject: [PATCH 029/196] =?UTF-8?q?add:=20i18n=E5=8C=96=E2=91=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
public/views/minisakai.mustache | 12 ++++++------
src/minipanda.ts | 4 ++++
2 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/public/views/minisakai.mustache b/public/views/minisakai.mustache
index 258be43..37a72bc 100644
--- a/public/views/minisakai.mustache
+++ b/public/views/minisakai.mustache
@@ -8,8 +8,8 @@
{{titles.settingsTab}}
{{/subset}}
-{{title.kadaiFetchedTime}}: {{kadaiFetchedTime}}
-{{title.quizFetchedTime}}: {{quizFetchedTime}}
+{{titles.kadaiFetchedTime}}: {{kadaiFetchedTime}}
+{{titles.quizFetchedTime}}: {{quizFetchedTime}}
{{^subset}}
@@ -26,7 +26,7 @@
{{#showDanger}}
- 締め切り24時間以内
+ {{titles.due24h}}
{{#dangerElements}}
@@ -55,7 +55,7 @@
{{#showWarning}}
- 締め切り5日以内
+ {{titles.due5d}}
{{#warningElements}}
@@ -84,7 +84,7 @@
{{#showSuccess}}
- 締め切り14日以内
+ {{titles.due14d}}
{{#successElements}}
@@ -142,7 +142,7 @@
{{#showRelaxPandA}}
-
現在表示できる課題はありません
+
{{titles.relaxPandA}}
{{/showRelaxPandA}}
diff --git a/src/minipanda.ts b/src/minipanda.ts
index cd04579..5ac3f7e 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -155,6 +155,10 @@ export function createMiniPandAGeneralized(root: Element, kadaiList: Array
Date: Wed, 8 Sep 2021 11:55:44 +0900
Subject: [PATCH 030/196] =?UTF-8?q?add:=20i18n=E5=8C=96=E2=91=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
_locales/en/messages.json | 1 +
_locales/ja/messages.json | 1 +
public/views/minisakai.mustache | 18 +++++++++---------
src/minipanda.ts | 5 +++++
4 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/_locales/en/messages.json b/_locales/en/messages.json
index 3d830f3..a336c66 100644
--- a/_locales/en/messages.json
+++ b/_locales/en/messages.json
@@ -29,5 +29,6 @@
"due24h": {"message": "Due within 24hrs"},
"due5d": {"message": "Due within 5days"},
"due14d": {"message": "Due within 14days"},
+ "dueOver14d": {"message": "Others"},
"no_available_assignments": {"message": "There are no available assignments now."}
}
\ No newline at end of file
diff --git a/_locales/ja/messages.json b/_locales/ja/messages.json
index 3d760d1..a171d67 100644
--- a/_locales/ja/messages.json
+++ b/_locales/ja/messages.json
@@ -29,5 +29,6 @@
"due24h": {"message": "締め切り24時間以内"},
"due5d": {"message": "締め切り5日以内"},
"due14d": {"message": "締め切り14日以内"},
+ "dueOver14d": {"message": "その他"},
"no_available_assignments": {"message": "現在表示できる課題はありません"}
}
\ No newline at end of file
diff --git a/public/views/minisakai.mustache b/public/views/minisakai.mustache
index 37a72bc..240d5ed 100644
--- a/public/views/minisakai.mustache
+++ b/public/views/minisakai.mustache
@@ -39,11 +39,11 @@
{{remain}}
{{#isMemo}}
- メモ
+ {{badge.memo}}
×
{{/isMemo}}
{{#isQuiz}}
- クイズ
+ {{badge.quiz}}
{{/isQuiz}}
{{title}}
@@ -68,11 +68,11 @@
{{remain}}
{{#isMemo}}
- メモ
+ {{badge.memo}}
×
{{/isMemo}}
{{#isQuiz}}
- クイズ
+ {{badge.quiz}}
{{/isQuiz}}
{{title}}
@@ -97,11 +97,11 @@
{{remain}}
{{#isMemo}}
- メモ
+ {{badge.memo}}
×
{{/isMemo}}
{{#isQuiz}}
- クイズ
+ {{badge.quiz}}
{{/isQuiz}}
{{title}}
@@ -113,7 +113,7 @@
{{#showOther}}
- その他
+ {{titles.dueOver14d}}
{{#otherElements}}
@@ -126,11 +126,11 @@
{{remain}}
{{#isMemo}}
- メモ
+ {{badge.memo}}
×
{{/isMemo}}
{{#isQuiz}}
- クイズ
+ {{badge.quiz}}
{{/isQuiz}}
{{title}}
diff --git a/src/minipanda.ts b/src/minipanda.ts
index 5ac3f7e..84c95b3 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -158,8 +158,13 @@ export function createMiniPandAGeneralized(root: Element, kadaiList: Array
Date: Wed, 8 Sep 2021 12:00:29 +0900
Subject: [PATCH 031/196] =?UTF-8?q?add:=20i18n=E5=8C=96=E2=91=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
public/views/minisakai.mustache | 8 ++++----
src/minipanda.ts | 6 ++++++
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/public/views/minisakai.mustache b/public/views/minisakai.mustache
index 240d5ed..81f1512 100644
--- a/public/views/minisakai.mustache
+++ b/public/views/minisakai.mustache
@@ -13,14 +13,14 @@
{{^subset}}
- 講義名
{{/subset}}
diff --git a/src/minipanda.ts b/src/minipanda.ts
index 84c95b3..4a3a820 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -161,6 +161,12 @@ export function createMiniPandAGeneralized(root: Element, kadaiList: Array
Date: Wed, 8 Sep 2021 13:52:39 +0900
Subject: [PATCH 032/196] =?UTF-8?q?fix:=20i18n=E5=8C=96=E3=81=AB=E4=BC=B4?=
=?UTF-8?q?=E3=81=84CSS=E3=81=AE=E5=A4=89=E6=9B=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
public/css/custom-panda.css | 29 ++++++++++++++++-------------
public/views/minisakai.mustache | 13 ++++++++++---
webpack.config.js | 2 +-
3 files changed, 27 insertions(+), 17 deletions(-)
diff --git a/public/css/custom-panda.css b/public/css/custom-panda.css
index 4f4dca1..5b8da69 100644
--- a/public/css/custom-panda.css
+++ b/public/css/custom-panda.css
@@ -34,7 +34,7 @@
}
.sidenav {
- height: 90vh;
+ height: 100vh;
width: 0;
position: absolute;
z-index: 1;
@@ -379,7 +379,7 @@
.cp_tab > label {
position: relative;
display: inline-block;
- padding: 10px;
+ padding: 10px 15px;
cursor: pointer;
border-bottom: 0;
border-radius: 6px 6px 0 0;
@@ -389,6 +389,8 @@
.cp_tab > input:checked + label {
margin-bottom: -1px;
border-color: #a5a5a5;
+ padding-left: 15px;
+ padding-right: 15px;
border-bottom: 1px solid #b0b0b0;
border-radius: 6px 6px 0 0;
background-color: #6483d3;
@@ -470,12 +472,12 @@
cursor: pointer;
}
-.plus-button {
- margin-left: 45px;
+#plus-button {
+ margin-left: 15px;
margin-bottom: 2px;
border: none;
display: inline-block;
- padding: 2px 8px;
+ padding: 6px 8px;
vertical-align: middle;
overflow: hidden;
text-decoration: none;
@@ -483,7 +485,6 @@
background-color: #009688 !important;
text-align: center;
cursor: pointer;
- white-space: nowrap;
font-size: 24px !important;
border-radius: 50%;
}
@@ -498,6 +499,10 @@
color: #464646;
}
+.kadai-time-text {
+ margin-bottom: 0;
+}
+
.quiz-time {
padding-top: 5px;
padding-bottom: 5px;
@@ -530,9 +535,6 @@
}
.loader {
- /*right: 5px;*/
- /*bottom: -62px;*/
- /*margin: 60px auto;*/
font-size: 11px;
margin-left: 15px;
text-indent: -9999em;
@@ -597,19 +599,19 @@
}
.cp-settings-text {
- display:inline;
+ display: list-item;
+ flex-direction: column;
}
.cp-settings-inputbox {
- margin-left: 10px;
width: 65px;
}
.switch {
position: relative;
- display: -webkit-inline-box;
+ display: inline-flex;
width: 60px;
- height: 34px;
+ height: 20px;
}
.switch input {
@@ -621,6 +623,7 @@
.slider {
cursor: pointer;
text-indent: -9999px;
+ margin-left: -15px;
width: 40px;
height: 20px;
background: grey;
diff --git a/public/views/minisakai.mustache b/public/views/minisakai.mustache
index 81f1512..28c0acd 100644
--- a/public/views/minisakai.mustache
+++ b/public/views/minisakai.mustache
@@ -6,10 +6,17 @@
{{titles.kadaiTab}}
{{titles.settingsTab}}
-
+
{{/subset}}
-{{titles.kadaiFetchedTime}}: {{kadaiFetchedTime}}
-{{titles.quizFetchedTime}}: {{quizFetchedTime}}
+
+
{{titles.kadaiFetchedTime}}
+
{{kadaiFetchedTime}}
+
+
+
{{titles.quizFetchedTime}}
+
{{quizFetchedTime}}
+
+
{{^subset}}
diff --git a/webpack.config.js b/webpack.config.js
index 9a1854d..de8dcc4 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -29,7 +29,7 @@ module.exports = {
new CopyPlugin({
patterns:[
{from: "./public", to: "./"},
- {from: "./_locales", to: "./_locales"},
+ {from: "./_locales/en", to: "./_locales/en"},
{from: "./manifest.json", }
],
}),
From 5bb013eddf5e567e9855c831fddd9c55fb83d5b9 Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 8 Sep 2021 14:15:15 +0900
Subject: [PATCH 033/196] =?UTF-8?q?fix:=20=E4=B8=80=E9=83=A8=E8=A1=A8?=
=?UTF-8?q?=E8=A8=98=E3=81=A8=E5=87=A6=E7=90=86=E3=81=AE=E4=BF=AE=E6=AD=A3?=
=?UTF-8?q?=E2=91=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/bookmark.ts | 8 +++---
src/content_script.ts | 66 +++++++++++++++++++++++--------------------
src/eventListener.ts | 30 ++++++++++----------
src/minipanda.ts | 4 +--
src/network.ts | 3 +-
src/storage.ts | 8 +++---
src/subpanda.ts | 10 +++----
src/utils.ts | 6 ++--
8 files changed, 70 insertions(+), 65 deletions(-)
diff --git a/src/bookmark.ts b/src/bookmark.ts
index 148a05b..521f812 100644
--- a/src/bookmark.ts
+++ b/src/bookmark.ts
@@ -33,11 +33,11 @@ function getCurrentShownSiteHrefs(): Array {
// お気に入り上限を超えた講義を topbar に追加する
// ネットワーク通信を行うので注意
-function addMissingBookmarkedLectures(): Promise {
+function addBookmarkedCourseSites(baseURL: string): Promise {
const topnav = document.querySelector("#topnav");
if (topnav == null) return new Promise((resolve, reject) => resolve());
const request = new XMLHttpRequest();
- request.open("GET", "https://panda.ecs.kyoto-u.ac.jp/portal/favorites/list");
+ request.open("GET", baseURL + "/portal/favorites/list");
request.responseType = "json";
// @ts-ignore
document.querySelector(".organizeFavorites").addEventListener("click", editFavTabMessage);
@@ -61,7 +61,7 @@ function addMissingBookmarkedLectures(): Promise {
const title = siteInfo.title;
// skip if the site is already shown
- if (currentlyShownSites.find(c => c == href) != null) continue;
+ if (currentlyShownSites.find((c) => c == href) != null) continue;
const li = document.createElement("li");
li.classList.add("Mrphs-sitesNav__menuitem");
@@ -81,4 +81,4 @@ function addMissingBookmarkedLectures(): Promise {
});
}
-export { addMissingBookmarkedLectures };
+export { addBookmarkedCourseSites };
diff --git a/src/content_script.ts b/src/content_script.ts
index f9a1196..9553219 100644
--- a/src/content_script.ts
+++ b/src/content_script.ts
@@ -1,12 +1,16 @@
-import { loadFromStorage, saveToStorage } from "./storage";
+import { loadFromLocalStorage, saveToLocalStorage } from "./storage";
import { Kadai, LectureInfo } from "./kadai";
-import { fetchLectureIDs, getKadaiOfLectureID, getQuizOfLectureID } from "./network";
import {
- createHanburgerButton,
+ fetchLectureIDs,
+ getKadaiOfLectureID,
+ getQuizOfLectureID,
+} from "./network";
+import {
+ createMiniSakaiBtn,
createNavBarNotification,
displayMiniPandA,
} from "./minipanda";
-import { addMissingBookmarkedLectures } from "./bookmark";
+import { addBookmarkedCourseSites } from "./bookmark";
import {
compareAndMergeKadaiList,
convertArrayToKadai,
@@ -18,12 +22,12 @@ import {
updateIsReadFlag,
useCache,
} from "./utils";
-import { Settings } from "./settings";
+import { DefaultSettings, Settings } from "./settings";
-const baseURL = "https://panda.ecs.kyoto-u.ac.jp";
+export const baseURL = "https://panda.ecs.kyoto-u.ac.jp";
export const VERSION = "1.0.0";
-export let kadaiCacheInterval = 60 * 2;
-export let quizCacheInterval = 60 * 10;
+export let kadaiCacheInterval: number;
+export let quizCacheInterval: number;
export let kadaiFetchedTime: number;
export let quizFetchedTime: number;
export let lectureIDList: Array;
@@ -33,13 +37,15 @@ export let CPsettings: Settings;
export async function loadAndMergeKadaiList(lectureIDList: Array, useKadaiCache: boolean, useQuizCache: boolean): Promise> {
// ストレージから前回保存したkadaiListを読み込む
- const oldKadaiList = await loadFromStorage("TSkadaiList");
- const oldQuizList = await loadFromStorage("TSQuizList");
+ const oldKadaiList = await loadFromLocalStorage("TSkadaiList");
+ const oldQuizList = await loadFromLocalStorage("TSQuizList");
let newKadaiList = [];
let newQuizList = [];
if (useKadaiCache) {
- console.log("Loading assignments...");
+ newKadaiList = oldKadaiList;
+ } else {
+ console.log("Fetching assignments...");
const pendingList = [];
// 課題取得待ちリストに追加
for (const i of lectureIDList) {
@@ -51,17 +57,19 @@ export async function loadAndMergeKadaiList(lectureIDList: Array, u
if (k.status === "fulfilled") newKadaiList.push(k.value);
}
// 取得した時間を保存
- await saveToStorage("TSkadaiFetchedTime", nowTime);
+ await saveToLocalStorage("TSkadaiFetchedTime", nowTime);
kadaiFetchedTime = nowTime;
- } else {
- newKadaiList = oldKadaiList;
}
// 保存してあったものとマージする
mergedKadaiListNoMemo = compareAndMergeKadaiList(oldKadaiList, newKadaiList);
mergedKadaiList = compareAndMergeKadaiList(oldKadaiList, newKadaiList);
if (useQuizCache) {
- console.log("Loading quizzes...");
+ if (typeof oldQuizList !== "undefined") {
+ newQuizList = oldQuizList;
+ }
+ } else {
+ console.log("Fetching quizzes...");
const pendingList = [];
// クイズ取得待ちリストに追加
for (const i of lectureIDList) {
@@ -73,23 +81,19 @@ export async function loadAndMergeKadaiList(lectureIDList: Array, u
if (k.status === "fulfilled") newQuizList.push(k.value);
}
// 取得した時間を保存
- await saveToStorage("TSquizFetchedTime", nowTime);
+ await saveToLocalStorage("TSquizFetchedTime", nowTime);
quizFetchedTime = nowTime;
- } else {
- if (typeof oldQuizList !== "undefined") {
- newQuizList = oldQuizList;
- }
}
const mergedQuizList = compareAndMergeKadaiList(oldQuizList, newQuizList);
// マージ後のkadaiListをストレージに保存する
- await saveToStorage("TSkadaiList", mergedKadaiListNoMemo);
- await saveToStorage("TSQuizList", mergedQuizList);
+ await saveToLocalStorage("TSkadaiList", mergedKadaiListNoMemo);
+ await saveToLocalStorage("TSQuizList", mergedQuizList);
mergedKadaiList = mergeIntoKadaiList(mergedKadaiList, mergedQuizList);
// メモ一覧を読み込む
- const kadaiMemoList = convertArrayToKadai(await loadFromStorage("TSkadaiMemoList"));
+ const kadaiMemoList = convertArrayToKadai(await loadFromLocalStorage("TSkadaiMemoList"));
// さらにメモもマージする
mergedKadaiList = mergeIntoKadaiList(mergedKadaiList, kadaiMemoList);
mergedKadaiList = sortKadaiList(mergedKadaiList);
@@ -98,27 +102,27 @@ export async function loadAndMergeKadaiList(lectureIDList: Array, u
}
async function loadSettings() {
- CPsettings = await loadFromStorage("TSSettings");
- kadaiCacheInterval = CPsettings.kadaiCacheInterval ?? 60 * 2;
- quizCacheInterval = CPsettings.quizCacheInterval ?? 60 * 10;
+ CPsettings = await loadFromLocalStorage("TSSettings");
+ kadaiCacheInterval = CPsettings.kadaiCacheInterval ?? DefaultSettings.kadaiCacheInterval;
+ quizCacheInterval = CPsettings.quizCacheInterval ?? DefaultSettings.quizCacheInterval;
CPsettings.displayCheckedKadai = CPsettings.displayCheckedKadai ?? true;
- kadaiFetchedTime = await loadFromStorage("TSkadaiFetchedTime");
- quizFetchedTime = await loadFromStorage("TSquizFetchedTime");
+ kadaiFetchedTime = await loadFromLocalStorage("TSkadaiFetchedTime");
+ quizFetchedTime = await loadFromLocalStorage("TSquizFetchedTime");
}
async function loadLectureIDs() {
lectureIDList = fetchLectureIDs()[1];
- await saveToStorage("TSlectureids", lectureIDList);
+ await saveToLocalStorage("TSlectureids", lectureIDList);
}
async function main() {
if (isLoggedIn()) {
- createHanburgerButton();
+ createMiniSakaiBtn();
await loadSettings();
await loadLectureIDs();
mergedKadaiList = await loadAndMergeKadaiList(lectureIDList, useCache(kadaiFetchedTime, kadaiCacheInterval), useCache(quizFetchedTime, quizCacheInterval));
- await addMissingBookmarkedLectures();
+ await addBookmarkedCourseSites(baseURL);
await displayMiniPandA(mergedKadaiList, lectureIDList);
createNavBarNotification(lectureIDList, mergedKadaiList);
diff --git a/src/eventListener.ts b/src/eventListener.ts
index f516a3c..2c7c605 100644
--- a/src/eventListener.ts
+++ b/src/eventListener.ts
@@ -1,5 +1,5 @@
import { kadaiDiv, miniPandA } from "./dom";
-import { loadFromStorage, saveToStorage } from "./storage";
+import { loadFromLocalStorage, saveToLocalStorage } from "./storage";
import { Kadai, KadaiEntry } from "./kadai";
import { convertArrayToKadai, genUniqueStr, mergeIntoKadaiList } from "./utils";
import {
@@ -86,9 +86,9 @@ async function toggleKadaiFinishedFlag(event: any): Promise {
const kadaiID = event.target.id;
let kadaiList: Array;
// "m"から始まるものはメモ,"q"から始まるものはクイズを表してる
- if (kadaiID[0] === "m") kadaiList = convertArrayToKadai(await loadFromStorage("TSkadaiMemoList"));
- else if (kadaiID[0] === "q") kadaiList = convertArrayToKadai(await loadFromStorage("TSQuizList"));
- else kadaiList = convertArrayToKadai(await loadFromStorage("TSkadaiList"));
+ if (kadaiID[0] === "m") kadaiList = convertArrayToKadai(await loadFromLocalStorage("TSkadaiMemoList"));
+ else if (kadaiID[0] === "q") kadaiList = convertArrayToKadai(await loadFromLocalStorage("TSQuizList"));
+ else kadaiList = convertArrayToKadai(await loadFromLocalStorage("TSkadaiList"));
const updatedKadaiList = [];
for (const kadai of kadaiList) {
@@ -115,9 +115,9 @@ async function toggleKadaiFinishedFlag(event: any): Promise {
}
updatedKadaiList.push(new Kadai(kadai.lectureID, kadai.lectureName, updatedKadaiEntries, kadai.isRead));
}
- if (kadaiID[0] === "m") saveToStorage("TSkadaiMemoList", updatedKadaiList);
- else if (kadaiID[0] === "q") saveToStorage("TSQuizList", updatedKadaiList);
- else saveToStorage("TSkadaiList", updatedKadaiList);
+ if (kadaiID[0] === "m") saveToLocalStorage("TSkadaiMemoList", updatedKadaiList);
+ else if (kadaiID[0] === "q") saveToLocalStorage("TSQuizList", updatedKadaiList);
+ else saveToLocalStorage("TSkadaiList", updatedKadaiList);
// NavBarを再描画
deleteNavBarNotification();
@@ -141,7 +141,7 @@ async function updateSettings(event: any, type: string): Promise {
}
const settings = new Settings();
- const oldSettings = await loadFromStorage("TSSettings");
+ const oldSettings = await loadFromLocalStorage("TSSettings");
for (const i in DefaultSettings){
// @ts-ignore
settings[i] = oldSettings[i] ?? DefaultSettings[i];
@@ -170,7 +170,7 @@ async function updateSettings(event: any, type: string): Promise {
CPsettings[settingsID] = settingsValue;
}
- saveToStorage("TSSettings", settings);
+ saveToLocalStorage("TSSettings", settings);
// NavBarを再描画
deleteNavBarNotification();
@@ -189,7 +189,7 @@ async function addKadaiMemo(): Promise {
const todoDue = document.querySelector(".todoDue").value;
const todoTimestamp = new Date(`${todoDue}`).getTime() / 1000;
- let kadaiMemoList = await loadFromStorage("TSkadaiMemoList");
+ let kadaiMemoList = await loadFromLocalStorage("TSkadaiMemoList");
const kadaiMemoEntry = new KadaiEntry(genUniqueStr(), todoContent, todoTimestamp, true, false, false, "");
const kadaiMemo = new Kadai(todoLecID, todoLecID, [kadaiMemoEntry], true);
@@ -206,7 +206,7 @@ async function addKadaiMemo(): Promise {
} else {
kadaiMemoList = [kadaiMemo];
}
- saveToStorage("TSkadaiMemoList", kadaiMemoList);
+ saveToLocalStorage("TSkadaiMemoList", kadaiMemoList);
// miniPandAを再描画
while (miniPandA.firstChild) {
@@ -218,7 +218,7 @@ async function addKadaiMemo(): Promise {
miniPandA.remove();
kadaiDiv.remove();
const kadaiList = mergeIntoKadaiList(mergedKadaiListNoMemo, kadaiMemoList);
- const quizList = await loadFromStorage("TSQuizList");
+ const quizList = await loadFromLocalStorage("TSQuizList");
await displayMiniPandA(mergeIntoKadaiList(kadaiList, quizList), lectureIDList);
// NavBarを再描画
@@ -229,7 +229,7 @@ async function addKadaiMemo(): Promise {
async function deleteKadaiMemo(event: any): Promise {
const kadaiID = event.target.id;
- const kadaiMemoList = convertArrayToKadai(await loadFromStorage("TSkadaiMemoList"));
+ const kadaiMemoList = convertArrayToKadai(await loadFromLocalStorage("TSkadaiMemoList"));
const deletedKadaiMemoList = [];
for (const kadaiMemo of kadaiMemoList) {
const kadaiMemoEntries = [];
@@ -249,9 +249,9 @@ async function deleteKadaiMemo(event: any): Promise {
miniPandA.remove();
kadaiDiv.remove();
- saveToStorage("TSkadaiMemoList", deletedKadaiMemoList);
+ saveToLocalStorage("TSkadaiMemoList", deletedKadaiMemoList);
const kadaiList = mergeIntoKadaiList(mergedKadaiListNoMemo, deletedKadaiMemoList);
- const quizList = await loadFromStorage("TSQuizList");
+ const quizList = await loadFromLocalStorage("TSQuizList");
await displayMiniPandA(mergeIntoKadaiList(kadaiList, quizList), lectureIDList);
// NavBarを再描画
diff --git a/src/minipanda.ts b/src/minipanda.ts
index 4a3a820..126b21d 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -34,7 +34,7 @@ import {
// @ts-ignore
import Mustache = require("mustache");
-function createHanburgerButton(): void {
+function createMiniSakaiBtn(): void {
const topbar = document.getElementById("mastLogin");
try {
topbar?.appendChild(hamburger);
@@ -366,7 +366,7 @@ function overrideCSSColor() {
}
export {
- createHanburgerButton,
+ createMiniSakaiBtn,
createMiniPandA,
displayMiniPandA,
deleteNavBarNotification,
diff --git a/src/network.ts b/src/network.ts
index 35ca752..50ede90 100644
--- a/src/network.ts
+++ b/src/network.ts
@@ -40,7 +40,8 @@ function getKadaiOfLectureID(baseURL: string, lectureID: string): Promise
return new Promise((resolve, reject) => {
request.addEventListener("load", (e) => {
const res = request.response;
- if (!res || !res.assignment_collection) reject("404 kadai data not found");
+ if (!res || !res.assignment_collection)
+ reject("404 kadai data not found");
else {
const kadaiEntries = convJsonToKadaiEntries(res, baseURL, lectureID);
resolve(
diff --git a/src/storage.ts b/src/storage.ts
index 08e2ad8..d81e9b3 100644
--- a/src/storage.ts
+++ b/src/storage.ts
@@ -1,13 +1,13 @@
-function loadFromStorage(key: string): Promise {
+function loadFromLocalStorage(key: string): Promise {
return new Promise(function (resolve, reject) {
chrome.storage.local.get(key, function (items: any) {
- if (typeof items[key] === "undefined") resolve([])
+ if (typeof items[key] === "undefined") resolve([]);
else resolve(items[key]);
});
});
}
-function saveToStorage(key: string, value: any): Promise {
+function saveToLocalStorage(key: string, value: any): Promise {
const entity: { [key: string]: [value: any] } = {};
entity[key] = value;
return new Promise(function (resolve, reject) {
@@ -17,4 +17,4 @@ function saveToStorage(key: string, value: any): Promise {
});
}
-export { loadFromStorage, saveToStorage };
+export { loadFromLocalStorage, saveToLocalStorage };
diff --git a/src/subpanda.ts b/src/subpanda.ts
index f5f96e8..34350a6 100644
--- a/src/subpanda.ts
+++ b/src/subpanda.ts
@@ -1,5 +1,5 @@
import { Kadai, LectureInfo } from './kadai';
-import { loadFromStorage } from './storage'
+import { loadFromLocalStorage } from './storage'
import {
convertArrayToKadai,
mergeIntoKadaiList,
@@ -15,10 +15,10 @@ const subpandaRoot = document.querySelector("#subpanda");
async function updateSubPandA(root: Element) {
let mergedKadaiList: Array;
- const kadais = await loadFromStorage("TSkadaiList") as Array;
- const quizList = await loadFromStorage("TSQuizList") as Array;
- const kadaiMemoList = convertArrayToKadai(await loadFromStorage("TSkadaiMemoList"));
- const lectureIDs = await loadFromStorage("TSlectureids") as Array;
+ const kadais = await loadFromLocalStorage("TSkadaiList") as Array;
+ const quizList = await loadFromLocalStorage("TSQuizList") as Array;
+ const kadaiMemoList = convertArrayToKadai(await loadFromLocalStorage("TSkadaiMemoList"));
+ const lectureIDs = await loadFromLocalStorage("TSlectureids") as Array;
mergedKadaiList = mergeIntoKadaiList(kadais, quizList);
mergedKadaiList = mergeIntoKadaiList(mergedKadaiList, kadaiMemoList);
mergedKadaiList = sortKadaiList(mergedKadaiList);
diff --git a/src/utils.ts b/src/utils.ts
index dc0a108..c3bbaaa 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -1,5 +1,5 @@
import { Kadai, KadaiEntry, LectureInfo } from "./kadai";
-import { saveToStorage } from "./storage";
+import { saveToLocalStorage } from "./storage";
export const nowTime = new Date().getTime();
@@ -65,7 +65,7 @@ function updateIsReadFlag(kadaiList: Array): void {
updatedKadaiList.push(kadai);
}
}
- saveToStorage("TSkadaiList", updatedKadaiList);
+ saveToLocalStorage("TSkadaiList", updatedKadaiList);
}
}
@@ -173,7 +173,7 @@ function sortKadaiList(kadaiList: Array): Array {
}
function useCache(fetchedTime: number, cacheInterval: number): boolean{
- return (nowTime - fetchedTime) / 1000 > cacheInterval;
+ return (nowTime - fetchedTime) / 1000 <= cacheInterval;
}
function genUniqueStr(): string {
From 51596fcda678704a01363fdca1122abf59a21d10 Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 8 Sep 2021 14:28:04 +0900
Subject: [PATCH 034/196] =?UTF-8?q?fix:=20=E4=B8=80=E9=83=A8=E8=A1=A8?=
=?UTF-8?q?=E8=A8=98=E3=81=A8=E5=87=A6=E7=90=86=E3=81=AE=E4=BF=AE=E6=AD=A3?=
=?UTF-8?q?=E2=91=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/content_script.ts | 4 ++--
src/dom.ts | 25 +++----------------------
src/eventListener.ts | 20 +++++++++++---------
src/minipanda.ts | 6 +++---
src/utils.ts | 14 +++++++-------
5 files changed, 26 insertions(+), 43 deletions(-)
diff --git a/src/content_script.ts b/src/content_script.ts
index 9553219..4555485 100644
--- a/src/content_script.ts
+++ b/src/content_script.ts
@@ -16,7 +16,7 @@ import {
convertArrayToKadai,
isLoggedIn,
mergeIntoKadaiList,
- miniPandAReady,
+ miniSakaiReady,
nowTime,
sortKadaiList,
updateIsReadFlag,
@@ -126,7 +126,7 @@ async function main() {
await displayMiniPandA(mergedKadaiList, lectureIDList);
createNavBarNotification(lectureIDList, mergedKadaiList);
- miniPandAReady();
+ miniSakaiReady();
updateIsReadFlag(mergedKadaiListNoMemo);
}
}
diff --git a/src/dom.ts b/src/dom.ts
index ad249f9..3bbe4a5 100644
--- a/src/dom.ts
+++ b/src/dom.ts
@@ -1,5 +1,4 @@
-import { toggleMiniPandA } from "./eventListener";
-
+import { toggleMiniSakai } from "./eventListener";
function addAttributes(elem: any, dict?: { [key: string]: any }, eventListener?: { [key: string]: (e?:any)=>void|Promise }): any{
for (const key in dict) {
@@ -40,25 +39,7 @@ miniPandA.classList.add("cp_tab");
export const kadaiDiv = createElem("div", { className: "kadai-tab" });
-export const hamburger = createElem("div", { className: "loader" }, {"click": toggleMiniPandA});
-
-// eslint-disable-next-line @typescript-eslint/no-namespace
-namespace KadaiEntryDom {
- export const checkbox = createElem("input", { type: "checkbox", className: "todo-check" });
- export const label = createElem("label");
- export const title = createElem("p", { className: "kadai-title" });
- export const dueDate = createElem("p", { className: "kadai-date" });
- export const remainTime = createElem("span", { className: "time-remain" });
-}
-
-// eslint-disable-next-line @typescript-eslint/no-namespace
-namespace DueGroupDom {
- export const header = createElem("div");
- export const headerTitle = createElem("span", { className: "q" });
- export const container = createElem("div", { className: "sidenav-list" });
- export const body = createElem("div");
- export const lectureName = createElem("a");
-}
+export const hamburger = createElem("div", { className: "loader" }, {"click": toggleMiniSakai});
// eslint-disable-next-line @typescript-eslint/no-namespace
namespace SettingsDom {
@@ -73,4 +54,4 @@ namespace SettingsDom {
export const span = createElem("span", { className: "slider round" });
}
-export { KadaiEntryDom, DueGroupDom, SettingsDom, addAttributes, createElem, cloneElem, appendChildAll };
\ No newline at end of file
+export { SettingsDom, addAttributes, createElem, cloneElem, appendChildAll };
\ No newline at end of file
diff --git a/src/eventListener.ts b/src/eventListener.ts
index 2c7c605..3a6575a 100644
--- a/src/eventListener.ts
+++ b/src/eventListener.ts
@@ -4,19 +4,21 @@ import { Kadai, KadaiEntry } from "./kadai";
import { convertArrayToKadai, genUniqueStr, mergeIntoKadaiList } from "./utils";
import {
CPsettings,
- kadaiCacheInterval,
lectureIDList,
loadAndMergeKadaiList,
mergedKadaiListNoMemo,
- quizCacheInterval,
} from "./content_script";
import { DefaultSettings, Settings } from "./settings";
-import { createNavBarNotification, deleteNavBarNotification, displayMiniPandA } from "./minipanda";
+import {
+ createNavBarNotification,
+ deleteNavBarNotification,
+ displayMiniPandA,
+} from "./minipanda";
let toggle = false;
-function toggleMiniPandA(): void {
- // miniPandAを表示・非表示にします
+function toggleMiniSakai(): void {
+ // miniSakaiを表示・非表示にします
if (toggle) {
miniPandA.style.width = "0px";
document.getElementById("cover")?.remove();
@@ -25,7 +27,7 @@ function toggleMiniPandA(): void {
const cover = document.createElement("div");
cover.id = "cover";
document.getElementsByTagName("body")[0].appendChild(cover);
- cover.onclick = toggleMiniPandA;
+ cover.onclick = toggleMiniSakai;
}
toggle = !toggle;
}
@@ -38,7 +40,7 @@ function toggleKadaiTab(): void {
const settingsTab = document.querySelector(".settings-tab");
// @ts-ignore
settingsTab.style.display = "none";
- const addMemoButton = document.querySelector(".plus-button");
+ const addMemoButton = document.querySelector("#plus-button");
// @ts-ignore
addMemoButton.style.display = "";
const lastKadaiGetTime = document.querySelector(".kadai-time");
@@ -57,7 +59,7 @@ function toggleSettingsTab(): void {
const settingsTab = document.querySelector(".settings-tab");
// @ts-ignore
settingsTab.style.display = "";
- const addMemoButton = document.querySelector(".plus-button");
+ const addMemoButton = document.querySelector("#plus-button");
// @ts-ignore
addMemoButton.style.display = "none";
const lastKadaiGetTime = document.querySelector(".kadai-time");
@@ -278,7 +280,7 @@ async function editFavTabMessage(): Promise {
}
export {
- toggleMiniPandA,
+ toggleMiniSakai,
toggleKadaiTab,
toggleSettingsTab,
toggleMemoBox,
diff --git a/src/minipanda.ts b/src/minipanda.ts
index 126b21d..cce46ab 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -19,7 +19,7 @@ import {
toggleKadaiFinishedFlag,
toggleKadaiTab,
toggleMemoBox,
- toggleMiniPandA,
+ toggleMiniSakai,
toggleSettingsTab,
updateSettings,
} from "./eventListener";
@@ -255,8 +255,8 @@ function registerEventHandlers(root: Element) {
root.querySelector('#kadaiTab')?.addEventListener('click', () => toggleKadaiTab());
root.querySelector('#settingsTab')?.addEventListener('click', () => toggleSettingsTab());
root.querySelectorAll('.todo-check').forEach(c => c.addEventListener('change', (e) => toggleKadaiFinishedFlag(e)));
- root.querySelector('#close_btn')?.addEventListener('click', () => toggleMiniPandA());
- root.querySelector('.plus-button')?.addEventListener('click', () => toggleMemoBox());
+ root.querySelector('#close_btn')?.addEventListener('click', () => toggleMiniSakai());
+ root.querySelector('#plus-button')?.addEventListener('click', () => toggleMemoBox());
root.querySelector('#todo-add')?.addEventListener('click', () => addKadaiMemo());
root.querySelectorAll('.del-button').forEach(b => b.addEventListener('click', (e) => deleteKadaiMemo(e)));
}
diff --git a/src/utils.ts b/src/utils.ts
index c3bbaaa..6541406 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -47,7 +47,7 @@ function getCurrentLectureID() {
const url = location.href;
let lectureID = "";
const reg = new RegExp("(https?://[^/]+)/portal/site/([^/]+)");
- if (url.match(reg)){
+ if (url.match(reg)) {
// @ts-ignore
lectureID = url.match(reg)[2];
}
@@ -58,10 +58,10 @@ function updateIsReadFlag(kadaiList: Array): void {
const lectureID = getCurrentLectureID();
const updatedKadaiList = [];
if (lectureID && lectureID.length >= 17) {
- for (const kadai of kadaiList){
- if (kadai.lectureID === lectureID){
+ for (const kadai of kadaiList) {
+ if (kadai.lectureID === lectureID) {
updatedKadaiList.push(new Kadai(kadai.lectureID, kadai.lectureName, kadai.kadaiEntries, true));
- }else{
+ } else {
updatedKadaiList.push(kadai);
}
}
@@ -69,7 +69,7 @@ function updateIsReadFlag(kadaiList: Array): void {
}
}
-function miniPandAReady(): void {
+function miniSakaiReady(): void {
// ロード表示を切り替えて3本線表示にする
const hamburger = document.getElementsByClassName("loader")[0];
hamburger.className = "";
@@ -153,7 +153,7 @@ function mergeIntoKadaiList(targetKadaiList: Array, newKadaiList: Array {
- return (kadaiList.lectureID === kadai.lectureID)
+ return kadaiList.lectureID === kadai.lectureID;
});
if (idx !== -1) {
mergedKadaiList[idx].kadaiEntries = mergedKadaiList[idx].kadaiEntries.concat(kadaiList.kadaiEntries);
@@ -186,7 +186,7 @@ export {
formatTimestamp,
createLectureIDMap,
isLoggedIn,
- miniPandAReady,
+ miniSakaiReady,
convertArrayToKadai,
compareAndMergeKadaiList,
updateIsReadFlag,
From a8dd5a588ba485e1e67c3b4aaec25ea8d4db8ed1 Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 8 Sep 2021 14:45:57 +0900
Subject: [PATCH 035/196] =?UTF-8?q?fix:=20=E3=83=A1=E3=83=A2Box=E3=81=AECS?=
=?UTF-8?q?S=E3=81=AE=E4=BF=AE=E6=AD=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
_locales/en/messages.json | 2 +-
_locales/ja/messages.json | 2 +-
public/css/custom-panda.css | 8 ++++++++
public/views/minisakai.mustache | 27 +++++++++++++++++++--------
4 files changed, 29 insertions(+), 10 deletions(-)
diff --git a/_locales/en/messages.json b/_locales/en/messages.json
index a336c66..ddd9b96 100644
--- a/_locales/en/messages.json
+++ b/_locales/en/messages.json
@@ -5,7 +5,7 @@
"todo_box_course_name": {"message": "Course Name"},
"todo_box_memo": {"message": "Memo"},
"todo_box_due_date": {"message": "Due Date"},
- "todo_box_add": {"message": "Add"},
+ "todo_box_add": {"message": "Add Memo"},
"quiz": {"message": "Quiz"},
"memo": {"message": "Memo"},
"settings_assignment_cache": {"message": "Assignment Cache [s]"},
diff --git a/_locales/ja/messages.json b/_locales/ja/messages.json
index a171d67..74bf034 100644
--- a/_locales/ja/messages.json
+++ b/_locales/ja/messages.json
@@ -5,7 +5,7 @@
"todo_box_course_name": {"message": "講義名"},
"todo_box_memo": {"message": "メモ内容"},
"todo_box_due_date": {"message": "期限"},
- "todo_box_add": {"message": "追加する"},
+ "todo_box_add": {"message": "メモを追加"},
"quiz": {"message": "クイズ"},
"memo": {"message": "メモ"},
"settings_assignment_cache": {"message": "課題キャッシュ時間 [秒]"},
diff --git a/public/css/custom-panda.css b/public/css/custom-panda.css
index 5b8da69..8b62d52 100644
--- a/public/css/custom-panda.css
+++ b/public/css/custom-panda.css
@@ -607,6 +607,14 @@
width: 65px;
}
+.miniSakai-memoBoxItem {
+ padding-top: 5px;
+ display: block;
+ flex-direction: column;
+ font-weight: bold;
+ color: rgb(70, 70, 70);
+}
+
.switch {
position: relative;
display: inline-flex;
diff --git a/public/views/minisakai.mustache b/public/views/minisakai.mustache
index 28c0acd..f32dff5 100644
--- a/public/views/minisakai.mustache
+++ b/public/views/minisakai.mustache
@@ -20,14 +20,25 @@
{{^subset}}
-
{{todoBox.courseName}}
- {{#addMemoBoxLectures}}
-
- {{/addMemoBoxLectures}}
-
-
{{todoBox.memoLabel}}
-
{{todoBox.dueDate}}
-
+
+
{{todoBox.courseName}}
+
+ {{#addMemoBoxLectures}}
+
+ {{/addMemoBoxLectures}}
+
+
+
+
{{todoBox.memoLabel}}
+
+
+
+
{{todoBox.dueDate}}
+
+
+
+
+
{{/subset}}
From fd0255b7a9274047b4e0e0726148797ce9cda45a Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 15 Sep 2021 10:39:06 +0900
Subject: [PATCH 036/196] =?UTF-8?q?add:=20=E5=8B=95=E4=BD=9C=E3=81=99?=
=?UTF-8?q?=E3=82=8B=E3=82=B5=E3=82=A4=E3=83=88=E3=82=92=E8=BF=BD=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
manifest.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/manifest.json b/manifest.json
index 6087c0a..136692f 100644
--- a/manifest.json
+++ b/manifest.json
@@ -26,7 +26,7 @@
"css": [
"css/custom-panda.css"
],
- "matches": ["https://panda.ecs.kyoto-u.ac.jp/*"]
+ "matches": ["https://panda.ecs.kyoto-u.ac.jp/*", "https://qa12-mysql.nightly.sakaiproject.org/*", "https://qa20-mysql.nightly.sakaiproject.org/"]
}
],
"background": {
From a5623226011cf502a8e2f9ca61b1db14f707de3a Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 15 Sep 2021 11:58:35 +0900
Subject: [PATCH 037/196] =?UTF-8?q?fix:=20courseSiteID=E3=81=8C=E8=A1=A8?=
=?UTF-8?q?=E7=A4=BA=E3=81=95=E3=82=8C=E3=81=AA=E3=81=84=E4=B8=8D=E5=85=B7?=
=?UTF-8?q?=E5=90=88=E3=82=92=E4=BF=AE=E6=AD=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
public/views/minisakai.mustache | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/public/views/minisakai.mustache b/public/views/minisakai.mustache
index f32dff5..6702faa 100644
--- a/public/views/minisakai.mustache
+++ b/public/views/minisakai.mustache
@@ -48,8 +48,8 @@
{{#dangerElements}}
+ {{#entries}}
+ {{/entries}}
{{/dangerElements}}
{{/showDanger}}
@@ -77,8 +77,8 @@
{{#warningElements}}
+ {{#entries}}
+ {{/entries}}
{{/warningElements}}
{{/showWarning}}
@@ -106,8 +106,8 @@
{{#successElements}}
+ {{#entries}}
+ {{/entries}}
{{/successElements}}
{{/showSuccess}}
@@ -135,9 +136,9 @@
{{#otherElements}}
+ {{#entries}}
+ {{/entries}}
{{/otherElements}}
{{/showOther}}
From 99faaed56c2693a9e48f0285eb977e2218298bef Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 15 Sep 2021 11:59:34 +0900
Subject: [PATCH 038/196] =?UTF-8?q?add:=20=E4=BB=96=E3=81=AESakai=E3=82=B5?=
=?UTF-8?q?=E3=83=BC=E3=83=90=E3=83=BC=E3=81=AB=E5=AF=BE=E5=BF=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
manifest.json | 2 +-
src/content_script.ts | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/manifest.json b/manifest.json
index 136692f..51ef4ed 100644
--- a/manifest.json
+++ b/manifest.json
@@ -26,7 +26,7 @@
"css": [
"css/custom-panda.css"
],
- "matches": ["https://panda.ecs.kyoto-u.ac.jp/*", "https://qa12-mysql.nightly.sakaiproject.org/*", "https://qa20-mysql.nightly.sakaiproject.org/"]
+ "matches": ["https://panda.ecs.kyoto-u.ac.jp/*", "https://qa12-mysql.nightly.sakaiproject.org/*", "https://qa20-mysql.nightly.sakaiproject.org/*"]
}
],
"background": {
diff --git a/src/content_script.ts b/src/content_script.ts
index 4555485..d46aceb 100644
--- a/src/content_script.ts
+++ b/src/content_script.ts
@@ -2,6 +2,7 @@ import { loadFromLocalStorage, saveToLocalStorage } from "./storage";
import { Kadai, LectureInfo } from "./kadai";
import {
fetchLectureIDs,
+ getBaseURL,
getKadaiOfLectureID,
getQuizOfLectureID,
} from "./network";
@@ -24,7 +25,7 @@ import {
} from "./utils";
import { DefaultSettings, Settings } from "./settings";
-export const baseURL = "https://panda.ecs.kyoto-u.ac.jp";
+export const baseURL = getBaseURL();
export const VERSION = "1.0.0";
export let kadaiCacheInterval: number;
export let quizCacheInterval: number;
@@ -121,7 +122,6 @@ async function main() {
await loadSettings();
await loadLectureIDs();
mergedKadaiList = await loadAndMergeKadaiList(lectureIDList, useCache(kadaiFetchedTime, kadaiCacheInterval), useCache(quizFetchedTime, quizCacheInterval));
-
await addBookmarkedCourseSites(baseURL);
await displayMiniPandA(mergedKadaiList, lectureIDList);
createNavBarNotification(lectureIDList, mergedKadaiList);
From ee598a996ccccab380b695f69bd2d8aa7519a6d3 Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 15 Sep 2021 11:59:51 +0900
Subject: [PATCH 039/196] =?UTF-8?q?add:=20=E4=BB=96=E3=81=AESakai=E3=82=B5?=
=?UTF-8?q?=E3=83=BC=E3=83=90=E3=83=BC=E3=81=AB=E5=AF=BE=E5=BF=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/network.ts | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/network.ts b/src/network.ts
index 50ede90..fba4ef6 100644
--- a/src/network.ts
+++ b/src/network.ts
@@ -2,6 +2,16 @@ import { Kadai, KadaiEntry, LectureInfo } from "./kadai";
import { nowTime } from "./utils";
import { CPsettings } from "./content_script";
+
+function getBaseURL(): string {
+ let baseURL = "";
+ const match = location.href.match("(https?://[^/]+)/portal");
+ if (match) {
+ baseURL = match[1];
+ }
+ return baseURL;
+}
+
// Lecture ID をすべて取得する
// ネットワーク通信は行わない
// returns [domain, {tabType, lectureID, lectureName}]
@@ -15,7 +25,7 @@ function fetchLectureIDs(): [string, Array] {
const lecture = elem
.getElementsByTagName("div")[0]
.getElementsByTagName("a")[0];
- const m = lecture.href.match("(https?://[^/]+)/portal/site-reset/([^/]+)");
+ const m = lecture.href.match("(https?://[^/]+)/portal/site-?[a-z]*/([^/]+)");
if (m && m[2][0] !== "~") {
lectureInfo.lectureID = m[2];
lectureInfo.lectureName = lecture.title;
@@ -118,4 +128,4 @@ function convJsonToQuizEntries(data: Record, baseURL: string, siteI
});
}
-export { fetchLectureIDs, getKadaiOfLectureID, getQuizOfLectureID };
+export { getBaseURL, fetchLectureIDs, getKadaiOfLectureID, getQuizOfLectureID };
From 25e432ba8149c3ce7800d505a24e0f9a4ebf7343 Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 15 Sep 2021 12:00:16 +0900
Subject: [PATCH 040/196] =?UTF-8?q?fix:=20=E3=82=AD=E3=83=A3=E3=83=83?=
=?UTF-8?q?=E3=82=B7=E3=83=A5=E3=81=8C=E4=BD=BF=E3=82=8F=E3=82=8C=E3=81=AA?=
=?UTF-8?q?=E3=81=84=E4=B8=8D=E5=85=B7=E5=90=88=E3=81=AE=E4=BF=AE=E6=AD=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/eventListener.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/eventListener.ts b/src/eventListener.ts
index 3a6575a..12447b1 100644
--- a/src/eventListener.ts
+++ b/src/eventListener.ts
@@ -123,7 +123,7 @@ async function toggleKadaiFinishedFlag(event: any): Promise {
// NavBarを再描画
deleteNavBarNotification();
- const newKadaiList = await loadAndMergeKadaiList(lectureIDList, false, false);
+ const newKadaiList = await loadAndMergeKadaiList(lectureIDList, true, true);
createNavBarNotification(lectureIDList, newKadaiList);
}
From 6f4d48615075a547644b5f5a3e88fcfd43649fd7 Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 15 Sep 2021 13:11:14 +0900
Subject: [PATCH 041/196] =?UTF-8?q?fix:=20Sakai=E3=82=B5=E3=83=BC=E3=83=90?=
=?UTF-8?q?=E3=83=BC=E3=81=A7site=E3=83=AA=E3=83=B3=E3=82=AF=E3=81=8C?=
=?UTF-8?q?=E7=95=B0=E3=81=AA=E3=82=8B=E3=81=9F=E3=82=81=E6=AD=A3=E8=A6=8F?=
=?UTF-8?q?=E8=A1=A8=E7=8F=BE=E3=82=92=E8=BF=BD=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/minipanda.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/minipanda.ts b/src/minipanda.ts
index cce46ab..a6f7910 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -291,7 +291,7 @@ function createNavBarNotification(lectureIDList: Array, kadaiList:
for (const lecture of lectureIDList) {
for (let j = 3; j < defaultTabCount; j++) {
// @ts-ignore
- const lectureID = defaultTab[j].getElementsByClassName("link-container")[0].href.match("(https?://[^/]+)/portal/site-reset/([^/]+)")[2];
+ const lectureID = defaultTab[j].getElementsByClassName("link-container")[0].href.match("(https?://[^/]+)/portal/site-?[a-z]*/([^/]+)")[2];
const q = kadaiList.findIndex((kadai) => {
return kadai.lectureID === lectureID;
From 979edae7865a332fa44757949942cad748e0beb3 Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 15 Sep 2021 13:23:24 +0900
Subject: [PATCH 042/196] =?UTF-8?q?fix:=20Sakai=2012,=2020=E3=81=A7?=
=?UTF-8?q?=E5=8B=95=E4=BD=9C=E7=A2=BA=E8=AA=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/minipanda.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/minipanda.ts b/src/minipanda.ts
index a6f7910..058127f 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -289,7 +289,7 @@ function createNavBarNotification(lectureIDList: Array, kadaiList:
const defaultTabCount = Object.keys(defaultTab).length;
for (const lecture of lectureIDList) {
- for (let j = 3; j < defaultTabCount; j++) {
+ for (let j = 2; j < defaultTabCount; j++) {
// @ts-ignore
const lectureID = defaultTab[j].getElementsByClassName("link-container")[0].href.match("(https?://[^/]+)/portal/site-?[a-z]*/([^/]+)")[2];
From 0405f5202034b98f626e7fe98dd4d81151d21b02 Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 15 Sep 2021 13:39:08 +0900
Subject: [PATCH 043/196] =?UTF-8?q?fix:=20lectureID=E3=81=AE=E5=90=8D?=
=?UTF-8?q?=E7=A7=B0=E5=A4=89=E6=9B=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/content_script.ts | 22 +++++++++++-----------
src/eventListener.ts | 22 +++++++++++-----------
src/kadai.ts | 2 +-
src/minipanda.ts | 10 +++++-----
src/network.ts | 14 +++++---------
src/subpanda.ts | 6 +++---
src/utils.ts | 4 ++--
7 files changed, 38 insertions(+), 42 deletions(-)
diff --git a/src/content_script.ts b/src/content_script.ts
index d46aceb..7bb681e 100644
--- a/src/content_script.ts
+++ b/src/content_script.ts
@@ -1,7 +1,7 @@
import { loadFromLocalStorage, saveToLocalStorage } from "./storage";
-import { Kadai, LectureInfo } from "./kadai";
+import { Kadai, CourseSiteInfo } from "./kadai";
import {
- fetchLectureIDs,
+ getCourseIDList,
getBaseURL,
getKadaiOfLectureID,
getQuizOfLectureID,
@@ -31,12 +31,12 @@ export let kadaiCacheInterval: number;
export let quizCacheInterval: number;
export let kadaiFetchedTime: number;
export let quizFetchedTime: number;
-export let lectureIDList: Array;
+export let courseIDList: Array;
export let mergedKadaiList: Array;
export let mergedKadaiListNoMemo: Array;
export let CPsettings: Settings;
-export async function loadAndMergeKadaiList(lectureIDList: Array, useKadaiCache: boolean, useQuizCache: boolean): Promise> {
+export async function loadAndMergeKadaiList(lectureIDList: Array, useKadaiCache: boolean, useQuizCache: boolean): Promise> {
// ストレージから前回保存したkadaiListを読み込む
const oldKadaiList = await loadFromLocalStorage("TSkadaiList");
const oldQuizList = await loadFromLocalStorage("TSQuizList");
@@ -111,20 +111,20 @@ async function loadSettings() {
quizFetchedTime = await loadFromLocalStorage("TSquizFetchedTime");
}
-async function loadLectureIDs() {
- lectureIDList = fetchLectureIDs()[1];
- await saveToLocalStorage("TSlectureids", lectureIDList);
+async function loadCourseIDList() {
+ courseIDList = getCourseIDList();
+ await saveToLocalStorage("TSlectureids", courseIDList);
}
async function main() {
if (isLoggedIn()) {
createMiniSakaiBtn();
await loadSettings();
- await loadLectureIDs();
- mergedKadaiList = await loadAndMergeKadaiList(lectureIDList, useCache(kadaiFetchedTime, kadaiCacheInterval), useCache(quizFetchedTime, quizCacheInterval));
+ await loadCourseIDList();
+ mergedKadaiList = await loadAndMergeKadaiList(courseIDList, useCache(kadaiFetchedTime, kadaiCacheInterval), useCache(quizFetchedTime, quizCacheInterval));
await addBookmarkedCourseSites(baseURL);
- await displayMiniPandA(mergedKadaiList, lectureIDList);
- createNavBarNotification(lectureIDList, mergedKadaiList);
+ await displayMiniPandA(mergedKadaiList, courseIDList);
+ createNavBarNotification(courseIDList, mergedKadaiList);
miniSakaiReady();
updateIsReadFlag(mergedKadaiListNoMemo);
diff --git a/src/eventListener.ts b/src/eventListener.ts
index 12447b1..ccdd11f 100644
--- a/src/eventListener.ts
+++ b/src/eventListener.ts
@@ -4,7 +4,7 @@ import { Kadai, KadaiEntry } from "./kadai";
import { convertArrayToKadai, genUniqueStr, mergeIntoKadaiList } from "./utils";
import {
CPsettings,
- lectureIDList,
+ courseIDList,
loadAndMergeKadaiList,
mergedKadaiListNoMemo,
} from "./content_script";
@@ -123,8 +123,8 @@ async function toggleKadaiFinishedFlag(event: any): Promise {
// NavBarを再描画
deleteNavBarNotification();
- const newKadaiList = await loadAndMergeKadaiList(lectureIDList, true, true);
- createNavBarNotification(lectureIDList, newKadaiList);
+ const newKadaiList = await loadAndMergeKadaiList(courseIDList, true, true);
+ createNavBarNotification(courseIDList, newKadaiList);
}
async function updateSettings(event: any, type: string): Promise {
@@ -176,8 +176,8 @@ async function updateSettings(event: any, type: string): Promise {
// NavBarを再描画
deleteNavBarNotification();
- const newKadaiList = await loadAndMergeKadaiList(lectureIDList, false, false);
- createNavBarNotification(lectureIDList, newKadaiList);
+ const newKadaiList = await loadAndMergeKadaiList(courseIDList, false, false);
+ createNavBarNotification(courseIDList, newKadaiList);
}
async function addKadaiMemo(): Promise {
@@ -221,12 +221,12 @@ async function addKadaiMemo(): Promise {
kadaiDiv.remove();
const kadaiList = mergeIntoKadaiList(mergedKadaiListNoMemo, kadaiMemoList);
const quizList = await loadFromLocalStorage("TSQuizList");
- await displayMiniPandA(mergeIntoKadaiList(kadaiList, quizList), lectureIDList);
+ await displayMiniPandA(mergeIntoKadaiList(kadaiList, quizList), courseIDList);
// NavBarを再描画
deleteNavBarNotification();
- const newKadaiList = await loadAndMergeKadaiList(lectureIDList, false, false);
- createNavBarNotification(lectureIDList, newKadaiList);
+ const newKadaiList = await loadAndMergeKadaiList(courseIDList, false, false);
+ createNavBarNotification(courseIDList, newKadaiList);
}
async function deleteKadaiMemo(event: any): Promise {
@@ -254,12 +254,12 @@ async function deleteKadaiMemo(event: any): Promise {
saveToLocalStorage("TSkadaiMemoList", deletedKadaiMemoList);
const kadaiList = mergeIntoKadaiList(mergedKadaiListNoMemo, deletedKadaiMemoList);
const quizList = await loadFromLocalStorage("TSQuizList");
- await displayMiniPandA(mergeIntoKadaiList(kadaiList, quizList), lectureIDList);
+ await displayMiniPandA(mergeIntoKadaiList(kadaiList, quizList), courseIDList);
// NavBarを再描画
deleteNavBarNotification();
- const newKadaiList = await loadAndMergeKadaiList(lectureIDList, false, false);
- createNavBarNotification(lectureIDList, newKadaiList);
+ const newKadaiList = await loadAndMergeKadaiList(courseIDList, false, false);
+ createNavBarNotification(courseIDList, newKadaiList);
}
async function editFavTabMessage(): Promise {
diff --git a/src/kadai.ts b/src/kadai.ts
index 795bd78..469110c 100644
--- a/src/kadai.ts
+++ b/src/kadai.ts
@@ -83,7 +83,7 @@ export class Kadai {
}
}
-export class LectureInfo {
+export class CourseSiteInfo {
tabType: string;
lectureID: string;
lectureName: string;
diff --git a/src/minipanda.ts b/src/minipanda.ts
index 058127f..6aa8899 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -1,4 +1,4 @@
-import { Kadai, LectureInfo } from "./kadai";
+import { Kadai, CourseSiteInfo } from "./kadai";
import {
createLectureIDMap,
formatTimestamp,
@@ -43,7 +43,7 @@ function createMiniSakaiBtn(): void {
}
}
-export function createMiniPandAGeneralized(root: Element, kadaiList: Array, lectureIDList: Array, subset: boolean, insertionProcess: (rendered: string) => void): void {
+export function createMiniPandAGeneralized(root: Element, kadaiList: Array, lectureIDList: Array, subset: boolean, insertionProcess: (rendered: string) => void): void {
const kadaiFetchedTimestamp = new Date( (typeof kadaiFetchedTime === "number")? kadaiFetchedTime : nowTime);
const kadaiFetchedTimeString = kadaiFetchedTimestamp.toLocaleDateString() + " " + kadaiFetchedTimestamp.getHours() + ":" + ("00" + kadaiFetchedTimestamp.getMinutes()).slice(-2) + ":" + ("00" + kadaiFetchedTimestamp.getSeconds()).slice(-2);
const quizFetchedTimestamp = new Date((typeof quizFetchedTime === "number")? quizFetchedTime : nowTime);
@@ -184,7 +184,7 @@ export function createMiniPandAGeneralized(root: Element, kadaiList: Array, lectureIDList: Array): void {
+function createMiniPandA(kadaiList: Array, lectureIDList: Array): void {
createMiniPandAGeneralized(miniPandA, kadaiList, lectureIDList, false, (rendered) => {
miniPandA.innerHTML = rendered;
const parent = document.getElementById("pageBody");
@@ -268,7 +268,7 @@ function initState(root: Element) {
root.querySelector('.todoDue')?.value = new Date(`${new Date().toISOString().substr(0, 16)}-10:00`).toISOString().substr(0, 16);
}
-async function displayMiniPandA(mergedKadaiList: Array, lectureIDList: Array): Promise{
+async function displayMiniPandA(mergedKadaiList: Array, lectureIDList: Array): Promise{
createMiniPandA(mergedKadaiList, lectureIDList);
}
@@ -284,7 +284,7 @@ function deleteNavBarNotification(): void {
}
}
-function createNavBarNotification(lectureIDList: Array, kadaiList: Array): void {
+function createNavBarNotification(lectureIDList: Array, kadaiList: Array): void {
const defaultTab = document.querySelectorAll(".Mrphs-sitesNav__menuitem");
const defaultTabCount = Object.keys(defaultTab).length;
diff --git a/src/network.ts b/src/network.ts
index fba4ef6..35fb3d1 100644
--- a/src/network.ts
+++ b/src/network.ts
@@ -1,4 +1,4 @@
-import { Kadai, KadaiEntry, LectureInfo } from "./kadai";
+import { Kadai, KadaiEntry, CourseSiteInfo } from "./kadai";
import { nowTime } from "./utils";
import { CPsettings } from "./content_script";
@@ -14,12 +14,11 @@ function getBaseURL(): string {
// Lecture ID をすべて取得する
// ネットワーク通信は行わない
-// returns [domain, {tabType, lectureID, lectureName}]
-function fetchLectureIDs(): [string, Array] {
+// returns [{tabType, lectureID, lectureName}]
+function getCourseIDList(): Array {
const elementCollection = document.getElementsByClassName("fav-sites-entry");
const elements = Array.prototype.slice.call(elementCollection);
const result = [];
- let domain = null;
for (const elem of elements) {
const lectureInfo = { tabType: "default", lectureID: "", lectureName: "" }; // tabTypeはPandAのトップバーに存在するかしないか
const lecture = elem
@@ -30,12 +29,9 @@ function fetchLectureIDs(): [string, Array] {
lectureInfo.lectureID = m[2];
lectureInfo.lectureName = lecture.title;
result.push(lectureInfo);
- if (!domain) {
- domain = m[1];
- }
}
}
- return [domain, result];
+ return result;
}
function getKadaiOfLectureID(baseURL: string, lectureID: string): Promise {
@@ -128,4 +124,4 @@ function convJsonToQuizEntries(data: Record, baseURL: string, siteI
});
}
-export { getBaseURL, fetchLectureIDs, getKadaiOfLectureID, getQuizOfLectureID };
+export { getBaseURL, getCourseIDList, getKadaiOfLectureID, getQuizOfLectureID };
diff --git a/src/subpanda.ts b/src/subpanda.ts
index 34350a6..38b8717 100644
--- a/src/subpanda.ts
+++ b/src/subpanda.ts
@@ -1,4 +1,4 @@
-import { Kadai, LectureInfo } from './kadai';
+import { Kadai, CourseSiteInfo } from './kadai';
import { loadFromLocalStorage } from './storage'
import {
convertArrayToKadai,
@@ -6,7 +6,7 @@ import {
sortKadaiList
} from "./utils";
import {
- lectureIDList
+ courseIDList
} from "./content_script"
import { createMiniPandAGeneralized } from "./minipanda"
@@ -18,7 +18,7 @@ async function updateSubPandA(root: Element) {
const kadais = await loadFromLocalStorage("TSkadaiList") as Array;
const quizList = await loadFromLocalStorage("TSQuizList") as Array;
const kadaiMemoList = convertArrayToKadai(await loadFromLocalStorage("TSkadaiMemoList"));
- const lectureIDs = await loadFromLocalStorage("TSlectureids") as Array;
+ const lectureIDs = await loadFromLocalStorage("TSlectureids") as Array;
mergedKadaiList = mergeIntoKadaiList(kadais, quizList);
mergedKadaiList = mergeIntoKadaiList(mergedKadaiList, kadaiMemoList);
mergedKadaiList = sortKadaiList(mergedKadaiList);
diff --git a/src/utils.ts b/src/utils.ts
index 6541406..586910f 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -1,4 +1,4 @@
-import { Kadai, KadaiEntry, LectureInfo } from "./kadai";
+import { Kadai, KadaiEntry, CourseSiteInfo } from "./kadai";
import { saveToLocalStorage } from "./storage";
export const nowTime = new Date().getTime();
@@ -22,7 +22,7 @@ function formatTimestamp(timestamp: number): string {
return _date.toLocaleDateString() + " " + _date.getHours() + ":" + ("00" + _date.getMinutes()).slice(-2);
}
-function createLectureIDMap(lectureIDList: Array): Map {
+function createLectureIDMap(lectureIDList: Array): Map {
// 講義IDと講義名のMapを作る
const lectureIDMap = new Map();
for (const lec of lectureIDList) {
From d8f8ebdba181f98c0db83c9611b48d2615059b3f Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 15 Sep 2021 13:49:31 +0900
Subject: [PATCH 044/196] =?UTF-8?q?fix:=20lectureID=E3=81=AE=E5=90=8D?=
=?UTF-8?q?=E7=A7=B0=E5=A4=89=E6=9B=B42?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/content_script.ts | 6 +++---
src/minipanda.ts | 16 ++++++++--------
src/utils.ts | 6 +++---
3 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/src/content_script.ts b/src/content_script.ts
index 7bb681e..8ad9db1 100644
--- a/src/content_script.ts
+++ b/src/content_script.ts
@@ -36,7 +36,7 @@ export let mergedKadaiList: Array;
export let mergedKadaiListNoMemo: Array;
export let CPsettings: Settings;
-export async function loadAndMergeKadaiList(lectureIDList: Array, useKadaiCache: boolean, useQuizCache: boolean): Promise> {
+export async function loadAndMergeKadaiList(courseSiteInfos: Array, useKadaiCache: boolean, useQuizCache: boolean): Promise> {
// ストレージから前回保存したkadaiListを読み込む
const oldKadaiList = await loadFromLocalStorage("TSkadaiList");
const oldQuizList = await loadFromLocalStorage("TSQuizList");
@@ -49,7 +49,7 @@ export async function loadAndMergeKadaiList(lectureIDList: Array
console.log("Fetching assignments...");
const pendingList = [];
// 課題取得待ちリストに追加
- for (const i of lectureIDList) {
+ for (const i of courseSiteInfos) {
pendingList.push(getKadaiOfLectureID(baseURL, i.lectureID));
}
// 全部揃ったら取得に成功したものをnewKadaiListに入れる
@@ -73,7 +73,7 @@ export async function loadAndMergeKadaiList(lectureIDList: Array
console.log("Fetching quizzes...");
const pendingList = [];
// クイズ取得待ちリストに追加
- for (const i of lectureIDList) {
+ for (const i of courseSiteInfos) {
pendingList.push(getQuizOfLectureID(baseURL, i.lectureID));
}
// 全部揃ったら取得に成功したものをnewQuizListに入れる
diff --git a/src/minipanda.ts b/src/minipanda.ts
index 6aa8899..bd68142 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -43,7 +43,7 @@ function createMiniSakaiBtn(): void {
}
}
-export function createMiniPandAGeneralized(root: Element, kadaiList: Array, lectureIDList: Array, subset: boolean, insertionProcess: (rendered: string) => void): void {
+export function createMiniPandAGeneralized(root: Element, kadaiList: Array, courseSiteInfos: Array, subset: boolean, insertionProcess: (rendered: string) => void): void {
const kadaiFetchedTimestamp = new Date( (typeof kadaiFetchedTime === "number")? kadaiFetchedTime : nowTime);
const kadaiFetchedTimeString = kadaiFetchedTimestamp.toLocaleDateString() + " " + kadaiFetchedTimestamp.getHours() + ":" + ("00" + kadaiFetchedTimestamp.getMinutes()).slice(-2) + ":" + ("00" + kadaiFetchedTimestamp.getSeconds()).slice(-2);
const quizFetchedTimestamp = new Date((typeof quizFetchedTime === "number")? quizFetchedTime : nowTime);
@@ -51,7 +51,7 @@ export function createMiniPandAGeneralized(root: Element, kadaiList: Array = [];
- const lectureIDMap = createLectureIDMap(lectureIDList);
+ const lectureIDMap = createLectureIDMap(courseSiteInfos);
const dangerElements: Array = [];
const warningElements: Array = [];
const successElements: Array = [];
@@ -184,8 +184,8 @@ export function createMiniPandAGeneralized(root: Element, kadaiList: Array, lectureIDList: Array): void {
- createMiniPandAGeneralized(miniPandA, kadaiList, lectureIDList, false, (rendered) => {
+function createMiniPandA(kadaiList: Array, courseSiteInfos: Array): void {
+ createMiniPandAGeneralized(miniPandA, kadaiList, courseSiteInfos, false, (rendered) => {
miniPandA.innerHTML = rendered;
const parent = document.getElementById("pageBody");
const ref = document.getElementById("toolMenuWrap");
@@ -268,8 +268,8 @@ function initState(root: Element) {
root.querySelector('.todoDue')?.value = new Date(`${new Date().toISOString().substr(0, 16)}-10:00`).toISOString().substr(0, 16);
}
-async function displayMiniPandA(mergedKadaiList: Array, lectureIDList: Array): Promise{
- createMiniPandA(mergedKadaiList, lectureIDList);
+async function displayMiniPandA(mergedKadaiList: Array, courseSiteInfos: Array): Promise{
+ createMiniPandA(mergedKadaiList, courseSiteInfos);
}
function deleteNavBarNotification(): void {
@@ -284,11 +284,11 @@ function deleteNavBarNotification(): void {
}
}
-function createNavBarNotification(lectureIDList: Array, kadaiList: Array): void {
+function createNavBarNotification(courseSiteInfos: Array, kadaiList: Array): void {
const defaultTab = document.querySelectorAll(".Mrphs-sitesNav__menuitem");
const defaultTabCount = Object.keys(defaultTab).length;
- for (const lecture of lectureIDList) {
+ for (const courseSiteInfo of courseSiteInfos) {
for (let j = 2; j < defaultTabCount; j++) {
// @ts-ignore
const lectureID = defaultTab[j].getElementsByClassName("link-container")[0].href.match("(https?://[^/]+)/portal/site-?[a-z]*/([^/]+)")[2];
diff --git a/src/utils.ts b/src/utils.ts
index 586910f..7aeee3c 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -22,11 +22,11 @@ function formatTimestamp(timestamp: number): string {
return _date.toLocaleDateString() + " " + _date.getHours() + ":" + ("00" + _date.getMinutes()).slice(-2);
}
-function createLectureIDMap(lectureIDList: Array): Map {
+function createLectureIDMap(courseSiteInfos: Array): Map {
// 講義IDと講義名のMapを作る
const lectureIDMap = new Map();
- for (const lec of lectureIDList) {
- lectureIDMap.set(lec.lectureID, lec.lectureName);
+ for (const courseSiteInfo of courseSiteInfos) {
+ lectureIDMap.set(courseSiteInfo.lectureID, courseSiteInfo.lectureName);
}
return lectureIDMap;
}
From 467656c34a4eed8cee4e6bd2df91f8be49b5e201 Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 15 Sep 2021 13:54:08 +0900
Subject: [PATCH 045/196] =?UTF-8?q?fix:=20lectureID=E3=81=AE=E5=90=8D?=
=?UTF-8?q?=E7=A7=B0=E5=A4=89=E6=9B=B43?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/minipanda.ts | 8 ++++----
src/utils.ts | 24 ++++++++++++------------
2 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/src/minipanda.ts b/src/minipanda.ts
index bd68142..d3e7733 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -1,6 +1,6 @@
import { Kadai, CourseSiteInfo } from "./kadai";
import {
- createLectureIDMap,
+ createCourseIDMap,
formatTimestamp,
getDaysUntil,
getTimeRemain,
@@ -51,14 +51,14 @@ export function createMiniPandAGeneralized(root: Element, kadaiList: Array = [];
- const lectureIDMap = createLectureIDMap(courseSiteInfos);
+ const courseIDMap = createCourseIDMap(courseSiteInfos);
const dangerElements: Array = [];
const warningElements: Array = [];
const successElements: Array = [];
const otherElements: Array = [];
// loop over lectures
kadaiList.forEach(item => {
- const lectureName = lectureIDMap.get(item.lectureID);
+ const lectureName = courseIDMap.get(item.lectureID);
// loop over kadais
item.kadaiEntries.forEach(kadai => {
const dispDue = formatTimestamp(kadai.dueDateTimestamp);
@@ -213,7 +213,7 @@ async function createSettingsTab(root: Element): Promise {
}
function createSettingItem(root: Element, itemDescription: string, value: boolean | number | string | null, id: string, display = true) {
- const settingsDiv = root.querySelector('.settings-tab');
+ const settingsDiv = root.querySelector(".settings-tab");
if (settingsDiv == null) {
console.log(".settings-tab not found");
return;
diff --git a/src/utils.ts b/src/utils.ts
index 7aeee3c..e00a116 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -22,13 +22,13 @@ function formatTimestamp(timestamp: number): string {
return _date.toLocaleDateString() + " " + _date.getHours() + ":" + ("00" + _date.getMinutes()).slice(-2);
}
-function createLectureIDMap(courseSiteInfos: Array): Map {
+function createCourseIDMap(courseSiteInfos: Array): Map {
// 講義IDと講義名のMapを作る
- const lectureIDMap = new Map();
+ const courseIDMap = new Map();
for (const courseSiteInfo of courseSiteInfos) {
- lectureIDMap.set(courseSiteInfo.lectureID, courseSiteInfo.lectureName);
+ courseIDMap.set(courseSiteInfo.lectureID, courseSiteInfo.lectureName);
}
- return lectureIDMap;
+ return courseIDMap;
}
function isLoggedIn(): boolean {
@@ -42,24 +42,24 @@ function isLoggedIn(): boolean {
return loggedIn;
}
-function getCurrentLectureID() {
+function getSiteCourseID() {
// 現在のページの講義IDを返す
const url = location.href;
- let lectureID = "";
+ let courseID = "";
const reg = new RegExp("(https?://[^/]+)/portal/site/([^/]+)");
if (url.match(reg)) {
// @ts-ignore
- lectureID = url.match(reg)[2];
+ courseID = url.match(reg)[2];
}
- return lectureID;
+ return courseID;
}
function updateIsReadFlag(kadaiList: Array): void {
- const lectureID = getCurrentLectureID();
+ const courseID = getSiteCourseID();
const updatedKadaiList = [];
- if (lectureID && lectureID.length >= 17) {
+ if (courseID && courseID.length >= 17) {
for (const kadai of kadaiList) {
- if (kadai.lectureID === lectureID) {
+ if (kadai.lectureID === courseID) {
updatedKadaiList.push(new Kadai(kadai.lectureID, kadai.lectureName, kadai.kadaiEntries, true));
} else {
updatedKadaiList.push(kadai);
@@ -184,7 +184,7 @@ export {
getDaysUntil,
getTimeRemain,
formatTimestamp,
- createLectureIDMap,
+ createCourseIDMap,
isLoggedIn,
miniSakaiReady,
convertArrayToKadai,
From aef0e6084394d1df74fa1c66f06239e74f138e50 Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 15 Sep 2021 14:02:20 +0900
Subject: [PATCH 046/196] =?UTF-8?q?fix:=20lectureID=E3=81=AE=E5=90=8D?=
=?UTF-8?q?=E7=A7=B0=E5=A4=89=E6=9B=B44?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/content_script.ts | 8 ++++----
src/kadai.ts | 12 ++++++------
src/network.ts | 29 ++++++++++++++---------------
src/utils.ts | 2 +-
4 files changed, 25 insertions(+), 26 deletions(-)
diff --git a/src/content_script.ts b/src/content_script.ts
index 8ad9db1..296443b 100644
--- a/src/content_script.ts
+++ b/src/content_script.ts
@@ -3,8 +3,8 @@ import { Kadai, CourseSiteInfo } from "./kadai";
import {
getCourseIDList,
getBaseURL,
- getKadaiOfLectureID,
- getQuizOfLectureID,
+ getKadaiFromCourseID,
+ getQuizFromCourseID,
} from "./network";
import {
createMiniSakaiBtn,
@@ -50,7 +50,7 @@ export async function loadAndMergeKadaiList(courseSiteInfos: Array {
const elementCollection = document.getElementsByClassName("fav-sites-entry");
const elements = Array.prototype.slice.call(elementCollection);
const result = [];
for (const elem of elements) {
- const lectureInfo = { tabType: "default", lectureID: "", lectureName: "" }; // tabTypeはPandAのトップバーに存在するかしないか
+ const lectureInfo = new CourseSiteInfo("default", "", ""); // tabTypeはPandAのトップバーに存在するかしないか
const lecture = elem
.getElementsByTagName("div")[0]
.getElementsByTagName("a")[0];
const m = lecture.href.match("(https?://[^/]+)/portal/site-?[a-z]*/([^/]+)");
if (m && m[2][0] !== "~") {
- lectureInfo.lectureID = m[2];
- lectureInfo.lectureName = lecture.title;
+ lectureInfo.courseID = m[2];
+ lectureInfo.courseName = lecture.title;
result.push(lectureInfo);
}
}
return result;
}
-function getKadaiOfLectureID(baseURL: string, lectureID: string): Promise {
- const queryURL = baseURL + "/direct/assignment/site/" + lectureID + ".json";
+function getKadaiFromCourseID(baseURL: string, courseID: string): Promise {
+ const queryURL = baseURL + "/direct/assignment/site/" + courseID + ".json";
const request = new XMLHttpRequest();
request.open("GET", queryURL);
// キャッシュ対策
@@ -49,11 +48,11 @@ function getKadaiOfLectureID(baseURL: string, lectureID: string): Promise
if (!res || !res.assignment_collection)
reject("404 kadai data not found");
else {
- const kadaiEntries = convJsonToKadaiEntries(res, baseURL, lectureID);
+ const kadaiEntries = convJsonToKadaiEntries(res, baseURL, courseID);
resolve(
new Kadai(
- lectureID,
- lectureID, // TODO: lectureName
+ courseID,
+ courseID, // TODO: lectureName
kadaiEntries,
false
)
@@ -64,8 +63,8 @@ function getKadaiOfLectureID(baseURL: string, lectureID: string): Promise
});
}
-function getQuizOfLectureID(baseURL: string, siteID: string) {
- const queryURL = baseURL + "/direct/sam_pub/context/" + siteID + ".json";
+function getQuizFromCourseID(baseURL: string, courseID: string): Promise {
+ const queryURL = baseURL + "/direct/sam_pub/context/" + courseID + ".json";
const request = new XMLHttpRequest();
request.open("GET", queryURL);
// キャッシュ対策
@@ -79,11 +78,11 @@ function getQuizOfLectureID(baseURL: string, siteID: string) {
const res = request.response;
if (!res || !res.sam_pub_collection) reject("404 kadai data not found");
else {
- const kadaiEntries = convJsonToQuizEntries(res, baseURL, siteID);
+ const kadaiEntries = convJsonToQuizEntries(res, baseURL, courseID);
resolve(
new Kadai(
- siteID,
- siteID, // TODO: lectureName
+ courseID,
+ courseID, // TODO: lectureName
kadaiEntries,
false
)
@@ -124,4 +123,4 @@ function convJsonToQuizEntries(data: Record, baseURL: string, siteI
});
}
-export { getBaseURL, getCourseIDList, getKadaiOfLectureID, getQuizOfLectureID };
+export { getBaseURL, getCourseIDList, getKadaiFromCourseID, getQuizFromCourseID };
diff --git a/src/utils.ts b/src/utils.ts
index e00a116..3f2db6c 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -26,7 +26,7 @@ function createCourseIDMap(courseSiteInfos: Array): Map();
for (const courseSiteInfo of courseSiteInfos) {
- courseIDMap.set(courseSiteInfo.lectureID, courseSiteInfo.lectureName);
+ courseIDMap.set(courseSiteInfo.courseID, courseSiteInfo.courseName);
}
return courseIDMap;
}
From 413efa8f160d68b248477cf207b74cd6e8ec4a56 Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 15 Sep 2021 14:06:47 +0900
Subject: [PATCH 047/196] =?UTF-8?q?fix:=20=E3=83=95=E3=82=A1=E3=82=A4?=
=?UTF-8?q?=E3=83=AB=E3=81=AE=E5=90=8D=E7=A7=B0=E5=A4=89=E6=9B=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/content_script.ts | 2 +-
src/eventListener.ts | 2 +-
src/minipanda.ts | 2 +-
src/{kadai.ts => model.ts} | 0
src/network.ts | 2 +-
src/subpanda.ts | 2 +-
src/utils.ts | 2 +-
7 files changed, 6 insertions(+), 6 deletions(-)
rename src/{kadai.ts => model.ts} (100%)
diff --git a/src/content_script.ts b/src/content_script.ts
index 296443b..aa6d654 100644
--- a/src/content_script.ts
+++ b/src/content_script.ts
@@ -1,5 +1,5 @@
import { loadFromLocalStorage, saveToLocalStorage } from "./storage";
-import { Kadai, CourseSiteInfo } from "./kadai";
+import { Kadai, CourseSiteInfo } from "./model";
import {
getCourseIDList,
getBaseURL,
diff --git a/src/eventListener.ts b/src/eventListener.ts
index ccdd11f..001324b 100644
--- a/src/eventListener.ts
+++ b/src/eventListener.ts
@@ -1,6 +1,6 @@
import { kadaiDiv, miniPandA } from "./dom";
import { loadFromLocalStorage, saveToLocalStorage } from "./storage";
-import { Kadai, KadaiEntry } from "./kadai";
+import { Kadai, KadaiEntry } from "./model";
import { convertArrayToKadai, genUniqueStr, mergeIntoKadaiList } from "./utils";
import {
CPsettings,
diff --git a/src/minipanda.ts b/src/minipanda.ts
index d3e7733..0b2113a 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -1,4 +1,4 @@
-import { Kadai, CourseSiteInfo } from "./kadai";
+import { Kadai, CourseSiteInfo } from "./model";
import {
createCourseIDMap,
formatTimestamp,
diff --git a/src/kadai.ts b/src/model.ts
similarity index 100%
rename from src/kadai.ts
rename to src/model.ts
diff --git a/src/network.ts b/src/network.ts
index e4f9579..485679f 100644
--- a/src/network.ts
+++ b/src/network.ts
@@ -1,4 +1,4 @@
-import { Kadai, KadaiEntry, CourseSiteInfo } from "./kadai";
+import { Kadai, KadaiEntry, CourseSiteInfo } from "./model";
import { nowTime } from "./utils";
import { CPsettings } from "./content_script";
diff --git a/src/subpanda.ts b/src/subpanda.ts
index 38b8717..8e84825 100644
--- a/src/subpanda.ts
+++ b/src/subpanda.ts
@@ -1,4 +1,4 @@
-import { Kadai, CourseSiteInfo } from './kadai';
+import { Kadai, CourseSiteInfo } from './model';
import { loadFromLocalStorage } from './storage'
import {
convertArrayToKadai,
diff --git a/src/utils.ts b/src/utils.ts
index 3f2db6c..2d96335 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -1,4 +1,4 @@
-import { Kadai, KadaiEntry, CourseSiteInfo } from "./kadai";
+import { Kadai, KadaiEntry, CourseSiteInfo } from "./model";
import { saveToLocalStorage } from "./storage";
export const nowTime = new Date().getTime();
From fe4f96e924b088dc3154f1c2a878405cb478fe34 Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 15 Sep 2021 14:28:33 +0900
Subject: [PATCH 048/196] =?UTF-8?q?fix:=20=E3=83=A2=E3=83=87=E3=83=AB?=
=?UTF-8?q?=E3=81=AE=E5=A4=A7=E5=B9=85=E6=94=B9=E4=BF=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/eventListener.ts | 10 +++++-----
src/minipanda.ts | 16 ++++++++--------
src/model.ts | 12 +++---------
src/network.ts | 22 +++++-----------------
src/utils.ts | 26 ++++++++++++++------------
5 files changed, 35 insertions(+), 51 deletions(-)
diff --git a/src/eventListener.ts b/src/eventListener.ts
index 001324b..c16229c 100644
--- a/src/eventListener.ts
+++ b/src/eventListener.ts
@@ -1,6 +1,6 @@
import { kadaiDiv, miniPandA } from "./dom";
import { loadFromLocalStorage, saveToLocalStorage } from "./storage";
-import { Kadai, KadaiEntry } from "./model";
+import {CourseSiteInfo, Kadai, KadaiEntry} from "./model";
import { convertArrayToKadai, genUniqueStr, mergeIntoKadaiList } from "./utils";
import {
CPsettings,
@@ -115,7 +115,7 @@ async function toggleKadaiFinishedFlag(event: any): Promise {
updatedKadaiEntries.push(kadaiEntry);
}
}
- updatedKadaiList.push(new Kadai(kadai.lectureID, kadai.lectureName, updatedKadaiEntries, kadai.isRead));
+ updatedKadaiList.push(new Kadai(kadai.courseSiteInfo, updatedKadaiEntries, kadai.isRead));
}
if (kadaiID[0] === "m") saveToLocalStorage("TSkadaiMemoList", updatedKadaiList);
else if (kadaiID[0] === "q") saveToLocalStorage("TSQuizList", updatedKadaiList);
@@ -193,12 +193,12 @@ async function addKadaiMemo(): Promise {
let kadaiMemoList = await loadFromLocalStorage("TSkadaiMemoList");
const kadaiMemoEntry = new KadaiEntry(genUniqueStr(), todoContent, todoTimestamp, true, false, false, "");
- const kadaiMemo = new Kadai(todoLecID, todoLecID, [kadaiMemoEntry], true);
+ const kadaiMemo = new Kadai(new CourseSiteInfo(todoLecID, todoLecID), [kadaiMemoEntry], true);
if (typeof kadaiMemoList !== "undefined" && kadaiMemoList.length > 0) {
kadaiMemoList = convertArrayToKadai(kadaiMemoList);
const idx = kadaiMemoList.findIndex((oldKadaiMemo: Kadai) => {
- return (oldKadaiMemo.lectureID === todoLecID);
+ return (oldKadaiMemo.courseSiteInfo.courseID === todoLecID);
});
if (idx !== -1) {
kadaiMemoList[idx].kadaiEntries.push(kadaiMemoEntry);
@@ -238,7 +238,7 @@ async function deleteKadaiMemo(event: any): Promise {
for (const _kadaiMemoEntry of kadaiMemo.kadaiEntries) {
if (_kadaiMemoEntry.kadaiID !== kadaiID) kadaiMemoEntries.push(_kadaiMemoEntry);
}
- deletedKadaiMemoList.push(new Kadai(kadaiMemo.lectureID, kadaiMemo.lectureName, kadaiMemoEntries, kadaiMemo.isRead));
+ deletedKadaiMemoList.push(new Kadai(kadaiMemo.courseSiteInfo, kadaiMemoEntries, kadaiMemo.isRead));
}
// miniPandAを再描画
diff --git a/src/minipanda.ts b/src/minipanda.ts
index 0b2113a..f6ce233 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -57,10 +57,10 @@ export function createMiniPandAGeneralized(root: Element, kadaiList: Array = [];
const otherElements: Array = [];
// loop over lectures
- kadaiList.forEach(item => {
- const lectureName = courseIDMap.get(item.lectureID);
+ kadaiList.forEach((item) => {
+ const lectureName = courseIDMap.get(item.courseSiteInfo.courseID);
// loop over kadais
- item.kadaiEntries.forEach(kadai => {
+ item.kadaiEntries.forEach((kadai) => {
const dispDue = formatTimestamp(kadai.dueDateTimestamp);
const timeRemain = getTimeRemain((kadai.dueDateTimestamp*1000-nowTime) / 1000);
const daysUntilDue = getDaysUntil(nowTime, kadai.dueDateTimestamp*1000);
@@ -77,7 +77,7 @@ export function createMiniPandAGeneralized(root: Element, kadaiList: Array, kadaiL
for (const courseSiteInfo of courseSiteInfos) {
for (let j = 2; j < defaultTabCount; j++) {
// @ts-ignore
- const lectureID = defaultTab[j].getElementsByClassName("link-container")[0].href.match("(https?://[^/]+)/portal/site-?[a-z]*/([^/]+)")[2];
+ const courseID = defaultTab[j].getElementsByClassName("link-container")[0].href.match("(https?://[^/]+)/portal/site-?[a-z]*/([^/]+)")[2];
- const q = kadaiList.findIndex((kadai) => {
- return kadai.lectureID === lectureID;
+ const q = kadaiList.findIndex((kadai: Kadai) => {
+ return kadai.courseSiteInfo.courseID === courseID;
});
if (q !== -1) {
const closestTime = (CPsettings.displayCheckedKadai) ? kadaiList[q].closestDueDateTimestamp : kadaiList[q].closestDueDateTimestampExcludeFinished;
diff --git a/src/model.ts b/src/model.ts
index f78f6d5..4aa58ba 100644
--- a/src/model.ts
+++ b/src/model.ts
@@ -28,19 +28,16 @@ export class KadaiEntry {
}
export class Kadai {
- lectureID: string;
- lectureName: string;
+ courseSiteInfo: CourseSiteInfo;
kadaiEntries: Array;
isRead: boolean;
constructor(
- lectureID: string,
- lectureName: string,
+ courseSiteInfo: CourseSiteInfo,
kadaiEntries: Array,
isRead: boolean
) {
- this.lectureID = lectureID;
- this.lectureName = lectureName;
+ this.courseSiteInfo = courseSiteInfo;
this.kadaiEntries = kadaiEntries;
this.isRead = isRead;
}
@@ -84,15 +81,12 @@ export class Kadai {
}
export class CourseSiteInfo {
- tabType: string;
courseID: string;
courseName: string;
constructor(
- tabType: string,
courseID: string,
courseName: string
) {
- this.tabType = tabType;
this.courseID = courseID;
this.courseName = courseName;
}
diff --git a/src/network.ts b/src/network.ts
index 485679f..be2f923 100644
--- a/src/network.ts
+++ b/src/network.ts
@@ -19,7 +19,7 @@ function getCourseIDList(): Array {
const elements = Array.prototype.slice.call(elementCollection);
const result = [];
for (const elem of elements) {
- const lectureInfo = new CourseSiteInfo("default", "", ""); // tabTypeはPandAのトップバーに存在するかしないか
+ const lectureInfo = new CourseSiteInfo("", ""); // tabTypeはPandAのトップバーに存在するかしないか
const lecture = elem
.getElementsByTagName("div")[0]
.getElementsByTagName("a")[0];
@@ -48,15 +48,9 @@ function getKadaiFromCourseID(baseURL: string, courseID: string): Promise
if (!res || !res.assignment_collection)
reject("404 kadai data not found");
else {
+ const courseSiteInfo = new CourseSiteInfo(courseID, courseID); // TODO: lectureName
const kadaiEntries = convJsonToKadaiEntries(res, baseURL, courseID);
- resolve(
- new Kadai(
- courseID,
- courseID, // TODO: lectureName
- kadaiEntries,
- false
- )
- );
+ resolve(new Kadai(courseSiteInfo, kadaiEntries, false));
}
});
request.send();
@@ -78,15 +72,9 @@ function getQuizFromCourseID(baseURL: string, courseID: string): Promise
const res = request.response;
if (!res || !res.sam_pub_collection) reject("404 kadai data not found");
else {
+ const courseSiteInfo = new CourseSiteInfo(courseID, courseID); // TODO: lectureName
const kadaiEntries = convJsonToQuizEntries(res, baseURL, courseID);
- resolve(
- new Kadai(
- courseID,
- courseID, // TODO: lectureName
- kadaiEntries,
- false
- )
- );
+ resolve(new Kadai(courseSiteInfo, kadaiEntries, false));
}
});
request.send();
diff --git a/src/utils.ts b/src/utils.ts
index 2d96335..69c6984 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -59,8 +59,8 @@ function updateIsReadFlag(kadaiList: Array): void {
const updatedKadaiList = [];
if (courseID && courseID.length >= 17) {
for (const kadai of kadaiList) {
- if (kadai.lectureID === courseID) {
- updatedKadaiList.push(new Kadai(kadai.lectureID, kadai.lectureName, kadai.kadaiEntries, true));
+ if (kadai.courseSiteInfo.courseID === courseID) {
+ updatedKadaiList.push(new Kadai(kadai.courseSiteInfo, kadai.kadaiEntries, true));
} else {
updatedKadaiList.push(kadai);
}
@@ -86,7 +86,7 @@ function convertArrayToKadai(arr: Array): Array{
entry.kadaiPage = e.kadaiPage;
if (entry.dueDateTimestamp * 1000 > nowTime) kadaiEntries.push(entry);
}
- kadaiList.push(new Kadai(i.lectureID, i.lectureName, kadaiEntries, i.isRead))
+ kadaiList.push(new Kadai(new CourseSiteInfo(i.courseID, i.courseName), kadaiEntries, i.isRead))
}
return kadaiList;
}
@@ -96,16 +96,18 @@ function compareAndMergeKadaiList(oldKadaiList: Array, newKadaiList: Arra
// 最新の課題リストをもとにマージする
for (const newKadai of newKadaiList){
- const idx = oldKadaiList.findIndex((oldKadai) => {
- return (oldKadai.lectureID === newKadai.lectureID)
+ const idx = oldKadaiList.findIndex((oldKadai: Kadai) => {
+ return (oldKadai.courseSiteInfo.courseID === newKadai.courseSiteInfo.courseID)
});
// もし過去に保存した課題リストの中に講義IDが存在しない時
if (idx === -1) {
// 未読フラグを立ててマージ
const isRead = newKadai.kadaiEntries.length === 0;
- newKadai.kadaiEntries.sort((a, b)=>{return a.dueDateTimestamp - b.dueDateTimestamp});
- mergedKadaiList.push(new Kadai(newKadai.lectureID, newKadai.lectureName, newKadai.kadaiEntries, isRead));
+ newKadai.kadaiEntries.sort((a, b) => {
+ return a.dueDateTimestamp - b.dueDateTimestamp;
+ });
+ mergedKadaiList.push(new Kadai(newKadai.courseSiteInfo, newKadai.kadaiEntries, isRead));
}
// 過去に保存した課題リストの中に講義IDが存在する時
else {
@@ -140,7 +142,7 @@ function compareAndMergeKadaiList(oldKadaiList: Array, newKadaiList: Arra
}
// 未読フラグ部分を変更してマージ
mergedKadaiEntries.sort((a, b)=>{return a.dueDateTimestamp - b.dueDateTimestamp});
- mergedKadaiList.push(new Kadai(newKadai.lectureID, newKadai.lectureName, mergedKadaiEntries, isRead));
+ mergedKadaiList.push(new Kadai(newKadai.courseSiteInfo, mergedKadaiEntries, isRead));
}
}
return mergedKadaiList;
@@ -149,16 +151,16 @@ function compareAndMergeKadaiList(oldKadaiList: Array, newKadaiList: Arra
function mergeIntoKadaiList(targetKadaiList: Array, newKadaiList: Array): Array{
const mergedKadaiList = [];
for (const kadai of targetKadaiList){
- mergedKadaiList.push(new Kadai(kadai.lectureID, kadai.lectureName, kadai.kadaiEntries, kadai.isRead));
+ mergedKadaiList.push(new Kadai(kadai.courseSiteInfo, kadai.kadaiEntries, kadai.isRead));
}
for (const kadaiList of newKadaiList){
- const idx = targetKadaiList.findIndex((kadai) => {
- return kadaiList.lectureID === kadai.lectureID;
+ const idx = targetKadaiList.findIndex((kadai: Kadai) => {
+ return kadaiList.courseSiteInfo.courseID === kadai.courseSiteInfo.courseID;
});
if (idx !== -1) {
mergedKadaiList[idx].kadaiEntries = mergedKadaiList[idx].kadaiEntries.concat(kadaiList.kadaiEntries);
} else {
- mergedKadaiList.push(new Kadai(kadaiList.lectureID, kadaiList.lectureName, kadaiList.kadaiEntries, true));
+ mergedKadaiList.push(new Kadai(kadaiList.courseSiteInfo, kadaiList.kadaiEntries, true));
}
}
return mergedKadaiList;
From 826d2c62e61fca57409c74f2f7713717549b270c Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 15 Sep 2021 14:45:29 +0900
Subject: [PATCH 049/196] =?UTF-8?q?fix:=20=E3=82=BF=E3=83=96=E3=81=AE?=
=?UTF-8?q?=E8=89=B2=E5=88=86=E3=81=91=E3=81=8C=E6=B6=88=E3=81=88=E3=82=8B?=
=?UTF-8?q?=E4=B8=8D=E5=85=B7=E5=90=88=E3=81=AE=E4=BF=AE=E6=AD=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/utils.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/utils.ts b/src/utils.ts
index 69c6984..45a70f4 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -86,7 +86,7 @@ function convertArrayToKadai(arr: Array): Array{
entry.kadaiPage = e.kadaiPage;
if (entry.dueDateTimestamp * 1000 > nowTime) kadaiEntries.push(entry);
}
- kadaiList.push(new Kadai(new CourseSiteInfo(i.courseID, i.courseName), kadaiEntries, i.isRead))
+ kadaiList.push(new Kadai(new CourseSiteInfo(i.courseSiteInfo.courseID, i.courseSiteInfo.courseName), kadaiEntries, i.isRead))
}
return kadaiList;
}
From ada83edda11df822b7e5f3e330879ff64e610c49 Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 22 Sep 2021 10:29:27 +0900
Subject: [PATCH 050/196] =?UTF-8?q?fix:=20=E3=83=AD=E3=83=BC=E3=82=AB?=
=?UTF-8?q?=E3=83=AB=E3=81=8B=E3=82=89=E5=8F=96=E5=BE=97=E6=99=82=E3=81=AB?=
=?UTF-8?q?await=E3=82=92=E5=85=A5=E3=82=8C=E3=82=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/content_script.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/content_script.ts b/src/content_script.ts
index aa6d654..217268c 100644
--- a/src/content_script.ts
+++ b/src/content_script.ts
@@ -38,8 +38,8 @@ export let CPsettings: Settings;
export async function loadAndMergeKadaiList(courseSiteInfos: Array, useKadaiCache: boolean, useQuizCache: boolean): Promise> {
// ストレージから前回保存したkadaiListを読み込む
- const oldKadaiList = await loadFromLocalStorage("TSkadaiList");
- const oldQuizList = await loadFromLocalStorage("TSQuizList");
+ const oldKadaiList = convertArrayToKadai(await loadFromLocalStorage("TSkadaiList"));
+ const oldQuizList = convertArrayToKadai(await loadFromLocalStorage("TSQuizList"));
let newKadaiList = [];
let newQuizList = [];
From 115e9e84568b6bbe69c92358708c821d00343812 Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 22 Sep 2021 10:30:29 +0900
Subject: [PATCH 051/196] =?UTF-8?q?fix:=20=E8=AA=B2=E9=A1=8C=E5=8F=96?=
=?UTF-8?q?=E5=BE=97=E6=99=82=E3=81=AEawait=E3=82=92=E8=BF=BD=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/eventListener.ts | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/eventListener.ts b/src/eventListener.ts
index c16229c..f6b2b00 100644
--- a/src/eventListener.ts
+++ b/src/eventListener.ts
@@ -117,9 +117,10 @@ async function toggleKadaiFinishedFlag(event: any): Promise {
}
updatedKadaiList.push(new Kadai(kadai.courseSiteInfo, updatedKadaiEntries, kadai.isRead));
}
- if (kadaiID[0] === "m") saveToLocalStorage("TSkadaiMemoList", updatedKadaiList);
- else if (kadaiID[0] === "q") saveToLocalStorage("TSQuizList", updatedKadaiList);
- else saveToLocalStorage("TSkadaiList", updatedKadaiList);
+
+ if (kadaiID[0] === "m") await saveToLocalStorage("TSkadaiMemoList", updatedKadaiList);
+ else if (kadaiID[0] === "q") await saveToLocalStorage("TSQuizList", updatedKadaiList);
+ else await saveToLocalStorage("TSkadaiList", updatedKadaiList);
// NavBarを再描画
deleteNavBarNotification();
From 1315919af73a22513d4cc111678ce239f9affc2e Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 29 Sep 2021 10:43:29 +0900
Subject: [PATCH 052/196] =?UTF-8?q?fix:=20=E3=81=8A=E6=B0=97=E3=81=AB?=
=?UTF-8?q?=E5=85=A5=E3=82=8A=E3=81=97=E3=81=9F=E3=82=B3=E3=83=BC=E3=82=B9?=
=?UTF-8?q?=E3=82=B5=E3=82=A4=E3=83=88=E3=81=AE=E8=BF=BD=E5=8A=A0=E6=99=82?=
=?UTF-8?q?=E3=81=AB=E9=87=8D=E8=A4=87=E3=81=99=E3=82=8B=E3=83=90=E3=82=B0?=
=?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/bookmark.ts | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/bookmark.ts b/src/bookmark.ts
index 521f812..a7b55f5 100644
--- a/src/bookmark.ts
+++ b/src/bookmark.ts
@@ -26,9 +26,12 @@ function getCurrentShownSiteHrefs(): Array {
if (topnav == null) return new Array();
const sites = topnav.querySelectorAll(".Mrphs-sitesNav__menuitem");
const hrefs: Array = [];
- sites.forEach(site => hrefs.push((site.childNodes[1] as HTMLAnchorElement).href)) // TODO: gabagaba
- if (hrefs.length < 2) return hrefs;
- return hrefs.slice(1); // omit "Home"
+ // @ts-ignore
+ for (const site of sites) {
+ const href = (site.getElementsByClassName("link-container")[0] as HTMLAnchorElement).href;
+ hrefs.push(href);
+ }
+ return hrefs;
}
// お気に入り上限を超えた講義を topbar に追加する
From a69ad59385ccb0c77b5d2af70358d5f9f1d2b722 Mon Sep 17 00:00:00 2001
From: das08
Date: Wed, 29 Sep 2021 11:01:54 +0900
Subject: [PATCH 053/196] =?UTF-8?q?refactor:=20Kadai=E9=96=A2=E9=80=A3?=
=?UTF-8?q?=E3=82=AF=E3=83=A9=E3=82=B9=E5=90=8D=E3=82=92=E5=A4=89=E6=9B=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/content_script.ts | 8 ++++----
src/eventListener.ts | 22 +++++++++++-----------
src/minipanda.ts | 14 +++++++-------
src/model.ts | 14 +++++++-------
src/network.ts | 18 +++++++++---------
src/subpanda.ts | 8 ++++----
src/utils.ts | 36 ++++++++++++++++++------------------
7 files changed, 60 insertions(+), 60 deletions(-)
diff --git a/src/content_script.ts b/src/content_script.ts
index 217268c..94739cd 100644
--- a/src/content_script.ts
+++ b/src/content_script.ts
@@ -1,5 +1,5 @@
import { loadFromLocalStorage, saveToLocalStorage } from "./storage";
-import { Kadai, CourseSiteInfo } from "./model";
+import { Assignment, CourseSiteInfo } from "./model";
import {
getCourseIDList,
getBaseURL,
@@ -32,11 +32,11 @@ export let quizCacheInterval: number;
export let kadaiFetchedTime: number;
export let quizFetchedTime: number;
export let courseIDList: Array;
-export let mergedKadaiList: Array;
-export let mergedKadaiListNoMemo: Array;
+export let mergedKadaiList: Array;
+export let mergedKadaiListNoMemo: Array;
export let CPsettings: Settings;
-export async function loadAndMergeKadaiList(courseSiteInfos: Array, useKadaiCache: boolean, useQuizCache: boolean): Promise> {
+export async function loadAndMergeKadaiList(courseSiteInfos: Array, useKadaiCache: boolean, useQuizCache: boolean): Promise> {
// ストレージから前回保存したkadaiListを読み込む
const oldKadaiList = convertArrayToKadai(await loadFromLocalStorage("TSkadaiList"));
const oldQuizList = convertArrayToKadai(await loadFromLocalStorage("TSQuizList"));
diff --git a/src/eventListener.ts b/src/eventListener.ts
index f6b2b00..77e5da1 100644
--- a/src/eventListener.ts
+++ b/src/eventListener.ts
@@ -1,6 +1,6 @@
import { kadaiDiv, miniPandA } from "./dom";
import { loadFromLocalStorage, saveToLocalStorage } from "./storage";
-import {CourseSiteInfo, Kadai, KadaiEntry} from "./model";
+import {CourseSiteInfo, Assignment, AssignmentEntry} from "./model";
import { convertArrayToKadai, genUniqueStr, mergeIntoKadaiList } from "./utils";
import {
CPsettings,
@@ -86,7 +86,7 @@ function toggleMemoBox(): void {
async function toggleKadaiFinishedFlag(event: any): Promise {
const kadaiID = event.target.id;
- let kadaiList: Array;
+ let kadaiList: Array;
// "m"から始まるものはメモ,"q"から始まるものはクイズを表してる
if (kadaiID[0] === "m") kadaiList = convertArrayToKadai(await loadFromLocalStorage("TSkadaiMemoList"));
else if (kadaiID[0] === "q") kadaiList = convertArrayToKadai(await loadFromLocalStorage("TSQuizList"));
@@ -96,13 +96,13 @@ async function toggleKadaiFinishedFlag(event: any): Promise {
for (const kadai of kadaiList) {
const updatedKadaiEntries = [];
for (const kadaiEntry of kadai.kadaiEntries) {
- if (kadaiEntry.kadaiID === kadaiID) {
+ if (kadaiEntry.assignmentID === kadaiID) {
const isFinished = kadaiEntry.isFinished;
let isQuiz = false;
if (typeof kadaiEntry.isQuiz !== "undefined") isQuiz = kadaiEntry.isQuiz;
updatedKadaiEntries.push(
- new KadaiEntry(
- kadaiEntry.kadaiID,
+ new AssignmentEntry(
+ kadaiEntry.assignmentID,
kadaiEntry.assignmentTitle,
kadaiEntry.dueDateTimestamp,
kadaiEntry.isMemo,
@@ -115,7 +115,7 @@ async function toggleKadaiFinishedFlag(event: any): Promise {
updatedKadaiEntries.push(kadaiEntry);
}
}
- updatedKadaiList.push(new Kadai(kadai.courseSiteInfo, updatedKadaiEntries, kadai.isRead));
+ updatedKadaiList.push(new Assignment(kadai.courseSiteInfo, updatedKadaiEntries, kadai.isRead));
}
if (kadaiID[0] === "m") await saveToLocalStorage("TSkadaiMemoList", updatedKadaiList);
@@ -193,12 +193,12 @@ async function addKadaiMemo(): Promise {
const todoTimestamp = new Date(`${todoDue}`).getTime() / 1000;
let kadaiMemoList = await loadFromLocalStorage("TSkadaiMemoList");
- const kadaiMemoEntry = new KadaiEntry(genUniqueStr(), todoContent, todoTimestamp, true, false, false, "");
- const kadaiMemo = new Kadai(new CourseSiteInfo(todoLecID, todoLecID), [kadaiMemoEntry], true);
+ const kadaiMemoEntry = new AssignmentEntry(genUniqueStr(), todoContent, todoTimestamp, true, false, false, "");
+ const kadaiMemo = new Assignment(new CourseSiteInfo(todoLecID, todoLecID), [kadaiMemoEntry], true);
if (typeof kadaiMemoList !== "undefined" && kadaiMemoList.length > 0) {
kadaiMemoList = convertArrayToKadai(kadaiMemoList);
- const idx = kadaiMemoList.findIndex((oldKadaiMemo: Kadai) => {
+ const idx = kadaiMemoList.findIndex((oldKadaiMemo: Assignment) => {
return (oldKadaiMemo.courseSiteInfo.courseID === todoLecID);
});
if (idx !== -1) {
@@ -237,9 +237,9 @@ async function deleteKadaiMemo(event: any): Promise {
for (const kadaiMemo of kadaiMemoList) {
const kadaiMemoEntries = [];
for (const _kadaiMemoEntry of kadaiMemo.kadaiEntries) {
- if (_kadaiMemoEntry.kadaiID !== kadaiID) kadaiMemoEntries.push(_kadaiMemoEntry);
+ if (_kadaiMemoEntry.assignmentID !== kadaiID) kadaiMemoEntries.push(_kadaiMemoEntry);
}
- deletedKadaiMemoList.push(new Kadai(kadaiMemo.courseSiteInfo, kadaiMemoEntries, kadaiMemo.isRead));
+ deletedKadaiMemoList.push(new Assignment(kadaiMemo.courseSiteInfo, kadaiMemoEntries, kadaiMemo.isRead));
}
// miniPandAを再描画
diff --git a/src/minipanda.ts b/src/minipanda.ts
index f6ce233..0aec7ab 100644
--- a/src/minipanda.ts
+++ b/src/minipanda.ts
@@ -1,4 +1,4 @@
-import { Kadai, CourseSiteInfo } from "./model";
+import { Assignment, CourseSiteInfo } from "./model";
import {
createCourseIDMap,
formatTimestamp,
@@ -43,7 +43,7 @@ function createMiniSakaiBtn(): void {
}
}
-export function createMiniPandAGeneralized(root: Element, kadaiList: Array, courseSiteInfos: Array, subset: boolean, insertionProcess: (rendered: string) => void): void {
+export function createMiniPandAGeneralized(root: Element, kadaiList: Array, courseSiteInfos: Array, subset: boolean, insertionProcess: (rendered: string) => void): void {
const kadaiFetchedTimestamp = new Date( (typeof kadaiFetchedTime === "number")? kadaiFetchedTime : nowTime);
const kadaiFetchedTimeString = kadaiFetchedTimestamp.toLocaleDateString() + " " + kadaiFetchedTimestamp.getHours() + ":" + ("00" + kadaiFetchedTimestamp.getMinutes()).slice(-2) + ":" + ("00" + kadaiFetchedTimestamp.getSeconds()).slice(-2);
const quizFetchedTimestamp = new Date((typeof quizFetchedTime === "number")? quizFetchedTime : nowTime);
@@ -78,7 +78,7 @@ export function createMiniPandAGeneralized(root: Element, kadaiList: Array, courseSiteInfos: Array): void {
+function createMiniPandA(kadaiList: Array, courseSiteInfos: Array): void {
createMiniPandAGeneralized(miniPandA, kadaiList, courseSiteInfos, false, (rendered) => {
miniPandA.innerHTML = rendered;
const parent = document.getElementById("pageBody");
@@ -268,7 +268,7 @@ function initState(root: Element) {
root.querySelector('.todoDue')?.value = new Date(`${new Date().toISOString().substr(0, 16)}-10:00`).toISOString().substr(0, 16);
}
-async function displayMiniPandA(mergedKadaiList: Array, courseSiteInfos: Array): Promise{
+async function displayMiniPandA(mergedKadaiList: Array, courseSiteInfos: Array): Promise{
createMiniPandA(mergedKadaiList, courseSiteInfos);
}
@@ -284,7 +284,7 @@ function deleteNavBarNotification(): void {
}
}
-function createNavBarNotification(courseSiteInfos: Array, kadaiList: Array): void {
+function createNavBarNotification(courseSiteInfos: Array, kadaiList: Array): void {
const defaultTab = document.querySelectorAll(".Mrphs-sitesNav__menuitem");
const defaultTabCount = Object.keys(defaultTab).length;
@@ -293,7 +293,7 @@ function createNavBarNotification(courseSiteInfos: Array, kadaiL
// @ts-ignore
const courseID = defaultTab[j].getElementsByClassName("link-container")[0].href.match("(https?://[^/]+)/portal/site-?[a-z]*/([^/]+)")[2];
- const q = kadaiList.findIndex((kadai: Kadai) => {
+ const q = kadaiList.findIndex((kadai: Assignment) => {
return kadai.courseSiteInfo.courseID === courseID;
});
if (q !== -1) {
diff --git a/src/model.ts b/src/model.ts
index 4aa58ba..825dc22 100644
--- a/src/model.ts
+++ b/src/model.ts
@@ -1,5 +1,5 @@
-export class KadaiEntry {
- kadaiID: string;
+export class AssignmentEntry {
+ assignmentID: string;
assignmentTitle: string;
assignmentDetail?: string;
dueDateTimestamp: number; // POSIX time
@@ -9,7 +9,7 @@ export class KadaiEntry {
isQuiz: boolean;
constructor(
- kadaiID: string,
+ assignmentID: string,
assignmentTitle: string,
dueDateTimestamp: number,
isMemo: boolean,
@@ -17,7 +17,7 @@ export class KadaiEntry {
isQuiz: boolean,
assignmentDetail?: string
) {
- this.kadaiID = kadaiID;
+ this.assignmentID = assignmentID;
this.assignmentTitle = assignmentTitle;
this.assignmentDetail = assignmentDetail;
this.dueDateTimestamp = dueDateTimestamp;
@@ -27,14 +27,14 @@ export class KadaiEntry {
}
}
-export class Kadai {
+export class Assignment {
courseSiteInfo: CourseSiteInfo;
- kadaiEntries: Array;
+ kadaiEntries: Array