Merge pull request #398 from Luis-Fernando-Molina/develop

Contribution: Docs Placeholder Implementation woking.
This commit is contained in:
Luis Fernando Molina authored and GitHub committed 2021-01-18 13:21:41 +01:00
commit eee2eab37e
15 files changed
+593 -357

No files matched your search

+222 -221
View File
@@ -43,9 +43,9 @@ margin: 20 20 20 30px;
*/
#docs-common-style-container-div ul {
padding: 0px;
margin-left: 35px;
list-style-position: outside;
padding: 0px;
margin-left: 35px;
list-style-position: outside;
}
.docs-font-normal {
@@ -70,8 +70,8 @@ margin-right: 20px;
}
.docs-table-cell{
display: table-cell;
width: 100%;
display: table-cell;
width: 100%;
}
.docs-definition-table {
@@ -93,9 +93,9 @@ margin-right: 20px;
}
.docs-definition-text {
display: table-cell;
vertical-align: middle;
padding: 0 20px;
display: table-cell;
vertical-align: middle;
padding: 0 20px;
}
.docs-image-container {
@@ -179,18 +179,18 @@ opacity: 1;
/* Headings */
.docs-h1 {
font-size:210%;
margin-top: 40px;
padding-bottom: 5px;
font-size:210%;
margin-top: 40px;
padding-bottom: 5px;
}
.docs-h2 {
font-weight:700;
font-size:170%;
line-height: 170%;
margin-top: 30px;
padding-bottom: 5px;
overflow:hidden;
font-weight:700;
font-size:170%;
line-height: 170%;
margin-top: 30px;
padding-bottom: 5px;
overflow:hidden;
}
.docs-h2::after{
@@ -203,18 +203,18 @@ margin-left: 20px;
}
.docs-h3 {
font-weight:500;
font-size:150%;
margin-top: 40px;
margin-bottom: 20px;
font-weight:500;
font-size:150%;
margin-top: 40px;
margin-bottom: 20px;
}
.docs-h4 {
font-weight:400;
font-style: italic;
font-size:135%;
margin-top: 30px;
margin-bottom: 20px;
font-weight:400;
font-style: italic;
font-size:135%;
margin-top: 30px;
margin-bottom: 20px;
}
/* DELETE candidate
@@ -300,7 +300,7 @@ box-sizing: border-box;
}
.docs-callout {
background-color:white;
background-color:white;
padding: 20px;
margin: 20px 0;
border: 1px solid rgba(54, 85, 88, .3);
@@ -325,33 +325,33 @@ box-sizing: border-box;
}
.docs-topic-index h2 {
font-size: 130%;
font-weight: 300;
margin: 10px 0 35 -5;
padding: 0px;
font-size: 130%;
font-weight: 300;
margin: 10px 0 35 -5;
padding: 0px;
}
.docs-topic-index h3 {
font-size: 150%;
font-weight: 300;
margin: 25px 0;
padding: 0px;
font-size: 150%;
font-weight: 300;
margin: 25px 0;
padding: 0px;
}
.docs-topic-index p {
font-size: 100%;
padding: 0px;
margin: 2px 0;
font-size: 100%;
padding: 0px;
margin: 2px 0;
}
.docs-topic-index a {
color: #365558;
color: #365558;
}
.docs-topic-index a:hover {
text-decoration: underline;
cursor: pointer;
color: #0295aa;
text-decoration: underline;
cursor: pointer;
color: #0295aa;
}
.docs-summary {
@@ -425,89 +425,89 @@ width: 100%;
/* Topic Navigation */
.docs-topic-navigation {
display: table;
width: 100%;
vertical-align: middle;
margin: 80px 0 0 0;
/*
border-top: 1px solid rgba(54, 85, 88, .3);
margin: 60px 0 0 0;
padding-top: 20px;
*/
display: table;
width: 100%;
vertical-align: middle;
margin: 80px 0 0 0;
/*
border-top: 1px solid rgba(54, 85, 88, .3);
margin: 60px 0 0 0;
padding-top: 20px;
*/
}
.docs-topic-navigation div {
display: table-cell;
width: 50%;
max-width: 50%;
text-align: center;
vertical-align: top;
padding: 10px;
/*
height: 40px;
*/
display: table-cell;
width: 50%;
max-width: 50%;
text-align: center;
vertical-align: top;
padding: 10px;
/*
height: 40px;
*/
}
.docs-topic-navigation div button{
border-radius: 50px;
border: 0px;
color: #e6eaea;
background-color: #365558;
padding: 10px;
margin: 0 0 10 10px;
font-size: 100%;
line-height: 150%;
width: 150px;
height:100%;
border-radius: 50px;
border: 0px;
color: #e6eaea;
background-color: #365558;
padding: 10px;
margin: 0 0 10 10px;
font-size: 100%;
line-height: 150%;
width: 150px;
height:100%;
}
.docs-topic-navigation div button:hover {
background-color: #0295aa;
cursor: pointer;
background-color: #0295aa;
cursor: pointer;
}
/* Footer */
.docs-node-html-footer-table {
display: table;
width: 100%;
border-collapse: separate;
border-spacing: 6px;
}
display: table;
width: 100%;
border-collapse: separate;
border-spacing: 6px;
}
.docs-footer-row {
display: table-row;
display: table-row;
}
.docs-footer-cell {
padding: 5px 15px 0px 30px;
display: table-cell;
width: 33%;
padding: 5px 15px 0px 30px;
display: table-cell;
width: 33%;
}
#docs-footer h3 {
font-size: 180%;
font-weight: 300;
padding: 10px 0 0 0;
}
font-size: 180%;
font-weight: 300;
padding: 10px 0 0 0;
}
#docs-footer h4 {
font-size: 120%;
font-weight: 300;
}
font-size: 120%;
font-weight: 300;
}
#docs-footer button{
border: 1px outset #e6eaea;
border-radius: 20px;
background-color: transparent;
color: e6eaea;
padding: 10px;
margin: 0 0 0 10px;
#docs-footer button{
border: 1px outset #e6eaea;
border-radius: 20px;
background-color: transparent;
color: e6eaea;
padding: 10px;
margin: 0 0 0 10px;
}
#docs-footer button:hover {
border: 1px inset #e6eaea;
cursor: pointer;
border: 1px inset #e6eaea;
cursor: pointer;
}
#docs-footer a:hover {
@@ -561,9 +561,6 @@ text-decoration: none;
padding-left: 3px;
}
/* Tags */
kbd.docs-kbd {
@@ -618,27 +615,27 @@ box-sizing: border-box;
}
.docs-collapsible-element img {
vertical-align: middle;
display: inline-block;
margin: 0 20px 0 0;
width: 40px;
height: 40px;
}
vertical-align: middle;
display: inline-block;
margin: 0 20px 0 0;
width: 40px;
height: 40px;
}
/* This definition is redundant with .docs-collapsible-element img but affects some images. Investigation required to delete it.*/
.docs-collapsible-image {
vertical-align: middle;
display: inline-block;
margin: 0 20px 0 0;
width: 40px;
height: 40px;
}
.docs-collapsible-image {
vertical-align: middle;
display: inline-block;
margin: 0 20px 0 0;
width: 40px;
height: 40px;
}
/* Add a background color to the button if it is clicked on (add the .active class with JS), and when you move the mouse over it (hover) */
.active, .docs-collapsible-element:hover {
border: 1px solid #0295aa;
background-color: #eff;
border: 1px solid #0295aa;
background-color: #eff;
}
/* Style the docs-collapsible-element content. Note: hidden by default */
@@ -674,7 +671,7 @@ content: "\2796"; /* Unicode character for "minus" sign (-) */
/* This is the same Style as the collapsible counter part but will not hold any collapsed content inside. */
.docs-non-collapsible-element {
/*
/*
background-color: #fdfdfd;
color: #444;
padding: 15px;
@@ -795,7 +792,7 @@ background-color: transparent;
/* Search Results Page Header*/
.docs-search-results-header {
display: table;
display: table;
}
.docs-image-logo-search-results {
@@ -803,7 +800,7 @@ vertical-align: middle;
display: table-cell;
padding-right: 25px;
}
.docs-search-results-box {
height: 45px;
border-radius: 30px;
@@ -815,34 +812,34 @@ width: 100%;
}
.docs-search-results-header-tabs-container {
display: table;
padding-left: 180px;
margin-top: 20px;
display: table;
padding-left: 180px;
margin-top: 20px;
}
.docs-search-results-header-tabs-container > input {
display: none;
display: none;
}
.docs-search-results-header-tabs-container > label {
display: inline-block;
vertical-align: bottom;
padding: 0 15px 3px 15px;
color: #365558;
font-size: 90%;
display: inline-block;
vertical-align: bottom;
padding: 0 15px 3px 15px;
color: #365558;
font-size: 90%;
}
.docs-search-results-header-tabs-container > label:hover {
color: #0295aa;
padding-bottom: 3px;
cursor: pointer;
color: #0295aa;
padding-bottom: 3px;
cursor: pointer;
}
.docs-search-results-header-tabs-container > input:checked + label {
color: #0295aa;
padding-bottom: 2px;
border-bottom: 3px solid #0295aa;
color: #0295aa;
padding-bottom: 2px;
border-bottom: 3px solid #0295aa;
}
/* Search Results Page Content */
@@ -852,7 +849,7 @@ margin-left: -180px;
}
.docs-search-result-content > div {
display: none;
display: none;
}
#tab1:checked ~ .docs-search-result-content #content1,
@@ -862,69 +859,67 @@ margin-left: -180px;
#tab5:checked ~ .docs-search-result-content #content5,
#tab6:checked ~ .docs-search-result-content #content6,
#tab7:checked ~ .docs-search-result-content #content7 {
display: block;
display: block;
}
/* Search Results Page Record */
.docs-search-result-content-record-container {
margin: 20px 0;
margin: 20px 0;
}
.docs-search-result-content-record-container > p {
margin: 1px;
margin: 1px;
}
.docs-search-result-content-record-project-category {
font-size: 90%;
color: #31708f;
font-size: 90%;
color: #31708f;
}
.docs-search-result-content-record-project-category-link {
font-size: 90%;
color: #31708f;
font-size: 90%;
color: #31708f;
}
a:hover.docs-search-result-content-record-project-category-link {
text-decoration: underline;
cursor: pointer;
text-decoration: underline;
cursor: pointer;
}
.docs-search-result-content-record-title {
font-size: 120%;
font-weight: 500;
text-decoration: none;
color: #e44d40;
font-size: 120%;
font-weight: 500;
text-decoration: none;
color: #e44d40;
}
a:link.docs-search-result-content-record-title {
text-decoration: none;
color: #e44d40;
text-decoration: none;
color: #e44d40;
}
a:visited.docs-search-result-content-record-title {
text-decoration: none;
color: #fd6a33;
text-decoration: none;
color: #fd6a33;
}
a:hover.docs-search-result-content-record-title {
text-decoration: underline;
cursor: pointer;
text-decoration: underline;
cursor: pointer;
}
a:active.docs-search-result-content-record-title {
text-decoration: none;
color: #fd6a33;
text-decoration: none;
color: #fd6a33;
}
.docs-search-result-content-record-extract {
font-size: 100%;
color: #333;
margin-top: 5px!important;
font-size: 100%;
color: #333;
margin-top: 5px!important;
}
/* Command Results Page Content */
.docs-command-result-content {
/* border-top: 1px solid #cdcdcd; DELETE Candidate*/
@@ -938,26 +933,26 @@ color: #31708f;
}
.docs-hidden-anchor {
border-top: 1px solid #eee;
padding: 0px;
margin: -20px 0px -40px 0;
width: 100%;
text-align: right;
color: transparent;
font-size: 75%;
}
.docs-hidden-anchor::after{
content:' \2693';
color: transparent;
font-size: 130%;
}
.docs-hidden-anchor:hover::after{
content:' \2693';
color: #365558;
font-size: 130%;
}
border-top: 1px solid #eee;
padding: 0px;
margin: -20px 0px -40px 0;
width: 100%;
text-align: right;
color: transparent;
font-size: 75%;
}
.docs-hidden-anchor::after{
content:' \2693';
color: transparent;
font-size: 130%;
}
.docs-hidden-anchor:hover::after{
content:' \2693';
color: #365558;
font-size: 130%;
}
.docs-hidden-block {
border-top: 1px solid #eee;
@@ -982,26 +977,48 @@ font-size: 150%;
}
.docs-hidden-include {
border-top: 1px solid #eee;
padding: 0px;
margin: -5px 0px -30px 0;
width: 100%;
text-align: right;
color: transparent;
font-size: 75%;
border-top: 1px solid #eee;
padding: 0px;
margin: -5px 0px -30px 0;
width: 100%;
text-align: right;
color: transparent;
font-size: 75%;
}
.docs-hidden-include::after{
content:' \275E';
color: #e6e6e6;
font-size: 200%;
}
content:' \275E';
color: #e6e6e6;
font-size: 200%;
}
.docs-hidden-include:hover::after{
content:' \275E';
color: #365558;
font-size: 200%;
}
.docs-hidden-include:hover::after{
content:' \275E';
color: #365558;
font-size: 200%;
}
.docs-hidden-placeholder {
border-top: 1px solid #eee;
padding: 0px;
margin: -5px 0px -30px 0;
width: 100%;
text-align: right;
color: transparent;
font-size: 75%;
}
.docs-hidden-placeholder::after{
content:' \275E';
color: #e6e6e6;
font-size: 200%;
}
.docs-hidden-placeholder:hover::after{
content:' \275E';
color: #365558;
font-size: 200%;
}
/* Hierarchy Table */
.docs-hierarchy-table {
@@ -1032,32 +1049,16 @@ color: #31708f;
}
.docs-chapter {
border-top: 1px solid #eee;
padding: 0px;
margin: -5px 0px -30px 0;
width: 100%;
height: 40px;
text-align: right;
color: transparent;
font-size: 75%;
border-top: 1px solid #eee;
padding: 0px;
margin: -5px 0px -30px 0;
width: 100%;
height: 40px;
text-align: right;
color: transparent;
font-size: 75%;
}
/* DELETE Candidate
.docs-chapter::after{
content:' \24b8';
color: #e6e6e6;
font-size: 150%;
position: relative;
top: -15px;
}
.docs-chapter:hover::after{
content:' \1f152';
color: #365558;
font-size: 150%;
position: relative;
top: -15px;
}
*/
.docs-youtube-video-container{
background-color: white;
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
+29 -29
View File
@@ -109,94 +109,94 @@
<div id="menu" class="docs-menu-table">
<div class="menu-row">
<div class="menu-item" onClick="window.contextMenu.editParagraph()">
<img src="Icons/Superalgos/docs-action-edit-paragraph.png" class="menu-img">
<img src="Icons/Superalgos/docs-action-edit-paragraph.png" class="menu-img" title="Edit">
</div>
<div class="menu-item" onClick="window.contextMenu.toTitle()">
<img src="Icons/Superalgos/docs-title-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-title-style.png" class="menu-img" title="Title">
</div>
<div class="menu-item" onClick="window.contextMenu.toSubtitle()">
<img src="Icons/Superalgos/docs-subtitle-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-subtitle-style.png" class="menu-img" title="Subtitle">
</div>
<div class="menu-item" onClick="window.contextMenu.toNote()">
<img src="Icons/Superalgos/docs-note-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-note-style.png" class="menu-img" title="Note">
</div>
<div class="menu-item" onClick="window.contextMenu.toJavascript()">
<img src="Icons/Superalgos/docs-js-code-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-js-code-style.png" class="menu-img" title="Javascript">
</div>
<div class="menu-item" onClick="window.contextMenu.toYouTubeVideo()">
<img src="Icons/Superalgos/docs-youtube-video-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-youtube-video-style.png" class="menu-img" title="Youtube">
</div>
<div class="menu-item" onClick="window.contextMenu.toBlock()">
<img src="Icons/Superalgos/docs-block-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-block-style.png" class="menu-img" title="Block">
</div>
</div>
<div class="menu-row">
<div class="menu-item" onClick="window.contextMenu.copyLink()">
<img src="Icons/Superalgos/docs-action-copy-to-clipboard.png" class="menu-img">
<img src="Icons/Superalgos/docs-action-copy-to-clipboard.png" class="menu-img" title="Copy">
</div>
<div class="menu-item" onClick="window.contextMenu.toText()">
<img src="Icons/Superalgos/docs-text-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-text-style.png" class="menu-img" title="Text">
</div>
<div class="menu-item" onClick="window.contextMenu.toList()">
<img src="Icons/Superalgos/docs-list-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-list-style.png" class="menu-img" title="List">
</div>
<div class="menu-item" onClick="window.contextMenu.toSuccess()">
<img src="Icons/Superalgos/docs-success-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-success-style.png" class="menu-img" title="Success">
</div>
<div class="menu-item" onClick="window.contextMenu.toJson()">
<img src="Icons/Superalgos/docs-json-code-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-json-code-style.png" class="menu-img" title="Json">
</div>
<div class="menu-item" onClick="window.contextMenu.toGif()">
<img src="Icons/Superalgos/docs-gif-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-gif-style.png" class="menu-img" title="Gif">
</div>
<div class="menu-item" onClick="window.contextMenu.toInclude()">
<img src="Icons/Superalgos/docs-include-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-include-style.png" class="menu-img" title="Include">
</div>
</div>
<div class="menu-row">
<div class="menu-item">
<div class="menu-item" onClick="window.contextMenu.toPlaceholder()">
<img src="Icons/Superalgos/bitcoin.png" class="menu-img" title="Placeholder">
</div>
<div class="menu-item" onClick="window.contextMenu.toSummary()">
<img src="Icons/Superalgos/docs-summary-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-summary-style.png" class="menu-img" title="Summary">
</div>
<div class="menu-item" onClick="window.contextMenu.toCallout()">
<img src="Icons/Superalgos/docs-callout-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-callout-style.png" class="menu-img" title="Callout">
</div>
<div class="menu-item" onClick="window.contextMenu.toImportant()">
<img src="Icons/Superalgos/docs-important-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-important-style.png" class="menu-img" title="Important">
</div>
<div class="menu-item" onClick="window.contextMenu.toTable()">
<img src="Icons/Superalgos/docs-table-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-table-style.png" class="menu-img" title="Table">
</div>
<div class="menu-item" onClick="window.contextMenu.toPng()">
<img src="Icons/Superalgos/docs-png-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-png-style.png" class="menu-img" title="Png">
</div>
<div class="menu-item" onClick="window.contextMenu.toSection()">
<img src="Icons/Superalgos/docs-section-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-section-style.png" class="menu-img" title="Section">
</div>
</div>
<div class="menu-row">
<div class="menu-item" onClick="window.contextMenu.deleteParagraph()">
<img src="Icons/Superalgos/docs-action-delete-paragraph.png" class="menu-img">
<img src="Icons/Superalgos/docs-action-delete-paragraph.png" class="menu-img" title="Delete">
</div>
<div class="menu-item" onClick="window.contextMenu.toWebPageLink()">
<img src="Icons/Superalgos/docs-web-page-link-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-web-page-link-style.png" class="menu-img" title="Link">
</div>
<div class="menu-item" onClick="window.contextMenu.toAnchor()">
<img src="Icons/Superalgos/docs-anchor-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-anchor-style.png" class="menu-img" title="Anchor">
</div>
<div class="menu-item" onClick="window.contextMenu.toWarning()">
<img src="Icons/Superalgos/docs-warning-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-warning-style.png" class="menu-img" title="Warning">
</div>
<div class="menu-item" onClick="window.contextMenu.toHierarchy()">
<img src="Icons/Superalgos/docs-hierarchy-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-hierarchy-style.png" class="menu-img" title="Hierarchy">
</div>
<div class="menu-item" onClick="window.contextMenu.toError()">
<img src="Icons/Superalgos/docs-error-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-error-style.png" class="menu-img" title="Error">
</div>
<div class="menu-item" onClick="window.contextMenu.toChapter()">
<img src="Icons/Superalgos/docs-chapter-style.png" class="menu-img">
<img src="Icons/Superalgos/docs-chapter-style.png" class="menu-img" title="Chapter">
</div>
</div>
</div>
@@ -0,0 +1,38 @@
{
"topic": "Docs Paragraph Styles",
"pageNumber": "25",
"type": "Docs Placeholder Style",
"definition": {
"text": "A placeholder is used to render information comming from and external source outside the docs, like the UI in general, the Client or the TS. It is the mechanism used for instance to display error messages or values inside a Docs Page.",
"updated": 1610962972510
},
"paragraphs": [
{
"style": "Text",
"text": "When the docs is opened from a node at the UI displaying an Error, Warning or Info message, the Docs has the ability to display even more detailed information about that event. The way is that is by receiving a Placeholder Object with different properties, like for instance, errorMessage, errorStack, and potentially others.",
"updated": 1610963199983
},
{
"style": "Text",
"text": "If you create a place holder at the page to be opened with a text value matching any of this object properties, the content of that property will be displayed at the placeholder paragraph.",
"updated": 1610963314406
},
{
"style": "Title",
"text": "Examples"
},
{
"style": "Text",
"text": "Placeholder for the property errorMessage"
},
{
"style": "Placeholder",
"text": "errorMessage"
},
{
"style": "Note",
"text": "If the page is viewed without the Placeholder object being available, it will just display the property name defined for it.",
"updated": 1610963328965
}
]
}
@@ -0,0 +1,64 @@
{
"topic": "TS Task Errors",
"pageNumber": "1",
"type": "TS Task Error - Unexpected Error",
"definition": {
"text": "Write here a summary for this topic page."
},
"paragraphs": [
{
"style": "Text",
"text": "Left click and Edit to enter edit mode and change this text. ENTER to write new paragraphs. ESC to exit edit mode."
},
{
"style": "Error",
"text": "Unexpected Error"
},
{
"style": "Title",
"text": "Error Message",
"updated": 1610971316249
},
{
"style": "Text",
"text": "The following is the Error Message of the Exception that occured at the TS:",
"updated": 1610971326601
},
{
"style": "Placeholder",
"text": "errorMessage",
"updated": 1610971337737
},
{
"style": "Title",
"text": "Error Stack",
"updated": 1610968600444
},
{
"style": "Text",
"text": "The following is the Error Stack of the Exception that occured at the TS:",
"updated": 1610968631281
},
{
"style": "Placeholder",
"text": "errorStack",
"updated": 1610968640796
},
{
"style": "Title",
"text": "Error Code"
},
{
"style": "Text",
"text": "The follwing is the Error Code of the Exception that occured at the TS:"
},
{
"style": "Placeholder",
"text": "errorCode"
},
{
"style": "Text",
"text": ""
}
]
}
@@ -818,6 +818,8 @@
}
} catch (err) {
TS.projects.superalgos.globals.taskVariables.UNEXPECTED_ERROR = err
TS.projects.superalgos.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).PROCESS_INSTANCE_LOGGER_MODULE_OBJECT.write(MODULE_NAME,
"[ERROR] run -> err = " + err.stack);
clearTimeout(nextLoopTimeoutHandle);
@@ -551,7 +551,17 @@
function processStopped() {
if (TS.projects.superalgos.globals.taskVariables.FATAL_ERROR_MESSAGE !== undefined) {
TS.projects.superalgos.functionLibraries.processFunctions.processError(TS.projects.superalgos.globals.processVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).PROCESS_KEY, undefined, "An unexpected error caused the Process to stop.")
TS.projects.superalgos.functionLibraries.processFunctions.processError
(
TS.projects.superalgos.globals.processVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).PROCESS_KEY,
undefined,
"An unexpected error caused the Process to stop.",
{
project: 'Superalgos',
category: 'Topic',
type: 'TS Process Error - Unexpected Error'
}
)
} else {
TS.projects.superalgos.globals.taskConstants.EVENT_SERVER_CLIENT_MODULE_OBJECT.raiseEvent(TS.projects.superalgos.globals.processVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).PROCESS_KEY, 'Stopped')
}
@@ -566,6 +576,8 @@
}
catch (err) {
TS.projects.superalgos.globals.taskVariables.UNEXPECTED_ERROR = err
TS.projects.superalgos.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).PROCESS_INSTANCE_LOGGER_MODULE_OBJECT.write(MODULE_NAME,
"[ERROR] run -> err = " + err.stack);
clearTimeout(nextLoopTimeoutHandle);
@@ -681,7 +681,17 @@
function processStopped() {
if (TS.projects.superalgos.globals.taskVariables.FATAL_ERROR_MESSAGE !== undefined) {
TS.projects.superalgos.functionLibraries.processFunctions.processError(TS.projects.superalgos.globals.processVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).PROCESS_KEY, undefined, "An unexpected error caused the Process to stop.")
TS.projects.superalgos.functionLibraries.processFunctions.processError
(
TS.projects.superalgos.globals.processVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).PROCESS_KEY,
undefined,
"An unexpected error caused the Process to stop.",
{
project: 'Superalgos',
category: 'Topic',
type: 'TS Process Error - Unexpected Error'
}
)
} else {
TS.projects.superalgos.globals.taskConstants.EVENT_SERVER_CLIENT_MODULE_OBJECT.raiseEvent(TS.projects.superalgos.globals.processVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).PROCESS_KEY, 'Stopped')
}
@@ -703,6 +713,8 @@
}
} catch (err) {
TS.projects.superalgos.globals.taskVariables.UNEXPECTED_ERROR = err
TS.projects.superalgos.globals.loggerVariables.VARIABLES_BY_PROCESS_INDEX_MAP.get(processIndex).PROCESS_INSTANCE_LOGGER_MODULE_OBJECT.write(MODULE_NAME,
"[ERROR] run -> err = " + err.stack);
clearTimeout(nextLoopTimeoutHandle);
@@ -9,10 +9,48 @@ exports.newSuperalgosFunctionLibrariesNodeJSFunctions = function () {
function exitProcess() {
let uiError
if (TS.projects.superalgos.globals.taskVariables.FATAL_ERROR_MESSAGE !== undefined) {
TS.projects.superalgos.functionLibraries.taskFunctions.taskError(undefined, "An unexpected error caused the Task to stop. " + TS.projects.superalgos.globals.taskVariables.FATAL_ERROR_MESSAGE)
uiError = "An unexpected error caused the Task to stop. " + TS.projects.superalgos.globals.taskVariables.FATAL_ERROR_MESSAGE
} else {
uiError = "An unexpected error caused the Task to stop."
}
let docs = {
project: 'Superalgos',
category: 'Topic',
type: 'TS Task Error - Unexpected Error',
placeholder: {}
}
if (TS.projects.superalgos.globals.taskVariables.UNEXPECTED_ERROR !== undefined) {
if (TS.projects.superalgos.globals.taskVariables.UNEXPECTED_ERROR.message !== undefined) {
docs.placeholder.errorMessage = {
style: 'Error',
text: TS.projects.superalgos.globals.taskVariables.UNEXPECTED_ERROR.message
}
}
if (TS.projects.superalgos.globals.taskVariables.UNEXPECTED_ERROR.stack !== undefined) {
docs.placeholder.errorStack = {
style: 'Javascript',
text: TS.projects.superalgos.globals.taskVariables.UNEXPECTED_ERROR.stack
}
}
if (TS.projects.superalgos.globals.taskVariables.UNEXPECTED_ERROR.code !== undefined) {
docs.placeholder.errorCode = {
style: 'Json',
text: TS.projects.superalgos.globals.taskVariables.UNEXPECTED_ERROR.code
}
}
}
TS.projects.superalgos.functionLibraries.taskFunctions.taskError(
undefined,
uiError,
docs
)
if (isNodeJsProcessShuttingDown === true) { return }
isNodeJsProcessShuttingDown = true
@@ -7,18 +7,20 @@ exports.newSuperalgosFunctionLibrariesTaskFunctions = function () {
return thisObject
function taskError(node, errorMessage) {
function taskError(node, errorMessage, docs) {
let event
if (node !== undefined) {
event = {
nodeName: node.name,
nodeType: node.type,
nodeId: node.id,
errorMessage: errorMessage
errorMessage: errorMessage,
docs: docs
}
} else {
event = {
errorMessage: errorMessage
errorMessage: errorMessage,
docs: docs
}
}
let key = TS.projects.superalgos.globals.taskConstants.TASK_NODE.name + '-' + TS.projects.superalgos.globals.taskConstants.TASK_NODE.type + '-' + TS.projects.superalgos.globals.taskConstants.TASK_NODE.id
@@ -5,9 +5,10 @@ exports.newSuperalgosGlobalsTaskVariables = function () {
*/
let thisObject = {
IS_TASK_STOPPING: false,
LOGGER_MAP: new Map(), // We will put all the loggers in a map, so that we can eventually finalize them.
SESSION_MAP: new Map(), // We will put all the sessions in a map, so that we can eventually finalize them.
FATAL_ERROR_MESSAGE: undefined
LOGGER_MAP: new Map(), // We will put all the loggers in a map, so that we can eventually finalize them.
SESSION_MAP: new Map(), // We will put all the sessions in a map, so that we can eventually finalize them.
FATAL_ERROR_MESSAGE: undefined,
UNEXPECTED_ERROR: undefined, // This is where we store the latest unexpected task error.
}
return thisObject
@@ -45,6 +45,7 @@ function newSuperalgosDocsContextMenu() {
toAnchor: toAnchor,
toBlock: toBlock,
toInclude: toInclude,
toPlaceholder: toPlaceholder,
toChapter: toChapter,
toSection: toSection,
copyLink: copyLink,
@@ -226,6 +227,11 @@ function newSuperalgosDocsContextMenu() {
replaceStyle(docSchemaParagraph, 'Include')
}
function toPlaceholder() {
let docSchemaParagraph = UI.projects.superalgos.spaces.docsSpace.paragraphMap.get(UI.projects.superalgos.spaces.docsSpace.contextMenu.selectedParagraph.id)
replaceStyle(docSchemaParagraph, 'Placeholder')
}
function toChapter() {
let docSchemaParagraph = UI.projects.superalgos.spaces.docsSpace.paragraphMap.get(UI.projects.superalgos.spaces.docsSpace.contextMenu.selectedParagraph.id)
replaceStyle(docSchemaParagraph, 'Chapter')
@@ -434,6 +440,10 @@ function newSuperalgosDocsContextMenu() {
selectedParagraphData = paragraphNode.innerText.trim()
return true
}
if (paragraphNode.id.indexOf('-placeholder') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim()
return true
}
if (paragraphNode.id.indexOf('-chapter') >= 0) {
selectedParagraphData = paragraphNode.innerText.trim()
return true
@@ -61,7 +61,7 @@ function newSuperalgosDocSpace() {
setUpMenuItemsMap()
setupUserLanguage()
setupActiveBranch()
setupContributionsBranch()
setupContributionsBranch()
thisObject.searchEngine = newSuperalgosDocsSearchEngine()
thisObject.mainSearchPage = newSuperalgosDocsMainSearchPage()
@@ -186,7 +186,7 @@ function newSuperalgosDocSpace() {
function changeActiveBranch(branch) {
httpRequest(undefined, 'App/Checkout/' + branch, onResponse)
UI.projects.superalgos.spaces.docsSpace.navigateTo('Superalgos', 'Topic', 'Switching Branches - Changing Current Branch')
function onResponse(err, data) {
/* Lets check the result of the call through the http interface */
data = JSON.parse(data)
@@ -250,7 +250,9 @@ function newSuperalgosDocSpace() {
UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.project,
UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.category,
UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.type,
UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.anchor
UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.anchor,
UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.nodeId,
UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.placeholder
)
}
}
@@ -269,19 +271,19 @@ function newSuperalgosDocSpace() {
}
}
function openSpaceAreaAndNavigateTo(project, category, type, anchor, nodeId) {
function openSpaceAreaAndNavigateTo(project, category, type, anchor, nodeId, placeholder) {
getReadyToNavigate(project, category, type, anchor, nodeId)
getReadyToNavigate(project, category, type, anchor, nodeId, placeholder)
thisObject.sidePanelTab.open()
}
function navigateTo(project, category, type, anchor, nodeId) {
function navigateTo(project, category, type, anchor, nodeId, placeholder) {
EDITOR_ON_FOCUS = false // forced exit
UI.projects.superalgos.spaces.docsSpace.paragraphMap = new Map()
getReadyToNavigate(project, category, type, anchor, nodeId)
getReadyToNavigate(project, category, type, anchor, nodeId, placeholder)
UI.projects.superalgos.spaces.docsSpace.documentPage.render()
@@ -296,16 +298,10 @@ function newSuperalgosDocSpace() {
}
}
function getReadyToNavigate(project, category, type, anchor, nodeId) {
function getReadyToNavigate(project, category, type, anchor, nodeId, placeholder) {
/* Replace the current object with this */
if (UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered !== undefined) {
UI.projects.superalgos.spaces.docsSpace.previousDocumentBeingRendered = {
project: UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.project,
category: UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.category,
type: UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.type,
anchor: UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.anchor,
nodeId: UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.nodeId
}
UI.projects.superalgos.spaces.docsSpace.previousDocumentBeingRendered = JSON.parse(JSON.stringify(UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered))
}
if (category === 'Book') {
@@ -314,7 +310,8 @@ function newSuperalgosDocSpace() {
category: category,
type: type.replace('AMPERSAND', '\''),
anchor: anchor,
nodeId: nodeId
nodeId: nodeId,
placeholder: placeholder
}
}
@@ -323,7 +320,8 @@ function newSuperalgosDocSpace() {
category: category,
type: type.replace('AMPERSAND', '\''),
anchor: anchor,
nodeId: nodeId
nodeId: nodeId,
placeholder: placeholder
}
}
@@ -170,85 +170,7 @@ function newSuperalgosDocsDocumentPage() {
HTML = HTML + '</div>' // Clickeable Container Ends
if (UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.category === 'Topic') {
orderedTopicPageIndexArray = UI.projects.superalgos.utilities.docs.buildOrderedPageIndex(
UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.project,
'Topic',
thisObject.docsSchemaDocument.topic
)
/* Topic Title
titleLabel = thisObject.docsSchemaDocument.topic + ' Topic Navigation'
HTML = HTML + '<div id="docs-main-title-div" class="docs-title-table"><div class="docs-table-cell"><h2 class="docs-h2" id="' + UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.type.toLowerCase().replace(' ', '-') + '" > ' + titleLabel + '</h2></div><div id="projectImageDiv" class="docs-image-container"/></div></div>'
*/
generateTopicPreviousAndNextPageNavigation()
HTML = HTML + '<div class="docs-topic-index">' // Container for Topic Navigation including buttons, title and index
HTML = HTML + '<h3 class="docs-h3">' + thisObject.docsSchemaDocument.topic + ' &mdash; TOC</h3>'
HTML = HTML + '<p style="margin-bottom: 15px;">You just read page <strong>' + thisObject.docsSchemaDocument.pageNumber + '</strong> in the topic.</p>'
generateTopicMultiPageIndex()
HTML = HTML + '</div>' // END Container for Topic Navigation
}
if (UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.category === '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'
HTML = HTML + '<div id="docs-main-title-div" class="docs-title-table"><div class="docs-table-cell"><h2 class="docs-h2" id="' + UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.type.toLowerCase().replace(' ', '-') + '" > ' + titleLabel + '</h2></div><div id="projectImageDiv" class="docs-image-container"/></div></div>'
*/
generateTutorialPreviousAndNextPageNavigation()
HTML = HTML + '<div class="docs-topic-index">' // Container for Tutorial Navigation including buttons, title and index
HTML = HTML + '<h3 class="docs-h3">' + thisObject.docsSchemaDocument.tutorial + ' &mdash; TOC</h3>'
HTML = HTML + '<p style="margin-bottom: 15px;">You just did step <strong>' + thisObject.docsSchemaDocument.pageNumber + '</strong> in the tutorial.</p>'
generateTutorialMultiPageIndex()
HTML = HTML + '</div>' // END Container for Tutorial Navigation
}
if (UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.category === 'Review') {
orderedReviewPageIndexArray = UI.projects.superalgos.utilities.docs.buildOrderedPageIndex(
UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.project,
'Review',
thisObject.docsSchemaDocument.review
)
/* Review Title
titleLabel = thisObject.docsSchemaDocument.review + ' Review Navigation'
HTML = HTML + '<div id="docs-main-title-div" class="docs-title-table"><div class="docs-table-cell"><h2 class="docs-h2" id="' + UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.type.toLowerCase().replace(' ', '-') + '" > ' + titleLabel + '</h2></div><div id="projectImageDiv" class="docs-image-container"/></div></div>'
*/
generateReviewPreviousAndNextPageNavigation()
HTML = HTML + '<div class="docs-topic-index">' // Container for Review Navigation including buttons, title and index
HTML = HTML + '<h3 class="docs-h3">' + thisObject.docsSchemaDocument.review + ' &mdash; TOC</h3>'
HTML = HTML + '<p style="margin-bottom: 15px;">You just read page <strong>' + thisObject.docsSchemaDocument.pageNumber + '</strong> of this review collection.</p>'
generateReviewMultiPageIndex()
HTML = HTML + '</div>' // END Container for Review Navigation
}
generateNavigationAndTableOfContents()
HTML = HTML + '</div>' // Common Style Container Ends
@@ -267,6 +189,87 @@ function newSuperalgosDocsDocumentPage() {
*/
addImages()
function generateNavigationAndTableOfContents() {
if (UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.category === 'Topic') {
orderedTopicPageIndexArray = UI.projects.superalgos.utilities.docs.buildOrderedPageIndex(
UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.project,
'Topic',
thisObject.docsSchemaDocument.topic
)
/* Topic Title
titleLabel = thisObject.docsSchemaDocument.topic + ' Topic Navigation'
HTML = HTML + '<div id="docs-main-title-div" class="docs-title-table"><div class="docs-table-cell"><h2 class="docs-h2" id="' + UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.type.toLowerCase().replace(' ', '-') + '" > ' + titleLabel + '</h2></div><div id="projectImageDiv" class="docs-image-container"/></div></div>'
*/
generateTopicPreviousAndNextPageNavigation()
HTML = HTML + '<div class="docs-topic-index">' // Container for Topic Navigation including buttons, title and index
HTML = HTML + '<h3 class="docs-h3">' + thisObject.docsSchemaDocument.topic + ' &mdash; TOC</h3>'
HTML = HTML + '<p style="margin-bottom: 15px;">You just read page <strong>' + thisObject.docsSchemaDocument.pageNumber + '</strong> in the topic.</p>'
generateTopicMultiPageIndex()
HTML = HTML + '</div>' // END Container for Topic Navigation
}
if (UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.category === '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'
HTML = HTML + '<div id="docs-main-title-div" class="docs-title-table"><div class="docs-table-cell"><h2 class="docs-h2" id="' + UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.type.toLowerCase().replace(' ', '-') + '" > ' + titleLabel + '</h2></div><div id="projectImageDiv" class="docs-image-container"/></div></div>'
*/
generateTutorialPreviousAndNextPageNavigation()
HTML = HTML + '<div class="docs-topic-index">' // Container for Tutorial Navigation including buttons, title and index
HTML = HTML + '<h3 class="docs-h3">' + thisObject.docsSchemaDocument.tutorial + ' &mdash; TOC</h3>'
HTML = HTML + '<p style="margin-bottom: 15px;">You just did step <strong>' + thisObject.docsSchemaDocument.pageNumber + '</strong> in the tutorial.</p>'
generateTutorialMultiPageIndex()
HTML = HTML + '</div>' // END Container for Tutorial Navigation
}
if (UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.category === 'Review') {
orderedReviewPageIndexArray = UI.projects.superalgos.utilities.docs.buildOrderedPageIndex(
UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.project,
'Review',
thisObject.docsSchemaDocument.review
)
/* Review Title
titleLabel = thisObject.docsSchemaDocument.review + ' Review Navigation'
HTML = HTML + '<div id="docs-main-title-div" class="docs-title-table"><div class="docs-table-cell"><h2 class="docs-h2" id="' + UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.type.toLowerCase().replace(' ', '-') + '" > ' + titleLabel + '</h2></div><div id="projectImageDiv" class="docs-image-container"/></div></div>'
*/
generateReviewPreviousAndNextPageNavigation()
HTML = HTML + '<div class="docs-topic-index">' // Container for Review Navigation including buttons, title and index
HTML = HTML + '<h3 class="docs-h3">' + thisObject.docsSchemaDocument.review + ' &mdash; TOC</h3>'
HTML = HTML + '<p style="margin-bottom: 15px;">You just read page <strong>' + thisObject.docsSchemaDocument.pageNumber + '</strong> of this review collection.</p>'
generateReviewMultiPageIndex()
HTML = HTML + '</div>' // END Container for Review Navigation
}
}
function addDefinitionTable(docsSchemaDocument, idPrefix, category, project, type) {
if (docsSchemaDocument.definition === undefined) {
docsSchemaDocument.definition = {
@@ -290,7 +293,7 @@ function newSuperalgosDocsDocumentPage() {
each node will have an icon. For the rest only if we could load an
image we use a table, otherwise we will render the definitaion as a Summary.
*/
if ((category === 'Topic' || category === 'Tutorial' || category === 'Review' || category === 'Concept' || category === 'Book') && testElement === undefined) {
if ((category === 'Topic' || category === 'Tutorial' || category === 'Review' || category === 'Concept' || category === 'Book') && testElement === undefined) {
HTML = HTML + '<div id="definition-summary-editable-paragraph" class="docs-summary"><b>Summary:</b> ' + UI.projects.superalgos.utilities.docs.addToolTips(definitionText, UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.type) + '</div>'
} else {
HTML = HTML + '<div class="docs-definition-table">'
@@ -470,6 +473,21 @@ function newSuperalgosDocsDocumentPage() {
}
break
}
case "Placeholder": {
renderParagraph(paragraph, key)
editableParagraphIndex++
let error = addPlaceholdedParagraph(paragraph.text)
if (error !== undefined) {
paragraph = {
style: "Error",
text: error
}
key = 'error-paragraph-' + autoGeneratedParagraphIndex
renderParagraph(paragraph, key)
autoGeneratedParagraphIndex++
}
break
}
case "Chapter": {
renderParagraph(paragraph, key)
editableParagraphIndex++
@@ -590,6 +608,32 @@ function newSuperalgosDocsDocumentPage() {
}
}
function addPlaceholdedParagraph(propertyName) {
if (UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.placeholder !== undefined) {
let placeholder = UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.placeholder[propertyName]
if (placeholder !== undefined) {
let paragraph = {
style: placeholder.style,
text: placeholder.text
}
let key = 'placeholded-paragraph-' + autoGeneratedParagraphIndex
renderParagraph(paragraph, key)
autoGeneratedParagraphIndex++
return
} else {
let paragraph = {
type: "Json",
text: JSON.stringify(UI.projects.superalgos.spaces.docsSpace.currentDocumentBeingRendered.placeholder, undefined, 4)
}
let key = 'placeholded-paragraph-' + autoGeneratedParagraphIndex
renderParagraph(paragraph, key)
autoGeneratedParagraphIndex++
return 'Property ' + propertyName + ' not found at the placeholder object.'
}
}
}
function addChapterIndex(chapterText) {
let splittedChapterText = chapterText.split('->')
let chapterNumber = splittedChapterText[0]
@@ -1696,6 +1740,14 @@ function newSuperalgosDocsDocumentPage() {
innerHTML = paragraph.text
break
}
case 'Placeholder': {
styleClass = 'class="docs-hidden-placeholder"'
prefix = ''
role = ''
key = key + '-placeholder'
innerHTML = paragraph.text
break
}
case 'Chapter': {
styleClass = 'class="docs-chapter"'
prefix = ''
@@ -160,6 +160,10 @@ function newSuperalgosDocsSearchResultsPage() {
documentPoints = documentPoints + thisPhraseCount * 0
break
}
case 'placeholder': {
documentPoints = documentPoints + thisPhraseCount * 0
break
}
case 'link': {
documentPoints = documentPoints + thisPhraseCount * 1
break
@@ -88,7 +88,9 @@ function newUiObjectMessage() {
thisObject.docs.project,
thisObject.docs.category,
thisObject.docs.type,
thisObject.docs.anchor
thisObject.docs.anchor,
thisObject.docs.nodeId,
thisObject.docs.placeholder
)
}
}