mirror of
https://git.srhtnin.garden/sarah/srhtnin.github.io.git
synced 2026-10-14 18:58:11 +02:00
Added mutation duplication for QOL for admins (me).
This commit is contained in:
1 parent
3827c6cfa9
commit
1d8587744c
2 files changed
+244
No files matched your search
@@ -48,6 +48,20 @@ $PageSection = "Admin";
|
|||||||
>
|
>
|
||||||
New mutation
|
New mutation
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
<label for="AdminMutationDuplicateSelect">
|
||||||
|
Duplicate existing
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<select id="AdminMutationDuplicateSelect"></select>
|
||||||
|
|
||||||
|
<button
|
||||||
|
id="AdminMutationDuplicateButton"
|
||||||
|
class="ActionButton AdminInlineButton"
|
||||||
|
type="button"
|
||||||
|
>
|
||||||
|
Duplicate
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<form
|
<form
|
||||||
|
|||||||
@@ -73,6 +73,13 @@ function BindAdminMutationEditor() {
|
|||||||
StartNewAdminMutation
|
StartNewAdminMutation
|
||||||
);
|
);
|
||||||
|
|
||||||
|
document.getElementById(
|
||||||
|
"AdminMutationDuplicateButton"
|
||||||
|
).addEventListener(
|
||||||
|
"click",
|
||||||
|
DuplicateAdminMutation
|
||||||
|
);
|
||||||
|
|
||||||
document.getElementById(
|
document.getElementById(
|
||||||
"AdminMutationResizeButton"
|
"AdminMutationResizeButton"
|
||||||
).addEventListener(
|
).addEventListener(
|
||||||
@@ -342,6 +349,7 @@ async function LoadAdminMutationData(
|
|||||||
PopulateAdminMutationPlantControls();
|
PopulateAdminMutationPlantControls();
|
||||||
RenderAdminMutationRelationChecklists();
|
RenderAdminMutationRelationChecklists();
|
||||||
RenderAdminMutationSelect();
|
RenderAdminMutationSelect();
|
||||||
|
RenderAdminMutationDuplicateSelect();
|
||||||
|
|
||||||
const Keys =
|
const Keys =
|
||||||
GetSortedAdminMutationKeys();
|
GetSortedAdminMutationKeys();
|
||||||
@@ -451,6 +459,70 @@ function RenderAdminMutationSelect() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function RenderAdminMutationDuplicateSelect() {
|
||||||
|
const Select =
|
||||||
|
document.getElementById(
|
||||||
|
"AdminMutationDuplicateSelect"
|
||||||
|
);
|
||||||
|
|
||||||
|
if (Select === null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const PreviousValue =
|
||||||
|
Select.value;
|
||||||
|
|
||||||
|
Select.replaceChildren();
|
||||||
|
|
||||||
|
for (
|
||||||
|
const MutationKey
|
||||||
|
of GetSortedAdminMutationKeys()
|
||||||
|
) {
|
||||||
|
const Mutation =
|
||||||
|
AdminMutationCatalogue[
|
||||||
|
MutationKey
|
||||||
|
];
|
||||||
|
|
||||||
|
const Option =
|
||||||
|
document.createElement(
|
||||||
|
"option"
|
||||||
|
);
|
||||||
|
|
||||||
|
Option.value =
|
||||||
|
MutationKey;
|
||||||
|
|
||||||
|
Option.textContent =
|
||||||
|
String(
|
||||||
|
Mutation.Id
|
||||||
|
).padStart(
|
||||||
|
3,
|
||||||
|
"0"
|
||||||
|
) +
|
||||||
|
" — " +
|
||||||
|
Mutation.Name +
|
||||||
|
(
|
||||||
|
Mutation.Archived === true
|
||||||
|
? " (archived)"
|
||||||
|
: ""
|
||||||
|
);
|
||||||
|
|
||||||
|
Select.appendChild(
|
||||||
|
Option
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
PreviousValue !== "" &&
|
||||||
|
AdminMutationCatalogue[
|
||||||
|
PreviousValue
|
||||||
|
] !== undefined
|
||||||
|
) {
|
||||||
|
Select.value =
|
||||||
|
PreviousValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function PopulateAdminMutationPlantControls() {
|
function PopulateAdminMutationPlantControls() {
|
||||||
for (
|
for (
|
||||||
const ElementId
|
const ElementId
|
||||||
@@ -748,6 +820,164 @@ function LoadAdminMutationIntoForm(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function DuplicateAdminMutation() {
|
||||||
|
const SourceMutationKey =
|
||||||
|
document.getElementById(
|
||||||
|
"AdminMutationDuplicateSelect"
|
||||||
|
).value;
|
||||||
|
|
||||||
|
const SourceMutation =
|
||||||
|
AdminMutationCatalogue[
|
||||||
|
SourceMutationKey
|
||||||
|
];
|
||||||
|
|
||||||
|
if (SourceMutation === undefined) {
|
||||||
|
SetAdminMutationMessage(
|
||||||
|
"Choose a mutation to duplicate."
|
||||||
|
);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
AdminMutationEditingKey = null;
|
||||||
|
|
||||||
|
document.getElementById(
|
||||||
|
"AdminMutationSelect"
|
||||||
|
).value = "";
|
||||||
|
|
||||||
|
SetAdminMutationField(
|
||||||
|
"AdminMutationId",
|
||||||
|
GetNextAdminMutationId()
|
||||||
|
);
|
||||||
|
|
||||||
|
SetAdminMutationField(
|
||||||
|
"AdminMutationKey",
|
||||||
|
""
|
||||||
|
);
|
||||||
|
|
||||||
|
SetAdminMutationField(
|
||||||
|
"AdminMutationName",
|
||||||
|
""
|
||||||
|
);
|
||||||
|
|
||||||
|
SetAdminMutationField(
|
||||||
|
"AdminMutationDescription",
|
||||||
|
SourceMutation.Description ?? ""
|
||||||
|
);
|
||||||
|
|
||||||
|
SetAdminMutationField(
|
||||||
|
"AdminMutationHint",
|
||||||
|
SourceMutation.Hint ?? ""
|
||||||
|
);
|
||||||
|
|
||||||
|
SetAdminMutationField(
|
||||||
|
"AdminMutationPriority",
|
||||||
|
Number(
|
||||||
|
SourceMutation.Priority ?? 0
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
SetAdminMutationField(
|
||||||
|
"AdminMutationChance",
|
||||||
|
Number(
|
||||||
|
SourceMutation.Chance ?? 1
|
||||||
|
) * 100
|
||||||
|
);
|
||||||
|
|
||||||
|
SetAdminMutationDurationFields(
|
||||||
|
Number(
|
||||||
|
SourceMutation.Cooldown ?? 0
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
SetAdminMutationField(
|
||||||
|
"AdminMutationRotation",
|
||||||
|
SourceMutation.Rotation ??
|
||||||
|
"None"
|
||||||
|
);
|
||||||
|
|
||||||
|
document.getElementById(
|
||||||
|
"AdminMutationAllowImmature"
|
||||||
|
).checked =
|
||||||
|
SourceMutation.AllowImmature === true;
|
||||||
|
|
||||||
|
AdminMutationPattern =
|
||||||
|
CloneAdminMutationMatrix(
|
||||||
|
SourceMutation.Pattern,
|
||||||
|
"Any"
|
||||||
|
);
|
||||||
|
|
||||||
|
if (
|
||||||
|
AdminMutationPattern.length === 0
|
||||||
|
) {
|
||||||
|
AdminMutationPattern = [
|
||||||
|
["Any"]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
AdminMutationResult =
|
||||||
|
NormalizeAdminMutationMatrix(
|
||||||
|
SourceMutation.Success,
|
||||||
|
AdminMutationPattern[0]
|
||||||
|
.length,
|
||||||
|
AdminMutationPattern.length,
|
||||||
|
"Keep"
|
||||||
|
);
|
||||||
|
|
||||||
|
SetAdminMutationField(
|
||||||
|
"AdminMutationWidth",
|
||||||
|
AdminMutationPattern[0]
|
||||||
|
.length
|
||||||
|
);
|
||||||
|
|
||||||
|
SetAdminMutationField(
|
||||||
|
"AdminMutationHeight",
|
||||||
|
AdminMutationPattern.length
|
||||||
|
);
|
||||||
|
|
||||||
|
LoadAdminMutationFailure(
|
||||||
|
CloneAdminMutationValue(
|
||||||
|
SourceMutation.Failure
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
SetAdminMutationRelations(
|
||||||
|
CloneAdminMutationValue(
|
||||||
|
SourceMutation.Relations ?? {}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
document.getElementById(
|
||||||
|
"AdminMutationId"
|
||||||
|
).readOnly = false;
|
||||||
|
|
||||||
|
document.getElementById(
|
||||||
|
"AdminMutationKey"
|
||||||
|
).readOnly = false;
|
||||||
|
|
||||||
|
document.getElementById(
|
||||||
|
"AdminMutationArchiveNote"
|
||||||
|
).hidden = true;
|
||||||
|
|
||||||
|
AdminMutationSelectedCell = null;
|
||||||
|
HideAdminMutationCellEditor();
|
||||||
|
RenderAdminMutationGrids();
|
||||||
|
UpdateAdminMutationFailureVisibility();
|
||||||
|
UpdateAdminMutationCooldownHint();
|
||||||
|
RenderAdminMutationJsonPreview();
|
||||||
|
|
||||||
|
document.getElementById(
|
||||||
|
"AdminMutationName"
|
||||||
|
).focus();
|
||||||
|
|
||||||
|
SetAdminMutationMessage(
|
||||||
|
"Duplicated " +
|
||||||
|
SourceMutation.Name +
|
||||||
|
". Give the new mutation a name and Mutation Key before saving."
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function StartNewAdminMutation() {
|
function StartNewAdminMutation() {
|
||||||
AdminMutationEditingKey = null;
|
AdminMutationEditingKey = null;
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user