@aj-shadow/z-abs-complayer-markup-client 0.0.0-aj-beta.221

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/.gitattributes +26 -0
  2. package/LICENSE.txt +96 -0
  3. package/README.md +5 -0
  4. package/npm-shrinkwrap.json +13 -0
  5. package/package.json +10 -0
  6. package/project/client/_build/Bundle-CompLayer-Markup-client.bld +40 -0
  7. package/project/client/_build/Client-CompLayer-Markup-client-jsx.bld +10 -0
  8. package/project/client/_build/Client-CompLayer-Markup-client.bld +10 -0
  9. package/project/client/_build/Client-css-CompLayer-Markup-bundle.bld +9 -0
  10. package/project/client/_build/z-abs-complayer-markup-client.prj +36 -0
  11. package/project/client/actions/action-style.js +17 -0
  12. package/project/client/actions/data-action-style.js +13 -0
  13. package/project/client/css/markup_addressing.css +30 -0
  14. package/project/client/css/markup_flowchart.css +53 -0
  15. package/project/client/css/markup_general.css +4 -0
  16. package/project/client/css/markup_image.css +10 -0
  17. package/project/client/css/markup_license.css +107 -0
  18. package/project/client/css/markup_login.css +201 -0
  19. package/project/client/css/markup_node_diagram.css +51 -0
  20. package/project/client/css/markup_sequence_diagram.css +6 -0
  21. package/project/client/css/markup_state.css +5 -0
  22. package/project/client/css/markup_table.css +57 -0
  23. package/project/client/css/markup_tc.css +32 -0
  24. package/project/client/css/markup_ts.css +36 -0
  25. package/project/client/data/addresses/data-addresses-client-address-global.js +20 -0
  26. package/project/client/data/addresses/data-addresses-client-address-local.js +20 -0
  27. package/project/client/data/addresses/data-addresses-client-interface-global.js +17 -0
  28. package/project/client/data/addresses/data-addresses-client-interface-local.js +17 -0
  29. package/project/client/data/addresses/data-addresses-dns-global.js +18 -0
  30. package/project/client/data/addresses/data-addresses-dns-local.js +19 -0
  31. package/project/client/data/addresses/data-addresses-dst-global.js +20 -0
  32. package/project/client/data/addresses/data-addresses-dst-local.js +20 -0
  33. package/project/client/data/addresses/data-addresses-network-interface-global.js +17 -0
  34. package/project/client/data/addresses/data-addresses-network-interface-local.js +17 -0
  35. package/project/client/data/addresses/data-addresses-ports-global.js +18 -0
  36. package/project/client/data/addresses/data-addresses-ports-local.js +18 -0
  37. package/project/client/data/addresses/data-addresses-server-address-global.js +20 -0
  38. package/project/client/data/addresses/data-addresses-server-address-local.js +20 -0
  39. package/project/client/data/addresses/data-addresses-server-interface-global.js +17 -0
  40. package/project/client/data/addresses/data-addresses-server-interface-local.js +17 -0
  41. package/project/client/data/addresses/data-addresses-src-global.js +21 -0
  42. package/project/client/data/addresses/data-addresses-src-local.js +21 -0
  43. package/project/client/data/addresses/data-addresses-srv-global.js +20 -0
  44. package/project/client/data/addresses/data-addresses-srv-local.js +20 -0
  45. package/project/client/data/addresses/data-addresses-sut-address-global.js +20 -0
  46. package/project/client/data/addresses/data-addresses-sut-address-local.js +20 -0
  47. package/project/client/data/addresses/data-addresses-sut-interface-global.js +19 -0
  48. package/project/client/data/addresses/data-addresses-sut-interface-local.js +19 -0
  49. package/project/client/data/data-chart/data-chart-axis.js +13 -0
  50. package/project/client/data/data-chart/data-chart-grid.js +14 -0
  51. package/project/client/data/data-chart/data-chart-line/data-chart-line-config.js +17 -0
  52. package/project/client/data/data-chart/data-chart-line/data-chart-line.js +41 -0
  53. package/project/client/data/data-config.js +14 -0
  54. package/project/client/data/data-constructor.js +18 -0
  55. package/project/client/data/data-content/data-content-audio-global.js +18 -0
  56. package/project/client/data/data-content/data-content-audio-local.js +18 -0
  57. package/project/client/data/data-content/data-content-documents-global.js +18 -0
  58. package/project/client/data/data-content/data-content-documents-local.js +18 -0
  59. package/project/client/data/data-content/data-content-image-global.js +21 -0
  60. package/project/client/data/data-content/data-content-image-local.js +21 -0
  61. package/project/client/data/data-content/data-content-other-global.js +20 -0
  62. package/project/client/data/data-content/data-content-other-local.js +20 -0
  63. package/project/client/data/data-content/data-content-text-global.js +20 -0
  64. package/project/client/data/data-content/data-content-text-local.js +20 -0
  65. package/project/client/data/data-content/data-content-video-global.js +20 -0
  66. package/project/client/data/data-content/data-content-video-local.js +20 -0
  67. package/project/client/data/data-data.js +28 -0
  68. package/project/client/data/data-dependencies/data-dependencies.js +17 -0
  69. package/project/client/data/data-documentation/data-documentation-navigation.js +15 -0
  70. package/project/client/data/data-documentation/data-documentation.js +20 -0
  71. package/project/client/data/data-flowchart/data-flowchart-block.js +33 -0
  72. package/project/client/data/data-flowchart/data-flowchart-connection.js +17 -0
  73. package/project/client/data/data-flowchart/data-flowchart.js +30 -0
  74. package/project/client/data/data-html/data-html-anchor.js +12 -0
  75. package/project/client/data/data-html/data-html-br.js +11 -0
  76. package/project/client/data/data-html/data-html-button.js +15 -0
  77. package/project/client/data/data-html/data-html-log-start.js +12 -0
  78. package/project/client/data/data-html/data-html-log-stop.js +13 -0
  79. package/project/client/data/data-html/data-html-log.js +16 -0
  80. package/project/client/data/data-html/data-html-toolbar.js +19 -0
  81. package/project/client/data/data-image/data-image.js +20 -0
  82. package/project/client/data/data-lab/data-lab-interface-client.js +19 -0
  83. package/project/client/data/data-lab/data-lab-interface-server.js +19 -0
  84. package/project/client/data/data-lab/data-lab-interface-sut.js +20 -0
  85. package/project/client/data/data-lab/data-lab-network.js +31 -0
  86. package/project/client/data/data-lab/data-lab.js +21 -0
  87. package/project/client/data/data-licenses/data-licenses.js +16 -0
  88. package/project/client/data/data-node-diagram/data-node-diagram-config.js +21 -0
  89. package/project/client/data/data-node-diagram/data-node-diagram-connection.js +18 -0
  90. package/project/client/data/data-node-diagram/data-node-diagram-group.js +16 -0
  91. package/project/client/data/data-node-diagram/data-node-diagram-node.js +22 -0
  92. package/project/client/data/data-node-diagram/data-node-diagram.js +47 -0
  93. package/project/client/data/data-repos/data-repos-content-local.js +15 -0
  94. package/project/client/data/data-repos/data-repos-data-local.js +15 -0
  95. package/project/client/data/data-sequence-diagram/data-sequence-diagram-config.js +22 -0
  96. package/project/client/data/data-sequence-diagram/data-sequence-diagram-message.js +17 -0
  97. package/project/client/data/data-sequence-diagram/data-sequence-diagram-node.js +11 -0
  98. package/project/client/data/data-sequence-diagram/data-sequence-diagram.js +32 -0
  99. package/project/client/data/data-state-machine/data-state-machine-config.js +17 -0
  100. package/project/client/data/data-state-machine/data-state-machine-state.js +29 -0
  101. package/project/client/data/data-state-machine/data-state-machine-transition.js +18 -0
  102. package/project/client/data/data-state-machine/data-state-machine.js +37 -0
  103. package/project/client/data/data-system-under-test/data-system-under-test-instances.js +15 -0
  104. package/project/client/data/data-system-under-test/data-system-under-test-nodes.js +18 -0
  105. package/project/client/data/data-table/data-table-config.js +21 -0
  106. package/project/client/data/data-table-key-value.js +56 -0
  107. package/project/client/data/data-test-case/data-actor.js +282 -0
  108. package/project/client/data/data-test-case/data-test-case-settings.js +49 -0
  109. package/project/client/data/data-test-case/data-test-case.js +19 -0
  110. package/project/client/data/data-test-case/data-test-data-iteration.js +54 -0
  111. package/project/client/data/data-test-case/data-test-data-test-case.js +16 -0
  112. package/project/client/data/data-test-case/data-verification-test-case.js +24 -0
  113. package/project/client/data/data-test-data/data-test-data-environment-global.js +18 -0
  114. package/project/client/data/data-test-data/data-test-data-environment-local.js +18 -0
  115. package/project/client/data/data-test-data/data-test-data-environment-static.js +16 -0
  116. package/project/client/data/data-test-data/data-test-data-general-global.js +18 -0
  117. package/project/client/data/data-test-data/data-test-data-general-local.js +18 -0
  118. package/project/client/data/data-test-data/data-test-data-output-global.js +18 -0
  119. package/project/client/data/data-test-data/data-test-data-output-local.js +18 -0
  120. package/project/client/data/data-test-data/data-test-data-system-global.js +18 -0
  121. package/project/client/data/data-test-data/data-test-data-system-local.js +18 -0
  122. package/project/client/data/data-test-suite/data-test-suite-abstraction.js +72 -0
  123. package/project/client/data/data-test-suite/data-test-suite.js +15 -0
  124. package/project/client/data/data-tree/data-tree-node.js +17 -0
  125. package/project/client/data/data-tree/data-tree.js +13 -0
  126. package/project/client/markup/markup-addresses/markup-addresses-client-address.js +31 -0
  127. package/project/client/markup/markup-addresses/markup-addresses-client-interface.js +31 -0
  128. package/project/client/markup/markup-addresses/markup-addresses-dns.js +32 -0
  129. package/project/client/markup/markup-addresses/markup-addresses-dst.js +31 -0
  130. package/project/client/markup/markup-addresses/markup-addresses-network-interface.js +31 -0
  131. package/project/client/markup/markup-addresses/markup-addresses-ports.js +31 -0
  132. package/project/client/markup/markup-addresses/markup-addresses-server-address.js +31 -0
  133. package/project/client/markup/markup-addresses/markup-addresses-server-interface.js +31 -0
  134. package/project/client/markup/markup-addresses/markup-addresses-src.js +31 -0
  135. package/project/client/markup/markup-addresses/markup-addresses-srv.js +31 -0
  136. package/project/client/markup/markup-addresses/markup-addresses-sut-address.js +31 -0
  137. package/project/client/markup/markup-addresses/markup-addresses-sut-interface.js +31 -0
  138. package/project/client/markup/markup-chart/markup-chart-line.js +92 -0
  139. package/project/client/markup/markup-content/markup-content-audio.js +31 -0
  140. package/project/client/markup/markup-content/markup-content-documents.js +31 -0
  141. package/project/client/markup/markup-content/markup-content-image.js +31 -0
  142. package/project/client/markup/markup-content/markup-content-other.js +31 -0
  143. package/project/client/markup/markup-content/markup-content-text.js +31 -0
  144. package/project/client/markup/markup-content/markup-content-video.js +31 -0
  145. package/project/client/markup/markup-dependencies/markup-dependencies.js +30 -0
  146. package/project/client/markup/markup-documentation/markup-documentation-anchor.js +37 -0
  147. package/project/client/markup/markup-documentation/markup-documentation-api-status.js +67 -0
  148. package/project/client/markup/markup-documentation/markup-documentation-code.js +20 -0
  149. package/project/client/markup/markup-documentation/markup-documentation-div.js +34 -0
  150. package/project/client/markup/markup-documentation/markup-documentation-documentation-status.js +67 -0
  151. package/project/client/markup/markup-documentation/markup-documentation-embed.js +23 -0
  152. package/project/client/markup/markup-documentation/markup-documentation-html.js +139 -0
  153. package/project/client/markup/markup-documentation/markup-documentation-ie.js +21 -0
  154. package/project/client/markup/markup-documentation/markup-documentation-image.js +46 -0
  155. package/project/client/markup/markup-documentation/markup-documentation-lab.js +19 -0
  156. package/project/client/markup/markup-documentation/markup-documentation-local-note.js +33 -0
  157. package/project/client/markup/markup-documentation/markup-documentation-navigation.js +109 -0
  158. package/project/client/markup/markup-documentation/markup-documentation-page.js +262 -0
  159. package/project/client/markup/markup-documentation/markup-documentation-ref.js +28 -0
  160. package/project/client/markup/markup-documentation/markup-documentation-result.js +21 -0
  161. package/project/client/markup/markup-documentation/markup-documentation-state-machine.js +194 -0
  162. package/project/client/markup/markup-documentation/markup-documentation.js +74 -0
  163. package/project/client/markup/markup-flowchart.js +264 -0
  164. package/project/client/markup/markup-lab.js +116 -0
  165. package/project/client/markup/markup-licenses/markup-licenses.js +29 -0
  166. package/project/client/markup/markup-node-diagram.js +435 -0
  167. package/project/client/markup/markup-parse-helper.js +26 -0
  168. package/project/client/markup/markup-pattern-config.js +53 -0
  169. package/project/client/markup/markup-pattern-data.js +50 -0
  170. package/project/client/markup/markup-pattern-function.js +47 -0
  171. package/project/client/markup/markup-repos/markup-repos.js +31 -0
  172. package/project/client/markup/markup-sequence-diagram.js +466 -0
  173. package/project/client/markup/markup-system-under-test/markup-system-under-test-instances.js +29 -0
  174. package/project/client/markup/markup-system-under-test/markup-system-under-test-nodes.js +30 -0
  175. package/project/client/markup/markup-table-key-value-parse.js +25 -0
  176. package/project/client/markup/markup-table-key-value-stringify.js +91 -0
  177. package/project/client/markup/markup-table-key-value.js +18 -0
  178. package/project/client/markup/markup-table-name-value.js +101 -0
  179. package/project/client/markup/markup-table.js +85 -0
  180. package/project/client/markup/markup-tables-parser.js +122 -0
  181. package/project/client/markup/markup-test-case/markup-test-case.js +67 -0
  182. package/project/client/markup/markup-test-data/markup-test-data-environment.js +31 -0
  183. package/project/client/markup/markup-test-data/markup-test-data-general.js +31 -0
  184. package/project/client/markup/markup-test-data/markup-test-data-output.js +31 -0
  185. package/project/client/markup/markup-test-data/markup-test-data-system.js +31 -0
  186. package/project/client/markup/markup-test-suite/markup-test-suite.js +40 -0
  187. package/project/client/react-components/helper/line-data.js +16 -0
  188. package/project/client/react-components/helper/line-object.js +22 -0
  189. package/project/client/react-components/helper/scroll-data.js +74 -0
  190. package/project/client/react-components/markup/component-chart/component-image-chart-line.jsx +203 -0
  191. package/project/client/react-components/markup/component-code.jsx +50 -0
  192. package/project/client/react-components/markup/component-document.jsx +105 -0
  193. package/project/client/react-components/markup/component-documentation-anchor.jsx +47 -0
  194. package/project/client/react-components/markup/component-embed.jsx +48 -0
  195. package/project/client/react-components/markup/component-image-flowchart.jsx +389 -0
  196. package/project/client/react-components/markup/component-image-image.jsx +32 -0
  197. package/project/client/react-components/markup/component-image-lab.jsx +696 -0
  198. package/project/client/react-components/markup/component-image-node-diagram.jsx +506 -0
  199. package/project/client/react-components/markup/component-image-result.jsx +22 -0
  200. package/project/client/react-components/markup/component-image-sequence-diagram.jsx +645 -0
  201. package/project/client/react-components/markup/component-image-state-machine.jsx +633 -0
  202. package/project/client/react-components/markup/component-image-table.jsx +96 -0
  203. package/project/client/react-components/markup/component-local-note.jsx +99 -0
  204. package/project/client/react-components/markup/component-markup-remarkable.jsx +79 -0
  205. package/project/client/react-components/markup/component-markup.jsx +1036 -0
  206. package/project/client/react-components/markup/component-table-data-table.jsx +146 -0
  207. package/project/client/stores/style-store.js +96 -0
  208. package/project/z-abs-complayer-markup-client.tree +239 -0
@@ -0,0 +1,1036 @@
1
+
2
+ 'use strict';
3
+
4
+ import ComponentImageChartLine from './component-chart/component-image-chart-line';
5
+ import ComponentImageImage from './component-image-image';
6
+ import ComponentImageLab from './component-image-lab';
7
+ import ComponentImageSequenceDiagram from './component-image-sequence-diagram';
8
+ import ComponentImageFlowchart from './component-image-flowchart';
9
+ import ComponentImageNodeDiagram from './component-image-node-diagram';
10
+ import ComponentImageStateMachine from './component-image-state-machine';
11
+ import ComponentImageTable from './component-image-table';
12
+ import ComponetMarkupRemarkable from './component-markup-remarkable';
13
+ import ComponentDocumentationAnchor from './component-documentation-anchor';
14
+ import ComponentCode from './component-code';
15
+ import ComponentTableDataTable from './component-table-data-table';
16
+ import LineData from '../helper/line-data';
17
+ import LineObject from '../helper/line-object';
18
+ import ScrollData from '../helper/scroll-data';
19
+ import DataTestCaseSettings from '../../data/data-test-case/data-test-case-settings';
20
+ import DataTestDataTestCase from '../../data/data-test-case/data-test-data-test-case';
21
+ import DataTestDataIteration from '../../data/data-test-case/data-test-data-iteration';
22
+ import DataVerificationTestCase from '../../data/data-test-case/data-verification-test-case';
23
+ import DataTestSuiteAbstraction from '../../data/data-test-suite/data-test-suite-abstraction';
24
+ import DataActor from '../../data/data-test-case/data-actor';
25
+ import Icon from 'z-abs-complayer-bootstrap-client/client/icons-inline/icon';
26
+ import ActorResultConst from 'z-abs-funclayer-engine-cs/clientServer/execution/actor-result-const';
27
+ import ReactComponentBase from 'z-abs-corelayer-client/client/react-component/react-component-base';
28
+ import React from 'react';
29
+
30
+
31
+ class ComponentMarkup extends ReactComponentBase {
32
+ constructor(props) {
33
+ super(props);
34
+ this.lineData = null;
35
+ }
36
+
37
+ didMount() {
38
+ this._handleLines();
39
+ }
40
+
41
+ shouldUpdate(nextProps, nextState) {
42
+ return !this.shallowCompare(this.props, nextProps);
43
+ }
44
+
45
+ didUpdate(prevProps, prevState) {
46
+ this._handleLines();
47
+ }
48
+
49
+ calculateTop(scrollData) { // TODO: This must be optimized !!!
50
+ let previousobject = null;
51
+ const lineLength = this.lineData.lines.length;
52
+ for(let i = 0; i < lineLength; ++i) {
53
+ const line = this.lineData.lines[i];
54
+ for(let j = 0; j < line.objects.length; ++j) {
55
+ const object = line.objects[j];
56
+ if(object.top > scrollData.top) {
57
+ i = lineLength;
58
+ break;
59
+ }
60
+ else {
61
+ previousobject = object;
62
+ }
63
+ }
64
+ }
65
+ const diff = scrollData.top - previousobject.top;
66
+ const delta = diff / previousobject.delta;
67
+ scrollData.setLine(previousobject.line, delta);
68
+ }
69
+
70
+ calculateObject(scrollData, whichObject) {
71
+ const dataLine = this.lineData.lines[scrollData.line];
72
+ const objectsLength = dataLine.objects.length;
73
+ const val = scrollData.delta * objectsLength;
74
+ const posIndex = Math.floor(val);
75
+ const posDelta = val - posIndex;
76
+ const object = dataLine.objects[posIndex];
77
+ if('next_block' === whichObject) {
78
+ const line = object.nextRealObject ? object.nextRealObject.line : scrollData.line;
79
+ scrollData.setLine(line, 0.0);
80
+ }
81
+ else if('previous_block' === whichObject) {
82
+ const line = object.previousRealObject ? object.previousRealObject.line : scrollData.line;
83
+ scrollData.setLine(line, 0.0);
84
+ }
85
+ }
86
+
87
+ scroll(scrollData) {
88
+ if(0 === this.lineData.lines.length) {
89
+ return;
90
+ }
91
+ const dataLine = this.lineData.lines[scrollData.line];
92
+ const objectsLength = dataLine.objects.length;
93
+ const val = scrollData.delta * objectsLength;
94
+ const posIndex = Math.floor(val);
95
+ const posDelta = val - posIndex;
96
+ const object = dataLine.objects[posIndex];
97
+ const calculatedTop = object.top + posDelta * object.delta;
98
+ this.props.onEditorScroll && this.props.onEditorScroll(calculatedTop);
99
+ }
100
+
101
+ _newDataLineObject(currenLineData, value) {
102
+ const previousStart = currenLineData.start;
103
+ currenLineData.start = currenLineData.stop;
104
+ currenLineData.stop = currenLineData.start + value.lines - 1;
105
+ currenLineData.lines += value.lines;
106
+ if(previousStart === currenLineData.start) {
107
+ ++currenLineData.objectIndex;
108
+ }
109
+ else {
110
+ currenLineData.objectIndex = 0;
111
+ }
112
+ for(let currentLine = currenLineData.start; currentLine <= currenLineData.stop; ++currentLine) {
113
+ if(this.lineData.lines.length <= currentLine) {
114
+ this.lineData.lines.push(new LineData(currentLine));
115
+ }
116
+ this.lineData.lines[this.lineData.lines.length - 1].addObject(new LineObject(++this.lineData.objectId, value.type, currenLineData.start, currenLineData.stop, null, 0, currentLine, 0.0, -1.0, 0.0, null, null));
117
+ }
118
+ }
119
+
120
+ _findExistingLines() {
121
+ const elements = document.getElementsByClassName('data-line');
122
+ const existingLines = [];
123
+ let currentLine = 0;
124
+ for(let i = 0; i < elements.length; ++i) {
125
+ const line = Number.parseInt(elements[i].getAttribute('data-line-start'));
126
+ const objectIndex = Number.parseInt(elements[i].getAttribute('data-line-object-index'));
127
+ if(line !== currentLine) {
128
+ currentLine = line;
129
+ }
130
+ existingLines.push({
131
+ line: line,
132
+ objectIndex: objectIndex,
133
+ top: elements[i].offsetTop - elements[0].offsetTop,
134
+ element: elements[i]
135
+ });
136
+ }
137
+ return existingLines;
138
+ }
139
+
140
+ _addExistingLines(existingLines) {
141
+ let previousDataLineObject = {};
142
+ for(let i = 0; i < existingLines.length; ++i) {
143
+ const existingLine = existingLines[i];
144
+ const dataLine = this.lineData.lines[existingLine.line];
145
+ const dataLineObject = dataLine.objects[existingLine.objectIndex];
146
+ dataLineObject.element = existingLine.element;
147
+ dataLineObject.top = existingLine.top;
148
+ dataLineObject.previousRealObject = previousDataLineObject;
149
+ previousDataLineObject.nextRealObject = dataLineObject;
150
+ previousDataLineObject = dataLineObject;
151
+ }
152
+ if(0 !== existingLines.length) {
153
+ const existingLine = existingLines[0];
154
+ const dataLine = this.lineData.lines[existingLine.line];
155
+ const dataLineObject = dataLine.objects[existingLine.objectIndex];
156
+ dataLineObject.previousRealObject = null;
157
+ }
158
+ }
159
+
160
+ _calculateLinePosition() {
161
+ if(0 !== this.lineData.lines.length) {
162
+ let currentObject = this.lineData.lines[0].objects[0];
163
+ this.lineData.lines.forEach((dataLine) => {
164
+ dataLine.objects.forEach((object, index) => {
165
+ if(null !== object.element && currentObject.element !== object.element) {
166
+ currentObject = object;
167
+ }
168
+ object.linePosition = dataLine.line + index / dataLine.objects.length;
169
+ });
170
+ });
171
+ }
172
+ }
173
+
174
+ _calculateValues() {
175
+ if(0 !== this.lineData.lines.length) {
176
+ let currentObject = this.lineData.lines[0].objects[0];
177
+ let nextRealObject = currentObject.nextRealObject;
178
+ let delta = (nextRealObject.top - currentObject.top) / (nextRealObject.linePosition - currentObject.linePosition);
179
+ let previousObject = {linePosition: 0, linePosition: 0}; // FAKE OBJECT FOR THE FIRST STEP IN THE ITERATION
180
+ this.lineData.lines.forEach((dataLine) => {
181
+ dataLine.objects.forEach((object, index) => {
182
+ if(null !== object.element && currentObject.element !== object.element) {
183
+ currentObject = object;
184
+ nextRealObject = currentObject.nextRealObject;
185
+ if(null !== nextRealObject) {
186
+ delta = (nextRealObject.top - currentObject.top) / (nextRealObject.linePosition - currentObject.linePosition);
187
+ }
188
+ else {
189
+ delta = 0;
190
+ }
191
+ }
192
+ object.delta = delta;
193
+ object.previousRealObject = currentObject.previousRealObject;
194
+ object.nextRealObject = nextRealObject;
195
+ previousObject.delta = previousObject.delta * (object.linePosition - previousObject.linePosition);
196
+ object.top = currentObject.top + delta * (object.linePosition - currentObject.linePosition);
197
+ previousObject = object;
198
+ });
199
+ });
200
+ const dataLine = this.lineData.lines[this.lineData.lines.length - 1];
201
+ dataLine.objects[dataLine.objects.length - 1].nextRealObject = null;
202
+ }
203
+ }
204
+
205
+ _handleLines() {
206
+ if(this.props.inner) {
207
+ return;
208
+ }
209
+ const existingLines = this._findExistingLines();
210
+ this._addExistingLines(existingLines);
211
+ this._calculateLinePosition();
212
+ this._calculateValues();
213
+ }
214
+
215
+ render() {
216
+ let jsxObjects = [];
217
+ const jsxDivs = [{divStyle: {}, jsxObjects: jsxObjects}];
218
+
219
+ const mergedDocuments = [];
220
+ const document = this.props.document;
221
+ const documentLength = document.length;
222
+ let previousDoc = null;
223
+ for(let i = 0; i < documentLength; ++i) {
224
+ const doc = document[i];
225
+ if('markup_ref' === doc.type) {
226
+ const link = this.props.linkReferences.get(doc.value.refName);
227
+ if(undefined !== link) {
228
+ const linkValue = `[${'' !== doc.value.text ? doc.value.text : link.text}](${link.path}:::${link.type})`;
229
+ if(null === previousDoc) {
230
+ previousDoc = {
231
+ type: 'markup',
232
+ value: linkValue,
233
+ lines: 0
234
+ };
235
+ mergedDocuments.push(previousDoc);
236
+ }
237
+ else {
238
+ previousDoc.value += linkValue;
239
+ }
240
+ }
241
+ }
242
+ else if('markup_documentation_status' === doc.type) {
243
+ const ieValue = `<div style="${ComponentMarkup.documentationStatusCsses[doc.value.status]}padding:4px 10px;font-size:18px;">Doc Status: ${ComponentMarkup.documentationStatusTexts[doc.value.status]}.${doc.value.comment ? ' - ' : ''}${doc.value.comment}</div>`;
244
+ if(null === previousDoc) {
245
+ previousDoc = {
246
+ type: 'markup',
247
+ value: ieValue,
248
+ lines: 0
249
+ };
250
+ mergedDocuments.push(previousDoc);
251
+ }
252
+ else {
253
+ previousDoc.value += ieValue;
254
+ }
255
+ }
256
+ else if('markup_api_status' === doc.type) {
257
+ const ieValue = `<div style="${ComponentMarkup.apiStatusCsses[doc.value.status]}padding:4px 10px;font-size:18px;">Api Status: ${ComponentMarkup.apiStatusTexts[doc.value.status]}.${doc.value.comment ? ' - ' : ''}${doc.value.comment}</div>`;
258
+ if(null === previousDoc) {
259
+ previousDoc = {
260
+ type: 'markup',
261
+ value: ieValue,
262
+ lines: 0
263
+ };
264
+ mergedDocuments.push(previousDoc);
265
+ }
266
+ else {
267
+ previousDoc.value += ieValue;
268
+ }
269
+ }
270
+ else if('markup_ie' === doc.type) {
271
+ const ieValue = `<code style="color:Green;background-color:Honeydew;border:1px solid Green">${doc.value}</code>`;
272
+ if(null === previousDoc) {
273
+ previousDoc = {
274
+ type: 'markup',
275
+ value: ieValue,
276
+ lines: 0
277
+ };
278
+ mergedDocuments.push(previousDoc);
279
+ }
280
+ else {
281
+ previousDoc.value += ieValue;
282
+ }
283
+ }
284
+ else if('markup_result' === doc.type) {
285
+ const resultValue = `<span class="${ActorResultConst.getClassFromResult(doc.value)} log_result">${doc.value}</span>`;
286
+ if(null === previousDoc) {
287
+ previousDoc = {
288
+ type: 'markup',
289
+ value: resultValue,
290
+ lines: 0
291
+ };
292
+ mergedDocuments.push(previousDoc);
293
+ }
294
+ else {
295
+ previousDoc.value += resultValue;
296
+ }
297
+ }
298
+ else {
299
+ if(null === previousDoc) {
300
+ if('markup' === doc.type) {
301
+ previousDoc = {
302
+ type: 'markup',
303
+ value: doc.value,
304
+ lines: doc.lines
305
+ };
306
+ mergedDocuments.push(previousDoc);
307
+ }
308
+ else {
309
+ mergedDocuments.push(doc);
310
+ }
311
+ }
312
+ else if('markup' === doc.type && 'markup' === previousDoc.type) {
313
+ previousDoc.value += doc.value;
314
+ previousDoc.lines += doc.lines - 1;
315
+ }
316
+ else {
317
+ mergedDocuments.push(doc);
318
+ previousDoc = null;
319
+ }
320
+ }
321
+ }
322
+ this.lineData = this.props.inner ? null : {
323
+ lines: [],
324
+ objectId: 0,
325
+ current: {
326
+ start: 0,
327
+ stop: 1,
328
+ objectIndex: 0,
329
+ lines: 0
330
+ }
331
+ };
332
+ if(!this.props.inner) {
333
+ this.lineData.lines.push(new LineData(0, new LineObject(0, 'top', 0, 1, null, 0, 0, 0.0, -1.0, 0.0, null, null)));
334
+ }
335
+ const currenLineData = this.lineData ? this.lineData.current : null;
336
+ mergedDocuments.forEach((value, index) => {
337
+ let dataLineStart;
338
+ let dataLineStop;
339
+ let dataLineObjectIndex;
340
+ if(!this.props.inner) {
341
+ this._newDataLineObject(currenLineData, value);
342
+ dataLineStart = currenLineData.start;
343
+ dataLineStop = currenLineData.stop;
344
+ dataLineObjectIndex = currenLineData.objectIndex;
345
+ }
346
+ if('markup' === value.type) {
347
+ jsxObjects.push (
348
+ <div key={index} className={`markup_markup${this.props.addClass ? ' ' + this.props.addClass : ''}`}>
349
+ <ComponetMarkupRemarkable preview={this.props.preview} value={value.value} dataLineStart={dataLineStart} />
350
+ </div>
351
+ );
352
+ }
353
+ else if('markup_div' === value.type) {
354
+ jsxObjects = [];
355
+ jsxDivs.push({divStyle: {}, jsxObjects: jsxObjects});
356
+ }
357
+ else if('markup_anchor' === value.type) {
358
+ jsxObjects.push (
359
+ <ComponentDocumentationAnchor key={index} anchor={value.value.id} visible={value.value.visible} dataLineStart={dataLineStart} dataLineStop={dataLineStop} dataLineObjectIndex={dataLineObjectIndex} />
360
+ );
361
+ }
362
+ else if('raw' === value.type) {
363
+ const className = `markup_raw${!this.props.inner ? ' data-line' : ''}`;
364
+ jsxObjects.push (
365
+ <div key={index} className={className} data-line-start={dataLineStart} data-line-stop={dataLineStop} data-line-object-index={dataLineObjectIndex} dangerouslySetInnerHTML={{__html: value.value}} />
366
+ );
367
+ }
368
+ else if('lab' === value.type) {
369
+ const className = `markup_lab${!this.props.inner ? ' data-line' : ''}`;
370
+ jsxObjects.push (
371
+ <div key={index} className={className} data-line-start={dataLineStart} data-line-stop={dataLineStop} data-line-object-index={dataLineObjectIndex}>
372
+ {<ComponentImageLab virtualNetworks={value.value}/>}
373
+ </div>
374
+ );
375
+ }
376
+ else if('object' === value.type) {
377
+ value.value.forEach((htmlValue, innerIndex) => {
378
+ if('button' === htmlValue.type) {
379
+ const className = `markup_button${!this.props.inner ? ' data-line' : ''}`;
380
+ console.log(htmlValue);
381
+ jsxObjects.push (
382
+ <div key={`${index}_${innerIndex}`} className={className} data-line-start={dataLineStart} data-line-stop={dataLineStop} data-line-object-index={dataLineObjectIndex}>
383
+ <button className="markup_button" type="button">
384
+ <Icon name={htmlValue.icon} colorMark={htmlValue.colorMark} />
385
+ </button>
386
+ <div className="markup_button">
387
+ <ComponetMarkupRemarkable inner preview={this.props.preview} value={htmlValue.text} />
388
+ </div>
389
+ </div>
390
+ );
391
+ }
392
+ else if('toolbar' === htmlValue.type) {
393
+ const className = `markup_button${!this.props.inner ? ' data-line' : ''}`;
394
+ jsxObjects.push (
395
+ <div key={`${index}_${innerIndex}`} className={className} data-line-start={dataLineStart} data-line-stop={dataLineStop} data-line-object-index={dataLineObjectIndex}>
396
+ <div className="middle_toolbar" style={{position:'relative'}}>
397
+ <div className="toolbar" role="toolbar" aria-label="...">
398
+ {this._renderToolbarButtons(htmlValue)}
399
+ </div>
400
+ </div>
401
+ </div>
402
+ );
403
+ }
404
+ else if('anchor' === htmlValue.type) {
405
+ const className = `markup_anchor${!this.props.inner ? ' data-line' : ''}`;
406
+ jsxObjects.push (
407
+ <a key={`${index}_${innerIndex}`} className={className} data-line-start={dataLineStart} data-line-stop={dataLineStop} data-line-object-index={dataLineObjectIndex} name={htmlValue.link}></a>
408
+ );
409
+ }
410
+ else if('br' === htmlValue.type) {
411
+ const className = `markup_br${!this.props.inner ? ' data-line' : ''}`;
412
+ jsxObjects.push (
413
+ <br key={`${index}_${innerIndex}`} className={className} data-line-start={dataLineStart} data-line-stop={dataLineStop} data-line-object-index={dataLineObjectIndex} />
414
+ );
415
+ }
416
+ else if('log' === htmlValue.type) {
417
+ const className = `markup_html_log${!this.props.inner ? ' data-line' : ''}`;
418
+ const classNameRow = `${ComponentMarkup._getClassFromName(htmlValue.logType)} log_row_nowrap`;
419
+ jsxObjects.push (
420
+ <div key={`${index}_${innerIndex}`} className={className} data-line-start={dataLineStart} data-line-stop={dataLineStop} data-line-object-index={dataLineObjectIndex}>
421
+ <table className="test_case_log_head_table test_case_log_body_table">
422
+ <thead>
423
+ <tr>
424
+ <th className="log_column_nbr">#</th>
425
+ <th className="log_column_type">type</th>
426
+ <th className="log_column_date">date</th>
427
+ <th>actor</th>
428
+ <th>log</th>
429
+ <th>file name</th>
430
+ </tr>
431
+ </thead>
432
+ <tbody>
433
+ <tr className={classNameRow}>
434
+ <td className="log_column_nbr">1</td>
435
+ <td>{htmlValue.logType}</td>
436
+ <td className="log_column_date">{htmlValue.date}</td>
437
+ <td>{htmlValue.actor}</td>
438
+ <td>{htmlValue.log}</td>
439
+ <td>{htmlValue.fileName}</td>
440
+ </tr>
441
+ </tbody>
442
+ </table>
443
+ </div>
444
+ );
445
+ }
446
+ else if('log_start' === htmlValue.type) {
447
+ const className = `markup_html_log${!this.props.inner ? ' data-line' : ''}`;
448
+ jsxObjects.push (
449
+ <div key={`${index}_${innerIndex}`} className={className} data-line-start={dataLineStart} data-line-stop={dataLineStop} data-line-object-index={dataLineObjectIndex}>
450
+ <table className="test_case_log_head_table test_case_log_body_table">
451
+ <thead>
452
+ <tr>
453
+ <th>type</th>
454
+ <th>date</th>
455
+ <th>actor</th>
456
+ <th>log</th>
457
+ <th>file name</th>
458
+ </tr>
459
+ </thead>
460
+ <tbody>
461
+ <tr className="log">
462
+ <td colSpan="5">
463
+ <strong>TEST CASE START: </strong>
464
+ {htmlValue.date}
465
+ </td>
466
+ </tr>
467
+ </tbody>
468
+ </table>
469
+ </div>
470
+ );
471
+ }
472
+ else if('log_end' === htmlValue.type) {
473
+ const className = `markup_html_log${!this.props.inner ? ' data-line' : ''}`;
474
+ const classNameSpan = `test_${htmlValue.result.toLowerCase()} log_result`;
475
+ jsxObjects.push (
476
+ <div key={`${index}_${innerIndex}`} className={className} data-line-start={dataLineStart} data-line-stop={dataLineStop} data-line-object-index={dataLineObjectIndex}>
477
+ <table className="test_case_log_head_table test_case_log_body_table">
478
+ <thead>
479
+ <tr>
480
+ <th>type</th>
481
+ <th>date</th>
482
+ <th>actor</th>
483
+ <th>log</th>
484
+ <th>file name</th>
485
+ </tr>
486
+ </thead>
487
+ <tbody>
488
+ <tr className="log">
489
+ <td colSpan="5">
490
+ <strong>TEST CASE END: </strong>
491
+ <span className={classNameSpan}>
492
+ {htmlValue.result}
493
+ </span>
494
+ {htmlValue.duration}
495
+ </td>
496
+ </tr>
497
+ </tbody>
498
+ </table>
499
+ </div>
500
+ );
501
+ }
502
+ });
503
+ }
504
+ else if('markup_image' === value.type) {
505
+ const className = `markup_img${!this.props.inner ? ' data-line' : ''}`;
506
+ jsxObjects.push (
507
+ <div key={index} className={className} data-line-start={dataLineStart} data-line-stop={dataLineStop} data-line-object-index={dataLineObjectIndex}>
508
+ <ComponentImageImage width="100%" height="100%" data={value.value} />
509
+ </div>
510
+ );
511
+ }
512
+ else if('escape' === value.type) {
513
+ const className = `markup_escape${!this.props.inner ? ' data-line' : ''}`;
514
+ jsxObjects.push (
515
+ <div key={index} className={className} data-line-start={dataLineStart} data-line-stop={dataLineStop} data-line-object-index={dataLineObjectIndex}>
516
+ <p className="markup_escape">Markup</p>
517
+ <pre className="markup_escape">
518
+ <code className="markup_escape">
519
+ {value.value}
520
+ </code>
521
+ </pre>
522
+ </div>
523
+ );
524
+ }
525
+ else if('chart-line' === value.type) {
526
+ const className = `markup_chart_line${!this.props.inner ? ' data-line' : ''}`;
527
+ jsxObjects.push (
528
+ <div key={index} className={className} data-line-start={dataLineStart} data-line-stop={dataLineStop} data-line-object-index={dataLineObjectIndex}>
529
+ <ComponentImageChartLine width="100%" height="100%" chartLine={value.value} />
530
+ </div>
531
+ );
532
+ }
533
+ else if('seq' === value.type) {
534
+ const className = `markup_seq${!this.props.inner ? ' data-line' : ''}`;
535
+ jsxObjects.push (
536
+ <div key={index} className={className} data-line-start={dataLineStart} data-line-stop={dataLineStop} data-line-object-index={dataLineObjectIndex}>
537
+ <ComponentImageSequenceDiagram width="100%" height="100%" sequenceDiagram={value.value} />
538
+ </div>
539
+ );
540
+ }
541
+ else if('state' === value.type) {
542
+ const className = `markup_state${!this.props.inner ? ' data-line' : ''}`;
543
+ jsxObjects.push (
544
+ <div key={index} className={className} data-line-start={dataLineStart} data-line-stop={dataLineStop} data-line-object-index={dataLineObjectIndex}>
545
+ <ComponentImageStateMachine width="100%" height="100%" stateMachine={value.value} />
546
+ </div>
547
+ );
548
+ }
549
+ else if('flow' === value.type) {
550
+ const className = `markup_flow${!this.props.inner ? ' data-line' : ''}`;
551
+ jsxObjects.push (
552
+ <div key={index} className={className} data-line-start={dataLineStart} data-line-stop={dataLineStop} data-line-object-index={dataLineObjectIndex}>
553
+ <ComponentImageFlowchart width="100%" height="100%" flowchart={value.value} />
554
+ </div>
555
+ );
556
+ }
557
+ else if('node' === value.type) {
558
+ const className = `markup_node${!this.props.inner ? ' data-line' : ''}`;
559
+ jsxObjects.push (
560
+ <div key={index} className={className} data-line-start={dataLineStart} data-line-stop={dataLineStop} data-line-object-index={dataLineObjectIndex}>
561
+ <ComponentImageNodeDiagram width="100%" height="100%" nodeDiagram={value.value} />
562
+ </div>
563
+ );
564
+ }
565
+ else if('table' === value.type) {
566
+ const className = `markup_table${!this.props.inner ? ' data-line' : ''}`;
567
+ jsxObjects.push (
568
+ <div key={index} className={className} data-line-start={dataLineStart} data-line-stop={dataLineStop} data-line-object-index={dataLineObjectIndex}>
569
+ <ComponentImageTable preview={this.props.preview} classTable="markup_table_fit_content" classHeading="markup_table_heading" classRow="markup_test_case_table" values={value.value} linkReferences={this.props.linkReferences} />
570
+ </div>
571
+ );
572
+ }
573
+ else if('javascript' === value.type) {
574
+ const className = `markup_javascript${!this.props.inner ? ' data-line' : ''}`;
575
+ jsxObjects.push (
576
+ <div key={index} className={className} data-line-start={dataLineStart} data-line-stop={dataLineStop} data-line-object-index={dataLineObjectIndex}>
577
+ <ComponentCode id={`component_markup_${index}`} code={value.value} name="javascript" type="js" />
578
+ </div>
579
+ );
580
+ }
581
+ else if('tc' === value.type) {
582
+ let key = 0;
583
+ const dataTestCaseSettings = new DataTestCaseSettings();
584
+ const dataActor = new DataActor();
585
+ const dataTestDataTestCase = new DataTestDataTestCase();
586
+ const dataTestDataIteration = new DataTestDataIteration();
587
+ const dataVerificationTestCase = new DataVerificationTestCase();
588
+ if(value.value.success) {
589
+ const className = !this.props.inner ? 'data-line' : undefined;
590
+ jsxObjects.push (
591
+ <div key={index} className={className} data-line-start={dataLineStart} data-line-stop={dataLineStop} data-line-object-index={dataLineObjectIndex}>
592
+ <p className="markup_tc">Test Case</p>
593
+ <div className="markup_tc">
594
+ <ComponentTableDataTable preview={this.props.preview} classTable="markup_test_case_table_fit_content" classHeading="markup_test_case_table_heading" classRow="markup_test_case_table" key={++key} dataTable={dataTestCaseSettings} values={value.value.tc.settings}/>
595
+ <ComponentTableDataTable preview={this.props.preview} classTable="markup_test_case_table_fit_content" classHeading="markup_test_case_table_heading" classRow="markup_test_case_table" key={++key} dataTable={dataActor} values={value.value.tc.actors}/>
596
+ <ComponentTableDataTable preview={this.props.preview} classTable="markup_test_case_table_fit_content" classHeading="markup_test_case_table_heading" classRow="markup_test_case_table" key={++key} dataTable={dataTestDataTestCase} values={value.value.tc.testDataTestCases}/>
597
+ <ComponentTableDataTable preview={this.props.preview} classTable="markup_test_case_table_fit_content" classHeading="markup_test_case_table_heading" classRow="markup_test_case_table" key={++key} dataTable={dataTestDataIteration} values={value.value.tc.testDataIteration}/>
598
+ <ComponentTableDataTable preview={this.props.preview} classTable="markup_test_case_table_fit_content" classHeading="markup_test_case_table_heading" classRow="markup_test_case_table" key={++key} dataTable={dataVerificationTestCase} values={value.value.tc.verificationTestCases}/>
599
+ </div>
600
+ </div>
601
+ );
602
+ }
603
+ }
604
+ else if('ts' === value.type) {
605
+ let key = 0;
606
+ const dataTestSuiteAbstraction = new DataTestSuiteAbstraction();
607
+ const className = !this.props.inner ? 'data-line' : undefined;
608
+ jsxObjects.push (
609
+ <div key={index} className={className} data-line-start={dataLineStart} data-line-stop={dataLineStop} data-line-object-index={dataLineObjectIndex}>
610
+ <p className="markup_ts">Test Suite</p>
611
+ <div className="markup_ts">
612
+ <ComponentTableDataTable preview={this.props.preview} classTable="markup_test_suite_table_fit_content" classHeading="markup_test_suite_table_heading" classRow="markup_test_suite_table" key={++key} dataTable={dataTestSuiteAbstraction} values={value.value.ts.abstractions}/>
613
+ </div>
614
+ </div>
615
+ );
616
+ }
617
+ else {
618
+ if(this.props.onUnkownMarkup) {
619
+ jsxObjects.push(this.props.onUnkownMarkup(value, index, dataLineStart, dataLineStop, dataLineObjectIndex));
620
+ }
621
+ else {
622
+ const className = !this.props.inner ? 'data-line' : undefined;
623
+ jsxObjects.push (
624
+ <div key={index} className={className} data-line-start={dataLineStart} data-line-stop={dataLineStop} data-line-object-index={dataLineObjectIndex}>
625
+ <p> UNKNOWN MARKUP TYPE {value.type, value.value} </p>
626
+ </div>
627
+ );
628
+ }
629
+ }
630
+ });
631
+ const doc = jsxDivs.map((jsxDiv, index) => {
632
+ const jsxObjects = jsxDiv.jsxObjects.map((jsxObject) => {
633
+ return jsxObject;
634
+ });
635
+ return (
636
+ <div key={`markup_div_${index}`} className="markup_div" style={jsxDiv.divStyle}>
637
+ {jsxObjects}
638
+ </div>
639
+ );
640
+ });
641
+ if(!this.props.inner) {
642
+ this._newDataLineObject(currenLineData, {type: 'bottom', lines: 1});
643
+ return (
644
+ <>
645
+ <div key="markup_top" className="data-line" data-line-start="0" data-line-stop="0" data-line-object-index="0"></div>
646
+ {doc}
647
+ <div key="markup_bottom" className="data-line" data-line-start={currenLineData.start} data-line-stop={currenLineData.stop} data-line-object-index="0"></div>
648
+ </>
649
+ );
650
+ }
651
+ else {
652
+ return (
653
+ <>
654
+ {doc}
655
+ </>
656
+ );
657
+ }
658
+ }
659
+
660
+ _addToolbarButtonGroup() {
661
+
662
+ }
663
+
664
+ _renderToolbarButtons(htmlValue) {
665
+ const buttonGroups = [];
666
+ /*<div className="btn-group btn-group-sm" role="group" aria-label="...">
667
+
668
+ </div>*/
669
+ }
670
+
671
+ _renderHardcodedLab() {
672
+ return [
673
+ {
674
+ "name": "N1",
675
+ "sut": "Actor",
676
+ "family": "IPv4",
677
+ "subnet": "192.168.0.0",
678
+ "description": "Actor IPv4 network 1",
679
+ "valid": true,
680
+ "reduced": false,
681
+ "suts": [
682
+ {
683
+ "name": "actorSut1",
684
+ "sut": "Actor",
685
+ "network": "N1",
686
+ "direction": "server/client",
687
+ "description": "",
688
+ "address": "192.168.0.100",
689
+ "netmask": "255.255.255.0",
690
+ "static": true,
691
+ "external": true,
692
+ "valid": true,
693
+ "reduced": false
694
+ },
695
+ {
696
+ "name": "actorSut2",
697
+ "sut": "Actor",
698
+ "network": "N1",
699
+ "direction": "server",
700
+ "description": "",
701
+ "address": "192.168.0.110",
702
+ "netmask": "255.255.255.0",
703
+ "static": true,
704
+ "external": true,
705
+ "valid": true,
706
+ "reduced": false
707
+ }
708
+ ],
709
+ "servers": [
710
+ {
711
+ "name": "actor1",
712
+ "sut": "Actor",
713
+ "network": "N1",
714
+ "address": "192.168.0.99",
715
+ "netmask": "255.255.255.0",
716
+ "static": false,
717
+ "external": false,
718
+ "valid": true,
719
+ "reduced": false
720
+ },
721
+ {
722
+ "name": "actor2",
723
+ "sut": "Actor",
724
+ "network": "N1",
725
+ "address": "192.168.0.99",
726
+ "netmask": "255.255.255.0",
727
+ "static": false,
728
+ "external": false,
729
+ "valid": true,
730
+ "reduced": true
731
+ },
732
+ {
733
+ "name": "actor3",
734
+ "sut": "Actor",
735
+ "network": "N1",
736
+ "address": "192.168.0.99",
737
+ "netmask": "255.255.255.0",
738
+ "static": false,
739
+ "external": false,
740
+ "valid": true,
741
+ "reduced": true
742
+ },
743
+ {
744
+ "name": "actor4",
745
+ "sut": "Actor",
746
+ "network": "N1",
747
+ "address": "192.168.0.99",
748
+ "netmask": "255.255.255.0",
749
+ "static": false,
750
+ "external": false,
751
+ "valid": true,
752
+ "reduced": true
753
+ },
754
+ {
755
+ "name": "actor5",
756
+ "sut": "Actor",
757
+ "network": "N1",
758
+ "address": "192.168.0.99",
759
+ "netmask": "255.255.255.0",
760
+ "static": false,
761
+ "external": false,
762
+ "valid": true,
763
+ "reduced": true
764
+ }
765
+ ],
766
+ "clients": [
767
+ {
768
+ "name": "actor1",
769
+ "sut": "Actor",
770
+ "network": "N1",
771
+ "address": "192.168.0.99",
772
+ "netmask": "255.255.255.0",
773
+ "static": false,
774
+ "external": false,
775
+ "valid": true,
776
+ "reduced": true
777
+ },
778
+ {
779
+ "name": "actor2",
780
+ "sut": "Actor",
781
+ "network": "N1",
782
+ "address": "192.168.0.99",
783
+ "netmask": "255.255.255.0",
784
+ "static": false,
785
+ "external": false,
786
+ "valid": true,
787
+ "reduced": true
788
+ },
789
+ {
790
+ "name": "actor3",
791
+ "sut": "Actor",
792
+ "network": "N1",
793
+ "address": "192.168.0.99",
794
+ "netmask": "255.255.255.0",
795
+ "static": false,
796
+ "external": false,
797
+ "valid": true,
798
+ "reduced": true
799
+ }
800
+ ]
801
+ },
802
+ {
803
+ "name": "N2",
804
+ "sut": "Actor",
805
+ "family": "IPv4",
806
+ "subnet": "192.168.0.0",
807
+ "description": "Actor IPv4 network 2",
808
+ "valid": true,
809
+ "reduced": true,
810
+ "suts": [
811
+ {
812
+ "name": "actorSutN21",
813
+ "sut": "Actor",
814
+ "network": "N2",
815
+ "direction": "server/client",
816
+ "description": "",
817
+ "address": "192.168.0.99",
818
+ "netmask": "255.255.255.0",
819
+ "static": false,
820
+ "external": false,
821
+ "valid": true,
822
+ "reduced": true
823
+ },
824
+ {
825
+ "name": "actorSutN22",
826
+ "sut": "Actor",
827
+ "network": "N2",
828
+ "direction": "server",
829
+ "description": "",
830
+ "address": "192.168.0.99",
831
+ "netmask": "255.255.255.0",
832
+ "static": false,
833
+ "external": false,
834
+ "valid": true,
835
+ "reduced": true
836
+ },
837
+ {
838
+ "name": "actorSutN23",
839
+ "sut": "Actor",
840
+ "network": "N2",
841
+ "direction": "client",
842
+ "description": "",
843
+ "address": "192.168.0.99",
844
+ "netmask": "255.255.255.0",
845
+ "static": false,
846
+ "external": false,
847
+ "valid": true,
848
+ "reduced": true
849
+ }
850
+ ],
851
+ "servers": [
852
+ {
853
+ "name": "actor21",
854
+ "sut": "Actor",
855
+ "network": "N2",
856
+ "address": "192.168.0.99",
857
+ "netmask": "255.255.255.0",
858
+ "static": false,
859
+ "external": false,
860
+ "valid": true,
861
+ "reduced": true
862
+ },
863
+ {
864
+ "name": "actor22",
865
+ "sut": "Actor",
866
+ "network": "N2",
867
+ "address": "192.168.0.99",
868
+ "netmask": "255.255.255.0",
869
+ "static": false,
870
+ "external": false,
871
+ "valid": true,
872
+ "reduced": true
873
+ }
874
+ ],
875
+ "clients": [
876
+ {
877
+ "name": "actor21",
878
+ "sut": "Actor",
879
+ "network": "N2",
880
+ "address": "192.168.0.99",
881
+ "netmask": "255.255.255.0",
882
+ "static": false,
883
+ "external": false,
884
+ "valid": true,
885
+ "reduced": true
886
+ },
887
+ {
888
+ "name": "actor22",
889
+ "sut": "Actor",
890
+ "network": "N2",
891
+ "address": "192.168.0.99",
892
+ "netmask": "255.255.255.0",
893
+ "static": false,
894
+ "external": false,
895
+ "valid": true,
896
+ "reduced": true
897
+ }
898
+ ]
899
+ },
900
+ {
901
+ "name": "N3",
902
+ "sut": "Actor",
903
+ "family": "IPv4",
904
+ "subnet": "192.168.0.0",
905
+ "description": "Actor IPv4 network 3",
906
+ "valid": true,
907
+ "reduced": true,
908
+ "suts": [
909
+ {
910
+ "name": "actorSutN31",
911
+ "sut": "Actor",
912
+ "network": "N3",
913
+ "direction": "server/client",
914
+ "description": "",
915
+ "address": "192.168.0.99",
916
+ "netmask": "255.255.255.0",
917
+ "static": false,
918
+ "external": false,
919
+ "valid": true,
920
+ "reduced": true
921
+ }
922
+ ],
923
+ "servers": [
924
+ {
925
+ "name": "actor31",
926
+ "sut": "Actor",
927
+ "network": "N3",
928
+ "address": "192.168.0.99",
929
+ "netmask": "255.255.255.0",
930
+ "static": false,
931
+ "external": false,
932
+ "valid": true,
933
+ "reduced": true
934
+ }
935
+ ],
936
+ "clients": [
937
+ {
938
+ "name": "actor31",
939
+ "sut": "Actor",
940
+ "network": "N3",
941
+ "address": "192.168.0.99",
942
+ "netmask": "255.255.255.0",
943
+ "static": false,
944
+ "external": false,
945
+ "valid": true,
946
+ "reduced": true
947
+ }
948
+ ]
949
+ },
950
+ {
951
+ "name": "Nv6",
952
+ "sut": "Actor",
953
+ "family": "IPv6",
954
+ "subnet": "",
955
+ "description": "Actor IPv6 network 1",
956
+ "valid": false,
957
+ "reduced": false,
958
+ "suts": [],
959
+ "servers": [],
960
+ "clients": []
961
+ }
962
+ ];
963
+ }
964
+
965
+ // DOUBLE CODE
966
+ static _getClassFromName(resultName) {
967
+ const foundIndex = ComponentMarkup.logTypePureNames.indexOf(resultName);
968
+ if(-1 !== foundIndex) {
969
+ return ComponentMarkup.logTypeCsses[foundIndex];
970
+ }
971
+ else {
972
+ return '';
973
+ }
974
+ }
975
+ }
976
+
977
+ // DOUBLE CODE
978
+ ComponentMarkup.logTypePureNames = [
979
+ 'Engine',
980
+ 'Debug',
981
+ 'Error',
982
+ 'Warning',
983
+ 'IP',
984
+ 'GUI',
985
+ 'Success',
986
+ 'Failure',
987
+ 'TestData',
988
+ 'BrowserLog',
989
+ 'BrowserError'
990
+ ];
991
+
992
+ // DOUBLE CODE
993
+ ComponentMarkup.logTypeCsses = [
994
+ 'log_engine',
995
+ 'log_debug',
996
+ 'log_error',
997
+ 'log_warning',
998
+ 'log_ip',
999
+ 'log_gui',
1000
+ 'log_verify_success',
1001
+ 'log_verify_failure',
1002
+ 'log_test_data',
1003
+ 'log_browser_log',
1004
+ 'log_browser_err'
1005
+ ];
1006
+
1007
+ ComponentMarkup.documentationStatusTexts = [
1008
+ 'Not documented yet',
1009
+ 'Partially documented',
1010
+ 'Majority documented',
1011
+ 'Fully documented'
1012
+ ];
1013
+
1014
+ ComponentMarkup.documentationStatusCsses = [
1015
+ 'color:White;background-color:Red;',
1016
+ 'color:White;background-color:Orange;',
1017
+ 'color:Grey;background-color:Yellow;',
1018
+ 'color:White;background-color:Green;'
1019
+ ];
1020
+
1021
+ ComponentMarkup.apiStatusTexts = [
1022
+ 'Deprecated',
1023
+ 'Experimental',
1024
+ 'Stable',
1025
+ 'Legacy'
1026
+ ];
1027
+
1028
+ ComponentMarkup.apiStatusCsses = [
1029
+ 'color:White;background-color:Red;',
1030
+ 'color:White;background-color:Orange;',
1031
+ 'color:White;background-color:Green;',
1032
+ 'color:White;background-color:Blue;'
1033
+ ];
1034
+
1035
+
1036
+ module.exports = ComponentMarkup;