Phase 16D/16E Fix - Separate Structure Import from Character Creation
This commit is contained in:
parent
35eef02322
commit
908199c802
@ -80,6 +80,7 @@
|
|||||||
<div class="word-companion-actions" data-first-run-character-actions hidden>
|
<div class="word-companion-actions" data-first-run-character-actions hidden>
|
||||||
<button type="button" class="word-companion-primary-action" data-first-run-create-characters>Create Selected Characters</button>
|
<button type="button" class="word-companion-primary-action" data-first-run-create-characters>Create Selected Characters</button>
|
||||||
<button type="button" data-first-run-skip-characters>Skip Character Creation</button>
|
<button type="button" data-first-run-skip-characters>Skip Character Creation</button>
|
||||||
|
<button type="button" data-first-run-continue hidden>Continue</button>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<div class="word-companion-actions" data-first-run-import-actions hidden>
|
<div class="word-companion-actions" data-first-run-import-actions hidden>
|
||||||
|
|||||||
@ -31,6 +31,7 @@
|
|||||||
const firstRunCharacterActions = document.querySelector("[data-first-run-character-actions]");
|
const firstRunCharacterActions = document.querySelector("[data-first-run-character-actions]");
|
||||||
const firstRunCreateCharactersButton = document.querySelector("[data-first-run-create-characters]");
|
const firstRunCreateCharactersButton = document.querySelector("[data-first-run-create-characters]");
|
||||||
const firstRunSkipCharactersButton = document.querySelector("[data-first-run-skip-characters]");
|
const firstRunSkipCharactersButton = document.querySelector("[data-first-run-skip-characters]");
|
||||||
|
const firstRunContinueButton = document.querySelector("[data-first-run-continue]");
|
||||||
const firstRunImportActions = document.querySelector("[data-first-run-import-actions]");
|
const firstRunImportActions = document.querySelector("[data-first-run-import-actions]");
|
||||||
const firstRunImportButton = document.querySelector("[data-first-run-import]");
|
const firstRunImportButton = document.querySelector("[data-first-run-import]");
|
||||||
const firstRunImportCancelButton = document.querySelector("[data-first-run-import-cancel]");
|
const firstRunImportCancelButton = document.querySelector("[data-first-run-import-cancel]");
|
||||||
@ -186,6 +187,8 @@
|
|||||||
let firstRunImportStructure = null;
|
let firstRunImportStructure = null;
|
||||||
let firstRunCharacterCandidatesModel = [];
|
let firstRunCharacterCandidatesModel = [];
|
||||||
let firstRunStructureImported = false;
|
let firstRunStructureImported = false;
|
||||||
|
let firstRunCharacterStepActive = false;
|
||||||
|
let firstRunCharacterStepActivatedAt = 0;
|
||||||
let isFirstRunImporting = false;
|
let isFirstRunImporting = false;
|
||||||
let isCreatingFirstRunCharacters = false;
|
let isCreatingFirstRunCharacters = false;
|
||||||
let isApplyingStructureSync = false;
|
let isApplyingStructureSync = false;
|
||||||
@ -1021,6 +1024,7 @@
|
|||||||
const updateFirstRunButtons = () => {
|
const updateFirstRunButtons = () => {
|
||||||
const project = selectedFirstRunProject();
|
const project = selectedFirstRunProject();
|
||||||
const book = selectedFirstRunBook();
|
const book = selectedFirstRunBook();
|
||||||
|
const characterStepReady = firstRunCharacterStepActive && Date.now() - firstRunCharacterStepActivatedAt >= 750;
|
||||||
if (firstRunScanButton) {
|
if (firstRunScanButton) {
|
||||||
firstRunScanButton.disabled = !project || !book || isFirstRunImporting;
|
firstRunScanButton.disabled = !project || !book || isFirstRunImporting;
|
||||||
}
|
}
|
||||||
@ -1031,7 +1035,9 @@
|
|||||||
firstRunImportButton.disabled = !firstRunAnalysis?.canImport || !firstRunImportStructure || isFirstRunImporting;
|
firstRunImportButton.disabled = !firstRunAnalysis?.canImport || !firstRunImportStructure || isFirstRunImporting;
|
||||||
}
|
}
|
||||||
if (firstRunCreateCharactersButton) {
|
if (firstRunCreateCharactersButton) {
|
||||||
firstRunCreateCharactersButton.disabled = isCreatingFirstRunCharacters || selectedFirstRunCharacterNames().length === 0;
|
firstRunCreateCharactersButton.disabled = !characterStepReady
|
||||||
|
|| isCreatingFirstRunCharacters
|
||||||
|
|| selectedFirstRunCharacterNames().length === 0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1091,6 +1097,8 @@
|
|||||||
firstRunImportStructure = null;
|
firstRunImportStructure = null;
|
||||||
firstRunCharacterCandidatesModel = [];
|
firstRunCharacterCandidatesModel = [];
|
||||||
firstRunStructureImported = false;
|
firstRunStructureImported = false;
|
||||||
|
firstRunCharacterStepActive = false;
|
||||||
|
firstRunCharacterStepActivatedAt = 0;
|
||||||
setHidden(firstRunSummary, true);
|
setHidden(firstRunSummary, true);
|
||||||
setHidden(firstRunImportActions, true);
|
setHidden(firstRunImportActions, true);
|
||||||
setHidden(firstRunCharacterSection, true);
|
setHidden(firstRunCharacterSection, true);
|
||||||
@ -1125,6 +1133,9 @@
|
|||||||
firstRunCharacterCandidates.innerHTML = "";
|
firstRunCharacterCandidates.innerHTML = "";
|
||||||
setHidden(firstRunCharacterSection, false);
|
setHidden(firstRunCharacterSection, false);
|
||||||
setHidden(firstRunCharacterActions, !firstRunStructureImported || firstRunCharacterCandidatesModel.length === 0);
|
setHidden(firstRunCharacterActions, !firstRunStructureImported || firstRunCharacterCandidatesModel.length === 0);
|
||||||
|
setHidden(firstRunCreateCharactersButton, false);
|
||||||
|
setHidden(firstRunSkipCharactersButton, false);
|
||||||
|
setHidden(firstRunContinueButton, true);
|
||||||
|
|
||||||
if (firstRunCharacterCandidatesModel.length === 0) {
|
if (firstRunCharacterCandidatesModel.length === 0) {
|
||||||
setText(firstRunCharacterStatus, "No likely major characters found.");
|
setText(firstRunCharacterStatus, "No likely major characters found.");
|
||||||
@ -2693,6 +2704,8 @@
|
|||||||
await loadBooks(response.projectId, response.bookId);
|
await loadBooks(response.projectId, response.bookId);
|
||||||
setConnectionStatus("Connected");
|
setConnectionStatus("Connected");
|
||||||
firstRunStructureImported = true;
|
firstRunStructureImported = true;
|
||||||
|
firstRunCharacterStepActive = discoveredCharacters.length > 0;
|
||||||
|
firstRunCharacterStepActivatedAt = firstRunCharacterStepActive ? Date.now() : 0;
|
||||||
firstRunCharacterCandidatesModel = discoveredCharacters;
|
firstRunCharacterCandidatesModel = discoveredCharacters;
|
||||||
if (discoveredCharacters.length > 0) {
|
if (discoveredCharacters.length > 0) {
|
||||||
setFirstRunMode(true);
|
setFirstRunMode(true);
|
||||||
@ -2701,8 +2714,18 @@
|
|||||||
setHidden(firstRunCharacterActions, false);
|
setHidden(firstRunCharacterActions, false);
|
||||||
setFirstRunStatus(response.message || "Manuscript structure imported.");
|
setFirstRunStatus(response.message || "Manuscript structure imported.");
|
||||||
setDocumentMessage(response.message || "Manuscript structure imported.");
|
setDocumentMessage(response.message || "Manuscript structure imported.");
|
||||||
|
window.setTimeout(updateFirstRunButtons, 750);
|
||||||
} else {
|
} else {
|
||||||
setFirstRunMode(false);
|
setFirstRunMode(true);
|
||||||
|
setHidden(firstRunSummary, true);
|
||||||
|
setHidden(firstRunImportActions, true);
|
||||||
|
setHidden(firstRunCharacterSection, false);
|
||||||
|
setHidden(firstRunCharacterActions, false);
|
||||||
|
setHidden(firstRunCreateCharactersButton, true);
|
||||||
|
setHidden(firstRunSkipCharactersButton, true);
|
||||||
|
setHidden(firstRunContinueButton, false);
|
||||||
|
setText(firstRunCharacterStatus, "No likely characters found.");
|
||||||
|
setFirstRunStatus(response.message || "Manuscript structure imported.");
|
||||||
setDocumentMessage(response.message || "Manuscript structure imported.");
|
setDocumentMessage(response.message || "Manuscript structure imported.");
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@ -2715,15 +2738,23 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
const finishFirstRunOnboarding = () => {
|
const finishFirstRunOnboarding = () => {
|
||||||
|
firstRunCharacterStepActive = false;
|
||||||
|
firstRunCharacterStepActivatedAt = 0;
|
||||||
|
firstRunCharacterCandidatesModel = [];
|
||||||
|
if (firstRunCharacterCandidates) {
|
||||||
|
firstRunCharacterCandidates.innerHTML = "";
|
||||||
|
}
|
||||||
|
setHidden(firstRunCharacterSection, true);
|
||||||
setFirstRunMode(false);
|
setFirstRunMode(false);
|
||||||
setFirstRunStatus("");
|
setFirstRunStatus("");
|
||||||
setHidden(firstRunCharacterActions, true);
|
setHidden(firstRunCharacterActions, true);
|
||||||
|
loadRuntimeDocumentAwareness();
|
||||||
};
|
};
|
||||||
|
|
||||||
const createFirstRunCharacters = async () => {
|
const createFirstRunCharacters = async () => {
|
||||||
const project = selectedFirstRunProject() || selectedProject();
|
const project = selectedFirstRunProject() || selectedProject();
|
||||||
const candidateNames = selectedFirstRunCharacterNames();
|
const candidateNames = selectedFirstRunCharacterNames();
|
||||||
if (!project || candidateNames.length === 0) {
|
if (!firstRunCharacterStepActive || Date.now() - firstRunCharacterStepActivatedAt < 750 || !project || candidateNames.length === 0) {
|
||||||
updateFirstRunButtons();
|
updateFirstRunButtons();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -4201,6 +4232,7 @@
|
|||||||
firstRunImportButton?.addEventListener("click", importFirstRunManuscript);
|
firstRunImportButton?.addEventListener("click", importFirstRunManuscript);
|
||||||
firstRunCreateCharactersButton?.addEventListener("click", createFirstRunCharacters);
|
firstRunCreateCharactersButton?.addEventListener("click", createFirstRunCharacters);
|
||||||
firstRunSkipCharactersButton?.addEventListener("click", finishFirstRunOnboarding);
|
firstRunSkipCharactersButton?.addEventListener("click", finishFirstRunOnboarding);
|
||||||
|
firstRunContinueButton?.addEventListener("click", finishFirstRunOnboarding);
|
||||||
firstRunCancelButton?.addEventListener("click", () => setFirstRunMode(false));
|
firstRunCancelButton?.addEventListener("click", () => setFirstRunMode(false));
|
||||||
firstRunImportCancelButton?.addEventListener("click", () => resetFirstRunPreview("Import cancelled."));
|
firstRunImportCancelButton?.addEventListener("click", () => resetFirstRunPreview("Import cancelled."));
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user