Skip to content

Commit

Permalink
Update: Move enable functions
Browse files Browse the repository at this point in the history
  • Loading branch information
Hayao0819 committed Oct 27, 2023
1 parent c2e9be3 commit fe75764
Show file tree
Hide file tree
Showing 10 changed files with 60 additions and 59 deletions.
2 changes: 1 addition & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,5 @@
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"typescript.tsserver.experimental.enableProjectDiagnostics": true,
"typescript.tsserver.experimental.enableProjectDiagnostics": true
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { addClass, Elements, removeClass } from "../../utils/addClass";
import { addClass, Elements, removeClass } from "../utils/addClass";

const rainbowBg = "rainbow-bg";
const rainbowText = "rainbow-text";
Expand Down Expand Up @@ -29,30 +29,40 @@ export class classApplicator {
}
}

export class ApplicatorBase {
enable() {}
disable() {}
}

// classApplicatorを用いて虹色にするクラス
export class RainbowApplicator {
export class RainbowApplicator extends ApplicatorBase {
text: classApplicator;
bg: classApplicator;
textShadow: classApplicator;
bgShadow: classApplicator;

constructor() {
super();
this.text = new classApplicator([rainbowText]);
this.bg = new classApplicator([rainbowBg]);
this.textShadow = new classApplicator([rainbowText, rainbowTextShadow]);
this.bgShadow = new classApplicator([rainbowBg, rainbowBgShadow]);
}
}

// 隠し機能を有効化するクラス
export class HiddenApplicator extends ApplicatorBase {}

// classApplicatorを用いてダークテーマにするクラス
export class DarkApplicator {
export class DarkApplicator extends ApplicatorBase {
base: classApplicator;
baseDarker: classApplicator;
content: classApplicator;
neutral: classApplicator;
accent: classApplicator;

constructor() {
super();
this.base = new classApplicator(["dark-base"]);
this.baseDarker = new classApplicator(["dark-base-darker"]);
this.content = new classApplicator(["dark-content"]);
Expand Down
16 changes: 8 additions & 8 deletions src/class/Kyomu/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { GundaiWebSite } from "../UnivWebsite";

export const Kyomu = new GundaiWebSite("kyomu");

Kyomu.enableRainbow = function () {
Kyomu.rainbow.enable = function () {
// ログインボタン
// https://qiita.com/Sekky0905/items/a88721f2af41050c93f2
const loginBtn: HTMLInputElement = <HTMLInputElement>document.getElementById("ctl21_btnLoginShibbolethGunma");
Expand All @@ -14,19 +14,19 @@ Kyomu.enableRainbow = function () {
}

// ページ遷移リンク
this.rainbow.text.apply(".commonTopPageLink", ".commonTopPageLinkWithPadding");
this.text.apply(".commonTopPageLink", ".commonTopPageLinkWithPadding");

this.rainbow.text.apply(
this.text.apply(
"#CtlInfLstBfrLginEmrgncy_LblTitle",
"#CtlInfLstBfrLginNrml_LblTitle",
"#AllAnnualList_LblTitle",
"#JeLblSyllabiHeader_lbl",
);
this.rainbow.bg.apply(".infoListEntryOrgName");
this.rainbow.bg.apply(".infoListBeforeLoginGrid");
this.bg.apply(".infoListEntryOrgName");
this.bg.apply(".infoListBeforeLoginGrid");

// ログイン後のトップページ
this.rainbow.bg.apply(".top_title_header", ".top_now_title");
this.bg.apply(".top_title_header", ".top_now_title");

// トップページのウェルカムメッセージ
changeQueryInnerHTML("#loginHeader_lblWelcome_1_lbl", "よおこそ、群馬大学ゲーミング教務システムへ");
Expand All @@ -39,7 +39,7 @@ Kyomu.enableRainbow = function () {
changeQueryInnerHTML("#AllAnnualList_LblTitle", "ゲーミング ライフ スタイル");

// 受信メッセージ一覧
this.rainbow.bgShadow.apply("#ctl00_phContents_ctlMesReceive_gridMes tr");
this.bgShadow.apply("#ctl00_phContents_ctlMesReceive_gridMes tr");

// リンクを挿入
if (["/portal/login.aspx", "/portal/"].includes(location.pathname.toLowerCase())) {
Expand All @@ -52,5 +52,5 @@ Kyomu.enableRainbow = function () {
}

//ヘッダー上部の名前
this.rainbow.text.apply("#ctl00_bhHeader_lblName");
this.text.apply("#ctl00_bhHeader_lblName");
};
12 changes: 6 additions & 6 deletions src/class/Media/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
import { GundaiWebSite } from "../UnivWebsite";

export const Media = new GundaiWebSite("media");
Media.enableRainbow = function () {
this.rainbow.bgShadow.apply(".banner_list li");
this.rainbow.bgShadow.apply(".banner_list li a");
this.rainbow.bgShadow.apply(".menu_category h3");
this.rainbow.text.apply("#news_list li a");
this.rainbow.bg.apply("#news_category_list .active");
Media.rainbow.enable = function () {
this.bgShadow.apply(".banner_list li");
this.bgShadow.apply(".banner_list li a");
this.bgShadow.apply(".menu_category h3");
this.text.apply("#news_list li a");
this.bg.apply("#news_category_list .active");
};
10 changes: 5 additions & 5 deletions src/class/Moodle/DisableRainbow.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import changeQueryInnerHTML from "../../utils/changeQueryInnerHTML";
import { Moodle } from "./type";
import { RainbowApplicator } from "../ClassApplicator";

export const DisableRainbowBg = (moodle: Moodle) => {
moodle.rainbow.bg.remove(".navbar", ".addinghtml");
moodle.rainbow.bg.remove(".page-header-headings h1");
moodle.rainbow.bg.remove("a");
export const DisableRainbowBg = (rainbow: RainbowApplicator) => {
rainbow.bg.remove(".navbar", ".addinghtml");
rainbow.bg.remove(".page-header-headings h1");
rainbow.bg.remove("a");
};

export const ReplaceImagesToDefault = () => {
Expand Down
18 changes: 9 additions & 9 deletions src/class/Moodle/EnableRainbow.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
import { removeClass } from "../../utils/addClass";
import changeQueryInnerHTML from "../../utils/changeQueryInnerHTML";
import { RainbowApplicator } from "../ClassApplicator";
import { GundaiWebSite } from "../UnivWebsite";
import { Moodle } from "./type";
import { MoodleAdditionalInfo } from "./type";

export const EnableRainbowTextAndBg = (moodle: Moodle) => {
moodle.rainbow.bg.apply(".navbar", "#action-menu-0-menu");
export const EnableRainbowTextAndBg = (rainbow: RainbowApplicator) => {
rainbow.bg.apply(".navbar", "#action-menu-0-menu");

moodle.rainbow.text.apply(".page-header-headings h1");
moodle.rainbow.text.apply("#page-content a:not(#inst301 a)");
moodle.rainbow.text.apply("#instance-301-header");
rainbow.text.apply(".page-header-headings h1");
rainbow.text.apply("#page-content a:not(#inst301 a)");
rainbow.text.apply("#instance-301-header");

// rainbowBgの中のrainbowTextを無効化
const rainbowBgSelector = moodle.rainbow.bg.selector();
const targetElementsSelector = `${rainbowBgSelector} ${moodle.rainbow.text.selector()}`;
removeClass([targetElementsSelector], moodle.rainbow.text.base);
const rainbowBgSelector = rainbow.bg.selector();
const targetElementsSelector = `${rainbowBgSelector} ${rainbow.text.selector()}`;
removeClass([targetElementsSelector], rainbow.text.base);
};

export const InjectLink = () => {
Expand Down
10 changes: 5 additions & 5 deletions src/class/Moodle/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ Moodle.additionalInfo = {
headerText: " Gaming Edition🎮",
};

Moodle.enableRainbow = function () {
Moodle.rainbow.enable = function () {
EnableRainbowTextAndBg(this);
InjectLink();
ReplaceImagesToGamimg();
ReplaceTextToGaimg(this);
ReplaceTextToGaimg(Moodle);

// メニューバーでホバー時にclassを追加
document.querySelectorAll(".moremenu .nav-link").forEach((e) => {
Expand All @@ -30,17 +30,17 @@ Moodle.enableRainbow = function () {
});
};

Moodle.disableRainbow = function () {
Moodle.rainbow.disable = function () {
DisableRainbowBg(this);
ReplaceImagesToDefault();

const headerText = this.additionalInfo.headerText;
const headerText = Moodle.additionalInfo.headerText;
document.querySelectorAll(".page-header-headings h1").forEach((e) => {
if (e.innerHTML.includes(headerText)) e.innerHTML.replace(headerText, "");
});
};

Moodle.enableHidden = () => {
Moodle.hidden.enable = () => {
const cardElement = document.querySelector(".card-text .no-overflow");
if (!cardElement) return;
const playCountUnderTextElement = cardElement.getElementsByTagName("p")[1];
Expand Down
8 changes: 4 additions & 4 deletions src/class/MyLibrary/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { GundaiWebSite } from "../UnivWebsite";

export const MyLibrary = new GundaiWebSite("mylibrary");

MyLibrary.enableRainbow = function () {
MyLibrary.rainbow.enable = function () {
if (location.pathname == "/portal/portal/selectLogin/") {
//document.getElementById("explanation")
ChangeQueryInnerHTML(
Expand All @@ -13,11 +13,11 @@ MyLibrary.enableRainbow = function () {
ChangeQueryInnerHTML("#ssoLoginTitle", "全学ゲーミングアカウントでログイン");

// フッターをレインボー
this.rainbow.bg.apply("#footer");
this.bg.apply("#footer");
document.getElementById("footer")!.id = "";
}

// ヘッダーとタイトルをレインボー
this.rainbow.bg.apply("#header", "h2");
this.rainbow.text.apply("#lblTitle", "#mainTitle");
this.bg.apply("#header", "h2");
this.text.apply("#lblTitle", "#mainTitle");
};
4 changes: 2 additions & 2 deletions src/class/SSO/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import changeQueryInnerHTML from "../../utils/changeQueryInnerHTML";
import { GundaiWebSite } from "../UnivWebsite";

export const SSO = new GundaiWebSite("sso");
SSO.enableRainbow = () => {
SSO.rainbow.bg.apply(".header_column", ".input_form", ".input_column");
SSO.rainbow.enable = function () {
this.bg.apply(".header_column", ".input_form", ".input_column");
changeQueryInnerHTML(".product", "群馬大学ゲーミングサインオンシステム");
};
23 changes: 7 additions & 16 deletions src/class/UnivWebsite/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// 無駄とは人生である。無駄を極めよ。無駄を愛せ。無駄を生きろ。
// 無駄を以て物を成す者は、無駄を以て物を滅ぼす者に勝る。x

import { DarkApplicator, HiddenApplicator, RainbowApplicator } from "../ClassApplicator";
import { StorageTool } from "../StorageTool";
import { DarkApplicator, RainbowApplicator } from "./ClassApplicator";
//import Storage from "../../utils/Storage";

// UnivWebSiteはゲーミング化するウェブサイトを定義したクラス
Expand All @@ -14,6 +14,7 @@ export class UnivWebsite<T> {

rainbow: RainbowApplicator;
dark: DarkApplicator;
hidden: HiddenApplicator;

constructor(id: string) {
this.id = id;
Expand All @@ -22,36 +23,26 @@ export class UnivWebsite<T> {

this.rainbow = new RainbowApplicator();
this.dark = new DarkApplicator();

this.enableRainbow.bind(this);
this.enableHidden.bind(this);
this.disableRainbow.bind(this);
this.disableHidden.bind(this);
this.hidden = new HiddenApplicator();
}

// これらのメソッドは継承先でオーバーライドする
enableRainbow() {}
enableHidden() {}
disableRainbow() {}
disableHidden() {}

// 上記の関数を実行するためのラッパー
static enable(site: UnivWebsite<unknown>) {
// CSSのためにHTML要素にデータ属性を追加
document.documentElement.dataset.gaming_gundai = "true";
site.storage.set("enabled", "true");
site.enableRainbow();
site.rainbow.enable();

new StorageTool("other").getBool("enabled-hidden").then((enabled) => {
if (enabled) site.enableHidden();
if (enabled) site.hidden.enable();
});
}
static disable(site: UnivWebsite<unknown>) {
// CSSのためにHTML要素にデータ属性を追加
document.documentElement.dataset.gaming_gundai = "false";
site.storage.set("enabled", "false");
site.disableRainbow();
//this.DisableHidden();
site.rainbow.disable();
site.hidden.disable();
}
}

Expand Down

0 comments on commit fe75764

Please sign in to comment.