fix drag&drop to reorganize combos
All checks were successful
Deploy Sokko G / deploy (push) Successful in 8s
All checks were successful
Deploy Sokko G / deploy (push) Successful in 8s
This commit is contained in:
parent
7b4cfb7dc2
commit
a6d35c6e6b
8 changed files with 724 additions and 282 deletions
|
|
@ -182,7 +182,6 @@ export function validateSiteContent(site) {
|
|||
"toolboxes.modules.combos.customKeyPlaceholder",
|
||||
"toolboxes.modules.combos.addCustomKeyButton",
|
||||
"toolboxes.modules.combos.emptyCombos",
|
||||
"toolboxes.modules.combos.emptyCategory",
|
||||
"toolboxes.modules.combos.emptySequence",
|
||||
"toolboxes.modules.combos.showCategoryTitle",
|
||||
"toolboxes.modules.combos.hideCategoryTitle",
|
||||
|
|
|
|||
|
|
@ -99,52 +99,43 @@ test("combos storage normalizes devices, steps and compact export ids", () => {
|
|||
const longText = "x".repeat(120);
|
||||
const normalized = normalizeCombosData({
|
||||
device: "invalid",
|
||||
categoryOrder: [`${longText} `, "Missing", `${longText} `],
|
||||
collapsedCategories: [`${longText} `, "", `${longText} `],
|
||||
combos: [
|
||||
{
|
||||
id: "rootCombo",
|
||||
name: "Root",
|
||||
device: "switch",
|
||||
inputs: [[{ kind: "button", value: "triangle" }]]
|
||||
}
|
||||
],
|
||||
categories: [
|
||||
},
|
||||
{
|
||||
id: "category1",
|
||||
title: `${longText} `,
|
||||
collapsed: true,
|
||||
combos: [
|
||||
{
|
||||
id: "combo1",
|
||||
device: "n64",
|
||||
name: `${longText} `,
|
||||
inputs: [
|
||||
[
|
||||
{ kind: "direction", value: "down" },
|
||||
{ kind: "button", value: "cross" },
|
||||
{ kind: "bad", value: "ignored" }
|
||||
],
|
||||
[],
|
||||
[{ kind: "key", value: "space" }]
|
||||
]
|
||||
},
|
||||
{ id: "empty", name: " ", inputs: [] }
|
||||
id: "combo1",
|
||||
device: "n64",
|
||||
category: `${longText} `,
|
||||
name: `${longText} `,
|
||||
inputs: [
|
||||
[
|
||||
{ kind: "direction", value: "down" },
|
||||
{ kind: "button", value: "cross" },
|
||||
{ kind: "bad", value: "ignored" }
|
||||
],
|
||||
[],
|
||||
[{ kind: "key", value: "space" }]
|
||||
]
|
||||
},
|
||||
{ id: "emptyCategory", title: " ", combos: [] },
|
||||
{ id: "titledEmptyCategory", title: "Empty", combos: [] }
|
||||
{ id: "empty", name: " ", inputs: [] }
|
||||
]
|
||||
});
|
||||
|
||||
assert.equal(normalized.device, "playstation");
|
||||
assert.equal(normalized.combos.length, 1);
|
||||
assert.equal(normalized.combos.length, 2);
|
||||
assert.equal(normalized.combos[0].device, "switch");
|
||||
assert.equal(normalized.categories.length, 1);
|
||||
assert.equal(normalized.categories[0].title.length, 80);
|
||||
assert.equal(normalized.categories[0].collapsed, true);
|
||||
assert.equal(normalized.categories[0].combos.length, 1);
|
||||
assert.equal(normalized.categories[0].combos[0].name.length, 80);
|
||||
assert.equal("note" in normalized.categories[0].combos[0], false);
|
||||
assert.deepEqual(normalized.categories[0].combos[0].inputs, [
|
||||
assert.equal(normalized.combos[1].category.length, 80);
|
||||
assert.equal(normalized.combos[1].name.length, 80);
|
||||
assert.equal("note" in normalized.combos[1], false);
|
||||
assert.deepEqual(normalized.categoryOrder, [longText.slice(0, 80)]);
|
||||
assert.deepEqual(normalized.collapsedCategories, [longText.slice(0, 80)]);
|
||||
assert.deepEqual(normalized.combos[1].inputs, [
|
||||
[
|
||||
{ kind: "direction", value: "down" },
|
||||
{ kind: "button", value: "cross" }
|
||||
|
|
@ -154,11 +145,13 @@ test("combos storage normalizes devices, steps and compact export ids", () => {
|
|||
|
||||
const compact = compactModuleDataForStorage("combos", { ...normalized, device: "xbox" });
|
||||
assert.equal(compact.device, "xbox");
|
||||
assert.deepEqual(compact.categoryOrder, [longText.slice(0, 80)]);
|
||||
assert.deepEqual(compact.collapsedCategories, [longText.slice(0, 80)]);
|
||||
assert.equal(compact.combos[0].id, "rootCombo");
|
||||
assert.equal(compact.combos[0].device, "switch");
|
||||
assert.equal(compact.categories[0].id, "category1");
|
||||
assert.equal(compact.categories[0].combos[0].device, "n64");
|
||||
assert.equal(compact.categories[0].combos[0].id, "combo1");
|
||||
assert.equal(compact.combos[1].device, "n64");
|
||||
assert.equal(compact.combos[1].id, "combo1");
|
||||
assert.equal(compact.combos[1].category.length, 80);
|
||||
|
||||
const exported = createToolboxExportPayload(
|
||||
{ id: "toolbox1", name: "Combos", modules: [{ id: "module1", type: "combos" }], updatedAt: "2026-01-01T00:00:00.000Z" },
|
||||
|
|
@ -166,9 +159,10 @@ test("combos storage normalizes devices, steps and compact export ids", () => {
|
|||
);
|
||||
assert.equal(exported.modules.m1.combos[0].id, "o1");
|
||||
assert.equal(exported.modules.m1.combos[0].device, "switch");
|
||||
assert.equal(exported.modules.m1.categories[0].id, "g1");
|
||||
assert.equal(exported.modules.m1.categories[0].combos[0].id, "o2");
|
||||
assert.equal(exported.modules.m1.categories[0].combos[0].device, "n64");
|
||||
assert.deepEqual(exported.modules.m1.categoryOrder, [longText.slice(0, 80)]);
|
||||
assert.deepEqual(exported.modules.m1.collapsedCategories, [longText.slice(0, 80)]);
|
||||
assert.equal(exported.modules.m1.combos[1].id, "o2");
|
||||
assert.equal(exported.modules.m1.combos[1].device, "n64");
|
||||
});
|
||||
|
||||
test("notepad data migrates text, sanitizes html and compacts drawings", () => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue