systemview 1.0.0 → 1.1.1

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 (264) hide show
  1. package/api/Connections.js +36 -0
  2. package/api/connections.txt +1 -0
  3. package/api/index.js +78 -0
  4. package/babel.config.js +12 -0
  5. package/cli/index.js +23 -6
  6. package/cli/launchApp.js +0 -0
  7. package/cli/runTest.js +0 -0
  8. package/cli/utils/cli.js +48 -0
  9. package/cli/utils/init.js +17 -0
  10. package/cli/utils/log.js +11 -0
  11. package/package.json +7 -4
  12. package/plugin/SystemViewModule.js +97 -0
  13. package/plugin/getAllTest.js +21 -0
  14. package/plugin/index.js +40 -0
  15. package/src/App.css +38 -0
  16. package/src/App.js +30 -0
  17. package/src/ServiceContext.js +9 -0
  18. package/src/assets/arrow.png +0 -0
  19. package/src/assets/check.svg +1 -0
  20. package/src/assets/clear.png +0 -0
  21. package/src/assets/edit.png +0 -0
  22. package/src/assets/error.svg +1 -0
  23. package/src/assets/eval-icon.svg +10 -0
  24. package/src/assets/expand-arrow.svg +41 -0
  25. package/src/assets/expand-button.svg +41 -0
  26. package/src/assets/fonts/FontsFree-Net-SFMono-Regular.ttf +0 -0
  27. package/src/assets/fonts/Malkor-Regular.ttf +0 -0
  28. package/src/assets/iconfinder-icon (1).svg +14 -0
  29. package/src/assets/iconfinder-icon.svg +14 -0
  30. package/src/assets/icons-save-60.png +0 -0
  31. package/src/assets/loading.gif +0 -0
  32. package/src/assets/missing-doc.png +0 -0
  33. package/src/assets/saved-doc.png +0 -0
  34. package/src/assets/sysly.png +0 -0
  35. package/src/assets/test-icon.svg +10 -0
  36. package/src/assets/test-missing.png +0 -0
  37. package/src/assets/test-saved.png +0 -0
  38. package/src/assets/x.svg +1 -0
  39. package/src/atoms/Button/Button.js +20 -0
  40. package/src/atoms/Button/Button.test.js +27 -0
  41. package/src/atoms/Button/__snapshots__/Button.test.js.snap +9 -0
  42. package/src/atoms/Button/styles.scss +35 -0
  43. package/src/atoms/Count/index.js +10 -0
  44. package/src/atoms/Count/styles.scss +25 -0
  45. package/src/atoms/DataTable/DataTable.js +27 -0
  46. package/src/atoms/DataTable/DataTable.test.js +55 -0
  47. package/src/atoms/DataTable/__snapshots__/DataTable.test.js.snap +36 -0
  48. package/src/atoms/DataTable/styles.scss +28 -0
  49. package/src/atoms/DescriptionBox/DescriptionBox.js +24 -0
  50. package/src/atoms/DescriptionBox/DescriptionBox.test.js +36 -0
  51. package/src/atoms/DescriptionBox/__snapshots__/DescriptionBox.test.js.snap +14 -0
  52. package/src/atoms/DescriptionBox/styles.scss +24 -0
  53. package/src/atoms/DescriptionText/DescriptionText.js +12 -0
  54. package/src/atoms/DescriptionText/DescriptionText.test.js +22 -0
  55. package/src/atoms/DescriptionText/styles.scss +10 -0
  56. package/src/atoms/DocsIcon/DocsIcon.js +20 -0
  57. package/src/atoms/DocsIcon/DocsIcon.test.js +23 -0
  58. package/src/atoms/DocsIcon/styles.scss +7 -0
  59. package/src/atoms/ExpandableIcon/ExpandableIcon.js +30 -0
  60. package/src/atoms/ExpandableIcon/ExpandableIcon.test.js +18 -0
  61. package/src/atoms/ExpandableIcon/styles.scss +5 -0
  62. package/src/atoms/JsonTextBox/JsonTextBox.js +61 -0
  63. package/src/atoms/JsonTextBox/JsonTextBox.test.js +0 -0
  64. package/src/atoms/JsonTextBox/styles.scss +41 -0
  65. package/src/atoms/Link/Link.js +17 -0
  66. package/src/atoms/Link/Link.test.js +33 -0
  67. package/src/atoms/Link/styles.scss +8 -0
  68. package/src/atoms/List/List.js +8 -0
  69. package/src/atoms/List/List.test.js +26 -0
  70. package/src/atoms/List/styles.scss +9 -0
  71. package/src/atoms/Markdown/Markdown.js +48 -0
  72. package/src/atoms/Markdown/styles.scss +414 -0
  73. package/src/atoms/RunTestIcon/index.js +41 -0
  74. package/src/atoms/RunTestIcon/styles.scss +16 -0
  75. package/src/atoms/SaveIcon/SaveIcon.js +6 -0
  76. package/src/atoms/SaveIcon/styles.scss +3 -0
  77. package/src/atoms/Selector/Selector.js +28 -0
  78. package/src/atoms/Selector/Selector.test.js +0 -0
  79. package/src/atoms/Selector/styles.scss +1 -0
  80. package/src/atoms/StatusIndicator/StatusIndicator.js +16 -0
  81. package/src/atoms/StatusIndicator/styles.scss +33 -0
  82. package/src/atoms/TestsIcon/TestsIcon.js +17 -0
  83. package/src/atoms/TestsIcon/TestsIcon.test.js +18 -0
  84. package/src/atoms/TestsIcon/styles.scss +0 -0
  85. package/src/atoms/Text/Text.js +8 -0
  86. package/src/atoms/Text/Text.test.js +21 -0
  87. package/src/atoms/Text/styles.scss +0 -0
  88. package/src/atoms/Textbox/Textbox.js +33 -0
  89. package/src/atoms/Textbox/Textbox.test.js +23 -0
  90. package/src/atoms/Textbox/styles.scss +14 -0
  91. package/src/atoms/Title/Title.js +12 -0
  92. package/src/atoms/Title/Title.test.js +0 -0
  93. package/src/atoms/Title/styles.scss +6 -0
  94. package/src/atoms/Toggle/Toggle.js +13 -0
  95. package/src/atoms/Toggle/Toggle.test.js +0 -0
  96. package/src/atoms/Toggle/styles.scss +62 -0
  97. package/src/atoms/TypeSelector/TypeSelector.js +28 -0
  98. package/src/atoms/TypeSelector/TypeSelector.test.js +0 -0
  99. package/src/atoms/TypeSelector/styles.scss +9 -0
  100. package/src/index.css +20 -0
  101. package/src/index.js +24 -0
  102. package/src/logo.svg +7 -0
  103. package/src/molecules/Args/Args.js +302 -0
  104. package/src/molecules/Args/Args.test.js +0 -0
  105. package/src/molecules/Args/styles.scss +166 -0
  106. package/src/molecules/AutoCompleteBox/AutoCompleteBox.js +101 -0
  107. package/src/molecules/AutoCompleteBox/AutoCompleteBox.test.js +0 -0
  108. package/src/molecules/AutoCompleteBox/styles.scss +35 -0
  109. package/src/molecules/DataTableForm/DataTableForm.js +167 -0
  110. package/src/molecules/DataTableForm/DataTableForm.test.js +0 -0
  111. package/src/molecules/DataTableForm/styles.scss +51 -0
  112. package/src/molecules/EditBox/EditBox.js +49 -0
  113. package/src/molecules/EditBox/EditBox.test.js +0 -0
  114. package/src/molecules/EditBox/styles.scss +38 -0
  115. package/src/molecules/ExpandableList/ExpandableList.js +26 -0
  116. package/src/molecules/ExpandableList/ExpandableList.test.js +33 -0
  117. package/src/molecules/ExpandableList/styles.scss +18 -0
  118. package/src/molecules/ExpandableSection/ExpandableSection.js +36 -0
  119. package/src/molecules/ExpandableSection/ExpandableSection.test.js +0 -0
  120. package/src/molecules/ExpandableSection/styles.scss +22 -0
  121. package/src/molecules/ServerModulesList/ServerModulesList.js +75 -0
  122. package/src/molecules/ServerModulesList/styles.scss +28 -0
  123. package/src/molecules/TargetSelector/TargetSelector.js +34 -0
  124. package/src/molecules/TargetSelector/TargetSelector.test.js +0 -0
  125. package/src/molecules/TargetSelector/styles.scss +0 -0
  126. package/src/molecules/TestCaption/TestCaption.js +26 -0
  127. package/src/molecules/TestCaption/TestCaption.test.js +0 -0
  128. package/src/molecules/TestCaption/styles.scss +40 -0
  129. package/src/molecules/TestSummary/index.js +212 -0
  130. package/src/molecules/TestSummary/styles.scss +83 -0
  131. package/src/molecules/TextWith2Links/TextWith2Links.js +10 -0
  132. package/src/molecules/TextWith2Links/styles.scss +0 -0
  133. package/src/molecules/ValidationInput/ValidationInput.js +64 -0
  134. package/src/molecules/ValidationInput/ValidationInput.test.js +0 -0
  135. package/src/molecules/ValidationInput/ValidationMessages.js +178 -0
  136. package/src/molecules/ValidationInput/ValidationOptions.js +113 -0
  137. package/src/molecules/ValidationInput/styles.scss +74 -0
  138. package/src/molecules/ValidationInput/validator.js +244 -0
  139. package/src/organisms/Documentation/Documentation.js +128 -0
  140. package/src/organisms/Documentation/Documentation.test.js +0 -0
  141. package/src/organisms/Documentation/styles.scss +22 -0
  142. package/src/organisms/MultiTestSection/MultiTestSection.js +85 -0
  143. package/src/organisms/MultiTestSection/MultiTestSection.test.js +0 -0
  144. package/src/organisms/MultiTestSection/styles.scss +22 -0
  145. package/src/organisms/SavedTests/SavedTests.js +209 -0
  146. package/src/organisms/SavedTests/SavedTests.test.js +0 -0
  147. package/src/organisms/SavedTests/styles.scss +76 -0
  148. package/src/organisms/SavedTests/transformTests.js +51 -0
  149. package/src/organisms/ScratchPad/ScratchPad.js +128 -0
  150. package/src/organisms/ScratchPad/ScratchPad.test.js +0 -0
  151. package/src/organisms/ScratchPad/styles.scss +100 -0
  152. package/src/organisms/SystemNavigator/SystemNavigator.js +148 -0
  153. package/src/organisms/SystemNavigator/SystemNavigator.test.js +24 -0
  154. package/src/organisms/SystemNavigator/styles.scss +38 -0
  155. package/src/organisms/TestContainer/TestContainer.js +72 -0
  156. package/src/organisms/TestContainer/TestContainer.test.js +0 -0
  157. package/src/organisms/TestContainer/styles.scss +20 -0
  158. package/src/organisms/TestPanel/AfterTest/AfterTest.js +16 -0
  159. package/src/organisms/TestPanel/AfterTest/AfterTest.test.js +0 -0
  160. package/src/organisms/TestPanel/AfterTest/styles.scss +0 -0
  161. package/src/organisms/TestPanel/BeforeTest/BeforeTest.js +16 -0
  162. package/src/organisms/TestPanel/BeforeTest/BeforeTest.test.js +0 -0
  163. package/src/organisms/TestPanel/BeforeTest/styles.scss +0 -0
  164. package/src/organisms/TestPanel/Evaluations.js +369 -0
  165. package/src/organisms/TestPanel/EventsTest/EventsTest.js +19 -0
  166. package/src/organisms/TestPanel/EventsTest/styles.scss +0 -0
  167. package/src/organisms/TestPanel/MainTest/MainTest.js +20 -0
  168. package/src/organisms/TestPanel/MainTest/MainTest.test.js +0 -0
  169. package/src/organisms/TestPanel/MainTest/styles.scss +143 -0
  170. package/src/organisms/TestPanel/TestPanel.js +170 -0
  171. package/src/organisms/TestPanel/TestPanel.test.js +0 -0
  172. package/src/organisms/TestPanel/components/Argument.class.js +94 -0
  173. package/src/organisms/TestPanel/components/FullTestController.js +78 -0
  174. package/src/organisms/TestPanel/components/Test.class.js +162 -0
  175. package/src/organisms/TestPanel/components/TestController.class.js +135 -0
  176. package/src/organisms/TestPanel/components/test-helpers.js +109 -0
  177. package/src/organisms/TestPanel/styles.scss +45 -0
  178. package/src/pages/SystemView/SystemView.js +68 -0
  179. package/src/pages/SystemView/styles.scss +81 -0
  180. package/src/reportWebVitals.js +13 -0
  181. package/src/sass/bootstrap/_alert.scss +51 -0
  182. package/src/sass/bootstrap/_badge.scss +47 -0
  183. package/src/sass/bootstrap/_breadcrumb.scss +38 -0
  184. package/src/sass/bootstrap/_button-group.scss +166 -0
  185. package/src/sass/bootstrap/_buttons.scss +143 -0
  186. package/src/sass/bootstrap/_card.scss +270 -0
  187. package/src/sass/bootstrap/_carousel.scss +191 -0
  188. package/src/sass/bootstrap/_close.scss +34 -0
  189. package/src/sass/bootstrap/_code.scss +56 -0
  190. package/src/sass/bootstrap/_custom-forms.scss +297 -0
  191. package/src/sass/bootstrap/_dropdown.scss +131 -0
  192. package/src/sass/bootstrap/_forms.scss +333 -0
  193. package/src/sass/bootstrap/_functions.scss +86 -0
  194. package/src/sass/bootstrap/_grid.scss +52 -0
  195. package/src/sass/bootstrap/_images.scss +42 -0
  196. package/src/sass/bootstrap/_input-group.scss +159 -0
  197. package/src/sass/bootstrap/_jumbotron.scss +16 -0
  198. package/src/sass/bootstrap/_list-group.scss +115 -0
  199. package/src/sass/bootstrap/_media.scss +8 -0
  200. package/src/sass/bootstrap/_mixins.scss +42 -0
  201. package/src/sass/bootstrap/_modal.scss +168 -0
  202. package/src/sass/bootstrap/_nav.scss +118 -0
  203. package/src/sass/bootstrap/_navbar.scss +311 -0
  204. package/src/sass/bootstrap/_pagination.scss +77 -0
  205. package/src/sass/bootstrap/_popover.scss +183 -0
  206. package/src/sass/bootstrap/_print.scss +124 -0
  207. package/src/sass/bootstrap/_progress.scss +33 -0
  208. package/src/sass/bootstrap/_reboot.scss +482 -0
  209. package/src/sass/bootstrap/_root.scss +19 -0
  210. package/src/sass/bootstrap/_tables.scss +180 -0
  211. package/src/sass/bootstrap/_tooltip.scss +115 -0
  212. package/src/sass/bootstrap/_transitions.scss +36 -0
  213. package/src/sass/bootstrap/_type.scss +125 -0
  214. package/src/sass/bootstrap/_utilities.scss +14 -0
  215. package/src/sass/bootstrap/_variables.scss +894 -0
  216. package/src/sass/bootstrap/bootstrap-grid.scss +32 -0
  217. package/src/sass/bootstrap/bootstrap-reboot.scss +12 -0
  218. package/src/sass/bootstrap/bootstrap.scss +42 -0
  219. package/src/sass/bootstrap/mixins/_alert.scss +13 -0
  220. package/src/sass/bootstrap/mixins/_background-variant.scss +21 -0
  221. package/src/sass/bootstrap/mixins/_badge.scss +12 -0
  222. package/src/sass/bootstrap/mixins/_border-radius.scss +35 -0
  223. package/src/sass/bootstrap/mixins/_box-shadow.scss +5 -0
  224. package/src/sass/bootstrap/mixins/_breakpoints.scss +123 -0
  225. package/src/sass/bootstrap/mixins/_buttons.scss +109 -0
  226. package/src/sass/bootstrap/mixins/_caret.scss +65 -0
  227. package/src/sass/bootstrap/mixins/_clearfix.scss +7 -0
  228. package/src/sass/bootstrap/mixins/_float.scss +11 -0
  229. package/src/sass/bootstrap/mixins/_forms.scss +137 -0
  230. package/src/sass/bootstrap/mixins/_gradients.scss +45 -0
  231. package/src/sass/bootstrap/mixins/_grid-framework.scss +67 -0
  232. package/src/sass/bootstrap/mixins/_grid.scss +52 -0
  233. package/src/sass/bootstrap/mixins/_hover.scss +39 -0
  234. package/src/sass/bootstrap/mixins/_image.scss +36 -0
  235. package/src/sass/bootstrap/mixins/_list-group.scss +21 -0
  236. package/src/sass/bootstrap/mixins/_lists.scss +7 -0
  237. package/src/sass/bootstrap/mixins/_nav-divider.scss +10 -0
  238. package/src/sass/bootstrap/mixins/_navbar-align.scss +10 -0
  239. package/src/sass/bootstrap/mixins/_pagination.scss +22 -0
  240. package/src/sass/bootstrap/mixins/_reset-text.scss +17 -0
  241. package/src/sass/bootstrap/mixins/_resize.scss +6 -0
  242. package/src/sass/bootstrap/mixins/_screen-reader.scss +35 -0
  243. package/src/sass/bootstrap/mixins/_size.scss +6 -0
  244. package/src/sass/bootstrap/mixins/_table-row.scss +30 -0
  245. package/src/sass/bootstrap/mixins/_text-emphasis.scss +14 -0
  246. package/src/sass/bootstrap/mixins/_text-hide.scss +9 -0
  247. package/src/sass/bootstrap/mixins/_text-truncate.scss +8 -0
  248. package/src/sass/bootstrap/mixins/_transition.scss +9 -0
  249. package/src/sass/bootstrap/mixins/_visibility.scss +7 -0
  250. package/src/sass/bootstrap/utilities/_align.scss +8 -0
  251. package/src/sass/bootstrap/utilities/_background.scss +19 -0
  252. package/src/sass/bootstrap/utilities/_borders.scss +59 -0
  253. package/src/sass/bootstrap/utilities/_clearfix.scss +3 -0
  254. package/src/sass/bootstrap/utilities/_display.scss +38 -0
  255. package/src/sass/bootstrap/utilities/_embed.scss +52 -0
  256. package/src/sass/bootstrap/utilities/_flex.scss +46 -0
  257. package/src/sass/bootstrap/utilities/_float.scss +9 -0
  258. package/src/sass/bootstrap/utilities/_position.scss +36 -0
  259. package/src/sass/bootstrap/utilities/_screenreaders.scss +11 -0
  260. package/src/sass/bootstrap/utilities/_sizing.scss +12 -0
  261. package/src/sass/bootstrap/utilities/_spacing.scss +51 -0
  262. package/src/sass/bootstrap/utilities/_text.scss +52 -0
  263. package/src/sass/bootstrap/utilities/_visibility.scss +11 -0
  264. package/src/setupTests.js +5 -0
@@ -0,0 +1,302 @@
1
+ import React, { useState } from "react";
2
+ import moment from "moment";
3
+ import ReactJson from "react-json-view";
4
+ import JsonTextBox from "../../atoms/JsonTextBox/JsonTextBox";
5
+ import ExpandableIcon from "../../atoms/ExpandableIcon/ExpandableIcon";
6
+ import TypeSelector from "../../atoms/TypeSelector/TypeSelector";
7
+ import TargetSelector from "../TargetSelector/TargetSelector";
8
+ import Toggle from "../../atoms/Toggle/Toggle";
9
+ import { getType, defaultValue } from "../ValidationInput/validator";
10
+ import "./styles.scss";
11
+ const className = "args";
12
+ const Args = ({ args, controller, testIndex, locked }) => {
13
+ const add = () => controller.addArg(testIndex);
14
+
15
+ return (
16
+ <>
17
+ {args.length > 0 ? (
18
+ <div className={`${className}`}>
19
+ {args.map((arg, i) => (
20
+ <ArgData
21
+ key={i}
22
+ arg={arg}
23
+ testIndex={testIndex}
24
+ i={i}
25
+ controller={controller}
26
+ locked={locked}
27
+ />
28
+ ))}
29
+ </div>
30
+ ) : (
31
+ ""
32
+ )}
33
+ {locked ? (
34
+ ""
35
+ ) : (
36
+ <span className={`${className}__add-btn btn`} onClick={add}>
37
+ +
38
+ </span>
39
+ )}
40
+ </>
41
+ );
42
+ };
43
+ const ArgData = ({ arg, testIndex, i, controller, locked }) => {
44
+ const { name, input_type } = arg;
45
+ const [isOpen, setOpen] = useState(true);
46
+ const showData = () => {
47
+ setOpen(!isOpen);
48
+ };
49
+ const inputTypeChanged = (e) => {
50
+ arg.input_type = e.target.value;
51
+ arg.input = defaultValue(arg.input_type);
52
+ controller.checkTargetValues(testIndex, i, 0);
53
+ if (arg.input_type === "target")
54
+ controller.addTargetValue(testIndex, i, "", ["input"], 0);
55
+ controller.editArg(testIndex, i, arg);
56
+ };
57
+
58
+ const deleteArg = () => {
59
+ controller.deleteArg(testIndex, i);
60
+ };
61
+
62
+ const is12 =
63
+ input_type === "object" ||
64
+ input_type === "array" ||
65
+ input_type === "string" ||
66
+ input_type === "date" ||
67
+ input_type === "target";
68
+ return !isOpen ? (
69
+ <div className={`${className}__name-display`}>
70
+ <ArgName name={name} isOpen={isOpen} showData={showData} />
71
+ </div>
72
+ ) : (
73
+ <div className={`${className}__data container`} key={i}>
74
+ <div className={`row no-gutters justify-content-start align-items-center`}>
75
+ <div className={`col`}>
76
+ <div className={`${className}__from-container`}>
77
+ <ArgName name={name} isOpen={isOpen} showData={showData} />
78
+ </div>
79
+ </div>
80
+ <div className={`col`}>
81
+ <div className={`${className}__type`}>
82
+ <TypeSelector default_type={input_type} onSelect={inputTypeChanged} />
83
+ </div>
84
+ </div>
85
+ <div className={`col${!is12 ? -0 : ""}`}></div>
86
+ <div className={`col${is12 ? -12 : ""}`}>
87
+ <ArgDataForm
88
+ arg={arg}
89
+ i={i}
90
+ testIndex={testIndex}
91
+ controller={controller}
92
+ is12={is12}
93
+ />
94
+ </div>
95
+ </div>
96
+ {locked ? (
97
+ ""
98
+ ) : (
99
+ <span
100
+ className={`${className}__data__delete-btn btn delete-btn`}
101
+ onClick={deleteArg}
102
+ >
103
+ x
104
+ </span>
105
+ )}
106
+ </div>
107
+ );
108
+ };
109
+ const ArgName = ({ name, isOpen, showData }) => {
110
+ return (
111
+ <div className={`${className}__name`}>
112
+ <ExpandableIcon
113
+ isOpen={isOpen}
114
+ ClassName={`${className}__expand-btn`}
115
+ onClick={showData}
116
+ />{" "}
117
+ {/* <span className={`${className}__name__text`}>{name + ""}</span> */}
118
+ </div>
119
+ );
120
+ };
121
+ const ArgDataForm = ({ arg, testIndex, i, controller, is12 }) => {
122
+ const { input, input_type, targetValues } = arg;
123
+ const [jsonBoxVisible, setJsonBoxVisible] = useState(false);
124
+ const showJsonTxb = () => setJsonBoxVisible(true);
125
+ const hideJsonTxb = () => setJsonBoxVisible(false);
126
+ const inputChanged = (e) => {
127
+ if (e.target.type === "number") arg.input = parseInt(e.target.value);
128
+ else if (e.target.type === "checkbox") arg.input = e.target.checked;
129
+ else arg.input = e.target.value;
130
+ controller.editArg(testIndex, i, arg);
131
+ };
132
+ const jsonTextboxSubmit = (new_object) => {
133
+ arg.input = new_object;
134
+ controller.editArg(testIndex, i, arg);
135
+ controller.checkTargetValues(testIndex, i);
136
+ hideJsonTxb();
137
+ };
138
+ const jsonObjectSubmit = ({ updated_src, namespace, name, new_value }) => {
139
+ jsonTextboxSubmit(updated_src || {});
140
+ const source_map = namespace;
141
+ source_map.push(name);
142
+ source_map.unshift("input");
143
+ if (typeof new_value === "string")
144
+ controller.parseTargetValues(testIndex, i, new_value, source_map);
145
+ else controller.checkTargetValues(testIndex, i);
146
+ };
147
+
148
+ const adjustSize = (e) => {
149
+ const new_lines = e.target.value.length / 38;
150
+ const new_height = Math.min(33 + new_lines * 18, 320);
151
+ e.target.style.height = `${new_height}px`;
152
+ };
153
+
154
+ const textboxChanged = (e) => {
155
+ //adjustSize(e);
156
+ inputChanged(e);
157
+ controller.parseTargetValues(testIndex, i, e.target.value, ["input"]);
158
+ };
159
+ return (
160
+ <div className={`${className}__form ${is12 ? className + "__form--is12" : ""}`}>
161
+ {input_type === "undefined" || input_type === "null" ? (
162
+ <span className={`${className}__form__${input_type}`}>{input + ""}</span>
163
+ ) : input_type === "string" ? (
164
+ <div className={`textbox`}>
165
+ <textarea
166
+ className={`${className}__form__input ${className}__form__input--${input_type}`}
167
+ value={input}
168
+ onChange={textboxChanged}
169
+ onFocus={adjustSize}
170
+ />
171
+ <ArgValue value={arg.value()} hide={!targetValues.length} />
172
+ </div>
173
+ ) : input_type === "number" ? (
174
+ <div className={`textbox`}>
175
+ <input
176
+ className={`${className}__form__input ${className}__form__input--${input_type}`}
177
+ type={input_type}
178
+ name="arg-input"
179
+ autoComplete="off"
180
+ value={input}
181
+ onChange={inputChanged}
182
+ />
183
+ </div>
184
+ ) : input_type === "boolean" ? (
185
+ <div className="row justify-content-around">
186
+ <Toggle isChecked={input} onChange={inputChanged} round={true} />{" "}
187
+ <span
188
+ className={`${className}__form__value--boolean ${className}__form__value--boolean--${input}`}
189
+ >
190
+ {(input === true) + ""}
191
+ </span>
192
+ </div>
193
+ ) : input_type === "date" ? (
194
+ <input
195
+ className={`${className}__form__input ${className}__form__input--${input_type}`}
196
+ type={"datetime-local"}
197
+ name="arg-input"
198
+ autoComplete="off"
199
+ value={input}
200
+ onChange={inputChanged}
201
+ />
202
+ ) : input_type === "object" || input_type === "array" ? (
203
+ <span className={`${className}__form__${input_type}`}>
204
+ <div
205
+ className={`${className}__json-txb ${className}__json-txb--show-${jsonBoxVisible}`}
206
+ >
207
+ <JsonTextBox
208
+ onSubmit={jsonTextboxSubmit}
209
+ onCancel={hideJsonTxb}
210
+ obj={input}
211
+ />
212
+ </div>
213
+ <ReactJson
214
+ src={input}
215
+ name={false}
216
+ onAdd={jsonObjectSubmit}
217
+ onEdit={jsonObjectSubmit}
218
+ onDelete={jsonObjectSubmit}
219
+ displayObjectSize={false}
220
+ displayDataTypes={false}
221
+ collapsed={true}
222
+ />
223
+ <ArgValue value={arg.value()} hide={!targetValues.length} />
224
+ <span
225
+ className={`${className}__add-json-btn btn ${className}__json-txb--show-${!jsonBoxVisible}`}
226
+ onClick={showJsonTxb}
227
+ >
228
+ +JSON
229
+ </span>
230
+ </span>
231
+ ) : input_type === "target" ? (
232
+ ((value) => (
233
+ <div className={`${className}__form__${input_type}`}>
234
+ <TargetSelector
235
+ controller={controller}
236
+ target_namespace={targetValues[0].target_namespace}
237
+ testIndex={testIndex}
238
+ arg_index={i}
239
+ target_index={0}
240
+ className={`${className}__form__input ${className}__form__input--${input_type}`}
241
+ />
242
+ <ArgValue value={value} hide={!targetValues.length} />
243
+ </div>
244
+ ))(arg.value())
245
+ ) : (
246
+ <span className={`${className}__value`}>{input + ""}</span>
247
+ )}
248
+ </div>
249
+ );
250
+ };
251
+
252
+ export function Argument({ value }) {
253
+ const data_type = getType(value);
254
+ return (
255
+ <>
256
+ {data_type === "undefined" || data_type === "null" ? (
257
+ <span className={`${className}__value__${data_type}`}>{value + ""}</span>
258
+ ) : data_type === "string" ? (
259
+ <span className={`${className}__value__${data_type}`}>
260
+ <span className={`${className}__quote`}>"</span>
261
+ {value}
262
+ <span className={`${className}__quote`}>"</span>
263
+ </span>
264
+ ) : data_type === "number" ? (
265
+ <span className={`${className}__value__${data_type}`}>{value + ""}</span>
266
+ ) : data_type === "boolean" ? (
267
+ <span
268
+ className={`${className}__value__${data_type} ${className}__value__${data_type}--${
269
+ value + ""
270
+ }`}
271
+ >
272
+ {(value === true) + ""}
273
+ </span>
274
+ ) : data_type === "date" ? (
275
+ <span className={`${className}__value__${data_type}`}>
276
+ {moment(value).format() + ""}
277
+ </span>
278
+ ) : data_type === "object" || data_type === "array" ? (
279
+ <span className={`${className}__value__${data_type}`}>
280
+ <ReactJson
281
+ src={value}
282
+ name={false}
283
+ displayObjectSize={false}
284
+ displayDataTypes={false}
285
+ collapsed={true}
286
+ />
287
+ </span>
288
+ ) : (
289
+ <span className={`${className}__value__${data_type}`}>{value + ""}</span>
290
+ )}
291
+ </>
292
+ );
293
+ }
294
+ const ArgValue = (props) => {
295
+ return (
296
+ <div className={`${className}__value ${props.hide && className + "__value--hide"}`}>
297
+ <Argument {...props} />
298
+ </div>
299
+ );
300
+ };
301
+
302
+ export default Args;
File without changes
@@ -0,0 +1,166 @@
1
+ .args {
2
+ display: inline;
3
+ width: 100%;
4
+ &__add-btn {
5
+ padding: 0px 3px;
6
+ border-radius: 21px;
7
+ font-weight: bold;
8
+ color: #ffffff;
9
+ font-size: 16px;
10
+ margin: 0 5px;
11
+ line-height: 16px;
12
+ background: #5a77e5;
13
+ font-family: monospace;
14
+ }
15
+ &__data {
16
+ background: #cecee3;
17
+ margin: 2px;
18
+ border-radius: 7px;
19
+ padding: 11px;
20
+ position: relative;
21
+ &__delete-btn {
22
+ border-radius: 0px 7px 0px 0px !important;
23
+ top: 0px !important;
24
+ right: 0px !important;
25
+ padding: 0px 5px 1px 5px !important;
26
+ }
27
+ }
28
+
29
+ &__name {
30
+ white-space: nowrap;
31
+
32
+ &__text {
33
+ display: inline-block;
34
+ margin: 1px 0px;
35
+ // box-shadow: 1px 1px 1px #bdbdbd;
36
+ background: #5a77e5;
37
+ font-weight: bold;
38
+ color: white;
39
+ padding: 2px 10px;
40
+ border-radius: 100px;
41
+ cursor: pointer;
42
+ }
43
+ }
44
+ &__from-container {
45
+ display: flex;
46
+ /* justify-content: space-evenly; */
47
+ }
48
+
49
+ &__form {
50
+ &--is12 {
51
+ margin-top: 10px;
52
+ }
53
+ &__undefined {
54
+ color: #5a5a5a;
55
+ }
56
+ &__input {
57
+ background: none;
58
+ border: none;
59
+ border-bottom: 1px solid #9797d1;
60
+ font-family: monospace;
61
+ font-size: 14px;
62
+ &--number {
63
+ color: #9741ed;
64
+ font-weight: bold;
65
+ }
66
+ &--string,
67
+ &--target {
68
+ text-indent: 5px;
69
+ color: #cf5f2e;
70
+ min-height: 31px;
71
+ height: 31px;
72
+ min-width: 100%;
73
+ max-width: 100%;
74
+ max-height: 320px;
75
+ }
76
+ &--target {
77
+ font-weight: bold;
78
+ color: #009572;
79
+ }
80
+ &--date {
81
+ margin-top: 6px;
82
+ color: #9f4040;
83
+ }
84
+ }
85
+ &__value {
86
+ &--boolean {
87
+ &--true {
88
+ color: #2eab8c;
89
+ margin-right: 5px;
90
+ }
91
+ &--false {
92
+ color: #d52518;
93
+ }
94
+ position: relative;
95
+ top: 7px;
96
+ font-weight: bold;
97
+ }
98
+ }
99
+ }
100
+ &__quote {
101
+ color: #209cff;
102
+ font-size: 21px;
103
+ line-height: 1px;
104
+ }
105
+ &__type {
106
+ text-align: center;
107
+ }
108
+ &__name-display {
109
+ margin-right: 4px;
110
+ display: inline-block;
111
+ }
112
+ &__expand-btn {
113
+ color: #0035cf61;
114
+ text-shadow: 1px 1px 1px #cfcfcf;
115
+ }
116
+
117
+ &__add-json-btn {
118
+ padding: 2px 3px;
119
+ border-radius: 2px;
120
+ color: #0d8065;
121
+ position: absolute;
122
+ top: 6px;
123
+ right: 0;
124
+ &:hover {
125
+ text-decoration: underline;
126
+ }
127
+ }
128
+ &__json-txb {
129
+ &--show-false {
130
+ display: none !important;
131
+ }
132
+ }
133
+ &__value {
134
+ padding: 14px;
135
+ &--hide {
136
+ display: none;
137
+ }
138
+ &__number {
139
+ color: #9741ed;
140
+ font-weight: bold;
141
+ }
142
+ &__string {
143
+ color: #cf5f2e;
144
+ white-space: pre-line;
145
+ }
146
+ &__date {
147
+ color: #9f4040;
148
+ }
149
+ &__undefined {
150
+ color: #5a5a5a;
151
+ }
152
+ &__object {
153
+ // background: white;
154
+ padding: 0;
155
+ }
156
+ &__boolean {
157
+ font-weight: bold;
158
+ &--true {
159
+ color: #207844;
160
+ }
161
+ &--false {
162
+ color: #cf1515;
163
+ }
164
+ }
165
+ }
166
+ }
@@ -0,0 +1,101 @@
1
+ import { useState, useEffect } from "react";
2
+ import "./styles.scss";
3
+
4
+ const AutoCompleteBox = ({
5
+ suggestions,
6
+ value = "",
7
+ className,
8
+ onSubmit,
9
+ onChange,
10
+ onBlur,
11
+ disabled = false,
12
+ placeholder,
13
+ filterSuggestion = true,
14
+ requireSelection = true,
15
+ }) => {
16
+ const [filteredSuggestions, setFilteredSuggestions] = useState([]);
17
+ const [activeSuggestionIndex, setActiveSuggestionIndex] = useState(0);
18
+ const [showSuggestions, setShowSuggestions] = useState(false);
19
+ const [input, setInput] = useState(value);
20
+ useEffect(() => setInput(value), [value]);
21
+ const change = (e) => {
22
+ const userInput = e.target.value;
23
+
24
+ // Filter our suggestions that don't contain the user's input
25
+ const unLinked = filterSuggestion
26
+ ? suggestions.filter(
27
+ (suggestion) => suggestion.toLowerCase().indexOf(userInput.toLowerCase()) > -1
28
+ )
29
+ : suggestions;
30
+
31
+ setInput(e.target.value);
32
+ setFilteredSuggestions(unLinked);
33
+ setActiveSuggestionIndex(0);
34
+
35
+ if (
36
+ (!requireSelection && unLinked.indexOf(userInput) > -1) ||
37
+ (!requireSelection &&
38
+ unLinked.length <= 1 &&
39
+ userInput.length > (unLinked[0] || "").length)
40
+ )
41
+ setShowSuggestions(false);
42
+ else setShowSuggestions(true);
43
+ if (typeof onChange === "function") onChange(e.target.value);
44
+ };
45
+ const onClick = (e) => {
46
+ const text = e.target.innerText.substr(0, e.target.innerText.length);
47
+ if (typeof onSubmit === "function") onSubmit(text);
48
+ setFilteredSuggestions([]);
49
+ setInput(text);
50
+ setActiveSuggestionIndex(0);
51
+ setShowSuggestions(false);
52
+ };
53
+ const blur = (e) => {
54
+ typeof onBlur === "function" && onBlur(e.target.value);
55
+ };
56
+ const SuggestionsListComponent = () => {
57
+ return filteredSuggestions.length ? (
58
+ <div className="auto-complete__suggestions">
59
+ {filteredSuggestions.map((suggestion, index) => {
60
+ let className;
61
+ // Flag the active suggestion with a class
62
+
63
+ className =
64
+ index === activeSuggestionIndex
65
+ ? "auto-complete__suggestion auto-complete__suggestion--active"
66
+ : "auto-complete__suggestion ";
67
+
68
+ return (
69
+ <span className={className} key={suggestion} onClick={onClick}>
70
+ {suggestion}
71
+ </span>
72
+ );
73
+ })}
74
+ </div>
75
+ ) : (
76
+ <div className="auto-complete__suggestions">
77
+ <div className="auto-complete__suggestion auto-complete__suggestion--empty">
78
+ <em>no match</em>
79
+ </div>
80
+ </div>
81
+ );
82
+ };
83
+ const onKeyDown = () => {};
84
+ return (
85
+ <div className="auto-complete">
86
+ <input
87
+ className={className + " auto-complete__input"}
88
+ type="text"
89
+ onChange={change}
90
+ onKeyDown={onKeyDown}
91
+ onBlur={blur}
92
+ value={input}
93
+ disabled={disabled}
94
+ placeholder={placeholder}
95
+ />
96
+ {showSuggestions && input && <SuggestionsListComponent />}
97
+ </div>
98
+ );
99
+ };
100
+
101
+ export default AutoCompleteBox;
@@ -0,0 +1,35 @@
1
+ .auto-complete {
2
+ position: relative;
3
+ display: initial;
4
+ &__suggestions {
5
+ position: absolute;
6
+ top: 19px;
7
+ z-index: 1;
8
+ left: 0px;
9
+ display: grid;
10
+ // border: 1px solid #bcbfd1;
11
+ box-shadow: 1px 3px 4px #736c6c;
12
+ max-height: 365px;
13
+ overflow-y: auto;
14
+ font-family: monospace;
15
+ }
16
+ &__suggestion {
17
+ padding: 6px 7px;
18
+ display: inline-flex;
19
+ cursor: pointer;
20
+ background: white;
21
+ width: calc(300px + 1rem);
22
+ &--active,
23
+ &:hover:not(&--empty) {
24
+ color: #5960b6;
25
+ background-color: #cbcbff;
26
+ background-color: #dadaed;
27
+ color: #3f495d;
28
+ font-weight: 100;
29
+ font-weight: bold;
30
+ }
31
+ &--empty {
32
+ justify-content: center;
33
+ }
34
+ }
35
+ }