Skip to content
This repository has been archived by the owner on Oct 25, 2022. It is now read-only.

Commit

Permalink
fix(ui): Unable to set reset conditions
Browse files Browse the repository at this point in the history
The regular "trigger" UI element is not the correct one to set the reset conditions. We now have an appropriate button for these values.
  • Loading branch information
oliversalzburg committed Oct 16, 2022
1 parent 6bc7b4d commit 8c090db
Show file tree
Hide file tree
Showing 8 changed files with 88 additions and 9 deletions.
3 changes: 2 additions & 1 deletion packages/userscript/source/ui/ResetBonfireSettingsUi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { ResetBonfireSettings } from "../options/ResetBonfireSettings";
import { SettingTrigger } from "../options/Settings";
import { UserScript } from "../UserScript";
import { IconSettingsPanel } from "./components/IconSettingsPanel";
import { SettingTriggerLimitListItem } from "./components/SettingTriggerLimitListItem";
import { SettingTriggerListItem } from "./components/SettingTriggerListItem";

export class ResetBonfireSettingsUi extends IconSettingsPanel<ResetBonfireSettings> {
Expand Down Expand Up @@ -215,7 +216,7 @@ export class ResetBonfireSettingsUi extends IconSettingsPanel<ResetBonfireSettin
delimiter = false,
upgradeIndicator = false
) {
return new SettingTriggerListItem(
return new SettingTriggerLimitListItem(
this._host,
i18nName,
option,
Expand Down
3 changes: 2 additions & 1 deletion packages/userscript/source/ui/ResetReligionSettingsUi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { ResetReligionSettings } from "../options/ResetReligionSettings";
import { SettingTrigger } from "../options/Settings";
import { UserScript } from "../UserScript";
import { IconSettingsPanel } from "./components/IconSettingsPanel";
import { SettingTriggerLimitListItem } from "./components/SettingTriggerLimitListItem";
import { SettingTriggerListItem } from "./components/SettingTriggerListItem";

export class ResetReligionSettingsUi extends IconSettingsPanel<ResetReligionSettings> {
Expand Down Expand Up @@ -166,7 +167,7 @@ export class ResetReligionSettingsUi extends IconSettingsPanel<ResetReligionSett
delimiter = false,
upgradeIndicator = false
) {
return new SettingTriggerListItem(
return new SettingTriggerLimitListItem(
this._host,
i18nName,
option,
Expand Down
3 changes: 2 additions & 1 deletion packages/userscript/source/ui/ResetSpaceSettingsUi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { ResetSpaceSettings } from "../options/ResetSpaceSettings";
import { SettingTrigger } from "../options/Settings";
import { UserScript } from "../UserScript";
import { IconSettingsPanel } from "./components/IconSettingsPanel";
import { SettingTriggerLimitListItem } from "./components/SettingTriggerLimitListItem";
import { SettingTriggerListItem } from "./components/SettingTriggerListItem";

export class ResetSpaceSettingsUi extends IconSettingsPanel<ResetSpaceSettings> {
Expand Down Expand Up @@ -148,7 +149,7 @@ export class ResetSpaceSettingsUi extends IconSettingsPanel<ResetSpaceSettings>
delimiter = false,
upgradeIndicator = false
) {
return new SettingTriggerListItem(
return new SettingTriggerLimitListItem(
this._host,
i18nName,
option,
Expand Down
3 changes: 2 additions & 1 deletion packages/userscript/source/ui/ResetTimeSettingsUi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { ResetTimeSettings } from "../options/ResetTimeSettings";
import { SettingTrigger } from "../options/Settings";
import { UserScript } from "../UserScript";
import { IconSettingsPanel } from "./components/IconSettingsPanel";
import { SettingTriggerLimitListItem } from "./components/SettingTriggerLimitListItem";
import { SettingTriggerListItem } from "./components/SettingTriggerListItem";

export class ResetTimeSettingsUi extends IconSettingsPanel<ResetTimeSettings> {
Expand Down Expand Up @@ -86,7 +87,7 @@ export class ResetTimeSettingsUi extends IconSettingsPanel<ResetTimeSettings> {
delimiter = false,
upgradeIndicator = false
) {
return new SettingTriggerListItem(
return new SettingTriggerLimitListItem(
this._host,
i18nName,
option,
Expand Down
4 changes: 1 addition & 3 deletions packages/userscript/source/ui/components/MaxButton.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,8 @@ export class MaxButton extends UiComponent {
);

if (value !== null) {
const limit = SettingsSectionUi.renderLimit(value, host);
host.updateSettings(() => (setting.max = value));
element[0].title = limit;
element[0].innerText = host.engine.i18n("ui.max", [limit]);
this.refreshUi();
}

if (handler.onClick) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { SettingTrigger } from "../../options/Settings";
import { UserScript } from "../../UserScript";
import { SettingListItem } from "./SettingListItem";
import { TriggerLimitButton } from "./TriggerLimitButton";

export class SettingTriggerLimitListItem extends SettingListItem {
readonly triggerButton: TriggerLimitButton;

constructor(
host: UserScript,
label: string,
setting: SettingTrigger,
handler: {
onCheck: () => void;
onUnCheck: () => void;
},
delimiter = false,
upgradeIndicator = false,
additionalClasses = []
) {
super(host, label, setting, handler, delimiter, upgradeIndicator, additionalClasses);

this.triggerButton = new TriggerLimitButton(host, label, setting);
this.element.append(this.triggerButton.element);
}

refreshUi() {
super.refreshUi();
this.triggerButton.refreshUi();
}
}
2 changes: 0 additions & 2 deletions packages/userscript/source/ui/components/TriggerButton.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import { SettingsSectionUi } from "../SettingsSectionUi";
import { UiComponent } from "./UiComponent";

export class TriggerButton extends UiComponent {
readonly _host: UserScript;
readonly setting: SettingTrigger;
readonly element: JQuery<HTMLElement>;

Expand Down Expand Up @@ -38,7 +37,6 @@ export class TriggerButton extends UiComponent {
});

this.element = element;
this._host = host;
this.setting = setting;
}

Expand Down
48 changes: 48 additions & 0 deletions packages/userscript/source/ui/components/TriggerLimitButton.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import { SettingTrigger } from "../../options/Settings";
import { UserScript } from "../../UserScript";
import { SettingsSectionUi } from "../SettingsSectionUi";
import { UiComponent } from "./UiComponent";

export class TriggerLimitButton extends UiComponent {
readonly setting: SettingTrigger;
readonly element: JQuery<HTMLElement>;

constructor(
host: UserScript,
label: string,
setting: SettingTrigger,
handler: { onClick?: () => void } = {}
) {
super(host);

const element = $("<div/>").addClass("ks-text-button").addClass("ks-max-button");

element.on("click", () => {
const value = SettingsSectionUi.promptLimit(
host.engine.i18n("ui.trigger.set", [label]),
setting.trigger.toString()
);

if (value !== null) {
host.updateSettings(() => (setting.trigger = value));
this.refreshUi();
}

if (handler.onClick) {
handler.onClick();
}
});

this.element = element;
this.setting = setting;
}

refreshUi() {
this.element[0].title = this.setting.trigger.toFixed();
this.element.text(
this._host.engine.i18n("ui.trigger", [
SettingsSectionUi.renderLimit(this.setting.trigger, this._host),
])
);
}
}

0 comments on commit 8c090db

Please sign in to comment.