so far so good

This commit is contained in:
Luis Fernando Molina committed 2020-12-31 13:35:19 +01:00
1 parent 94ff4f9885
commit e42d6966b6
6 files changed
+551 -528

No files matched your search

@@ -1,5 +1,6 @@
function newSuperalgosDocsCommmandInterface() {
let thisObject = {
command: undefined,
detectCommands: detectCommands,
initialize: initialize,
finalize: finalize
@@ -27,27 +28,27 @@ function newSuperalgosDocsCommmandInterface() {
UI.projects.superalgos.spaces.docsSpace.searchResultsPage.render()
function checkHelpCommand() {
if (UI.projects.superalgos.spaces.docsSpace.command.toLowerCase() === 'docs.help') {
navigateTo('Superalgos', 'Topic', 'Docs Help Command')
if (UI.projects.superalgos.spaces.docsSpace.commandInterface.command.toLowerCase() === 'docs.help') {
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Help Command')
return
}
return 'Not Help Command'
}
function checkGotoCommand() {
if (UI.projects.superalgos.spaces.docsSpace.command.toLowerCase() === 'docs.help docs.goto') {
navigateTo('Superalgos', 'Topic', 'Docs Goto Command')
if (UI.projects.superalgos.spaces.docsSpace.commandInterface.command.toLowerCase() === 'docs.help docs.goto') {
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Goto Command')
return
}
if (UI.projects.superalgos.spaces.docsSpace.command.indexOf('Docs.Goto') !== 0 && UI.projects.superalgos.spaces.docsSpace.command.indexOf('docs.goto') !== 0) { return 'Not Goto Command' }
if (UI.projects.superalgos.spaces.docsSpace.commandInterface.command.indexOf('Docs.Goto') !== 0 && UI.projects.superalgos.spaces.docsSpace.commandInterface.command.indexOf('docs.goto') !== 0) { return 'Not Goto Command' }
let splittedCommand = UI.projects.superalgos.spaces.docsSpace.command.split(' ')
let splittedCommand = UI.projects.superalgos.spaces.docsSpace.commandInterface.command.split(' ')
if (splittedCommand[1] === undefined) {
navigateTo('Superalgos', 'Topic', 'Docs Error Too Few Parameters', 'Anchor Too Few Paramenters')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Too Few Parameters', 'Anchor Too Few Paramenters')
return
}
let secondaryCommand = UI.projects.superalgos.spaces.docsSpace.command.substring(UI.projects.superalgos.spaces.docsSpace.command.indexOf(' ') + 1, UI.projects.superalgos.spaces.docsSpace.command.length)
let secondaryCommand = UI.projects.superalgos.spaces.docsSpace.commandInterface.command.substring(UI.projects.superalgos.spaces.docsSpace.commandInterface.command.indexOf(' ') + 1, UI.projects.superalgos.spaces.docsSpace.commandInterface.command.length)
let splittedSecondaryCommand = secondaryCommand.split('->')
let project = splittedSecondaryCommand[0]
let category = splittedSecondaryCommand[1]
@@ -55,7 +56,7 @@ function newSuperalgosDocsCommmandInterface() {
let anchor = splittedSecondaryCommand[3]
if (SCHEMAS_BY_PROJECT.get(project) === undefined) {
navigateTo('Superalgos', 'Topic', 'Docs Error Project Does Not Exist', 'Anchor Project Does Not Exist')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Project Does Not Exist', 'Anchor Project Does Not Exist')
return
}
let docsSchemaDocument
@@ -73,37 +74,37 @@ function newSuperalgosDocsCommmandInterface() {
break
}
default: {
navigateTo('Superalgos', 'Topic', 'Docs Error Category Not Valid', 'Anchor Category Not Valid')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Category Not Valid', 'Anchor Category Not Valid')
return
}
}
if (docsSchemaDocument === undefined) {
navigateTo('Superalgos', 'Topic', 'Docs Error Page Not Found', 'Anchor Page Not Found')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Page Not Found', 'Anchor Page Not Found')
return
}
if (docsSchemaDocument.paragraphs === undefined) {
navigateTo('Superalgos', 'Topic', 'Docs Error Page With No Paragraphs', 'Anchor Page With No Paragraphs')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Page With No Paragraphs', 'Anchor Page With No Paragraphs')
return
}
navigateTo(project, category, type, anchor, undefined)
UI.projects.superalgos.spaces.docsSpace.navigateTo(project, category, type, anchor, undefined)
}
function checkAddCommand() {
if (UI.projects.superalgos.spaces.docsSpace.command.toLowerCase() === 'docs.help docs.add') {
navigateTo('Superalgos', 'Topic', 'Docs Add Command')
if (UI.projects.superalgos.spaces.docsSpace.commandInterface.command.toLowerCase() === 'docs.help docs.add') {
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Add Command')
return
}
if (UI.projects.superalgos.spaces.docsSpace.command.indexOf('Docs.Add') !== 0 && UI.projects.superalgos.spaces.docsSpace.command.indexOf('docs.add') !== 0) { return 'Not Add Command' }
if (UI.projects.superalgos.spaces.docsSpace.commandInterface.command.indexOf('Docs.Add') !== 0 && UI.projects.superalgos.spaces.docsSpace.commandInterface.command.indexOf('docs.add') !== 0) { return 'Not Add Command' }
if (UI.projects.superalgos.spaces.docsSpace.language !== DEFAULT_LANGUAGE) {
navigateTo('Superalgos', 'Topic', 'Docs Error Only In English', 'Anchor Only In English')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Only In English', 'Anchor Only In English')
return
}
let splittedCommand = UI.projects.superalgos.spaces.docsSpace.command.split(': ')
let splittedCommand = UI.projects.superalgos.spaces.docsSpace.commandInterface.command.split(': ')
if (splittedCommand[1] === undefined) {
navigateTo('Superalgos', 'Topic', 'Docs Error Missing Colon', 'Anchor Missing Colon')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Missing Colon', 'Anchor Missing Colon')
return
}
let primaryCommand = splittedCommand[0]
@@ -113,17 +114,17 @@ function newSuperalgosDocsCommmandInterface() {
if (splittedPrimaryCommand[0].toLowerCase() === 'docs.add') {
if (splittedPrimaryCommand[2] !== 'to') {
navigateTo('Superalgos', 'Topic', 'Docs Error Missing To', 'Anchor Missing To')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Missing To', 'Anchor Missing To')
return
}
if (splittedPrimaryCommand.length < 4) {
navigateTo('Superalgos', 'Topic', 'Docs Error Too Few Parameters', 'Anchor Too Few Paramenters')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Too Few Parameters', 'Anchor Too Few Paramenters')
return
}
if (secondaryCommand === '') {
navigateTo('Superalgos', 'Topic', 'Docs Error Category Not Valid', 'Anchor Category Not Valid')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Category Not Valid', 'Anchor Category Not Valid')
return
}
@@ -139,14 +140,14 @@ function newSuperalgosDocsCommmandInterface() {
case 'topic': {
let splittedSecondaryCommand = secondaryCommand.split('->')
if (splittedSecondaryCommand.length < 3) {
navigateTo('Superalgos', 'Topic', 'Docs Error Too Few Parameters', 'Anchor Too Few Paramenters')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Too Few Parameters', 'Anchor Too Few Paramenters')
return
}
addTopic(splittedPrimaryCommand[3], splittedSecondaryCommand[0], splittedSecondaryCommand[1], splittedSecondaryCommand[2])
return
}
default: {
navigateTo('Superalgos', 'Topic', 'Docs Error Category Not Valid', 'Anchor Category Not Valid')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Category Not Valid', 'Anchor Category Not Valid')
return
}
}
@@ -155,20 +156,20 @@ function newSuperalgosDocsCommmandInterface() {
}
function checkDeleteCommand() {
if (UI.projects.superalgos.spaces.docsSpace.command.toLowerCase() === 'docs.help docs.delete') {
navigateTo('Superalgos', 'Topic', 'Docs Delete Command')
if (UI.projects.superalgos.spaces.docsSpace.commandInterface.command.toLowerCase() === 'docs.help docs.delete') {
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Delete Command')
return
}
if (UI.projects.superalgos.spaces.docsSpace.command.indexOf('Docs.Delete') !== 0 && UI.projects.superalgos.spaces.docsSpace.command.indexOf('docs.delete') !== 0) { return 'Not Delete Command' }
if (UI.projects.superalgos.spaces.docsSpace.commandInterface.command.indexOf('Docs.Delete') !== 0 && UI.projects.superalgos.spaces.docsSpace.commandInterface.command.indexOf('docs.delete') !== 0) { return 'Not Delete Command' }
if (UI.projects.superalgos.spaces.docsSpace.language !== DEFAULT_LANGUAGE) {
navigateTo('Superalgos', 'Topic', 'Docs Error Only In English', 'Anchor Only In English')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Only In English', 'Anchor Only In English')
return
}
let splittedCommand = UI.projects.superalgos.spaces.docsSpace.command.split(': ')
let splittedCommand = UI.projects.superalgos.spaces.docsSpace.commandInterface.command.split(': ')
if (splittedCommand[1] === undefined) {
navigateTo('Superalgos', 'Topic', 'Docs Error Missing Colon', 'Anchor Missing Colon')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Missing Colon', 'Anchor Missing Colon')
return
}
let primaryCommand = splittedCommand[0]
@@ -178,17 +179,17 @@ function newSuperalgosDocsCommmandInterface() {
if (splittedPrimaryCommand[0].toLowerCase() === 'docs.delete') {
if (splittedPrimaryCommand[2] !== 'from') {
navigateTo('Superalgos', 'Topic', 'Docs Error Missing From', 'Anchor Missing From')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Missing From', 'Anchor Missing From')
return
}
if (splittedPrimaryCommand.length < 4) {
navigateTo('Superalgos', 'Topic', 'Docs Error Too Few Parameters', 'Anchor Too Few Paramenters')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Too Few Parameters', 'Anchor Too Few Paramenters')
return
}
if (secondaryCommand === '') {
navigateTo('Superalgos', 'Topic', 'Docs Error Category Not Valid', 'Anchor Category Not Valid')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Category Not Valid', 'Anchor Category Not Valid')
return
}
@@ -204,14 +205,14 @@ function newSuperalgosDocsCommmandInterface() {
case 'topic': {
let splittedSecondaryCommand = secondaryCommand.split('->')
if (splittedSecondaryCommand.length < 3) {
navigateTo('Superalgos', 'Topic', 'Docs Error Too Few Parameters', 'Anchor Too Few Paramenters')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Too Few Parameters', 'Anchor Too Few Paramenters')
return
}
deleteTopic(splittedPrimaryCommand[3], splittedSecondaryCommand[0], splittedSecondaryCommand[1], splittedSecondaryCommand[2])
return
}
default: {
navigateTo('Superalgos', 'Topic', 'Docs Error Category Not Valid', 'Anchor Category Not Valid')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Category Not Valid', 'Anchor Category Not Valid')
return
}
}
@@ -220,11 +221,11 @@ function newSuperalgosDocsCommmandInterface() {
}
function checkUReIndexCommand() {
if (UI.projects.superalgos.spaces.docsSpace.command.toLowerCase() === 'docs.help docs.reindex') {
navigateTo('Superalgos', 'Topic', 'Docs Reindex Command')
if (UI.projects.superalgos.spaces.docsSpace.commandInterface.command.toLowerCase() === 'docs.help docs.reindex') {
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Reindex Command')
return
}
if (UI.projects.superalgos.spaces.docsSpace.command.indexOf('Docs.Reindex') !== 0 && UI.projects.superalgos.spaces.docsSpace.command.indexOf('docs.reindex') !== 0) { return 'Not Reindex Command' }
if (UI.projects.superalgos.spaces.docsSpace.commandInterface.command.indexOf('Docs.Reindex') !== 0 && UI.projects.superalgos.spaces.docsSpace.commandInterface.command.indexOf('docs.reindex') !== 0) { return 'Not Reindex Command' }
setUpWorkspaceSchemas()
thisObject.searchEngine.setUpSearchEngine()
@@ -233,11 +234,11 @@ function newSuperalgosDocsCommmandInterface() {
}
function checkUSaveCommand() {
if (UI.projects.superalgos.spaces.docsSpace.command.toLowerCase() === 'docs.help docs.save') {
navigateTo('Superalgos', 'Topic', 'Docs Save Command')
if (UI.projects.superalgos.spaces.docsSpace.commandInterface.command.toLowerCase() === 'docs.help docs.save') {
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Save Command')
return
}
if (UI.projects.superalgos.spaces.docsSpace.command.indexOf('Docs.Save') !== 0 && UI.projects.superalgos.spaces.docsSpace.command.indexOf('docs.save') !== 0) { return 'Not Save Command' }
if (UI.projects.superalgos.spaces.docsSpace.commandInterface.command.indexOf('Docs.Save') !== 0 && UI.projects.superalgos.spaces.docsSpace.commandInterface.command.indexOf('docs.save') !== 0) { return 'Not Save Command' }
let requestsSent = 0
let responseCount = 0
@@ -271,7 +272,7 @@ function newSuperalgosDocsCommmandInterface() {
if (responseCount === okResponses) {
renderCommandResultsPage(["Succesfully saved all the latest changes."])
} else {
navigateTo('Superalgos', 'Topic', 'Docs Error Changes Not Saved', 'Anchor Changes Not Saved')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Changes Not Saved', 'Anchor Changes Not Saved')
}
}
}
@@ -289,18 +290,18 @@ function newSuperalgosDocsCommmandInterface() {
]
}
if (SCHEMAS_BY_PROJECT.get(project) === undefined) {
navigateTo('Superalgos', 'Topic', 'Docs Error Project Does Not Exist', 'Anchor Project Does Not Exist')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Project Does Not Exist', 'Anchor Project Does Not Exist')
return
}
let exist = SCHEMAS_BY_PROJECT.get(project).map.docsNodeSchema.get(type)
if (exist !== undefined) {
navigateTo('Superalgos', 'Topic', 'Docs Error Page Already Exists', 'Anchor Page Already Exists')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Page Already Exists', 'Anchor Page Already Exists')
return
}
SCHEMAS_BY_PROJECT.get(project).array.docsNodeSchema.push(template)
SCHEMAS_BY_PROJECT.get(project).map.docsNodeSchema.set(type, template)
navigateTo(project, 'Node', type)
UI.projects.superalgos.spaces.docsSpace.navigateTo(project, 'Node', type)
}
function addConcept(project, type) {
@@ -316,18 +317,18 @@ function newSuperalgosDocsCommmandInterface() {
}
if (SCHEMAS_BY_PROJECT.get(project) === undefined) {
navigateTo('Superalgos', 'Topic', 'Docs Error Project Does Not Exist', 'Anchor Project Does Not Exist')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Project Does Not Exist', 'Anchor Project Does Not Exist')
return
}
let exist = SCHEMAS_BY_PROJECT.get(project).map.docsConceptSchema.get(type)
if (exist !== undefined) {
navigateTo('Superalgos', 'Topic', 'Docs Error Page Already Exists', 'Anchor Page Already Exists')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Page Already Exists', 'Anchor Page Already Exists')
return
}
SCHEMAS_BY_PROJECT.get(project).array.docsConceptSchema.push(template)
SCHEMAS_BY_PROJECT.get(project).map.docsConceptSchema.set(type, template)
navigateTo(project, 'Concept', type)
UI.projects.superalgos.spaces.docsSpace.navigateTo(project, 'Concept', type)
}
function addTopic(project, topic, type, pageNumber) {
@@ -344,28 +345,28 @@ function newSuperalgosDocsCommmandInterface() {
]
}
if (SCHEMAS_BY_PROJECT.get(project) === undefined) {
navigateTo('Superalgos', 'Topic', 'Docs Error Project Does Not Exist', 'Anchor Project Does Not Exist')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Project Does Not Exist', 'Anchor Project Does Not Exist')
return
}
let exist = SCHEMAS_BY_PROJECT.get(project).map.docsTopicSchema.get(type)
if (exist !== undefined) {
navigateTo('Superalgos', 'Topic', 'Docs Error Page Already Exists', 'Anchor Page Already Exists')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Page Already Exists', 'Anchor Page Already Exists')
return
}
SCHEMAS_BY_PROJECT.get(project).array.docsTopicSchema.push(template)
SCHEMAS_BY_PROJECT.get(project).map.docsTopicSchema.set(type, template)
navigateTo(project, 'Topic', type)
UI.projects.superalgos.spaces.docsSpace.navigateTo(project, 'Topic', type)
}
function deleteNode(project, type) {
if (SCHEMAS_BY_PROJECT.get(project) === undefined) {
navigateTo('Superalgos', 'Topic', 'Docs Error Project Does Not Exist', 'Anchor Project Does Not Exist')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Project Does Not Exist', 'Anchor Project Does Not Exist')
return
}
let exist = SCHEMAS_BY_PROJECT.get(project).map.docsNodeSchema.get(type)
if (exist === undefined) {
navigateTo('Superalgos', 'Topic', 'Docs Error Page Does Not Exist', 'Anchor Page Does Not Exist')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Page Does Not Exist', 'Anchor Page Does Not Exist')
return
}
@@ -383,12 +384,12 @@ function newSuperalgosDocsCommmandInterface() {
function deleteConcept(project, type) {
if (SCHEMAS_BY_PROJECT.get(project) === undefined) {
navigateTo('Superalgos', 'Topic', 'Docs Error Project Does Not Exist', 'Anchor Project Does Not Exist')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Project Does Not Exist', 'Anchor Project Does Not Exist')
return
}
let exist = SCHEMAS_BY_PROJECT.get(project).map.docsConceptSchema.get(type)
if (exist === undefined) {
navigateTo('Superalgos', 'Topic', 'Docs Error Page Does Not Exist', 'Anchor Page Does Not Exist')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Page Does Not Exist', 'Anchor Page Does Not Exist')
return
}
@@ -406,20 +407,20 @@ function newSuperalgosDocsCommmandInterface() {
function deleteTopic(project, topic, type, pageNumber) {
if (SCHEMAS_BY_PROJECT.get(project) === undefined) {
navigateTo('Superalgos', 'Topic', 'Docs Error Project Does Not Exist', 'Anchor Project Does Not Exist')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Project Does Not Exist', 'Anchor Project Does Not Exist')
return
}
let exist = SCHEMAS_BY_PROJECT.get(project).map.docsTopicSchema.get(type)
if (exist === undefined) {
navigateTo('Superalgos', 'Topic', 'Docs Error Page Does Not Exist', 'Anchor Page Does Not Exist')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Page Does Not Exist', 'Anchor Page Does Not Exist')
return
} else {
if (exist.pageNumber !== pageNumber) {
navigateTo('Superalgos', 'Topic', 'Docs Error Page Number Mismatch', 'Anchor Page Number Mismatch')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Page Number Mismatch', 'Anchor Page Number Mismatch')
return
}
if (exist.topic !== topic) {
navigateTo('Superalgos', 'Topic', 'Docs Error Topic Mismatch', 'Anchor Topic Mismatch')
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs Error Topic Mismatch', 'Anchor Topic Mismatch')
return
}
}
@@ -0,0 +1,475 @@
function newSuperalgosDocsContextMenu() {
let thisObject = {
getSelection: getSelection,
forceOutClick: forceOutClick,
initialize: initialize,
finalize: finalize
}
let selectedParagraphData = ''
let selectedParagraphIndex = ''
let selectedParagraphHeight = 0
return thisObject
function initialize() {
setUpContextMenu()
}
function finalize() {
}
function setUpContextMenu() {
window.contextMenu = {
editParagraph: editParagraph,
deleteParagraph: deleteParagraph,
toJavascript: toJavascript,
toJson: toJson,
toText: toText,
toTitle: toTitle,
toSubtitle: toSubtitle,
toNote: toNote,
toWarning: toWarning,
toError: toError,
toImportant: toImportant,
toSuccess: toSuccess,
toCallout: toCallout,
toSummary: toSummary,
toList: toList,
toTable: toTable,
toHierarchy: toHierarchy,
toGif: toGif,
toPng: toPng,
toAnchor: toAnchor,
toBlock: toBlock,
toInclude: toInclude,
toSection: toSection,
copyLink: copyLink,
toWebPageLink: toWebPageLink,
toYouTubeVideo: toYouTubeVideo
}
function editParagraph() {
forceOutClick()
showHTMLTextArea()
function showHTMLTextArea() {
if (selectedParagraph === undefined) { return }
/*
When in editing mode, some type of paragraphs need to extend
the text area style so that while editing, it looks and feel
like the non editing style of the paragraph. For those we
add an extra style class.
*/
let extraClassName = ''
if (selectedParagraph.id.indexOf('definition') >= 0) {
extraClassName = ' ' + ''
}
if (selectedParagraph.id.indexOf('title') >= 0) {
extraClassName = ' ' + 'docs-h3'
}
if (selectedParagraph.id.indexOf('subtitle') >= 0) {
extraClassName = ' ' + 'docs-h4'
}
if (selectedParagraph.id.indexOf('note') >= 0) {
extraClassName = ' ' + 'docs-alert-note'
}
if (selectedParagraph.id.indexOf('success') >= 0) {
extraClassName = ' ' + 'docs-alert-success'
}
if (selectedParagraph.id.indexOf('important') >= 0) {
extraClassName = ' ' + 'docs-alert-important'
}
if (selectedParagraph.id.indexOf('warning') >= 0) {
extraClassName = ' ' + 'docs-alert-warning'
}
if (selectedParagraph.id.indexOf('error') >= 0) {
extraClassName = ' ' + 'docs-alert-error'
}
if (selectedParagraph.id.indexOf('javascript') >= 0) {
extraClassName = ' ' + 'language-javascript'
}
if (selectedParagraph.id.indexOf('json') >= 0) {
extraClassName = ' ' + 'language-json'
}
textArea = document.createElement('textarea');
textArea.id = "textArea";
textArea.spellcheck = false;
textArea.className = "docs-text-area" + extraClassName
textArea.style.height = selectedParagraphHeight
textArea.value = selectedParagraphData
selectedParagraph.innerHTML = ""
selectedParagraph.appendChild(textArea)
textArea.style.display = 'block'
textArea.focus()
forceOutClick()
enterEditMode()
}
}
function deleteParagraph() {
if (selectedParagraphIndex === undefined) { return }
if (selectedParagraphIndex === 0) { return }
docsSchemaDocument.paragraphs.splice(selectedParagraphIndex, 1)
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toJavascript() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Javascript'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toJson() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Json'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toText() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Text'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toTitle() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Title'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toSubtitle() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Subtitle'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toNote() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Note'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toWarning() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Warning'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toError() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Error'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toImportant() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Important'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toSuccess() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Success'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toCallout() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Callout'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toSummary() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Summary'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toSection() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Section'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toList() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'List'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toTable() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Table'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toHierarchy() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Hierarchy'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toGif() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Gif'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toPng() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Png'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toAnchor() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Anchor'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toBlock() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Block'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toInclude() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Include'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toWebPageLink() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Link'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function toYouTubeVideo() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Youtube'
forceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
function copyLink() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
let clipboard
switch (docSchemaParagraph.style) {
case 'Anchor': {
clipboard = "docs.goto " + objectBeingRendered.project + '->' + objectBeingRendered.category + '->' + objectBeingRendered.type + '->' + docSchemaParagraph.text
break
}
case 'Block': {
clipboard = objectBeingRendered.project + '->' + objectBeingRendered.category + '->' + objectBeingRendered.type + '->' + docSchemaParagraph.text
break
}
default: {
clipboard = docSchemaParagraph.text
break
}
}
UI.projects.superalgos.utilities.clipboard.copyTextToClipboard(clipboard)
forceOutClick()
}
}
function forceOutClick() {
const outClick = document.getElementById('docs-space-div')
const menu = document.getElementById('menu')
menu.classList.remove('show')
outClick.style.display = "none"
}
function getSelection() {
let selection = window.getSelection()
/*
We need to locate the parent node that it is a Paragraph,
otherwise we could end up in an inner html element.
*/
let paragraphNode = selection.baseNode
if (paragraphNode.id !== undefined && paragraphNode.parentNode.className === "docs-tooltip") {
return false
}
for (let i = 1; i < 10; i++) {
if (paragraphNode === undefined || paragraphNode === null) { return false }
if (paragraphNode.id === undefined || paragraphNode.id.indexOf('editable-paragraph') < 0) {
paragraphNode = paragraphNode.parentNode
if (paragraphNode === undefined) { return false }
}
}
if (paragraphNode === undefined || paragraphNode === null || paragraphNode.id === undefined || paragraphNode.id.indexOf('editable-paragraph') < 0) {
return false
}
/*
Get the dimenssions of the current paragraph to help us to define the dimenssions of the text area.
*/
selectedParagraph = paragraphNode
selectedParagraphHeight = paragraphNode.getClientRects()[0].height
if (selectedParagraphHeight < 30) { selectedParagraphHeight = 30 }
/*
We need to clean the Tool Tips text that might be at the paragraph selected.
To not destroy the DOM structure we will use a clone.
*/
paragraphNode = paragraphNode.cloneNode(true)
scanNodeChildren(paragraphNode)
function scanNodeChildren(node) {
if (node.childNodes === undefined) { return }
for (let i = 0; i < node.childNodes.length; i++) {
let childNode = node.childNodes[i]
if (childNode.className === "docs-tooltip") {
childNode.innerText = childNode.childNodes[0].data
} else {
scanNodeChildren(childNode)
}
}
}
/* Reset this */
selectedParagraphIndex = undefined
/*
Depending on the Style of Paragraph we will need to remove
some info from the innerText.
*/
if (paragraphNode.id.indexOf('definition-') >= 0) {
if (paragraphNode.id.indexOf('-summary') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim().substring(9, paragraphNode.innerText.length)
} else {
selectedParagraphData = paragraphNode.innerText.trim()
}
return true
}
/*
Remeber the Selected Paragraph Index
*/
let splittedId = paragraphNode.id.split('-')
selectedParagraphIndex = splittedId[splittedId.length - 2]
/*
Check the style of the Paragraph
*/
if (paragraphNode.id.indexOf('-text') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim()
return true
}
if (paragraphNode.id.indexOf('-title') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim()
return true
}
if (paragraphNode.id.indexOf('-subtitle') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim()
return true
}
if (paragraphNode.id.indexOf('-note') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim().substring(6, paragraphNode.innerText.length)
return true
}
if (paragraphNode.id.indexOf('-success') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim().substring(5, paragraphNode.innerText.length)
return true
}
if (paragraphNode.id.indexOf('-important') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim().substring(11, paragraphNode.innerText.length)
return true
}
if (paragraphNode.id.indexOf('-warning') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim().substring(10, paragraphNode.innerText.length)
return true
}
if (paragraphNode.id.indexOf('-error') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim().substring(8, paragraphNode.innerText.length)
return true
}
if (paragraphNode.id.indexOf('-list') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim()
return true
}
if (paragraphNode.id.indexOf('-table') >= 0) {
selectedParagraphData = UI.projects.superalgos.utilities.docs.reverseParseTable(paragraphNode.innerHTML)
return true
}
if (paragraphNode.id.indexOf('-hierarchy') >= 0) {
selectedParagraphData = UI.projects.superalgos.utilities.docs.reverseParseHierarchy(paragraphNode.innerHTML)
return true
}
if (paragraphNode.id.indexOf('-gif') >= 0) {
selectedParagraphData = UI.projects.superalgos.utilities.docs.reverseParseGIF(paragraphNode.innerHTML)
return true
}
if (paragraphNode.id.indexOf('-png') >= 0) {
selectedParagraphData = UI.projects.superalgos.utilities.docs.reverseParsePNG(paragraphNode.innerHTML)
return true
}
if (paragraphNode.id.indexOf('-javascript') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim().substring(1, paragraphNode.innerText.length)
return true
}
if (paragraphNode.id.indexOf('-json') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim().substring(1, paragraphNode.innerText.length)
return true
}
if (paragraphNode.id.indexOf('-callout') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim()
return true
}
if (paragraphNode.id.indexOf('-summary') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim().substring(9, paragraphNode.innerText.length)
return true
}
if (paragraphNode.id.indexOf('-anchor') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim()
return true
}
if (paragraphNode.id.indexOf('-section') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim()
return true
}
if (paragraphNode.id.indexOf('-block') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim()
return true
}
if (paragraphNode.id.indexOf('-include') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim()
return true
}
if (paragraphNode.id.indexOf('-link') >= 0) {
selectedParagraphData = UI.projects.superalgos.utilities.docs.reverseParseLink(paragraphNode.innerHTML)
return true
}
if (paragraphNode.id.indexOf('-youtube') >= 0) {
selectedParagraphData = UI.projects.superalgos.utilities.docs.reverseParseYoutube(paragraphNode.innerHTML)
return true
}
}
}
@@ -10,8 +10,8 @@ function newSuperalgosDocSpace() {
footer: undefined,
documentPage: undefined,
commandInterface: undefined,
contextMenu: undefined,
language: undefined,
command: undefined,
menuLabelsMap: undefined,
changeLanguage: changeLanguage,
openSpaceAreaAndNavigateTo: openSpaceAreaAndNavigateTo,
@@ -46,9 +46,6 @@ function newSuperalgosDocSpace() {
let textArea
let selectedParagraph
let selectedParagraphData = ''
let selectedParagraphIndex = ''
let selectedParagraphHeight = 0
let objectBeingRendered
let paragraphMap // Here we will store a map of paragraphs from the Docs Node, Concept or Topics Schema in order to find it when we need to update them.
let appSchemaDocument
@@ -60,7 +57,6 @@ function newSuperalgosDocSpace() {
thisObject.menuLabelsMap = new Map()
setupSidePanelTab()
setUpContextMenu()
setUpMenuItemsMap()
setupUserLanguage()
@@ -70,6 +66,7 @@ function newSuperalgosDocSpace() {
thisObject.documentPage = newSuperalgosDocsDocumentPage()
thisObject.footer = newSuperalgosDocsFooter()
thisObject.commandInterface = newSuperalgosDocsCommmandInterface()
thisObject.contextMenu = newSuperalgosDocsContextMenu()
thisObject.searchEngine.initialize()
thisObject.mainSearchPage.initialize()
@@ -77,6 +74,7 @@ function newSuperalgosDocSpace() {
thisObject.documentPage.initialize()
thisObject.footer.initialize()
thisObject.commandInterface.initialize()
thisObject.contextMenu.initialize()
isInitialized = true
@@ -103,288 +101,6 @@ function newSuperalgosDocSpace() {
browserResizedEventSubscriptionId = canvas.eventHandler.listenToEvent('Browser Resized', resize)
}
function setUpContextMenu() {
window.contextMenu = {
editParagraph: editParagraph,
deleteParagraph: deleteParagraph,
toJavascript: toJavascript,
toJson: toJson,
toText: toText,
toTitle: toTitle,
toSubtitle: toSubtitle,
toNote: toNote,
toWarning: toWarning,
toError: toError,
toImportant: toImportant,
toSuccess: toSuccess,
toCallout: toCallout,
toSummary: toSummary,
toList: toList,
toTable: toTable,
toHierarchy: toHierarchy,
toGif: toGif,
toPng: toPng,
toAnchor: toAnchor,
toBlock: toBlock,
toInclude: toInclude,
toSection: toSection,
copyLink: copyLink,
toWebPageLink: toWebPageLink,
toYouTubeVideo: toYouTubeVideo
}
function editParagraph() {
contextMenuForceOutClick()
showHTMLTextArea()
function showHTMLTextArea() {
if (selectedParagraph === undefined) { return }
/*
When in editing mode, some type of paragraphs need to extend
the text area style so that while editing, it looks and feel
like the non editing style of the paragraph. For those we
add an extra style class.
*/
let extraClassName = ''
if (selectedParagraph.id.indexOf('definition') >= 0) {
extraClassName = ' ' + ''
}
if (selectedParagraph.id.indexOf('title') >= 0) {
extraClassName = ' ' + 'docs-h3'
}
if (selectedParagraph.id.indexOf('subtitle') >= 0) {
extraClassName = ' ' + 'docs-h4'
}
if (selectedParagraph.id.indexOf('note') >= 0) {
extraClassName = ' ' + 'docs-alert-note'
}
if (selectedParagraph.id.indexOf('success') >= 0) {
extraClassName = ' ' + 'docs-alert-success'
}
if (selectedParagraph.id.indexOf('important') >= 0) {
extraClassName = ' ' + 'docs-alert-important'
}
if (selectedParagraph.id.indexOf('warning') >= 0) {
extraClassName = ' ' + 'docs-alert-warning'
}
if (selectedParagraph.id.indexOf('error') >= 0) {
extraClassName = ' ' + 'docs-alert-error'
}
if (selectedParagraph.id.indexOf('javascript') >= 0) {
extraClassName = ' ' + 'language-javascript'
}
if (selectedParagraph.id.indexOf('json') >= 0) {
extraClassName = ' ' + 'language-json'
}
textArea = document.createElement('textarea');
textArea.id = "textArea";
textArea.spellcheck = false;
textArea.className = "docs-text-area" + extraClassName
textArea.style.height = selectedParagraphHeight
textArea.value = selectedParagraphData
selectedParagraph.innerHTML = ""
selectedParagraph.appendChild(textArea)
textArea.style.display = 'block'
textArea.focus()
contextMenuForceOutClick()
enterEditMode()
}
}
function deleteParagraph() {
if (selectedParagraphIndex === undefined) { return }
if (selectedParagraphIndex === 0) { return }
docsSchemaDocument.paragraphs.splice(selectedParagraphIndex, 1)
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toJavascript() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Javascript'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toJson() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Json'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toText() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Text'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toTitle() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Title'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toSubtitle() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Subtitle'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toNote() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Note'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toWarning() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Warning'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toError() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Error'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toImportant() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Important'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toSuccess() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Success'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toCallout() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Callout'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toSummary() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Summary'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toSection() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Section'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toList() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'List'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toTable() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Table'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toHierarchy() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Hierarchy'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toGif() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Gif'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toPng() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Png'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toAnchor() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Anchor'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toBlock() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Block'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toInclude() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Include'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toWebPageLink() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Link'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function toYouTubeVideo() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
docSchemaParagraph.style = 'Youtube'
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
function copyLink() {
let docSchemaParagraph = paragraphMap.get(selectedParagraph.id)
let clipboard
switch (docSchemaParagraph.style) {
case 'Anchor': {
clipboard = "docs.goto " + objectBeingRendered.project + '->' + objectBeingRendered.category + '->' + objectBeingRendered.type + '->' + docSchemaParagraph.text
break
}
case 'Block': {
clipboard = objectBeingRendered.project + '->' + objectBeingRendered.category + '->' + objectBeingRendered.type + '->' + docSchemaParagraph.text
break
}
default: {
clipboard = docSchemaParagraph.text
break
}
}
UI.projects.superalgos.utilities.clipboard.copyTextToClipboard(clipboard)
contextMenuForceOutClick()
}
}
function setUpMenuItemsMap() {
/*
Here we will put put all the menu item labels of all nodes at all
@@ -419,6 +135,7 @@ function newSuperalgosDocSpace() {
thisObject.documentPage.finalize()
thisObject.footer.finalize()
thisObject.commandInterface.finalize()
thisObject.contextMenu.finalize()
thisObject.searchEngine = undefined
thisObject.mainSearchPage = undefined
@@ -426,6 +143,7 @@ function newSuperalgosDocSpace() {
thisObject.documentPage = undefined
thisObject.footer = undefined
thisObject.commandInterface = undefined
thisObject.contextMenu = undefined
objectBeingRendered = undefined
paragraphMap = undefined
@@ -444,7 +162,7 @@ function newSuperalgosDocSpace() {
UI.projects.superalgos.spaces.docsSpace.language = pLanguage
window.localStorage.setItem('Docs Language', UI.projects.superalgos.spaces.docsSpace.language)
let languageLabel = UI.projects.superalgos.utilities.languages.getLaguageLabel(UI.projects.superalgos.spaces.docsSpace.language)
navigateTo('Superalgos', 'Topic', 'Docs In ' + languageLabel)
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Docs In ' + languageLabel)
}
function onKeyDown(event) {
@@ -556,178 +274,7 @@ function newSuperalgosDocSpace() {
}
}
EDITOR_ON_FOCUS = false
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
}
}
function contextMenuForceOutClick() {
const outClick = document.getElementById('docs-space-div')
const menu = document.getElementById('menu')
menu.classList.remove('show')
outClick.style.display = "none"
}
function contextMenuGetSelection() {
let selection = window.getSelection()
/*
We need to locate the parent node that it is a Paragraph,
otherwise we could end up in an inner html element.
*/
let paragraphNode = selection.baseNode
if (paragraphNode.id !== undefined && paragraphNode.parentNode.className === "docs-tooltip") {
return false
}
for (let i = 1; i < 10; i++) {
if (paragraphNode === undefined || paragraphNode === null) { return false }
if (paragraphNode.id === undefined || paragraphNode.id.indexOf('editable-paragraph') < 0) {
paragraphNode = paragraphNode.parentNode
if (paragraphNode === undefined) { return false }
}
}
if (paragraphNode === undefined || paragraphNode === null || paragraphNode.id === undefined || paragraphNode.id.indexOf('editable-paragraph') < 0) {
return false
}
/*
Get the dimenssions of the current paragraph to help us to define the dimenssions of the text area.
*/
selectedParagraph = paragraphNode
selectedParagraphHeight = paragraphNode.getClientRects()[0].height
if (selectedParagraphHeight < 30) { selectedParagraphHeight = 30 }
/*
We need to clean the Tool Tips text that might be at the paragraph selected.
To not destroy the DOM structure we will use a clone.
*/
paragraphNode = paragraphNode.cloneNode(true)
scanNodeChildren(paragraphNode)
function scanNodeChildren(node) {
if (node.childNodes === undefined) { return }
for (let i = 0; i < node.childNodes.length; i++) {
let childNode = node.childNodes[i]
if (childNode.className === "docs-tooltip") {
childNode.innerText = childNode.childNodes[0].data
} else {
scanNodeChildren(childNode)
}
}
}
/* Reset this */
selectedParagraphIndex = undefined
/*
Depending on the Style of Paragraph we will need to remove
some info from the innerText.
*/
if (paragraphNode.id.indexOf('definition-') >= 0) {
if (paragraphNode.id.indexOf('-summary') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim().substring(9, paragraphNode.innerText.length)
} else {
selectedParagraphData = paragraphNode.innerText.trim()
}
return true
}
/*
Remeber the Selected Paragraph Index
*/
let splittedId = paragraphNode.id.split('-')
selectedParagraphIndex = splittedId[splittedId.length - 2]
/*
Check the style of the Paragraph
*/
if (paragraphNode.id.indexOf('-text') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim()
return true
}
if (paragraphNode.id.indexOf('-title') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim()
return true
}
if (paragraphNode.id.indexOf('-subtitle') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim()
return true
}
if (paragraphNode.id.indexOf('-note') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim().substring(6, paragraphNode.innerText.length)
return true
}
if (paragraphNode.id.indexOf('-success') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim().substring(5, paragraphNode.innerText.length)
return true
}
if (paragraphNode.id.indexOf('-important') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim().substring(11, paragraphNode.innerText.length)
return true
}
if (paragraphNode.id.indexOf('-warning') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim().substring(10, paragraphNode.innerText.length)
return true
}
if (paragraphNode.id.indexOf('-error') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim().substring(8, paragraphNode.innerText.length)
return true
}
if (paragraphNode.id.indexOf('-list') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim()
return true
}
if (paragraphNode.id.indexOf('-table') >= 0) {
selectedParagraphData = UI.projects.superalgos.utilities.docs.reverseParseTable(paragraphNode.innerHTML)
return true
}
if (paragraphNode.id.indexOf('-hierarchy') >= 0) {
selectedParagraphData = UI.projects.superalgos.utilities.docs.reverseParseHierarchy(paragraphNode.innerHTML)
return true
}
if (paragraphNode.id.indexOf('-gif') >= 0) {
selectedParagraphData = UI.projects.superalgos.utilities.docs.reverseParseGIF(paragraphNode.innerHTML)
return true
}
if (paragraphNode.id.indexOf('-png') >= 0) {
selectedParagraphData = UI.projects.superalgos.utilities.docs.reverseParsePNG(paragraphNode.innerHTML)
return true
}
if (paragraphNode.id.indexOf('-javascript') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim().substring(1, paragraphNode.innerText.length)
return true
}
if (paragraphNode.id.indexOf('-json') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim().substring(1, paragraphNode.innerText.length)
return true
}
if (paragraphNode.id.indexOf('-callout') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim()
return true
}
if (paragraphNode.id.indexOf('-summary') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim().substring(9, paragraphNode.innerText.length)
return true
}
if (paragraphNode.id.indexOf('-anchor') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim()
return true
}
if (paragraphNode.id.indexOf('-section') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim()
return true
}
if (paragraphNode.id.indexOf('-block') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim()
return true
}
if (paragraphNode.id.indexOf('-include') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim()
return true
}
if (paragraphNode.id.indexOf('-link') >= 0) {
selectedParagraphData = UI.projects.superalgos.utilities.docs.reverseParseLink(paragraphNode.innerHTML)
return true
}
if (paragraphNode.id.indexOf('-youtube') >= 0) {
selectedParagraphData = UI.projects.superalgos.utilities.docs.reverseParseYoutube(paragraphNode.innerHTML)
return true
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
}
}
@@ -738,7 +285,7 @@ function newSuperalgosDocSpace() {
UI.projects.superalgos.spaces.docsSpace.mainSearchPage.detectEnterOnSearchBox()
UI.projects.superalgos.spaces.docsSpace.mainSearchPage.setFocusOnSearchBox()
} else {
navigateTo(objectBeingRendered.project, objectBeingRendered.category, objectBeingRendered.type)
UI.projects.superalgos.spaces.docsSpace.navigateTo(objectBeingRendered.project, objectBeingRendered.category, objectBeingRendered.type)
}
}
@@ -850,7 +397,7 @@ function newSuperalgosDocSpace() {
nodeId: nodeId
}
UI.projects.superalgos.spaces.docsSpace.documentPage.render(objectBeingRendered, paragraphMap)
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
/*
Here we will check if we need to position the page at a particular anchor or at the top.
@@ -15,7 +15,7 @@ function newSuperalgosDocsDocumentPage() {
}
function render(objectBeingRendered, paragraphMap) {
function render() {
appSchemaDocument = SCHEMAS_BY_PROJECT.get(objectBeingRendered.project).map.appSchema.get(objectBeingRendered.type)
@@ -1526,7 +1526,7 @@ function newSuperalgosDocsDocumentPage() {
exitEditMode()
return
}
if (contextMenuGetSelection() === false) {
if (UI.projects.superalgos.spaces.docsSpace.contextMenu.getSelection() === false) {
/*
The click was in a place where we can not recognize an editable piece.
We will not open the menu in this circunstances.
@@ -1543,7 +1543,7 @@ function newSuperalgosDocsDocumentPage() {
outClick.addEventListener('click', () => {
if (EDITOR_ON_FOCUS !== true) {
contextMenuForceOutClick()
UI.projects.superalgos.spaces.docsSpace.contextMenu.forceOutClick()
}
})
}
@@ -43,12 +43,12 @@ function newSuperalgosDocsMainSearchPage() {
function detectEnterOnSearchBox() {
const element = document.getElementsByClassName("docs-search-input")[0]
if (UI.projects.superalgos.spaces.docsSpace.command !== undefined) {
element.value = UI.projects.superalgos.spaces.docsSpace.command
if (UI.projects.superalgos.spaces.docsSpace.commandInterface.command !== undefined) {
element.value = UI.projects.superalgos.spaces.docsSpace.commandInterface.command
}
element.addEventListener("keyup", function (event) {
if (event.key === "Enter" || event.keyCode === 13) {
UI.projects.superalgos.spaces.docsSpace.command = element.value
UI.projects.superalgos.spaces.docsSpace.commandInterface.command = element.value
UI.projects.superalgos.spaces.docsSpace.commandInterface.detectCommands()
detectEnterOnSearchBox()
@@ -28,7 +28,7 @@ function newSuperalgosDocsSearchResultsPage() {
let documentPoints = 0
for (const style in documentIndex.phraseCount) {
let key = UI.projects.superalgos.utilities.strings.cleanTextOfCommonWordEndings(UI.projects.superalgos.spaces.docsSpace.command.toLowerCase())
let key = UI.projects.superalgos.utilities.strings.cleanTextOfCommonWordEndings(UI.projects.superalgos.spaces.docsSpace.commandInterface.command.toLowerCase())
let thisPhraseCount = documentIndex.phraseCount[style].get(key)
if (thisPhraseCount === undefined) {
thisPhraseCount = 0