diff --git a/Projects/Superalgos/Schemas/Docs-Topics/docs commands errors-004-docs error category not valid.json b/Projects/Superalgos/Schemas/Docs-Topics/docs commands errors-004-docs error category not valid.json new file mode 100644 index 000000000..ae4a51ba3 --- /dev/null +++ b/Projects/Superalgos/Schemas/Docs-Topics/docs commands errors-004-docs error category not valid.json @@ -0,0 +1,44 @@ +{ + "topic": "Docs Commands Errors", + "pageNumber": "4", + "type": "Docs Error Category Not Valid", + "definition": { + "text": "While executing a command, you might receive different types of error messanges. These are described below. ", + "updated": 1609159174480 + }, + "paragraphs": [ + { + "style": "Anchor", + "text": "Anchor Category Not Valid" + }, + { + "style": "Error", + "text": "The category you have specidied is not a valid Docs Page Category.", + "updated": 1609160924575 + }, + { + "style": "Success", + "text": "Check which are the valid categories at the command's page.", + "updated": 1610382670261 + }, + { + "style": "Title", + "text": "Applies to", + "updated": 1609162854123 + }, + { + "style": "List", + "text": "Docs Goto Command", + "updated": 1609177229589 + }, + { + "style": "List", + "text": "Docs Add Command", + "updated": 1609180006853 + }, + { + "style": "List", + "text": "Docs Delete Command" + } + ] +} \ No newline at end of file diff --git a/Projects/Superalgos/Schemas/Docs-Topics/docs-message-deleting-succeed - Copy.json b/Projects/Superalgos/Schemas/Docs-Topics/docs-message-deleting-succeed - Copy.json new file mode 100644 index 000000000..9887ee9c9 --- /dev/null +++ b/Projects/Superalgos/Schemas/Docs-Topics/docs-message-deleting-succeed - Copy.json @@ -0,0 +1,16 @@ +{ + "topic": "Docs Commands Messages", + "pageNumber": "3.1", + "type": "Docs Message Repagination Succeed", + "definition": { + "text": "The docs.repaginate command you executed successfuly.", + "updated": 1610292270590 + }, + "paragraphs": [ + { + "style": "Important", + "text": "To complete this procedure, you need to manually delete from disk all the files of the Topic / Tutorial you just repaginated, and execute the Docs Save Command to save the in-memory updated pages.", + "updated": 1610292163004 + } + ] +} \ No newline at end of file diff --git a/Projects/Superalgos/Schemas/Docs-Topics/vaina-001-vaina 1.json b/Projects/Superalgos/Schemas/Docs-Topics/vaina-001-vaina 1.json index 7831e604c..faefa0791 100644 --- a/Projects/Superalgos/Schemas/Docs-Topics/vaina-001-vaina 1.json +++ b/Projects/Superalgos/Schemas/Docs-Topics/vaina-001-vaina 1.json @@ -1,6 +1,6 @@ { "topic": "Vaina", - "pageNumber": "1", + "pageNumber": 1, "type": "Vaina 1", "definition": { "text": "Write here a summary for this topic page." diff --git a/Projects/Superalgos/Schemas/Docs-Topics/vaina-002-vaina 2.json b/Projects/Superalgos/Schemas/Docs-Topics/vaina-002-vaina 2.json index c0c7f5f7e..fb2c461f4 100644 --- a/Projects/Superalgos/Schemas/Docs-Topics/vaina-002-vaina 2.json +++ b/Projects/Superalgos/Schemas/Docs-Topics/vaina-002-vaina 2.json @@ -1,6 +1,6 @@ { "topic": "Vaina", - "pageNumber": "2", + "pageNumber": 2, "type": "Vaina 2", "definition": { "text": "Write here a summary for this topic page." diff --git a/Projects/Superalgos/Schemas/Docs-Topics/vaina-003-vaina 3.json b/Projects/Superalgos/Schemas/Docs-Topics/vaina-003-vaina 3.json index 6c899a0d0..4e8e85a64 100644 --- a/Projects/Superalgos/Schemas/Docs-Topics/vaina-003-vaina 3.json +++ b/Projects/Superalgos/Schemas/Docs-Topics/vaina-003-vaina 3.json @@ -1,6 +1,6 @@ { "topic": "Vaina", - "pageNumber": "3", + "pageNumber": 3, "type": "Vaina 3", "definition": { "text": "Write here a summary for this topic page." diff --git a/Projects/Superalgos/Schemas/Docs-Topics/vaina-004-vaina 4.json b/Projects/Superalgos/Schemas/Docs-Topics/vaina-004-vaina 4.json index 917f6e816..b49dd0a5e 100644 --- a/Projects/Superalgos/Schemas/Docs-Topics/vaina-004-vaina 4.json +++ b/Projects/Superalgos/Schemas/Docs-Topics/vaina-004-vaina 4.json @@ -1,6 +1,6 @@ { "topic": "Vaina", - "pageNumber": "4", + "pageNumber": 4, "type": "Vaina 4", "definition": { "text": "Write here a summary for this topic page." diff --git a/Projects/Superalgos/Schemas/Docs-Topics/vaina-005-vaina 5.json b/Projects/Superalgos/Schemas/Docs-Topics/vaina-005-vaina 5.json index a2ce337c0..2167e21b0 100644 --- a/Projects/Superalgos/Schemas/Docs-Topics/vaina-005-vaina 5.json +++ b/Projects/Superalgos/Schemas/Docs-Topics/vaina-005-vaina 5.json @@ -1,6 +1,6 @@ { "topic": "Vaina", - "pageNumber": "5", + "pageNumber": 5, "type": "Vaina 5", "definition": { "text": "Write here a summary for this topic page." diff --git a/Projects/Superalgos/Schemas/Docs-Topics/vaina-2.5-vaina 2.5.json b/Projects/Superalgos/Schemas/Docs-Topics/vaina-006-vaina 2.5.json similarity index 93% rename from Projects/Superalgos/Schemas/Docs-Topics/vaina-2.5-vaina 2.5.json rename to Projects/Superalgos/Schemas/Docs-Topics/vaina-006-vaina 2.5.json index 9769c6eef..ccbf6d0d6 100644 --- a/Projects/Superalgos/Schemas/Docs-Topics/vaina-2.5-vaina 2.5.json +++ b/Projects/Superalgos/Schemas/Docs-Topics/vaina-006-vaina 2.5.json @@ -1,6 +1,6 @@ { "topic": "Vaina", - "pageNumber": "2.5", + "pageNumber": 6, "type": "Vaina 2.5", "definition": { "text": "Write here a summary for this topic page." diff --git a/Projects/Superalgos/UI/Spaces/Docs-Space/CommandInterface.js b/Projects/Superalgos/UI/Spaces/Docs-Space/CommandInterface.js index 78da5d0ad..913406141 100644 --- a/Projects/Superalgos/UI/Spaces/Docs-Space/CommandInterface.js +++ b/Projects/Superalgos/UI/Spaces/Docs-Space/CommandInterface.js @@ -85,6 +85,7 @@ function newSuperalgosDocsCommmandInterface() { if (checkGotoCommand() === undefined) { return } if (checkAddCommand() === undefined) { return } if (checkDeleteCommand() === undefined) { return } + if (checkRepaginateCommand() === undefined) { return } if (checkUReIndexCommand() === undefined) { return } if (checkUSaveCommand() === undefined) { return } @@ -317,6 +318,68 @@ function newSuperalgosDocsCommmandInterface() { } } + function checkRepaginateCommand() { + if (UI.projects.superalgos.spaces.docsSpace.commandInterface.command.toLowerCase() === 'docs.help docs.repaginate') { + UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Repaginate Command') + return + } + if (UI.projects.superalgos.spaces.docsSpace.commandInterface.command.indexOf('Docs.Repaginate') !== 0 && UI.projects.superalgos.spaces.docsSpace.commandInterface.command.indexOf('docs.repaginate') !== 0) { return 'Not Repaginate Command' } + + let splittedCommand = UI.projects.superalgos.spaces.docsSpace.commandInterface.command.split(': ') + if (splittedCommand[1] === undefined) { + UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Missing Colon', 'Anchor Missing Colon') + return + } + let primaryCommand = splittedCommand[0] + let secondaryCommand = splittedCommand[1] + + let splittedPrimaryCommand = primaryCommand.split(' ') + + if (splittedPrimaryCommand[0].toLowerCase() === 'docs.repaginate') { + if (splittedPrimaryCommand[2] !== 'from') { + UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Missing From', 'Anchor Missing From') + return + } + + if (splittedPrimaryCommand.length < 4) { + UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Too Few Parameters', 'Anchor Too Few Paramenters') + return + } + + if (secondaryCommand === '') { + UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Category Not Valid', 'Anchor Category Not Valid') + return + } + + switch (splittedPrimaryCommand[1].toLowerCase()) { + case 'node': { + UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Category Not Valid', 'Anchor Category Not Valid') + return + } + case 'concept': { + UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Category Not Valid', 'Anchor Category Not Valid') + return + } + case 'topic': { + repaginate(splittedPrimaryCommand[3], 'Topic', secondaryCommand) + return + } + case 'tutorial': { + repaginate(splittedPrimaryCommand[3], 'Tutorial', secondaryCommand) + return + } + case 'book': { + UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Category Not Valid', 'Anchor Category Not Valid') + return + } + default: { + UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Category Not Valid', 'Anchor Category Not Valid') + return + } + } + } + } + function checkUReIndexCommand() { if (UI.projects.superalgos.spaces.docsSpace.commandInterface.command.toLowerCase() === 'docs.help docs.reindex') { UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Reindex Command') @@ -327,10 +390,10 @@ function newSuperalgosDocsCommmandInterface() { UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Message Reindexing Started') setTimeout(startReindexingProcess, 100) - function startReindexingProcess(){ + function startReindexingProcess() { UI.projects.superalgos.spaces.docsSpace.setUpWorkspaceSchemas() UI.projects.superalgos.spaces.docsSpace.searchEngine.setUpSearchEngine() - + UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Message Reindexing Succeed') } } @@ -475,6 +538,49 @@ function newSuperalgosDocsCommmandInterface() { } } + function repaginate(project, category, query) { + if (SCHEMAS_BY_PROJECT.get(project) === undefined) { + UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Project Does Not Exist', 'Anchor Project Does Not Exist') + return + } + + let docsSchema + switch (category) { + case 'Topic': { + docsSchema = SCHEMAS_BY_PROJECT.get(project).array.docsTopicSchema + break + } + case 'Tutorial': { + docsSchema = SCHEMAS_BY_PROJECT.get(project).array.docsTutorialSchema + break + } + } + + let pageNumber = 1 + for (let i = 0; i < docsSchema.length; i++) { + schemaDocument = docsSchema[i] + switch (category) { + case 'Topic': { + if (schemaDocument.topic === query) { + schemaDocument.pageNumber = pageNumber + pageNumber++ + schemaDocument.updated = true + } + break + } + case 'Tutorial': { + if (schemaDocument.tutorial === query) { + schemaDocument.pageNumber = pageNumber + pageNumber++ + schemaDocument.updated = true + } + break + } + } + } + UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Message Repagination Succeed') + } + function addNode(project, type) { let template = { created: true, diff --git a/Projects/Superalgos/UI/Spaces/Docs-Space/DocumentPage.js b/Projects/Superalgos/UI/Spaces/Docs-Space/DocumentPage.js index 98466efcd..c87ffc495 100644 --- a/Projects/Superalgos/UI/Spaces/Docs-Space/DocumentPage.js +++ b/Projects/Superalgos/UI/Spaces/Docs-Space/DocumentPage.js @@ -167,9 +167,11 @@ function newSuperalgosDocsDocumentPage() { if (UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.category === 'Topic') { - buildOrderedTopicPageIndex(thisObject.docsSchemaDocument.topic) - - + orderedTopicPageIndexArray = UI.projects.superalgos.utilities.docs.buildOrderedPageIndex( + UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.project, + 'Topic', + thisObject.docsSchemaDocument.topic + ) /* Topic Title @@ -192,7 +194,11 @@ function newSuperalgosDocsDocumentPage() { if (UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.category === 'Tutorial') { - buildOrderedTutorialPageIndex(thisObject.docsSchemaDocument.tutorial) + orderedTutorialPageIndexArray = UI.projects.superalgos.utilities.docs.buildOrderedPageIndex( + UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.project, + 'Tutorial', + thisObject.docsSchemaDocument.tutorial + ) /* Tutorial Title titleLabel = thisObject.docsSchemaDocument.tutorial + ' Tutorial Navigation' @@ -273,34 +279,6 @@ function newSuperalgosDocsDocumentPage() { } - function buildOrderedTopicPageIndex(topic) { - orderedTopicPageIndexArray = [] - let schemaArray = SCHEMAS_BY_PROJECT.get(UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.project).array.docsTopicSchema - for (let i = 0; i < schemaArray.length; i++) { - let arrayItem = schemaArray[i] - - if (arrayItem.topic === topic) { - let itemAdded = false - if (orderedTopicPageIndexArray.length === 0) { - orderedTopicPageIndexArray.push(arrayItem) - itemAdded = true - } else { - for (let j = 0; j < orderedTopicPageIndexArray.length; j++) { - let orderedArrayItem = orderedTopicPageIndexArray[j] - if (Number(arrayItem.pageNumber) < Number(orderedArrayItem.pageNumber)) { - orderedTopicPageIndexArray.splice(j, 0, arrayItem) - itemAdded = true - break - } - } - } - if (itemAdded === false) { - orderedTopicPageIndexArray.push(arrayItem) - } - } - } - } - function generateTopicPreviousAndNextPageNavigation() { let previousPage let nextPage @@ -350,34 +328,6 @@ function newSuperalgosDocsDocumentPage() { } - function buildOrderedTutorialPageIndex(tutorial) { - orderedTutorialPageIndexArray = [] - let schemaArray = SCHEMAS_BY_PROJECT.get(UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.project).array.docsTutorialSchema - for (let i = 0; i < schemaArray.length; i++) { - let arrayItem = schemaArray[i] - - if (arrayItem.tutorial === tutorial) { - let itemAdded = false - if (orderedTutorialPageIndexArray.length === 0) { - orderedTutorialPageIndexArray.push(arrayItem) - itemAdded = true - } else { - for (let j = 0; j < orderedTutorialPageIndexArray.length; j++) { - let orderedArrayItem = orderedTutorialPageIndexArray[j] - if (Number(arrayItem.pageNumber) < Number(orderedArrayItem.pageNumber)) { - orderedTutorialPageIndexArray.splice(j, 0, arrayItem) - itemAdded = true - break - } - } - } - if (itemAdded === false) { - orderedTutorialPageIndexArray.push(arrayItem) - } - } - } - } - function generateTutorialPreviousAndNextPageNavigation() { let previousPage let nextPage @@ -587,7 +537,11 @@ function newSuperalgosDocsDocumentPage() { switch (category) { case 'Topic': { - buildOrderedTopicPageIndex(chapterName) + orderedTopicPageIndexArray = UI.projects.superalgos.utilities.docs.buildOrderedPageIndex( + UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.project, + 'Topic', + chapterName + ) if (orderedTopicPageIndexArray.length === 0) { return 'Chapter paragraph style Syntax Error. The Topic ' + chapterName + ' could not be found. Check the Docs Chapter Style Syntax. This error message will dissapear as soon as you fix the problem.' @@ -595,7 +549,11 @@ function newSuperalgosDocsDocumentPage() { break } case 'Tutorial': { - buildOrderedTutorialPageIndex(chapterName) + orderedTutorialPageIndexArray = UI.projects.superalgos.utilities.docs.buildOrderedPageIndex( + UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.project, + 'Tutorial', + chapterName + ) if (orderedTutorialPageIndexArray.length === 0) { return 'Chapter paragraph style Syntax Error. The Tutorial ' + chapterName + ' could not be found. Check the Docs Chapter Style Syntax. This error message will dissapear as soon as you fix the problem.' diff --git a/Projects/Superalgos/UI/Utilities/Docs.js b/Projects/Superalgos/UI/Utilities/Docs.js index 6b9ba3714..7e3dc6f81 100644 --- a/Projects/Superalgos/UI/Utilities/Docs.js +++ b/Projects/Superalgos/UI/Utilities/Docs.js @@ -1,5 +1,6 @@ function newSuperalgosUtilitiesDocs() { thisObject = { + buildOrderedPageIndex: buildOrderedPageIndex, addWarningIfTranslationIsOutdated: addWarningIfTranslationIsOutdated, getTextBasedOnLanguage: getTextBasedOnLanguage, setTextBasedOnLanguage: setTextBasedOnLanguage, @@ -26,6 +27,57 @@ function newSuperalgosUtilitiesDocs() { return thisObject + function buildOrderedPageIndex(project, category, query) { + let array = [] + let schemaArray + + switch (category) { + case 'Topic': { + schemaArray = SCHEMAS_BY_PROJECT.get(project).array.docsTopicSchema + break + } + case 'Tutorial': { + schemaArray = SCHEMAS_BY_PROJECT.get(project).array.docsTutorialSchema + break + } + } + + for (let i = 0; i < schemaArray.length; i++) { + let arrayItem = schemaArray[i] + + switch (category) { + case 'Topic': { + if (arrayItem.topic !== query) { continue } + break + } + case 'Tutorial': { + if (arrayItem.tutorial !== query) { continue } + break + } + } + + let itemAdded = false + if (array.length === 0) { + array.push(arrayItem) + itemAdded = true + } else { + for (let j = 0; j < array.length; j++) { + let orderedArrayItem = array[j] + if (Number(arrayItem.pageNumber) < Number(orderedArrayItem.pageNumber)) { + array.splice(j, 0, arrayItem) + itemAdded = true + break + } + } + } + if (itemAdded === false) { + array.push(arrayItem) + } + + } + return array + } + function addWarningIfTranslationIsOutdated(paragraph) { if (paragraph === undefined) { return '' } if (paragraph.updated === undefined) { return '' }