testeranto 0.79.6 → 0.79.8

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 (182) hide show
  1. package/TaskMan1.Dockerfile +1 -1
  2. package/dist/common/Features.js +84 -0
  3. package/dist/common/Node.js +23 -0
  4. package/dist/common/PM/index.js +7 -0
  5. package/dist/common/PM/main.js +641 -0
  6. package/dist/common/PM/node.js +88 -0
  7. package/dist/common/PM/web.js +132 -0
  8. package/dist/common/Project.js +186 -0
  9. package/dist/common/Puppeteer.js +104 -0
  10. package/dist/common/Reporter.js +112 -0
  11. package/dist/common/Scheduler.js +1 -0
  12. package/dist/common/SubPackages/puppeteer.js +21 -0
  13. package/dist/common/SubPackages/react/component/node.js +19 -0
  14. package/dist/common/SubPackages/react/component/web.js +19 -0
  15. package/dist/common/SubPackages/react/jsx/index.js +25 -0
  16. package/dist/common/SubPackages/react/jsx/node.js +10 -0
  17. package/dist/common/SubPackages/react/jsx/web.js +10 -0
  18. package/dist/common/SubPackages/react-dom/component/node.js +101 -0
  19. package/dist/common/SubPackages/react-dom/component/web.js +93 -0
  20. package/dist/common/SubPackages/react-dom/jsx/index.js +2 -0
  21. package/dist/common/SubPackages/react-dom/jsx/node.js +39 -0
  22. package/dist/common/SubPackages/react-dom/jsx/web.js +118 -0
  23. package/dist/common/SubPackages/react-test-renderer/MemoExoticComponent/node.js +44 -0
  24. package/dist/common/SubPackages/react-test-renderer/component/index.js +2 -0
  25. package/dist/common/SubPackages/react-test-renderer/component/interface.js +68 -0
  26. package/dist/common/SubPackages/react-test-renderer/component/node.js +8 -0
  27. package/dist/common/SubPackages/react-test-renderer/component/web.js +8 -0
  28. package/dist/common/SubPackages/react-test-renderer/fc/node.js +50 -0
  29. package/dist/common/SubPackages/react-test-renderer/fc/web.js +50 -0
  30. package/dist/common/SubPackages/react-test-renderer/jsx/index.js +48 -0
  31. package/dist/common/SubPackages/react-test-renderer/jsx/node.js +10 -0
  32. package/dist/common/SubPackages/react-test-renderer/jsx/web.js +10 -0
  33. package/dist/common/SubPackages/react-test-renderer/jsx-promised/index.js +42 -0
  34. package/dist/common/SubPackages/react-test-renderer/jsx-promised/node.js +10 -0
  35. package/dist/common/SubPackages/react-test-renderer/jsx-promised/web.js +10 -0
  36. package/dist/common/TaskManBackEnd.js +174 -0
  37. package/dist/common/Types.js +2 -0
  38. package/dist/common/Web.js +39 -0
  39. package/dist/common/esbuildConfigs/features.js +14 -0
  40. package/dist/common/esbuildConfigs/index.js +21 -0
  41. package/dist/common/esbuildConfigs/inputFilesPlugin.js +49 -0
  42. package/dist/common/esbuildConfigs/node.js +39 -0
  43. package/dist/common/esbuildConfigs/report.js +13 -0
  44. package/dist/common/esbuildConfigs/tests.js +13 -0
  45. package/dist/common/esbuildConfigs/web.js +57 -0
  46. package/dist/common/lib/abstractBase.js +553 -0
  47. package/dist/common/lib/basebuilder.js +79 -0
  48. package/dist/common/lib/classBuilder.js +42 -0
  49. package/dist/common/lib/core.js +75 -0
  50. package/dist/common/lib/index.js +22 -0
  51. package/dist/common/lib/types.js +2 -0
  52. package/dist/common/mongooseSchemas.js +56 -0
  53. package/dist/common/package.json +3 -0
  54. package/dist/common/preload.js +15 -0
  55. package/dist/common/puppeteerConfiger.js +24 -0
  56. package/dist/common/report.html.js +31 -0
  57. package/dist/common/tsconfig.common.tsbuildinfo +1 -0
  58. package/dist/common/utils.js +16 -0
  59. package/dist/common/web.html.js +22 -0
  60. package/dist/module/ExampleTab.js +112 -0
  61. package/dist/module/Features.js +73 -0
  62. package/dist/module/Node.js +18 -0
  63. package/dist/module/PM/index.js +3 -0
  64. package/dist/module/PM/main.js +611 -0
  65. package/dist/module/PM/node.js +81 -0
  66. package/dist/module/PM/web.js +125 -0
  67. package/dist/module/Project.js +179 -0
  68. package/dist/module/Puppeteer.js +99 -0
  69. package/dist/module/Reporter.js +107 -0
  70. package/dist/module/Scheduler.js +1 -0
  71. package/dist/module/SubPackages/puppeteer.js +16 -0
  72. package/dist/module/SubPackages/react/component/node.js +14 -0
  73. package/dist/module/SubPackages/react/component/web.js +14 -0
  74. package/dist/module/SubPackages/react/jsx/index.js +19 -0
  75. package/dist/module/SubPackages/react/jsx/node.js +5 -0
  76. package/dist/module/SubPackages/react/jsx/web.js +5 -0
  77. package/dist/module/SubPackages/react-dom/component/node.js +93 -0
  78. package/dist/module/SubPackages/react-dom/component/web.js +88 -0
  79. package/dist/module/SubPackages/react-dom/jsx/index.js +1 -0
  80. package/dist/module/SubPackages/react-dom/jsx/node.js +31 -0
  81. package/dist/module/SubPackages/react-dom/jsx/web.js +90 -0
  82. package/dist/module/SubPackages/react-test-renderer/MemoExoticComponent/node.js +16 -0
  83. package/dist/module/SubPackages/react-test-renderer/component/index.js +1 -0
  84. package/dist/module/SubPackages/react-test-renderer/component/interface.js +39 -0
  85. package/dist/module/SubPackages/react-test-renderer/component/node.js +3 -0
  86. package/dist/module/SubPackages/react-test-renderer/component/web.js +3 -0
  87. package/dist/module/SubPackages/react-test-renderer/fc/node.js +22 -0
  88. package/dist/module/SubPackages/react-test-renderer/fc/web.js +22 -0
  89. package/dist/module/SubPackages/react-test-renderer/jsx/index.js +19 -0
  90. package/dist/module/SubPackages/react-test-renderer/jsx/node.js +5 -0
  91. package/dist/module/SubPackages/react-test-renderer/jsx/web.js +5 -0
  92. package/dist/module/SubPackages/react-test-renderer/jsx-promised/index.js +16 -0
  93. package/dist/module/SubPackages/react-test-renderer/jsx-promised/node.js +5 -0
  94. package/dist/module/SubPackages/react-test-renderer/jsx-promised/web.js +5 -0
  95. package/dist/module/TaskManBackEnd.js +169 -0
  96. package/dist/module/TaskManFrontEnd.js +600 -0
  97. package/dist/module/Types.js +1 -0
  98. package/dist/module/Web.js +34 -0
  99. package/dist/module/esbuildConfigs/features.js +12 -0
  100. package/dist/module/esbuildConfigs/index.js +19 -0
  101. package/dist/module/esbuildConfigs/inputFilesPlugin.js +44 -0
  102. package/dist/module/esbuildConfigs/node.js +34 -0
  103. package/dist/module/esbuildConfigs/report.js +11 -0
  104. package/dist/module/esbuildConfigs/tests.js +11 -0
  105. package/dist/module/esbuildConfigs/web.js +52 -0
  106. package/dist/module/lib/abstractBase.js +545 -0
  107. package/dist/module/lib/basebuilder.js +75 -0
  108. package/dist/module/lib/classBuilder.js +38 -0
  109. package/dist/module/lib/core.js +72 -0
  110. package/dist/module/lib/index.js +18 -0
  111. package/dist/module/lib/types.js +1 -0
  112. package/dist/module/mongooseSchemas.js +50 -0
  113. package/dist/module/package.json +3 -0
  114. package/dist/module/preload.js +15 -0
  115. package/dist/module/puppeteerConfiger.js +19 -0
  116. package/dist/module/report.html.js +29 -0
  117. package/dist/module/tsconfig.module.tsbuildinfo +1 -0
  118. package/dist/module/utils.js +9 -0
  119. package/dist/module/web.html.js +20 -0
  120. package/dist/prebuild/Report.css +11358 -0
  121. package/dist/prebuild/Report.js +37666 -0
  122. package/dist/prebuild/TaskManBackEnd.mjs +180 -0
  123. package/dist/prebuild/TaskManFrontEnd.css +12301 -0
  124. package/dist/prebuild/TaskManFrontEnd.js +81737 -0
  125. package/dist/types/Features.d.ts +68 -0
  126. package/dist/types/Node.d.ts +6 -0
  127. package/dist/types/PM/index.d.ts +20 -0
  128. package/dist/types/PM/main.d.ts +31 -0
  129. package/dist/types/PM/node.d.ts +27 -0
  130. package/dist/types/PM/web.d.ts +25 -0
  131. package/dist/types/Project.d.ts +7 -0
  132. package/dist/types/Puppeteer.d.ts +1 -0
  133. package/dist/types/Reporter.d.ts +1 -0
  134. package/dist/types/Scheduler.d.ts +0 -0
  135. package/dist/types/SubPackages/puppeteer.d.ts +6 -0
  136. package/dist/types/SubPackages/react/component/node.d.ts +7 -0
  137. package/dist/types/SubPackages/react/component/web.d.ts +7 -0
  138. package/dist/types/SubPackages/react/jsx/index.d.ts +12 -0
  139. package/dist/types/SubPackages/react/jsx/node.d.ts +4 -0
  140. package/dist/types/SubPackages/react/jsx/web.d.ts +4 -0
  141. package/dist/types/SubPackages/react-dom/component/node.d.ts +12 -0
  142. package/dist/types/SubPackages/react-dom/component/web.d.ts +11 -0
  143. package/dist/types/SubPackages/react-dom/jsx/index.d.ts +6 -0
  144. package/dist/types/SubPackages/react-dom/jsx/node.d.ts +6 -0
  145. package/dist/types/SubPackages/react-dom/jsx/web.d.ts +5 -0
  146. package/dist/types/SubPackages/react-test-renderer/MemoExoticComponent/node.d.ts +5 -0
  147. package/dist/types/SubPackages/react-test-renderer/component/index.d.ts +13 -0
  148. package/dist/types/SubPackages/react-test-renderer/component/interface.d.ts +9 -0
  149. package/dist/types/SubPackages/react-test-renderer/component/node.d.ts +8 -0
  150. package/dist/types/SubPackages/react-test-renderer/component/web.d.ts +3 -0
  151. package/dist/types/SubPackages/react-test-renderer/fc/node.d.ts +8 -0
  152. package/dist/types/SubPackages/react-test-renderer/fc/web.d.ts +8 -0
  153. package/dist/types/SubPackages/react-test-renderer/jsx/index.d.ts +16 -0
  154. package/dist/types/SubPackages/react-test-renderer/jsx/node.d.ts +8 -0
  155. package/dist/types/SubPackages/react-test-renderer/jsx/web.d.ts +8 -0
  156. package/dist/types/SubPackages/react-test-renderer/jsx-promised/index.d.ts +15 -0
  157. package/dist/types/SubPackages/react-test-renderer/jsx-promised/node.d.ts +4 -0
  158. package/dist/types/SubPackages/react-test-renderer/jsx-promised/web.d.ts +4 -0
  159. package/dist/types/TaskManBackEnd.d.ts +1 -0
  160. package/dist/types/Types.d.ts +50 -0
  161. package/dist/types/Web.d.ts +6 -0
  162. package/dist/types/esbuildConfigs/features.d.ts +4 -0
  163. package/dist/types/esbuildConfigs/index.d.ts +4 -0
  164. package/dist/types/esbuildConfigs/inputFilesPlugin.d.ts +5 -0
  165. package/dist/types/esbuildConfigs/node.d.ts +4 -0
  166. package/dist/types/esbuildConfigs/report.d.ts +4 -0
  167. package/dist/types/esbuildConfigs/tests.d.ts +4 -0
  168. package/dist/types/esbuildConfigs/web.d.ts +4 -0
  169. package/dist/types/lib/abstractBase.d.ts +104 -0
  170. package/dist/types/lib/basebuilder.d.ts +27 -0
  171. package/dist/types/lib/classBuilder.d.ts +7 -0
  172. package/dist/types/lib/core.d.ts +8 -0
  173. package/dist/types/lib/index.d.ts +59 -0
  174. package/dist/types/lib/types.d.ts +64 -0
  175. package/dist/types/mongooseSchemas.d.ts +124 -0
  176. package/dist/types/preload.d.ts +0 -0
  177. package/dist/types/puppeteerConfiger.d.ts +4 -0
  178. package/dist/types/report.html.d.ts +2 -0
  179. package/dist/types/tsconfig.types.tsbuildinfo +1 -0
  180. package/dist/types/utils.d.ts +2 -0
  181. package/dist/types/web.html.d.ts +2 -0
  182. package/package.json +2 -2
@@ -0,0 +1,600 @@
1
+ import { ReactFlow } from '@xyflow/react';
2
+ import { Button, ButtonGroup, Container, Form, Navbar, NavDropdown, Table, ToggleButton } from "react-bootstrap";
3
+ import React, { useEffect, useState } from "react";
4
+ import ReactDom from "react-dom/client";
5
+ import Col from 'react-bootstrap/Col';
6
+ import Nav from 'react-bootstrap/Nav';
7
+ import Row from 'react-bootstrap/Row';
8
+ import Tab from 'react-bootstrap/Tab';
9
+ import Tabs from 'react-bootstrap/Tabs';
10
+ import { BrowserRouter as Router, Route, NavLink, Routes } from 'react-router-dom';
11
+ import { UncontrolledBoard } from '@caldwell619/react-kanban';
12
+ import '@caldwell619/react-kanban/dist/styles.css';
13
+ import { Gantt } from 'gantt-task-react';
14
+ import "gantt-task-react/dist/index.css";
15
+ import 'bootstrap/dist/css/bootstrap.min.css';
16
+ import '@xyflow/react/dist/style.css';
17
+ import { featuresSchema, ganttSchema, kanbanSchema, userSchema } from "./mongooseSchemas";
18
+ const InputElementString = ({ tree, name }) => {
19
+ console.log("mark string", tree);
20
+ // return <Form.Control type="email" placeholder={name} />
21
+ return React.createElement(Form.Group, { className: "mb-3", controlId: name },
22
+ React.createElement(Form.Label, null, name),
23
+ React.createElement(Form.Control, { placeholder: name }));
24
+ };
25
+ const InputElementArray = ({ tree, name }) => {
26
+ console.log("mark5", tree);
27
+ return React.createElement(Form.Control, { type: "email", placeholder: "Enter email" });
28
+ };
29
+ const InputElementObject = ({ tree, name }) => {
30
+ // const x = schema.path(path);
31
+ console.log("mark4", tree, tree.properties);
32
+ return React.createElement("div", null, ...Object.keys(tree.properties).map((name) => {
33
+ console.log("mark6", name, tree.properties[name].type);
34
+ if (tree.properties[name].type === "object") {
35
+ return React.createElement(InputElementObject, { tree: tree.properties[name], name: name });
36
+ }
37
+ if (tree.properties[name].type === "string") {
38
+ return React.createElement(InputElementString, { tree: tree.properties[name], name: name });
39
+ }
40
+ if (Array.isArray(tree.properties[name].type)) {
41
+ return React.createElement(InputElementArray, { tree: tree.properties[name], name: name });
42
+ }
43
+ }));
44
+ // // if (tree.type === "string") {
45
+ // // return <InputElementString tree={tree.properties[path]} path={path}></InputElementString >
46
+ // // }
47
+ // return <div>IDK</div>
48
+ // return <Form.Group>
49
+ // {/* {
50
+ // schema.get(path)
51
+ // } */}
52
+ // </Form.Group>
53
+ };
54
+ const InputForm = ({ schema, path }) => {
55
+ return React.createElement(Form.Group, null,
56
+ React.createElement(InputElementObject, { tree: schema.toJSONSchema() }));
57
+ };
58
+ const Crud2 = ({ collection, collectionName, schema }) => {
59
+ return React.createElement("div", null,
60
+ React.createElement(Table, { striped: true, bordered: true, hover: true },
61
+ React.createElement("thead", null,
62
+ React.createElement("tr", null,
63
+ React.createElement("th", null, "id"),
64
+ React.createElement("th", null))),
65
+ React.createElement("tbody", null,
66
+ React.createElement("tr", null,
67
+ React.createElement("td", null, "add new record"),
68
+ React.createElement("td", null,
69
+ React.createElement(Form, null,
70
+ React.createElement(InputForm, { schema: schema }),
71
+ React.createElement(Button, { variant: "primary", type: "submit" }, "Submit")))),
72
+ collection.map((doc) => {
73
+ return React.createElement("tr", null,
74
+ React.createElement("td", null, doc._id),
75
+ React.createElement("td", null, JSON.stringify(doc, null, 2)));
76
+ }))));
77
+ };
78
+ const Features = ({ features, tests, results, adminMode }) => {
79
+ if (!adminMode)
80
+ return React.createElement(Tab.Container, { id: "left-tabs-example5", defaultActiveKey: "feature-0" },
81
+ React.createElement(Row, null,
82
+ React.createElement(Col, { sm: 4 },
83
+ React.createElement(Nav, { variant: "pills", className: "flex-column" }, (features).map((feature, ndx) => React.createElement(Nav.Item, { key: ndx },
84
+ React.createElement(Nav.Link, { eventKey: `feature/${feature._id}` }, feature.title))))),
85
+ React.createElement(Col, { sm: 8 },
86
+ React.createElement(Tab.Content, null, (features).map((feature, ndx) => {
87
+ // const feature = features[featureKey];
88
+ return (React.createElement(Tab.Pane, { eventKey: `feature/${feature._id}`, key: ndx },
89
+ React.createElement("pre", null, JSON.stringify(feature, null, 2)),
90
+ React.createElement("ol", null, results.filter((result) => {
91
+ console.log("mark1", (result.testresults.src));
92
+ // return test._id === feature._id
93
+ // (result.testresults.givens.features || []).includes(feature._id)
94
+ // console.log("ark3", new Set(result.testresults.givens.reduce((mm: string[], el) => {
95
+ // mm = mm.concat(el.features)
96
+ // // console.log("mark2", el);
97
+ // // el.features.forEach((feature) => {
98
+ // // mm.add(feature)
99
+ // // });
100
+ // return mm;
101
+ // }, [])));
102
+ return new Set(result.testresults.givens.reduce((mm, el) => {
103
+ mm = mm.concat(el.features);
104
+ // console.log("mark2", el);
105
+ // el.features.forEach((feature) => {
106
+ // mm.add(feature)
107
+ // });
108
+ return mm;
109
+ }, [])).has(feature._id);
110
+ }).map((result) => {
111
+ return React.createElement("li", null, result.src);
112
+ }))));
113
+ })))));
114
+ return React.createElement(Crud2, { schema: featuresSchema, collectionName: "features", collection: features });
115
+ };
116
+ const Tests = ({ tests, results, features, adminMode }) => {
117
+ if (!adminMode)
118
+ return React.createElement(Tab.Container, { id: "left-tabs-example5", defaultActiveKey: "feature-0" },
119
+ React.createElement(Row, null,
120
+ React.createElement(Col, { sm: 4 },
121
+ React.createElement(Nav, { variant: "pills", className: "flex-column" }, tests.tests.map((t, ndx) => React.createElement(Nav.Item, { key: ndx },
122
+ React.createElement(Nav.Link, { eventKey: `test-${ndx}` },
123
+ t[0],
124
+ " - ",
125
+ t[1]))))),
126
+ React.createElement(Col, { sm: 4 },
127
+ React.createElement(Tab.Content, null, tests.tests.map((t, ndx) => React.createElement(Tab.Pane, { eventKey: `test-${ndx}` },
128
+ React.createElement("pre", null, JSON.stringify(Object.entries(results).filter(([k, v]) => {
129
+ console.log(v.src, tests.tests[ndx][0]);
130
+ return v.src === tests.tests[ndx][0];
131
+ }), null, 2))))))));
132
+ // return <Crud collectionName="features" collection={features}></Crud>
133
+ return React.createElement("div", null);
134
+ };
135
+ const TaskMan = ({ setAdminMode, users, adminMode, children }) => {
136
+ return React.createElement("div", null,
137
+ React.createElement("div", { className: "row" },
138
+ React.createElement(Navbar, { expand: "md", className: "bg-body-tertiary" },
139
+ React.createElement(Container, { fluid: true },
140
+ React.createElement(Navbar.Toggle, { "aria-controls": "basic-navbar-nav" }),
141
+ React.createElement(Navbar.Collapse, { id: "basic-navbar-nav" },
142
+ React.createElement(Nav, { className: "me-auto" },
143
+ React.createElement(Tabs, { defaultActiveKey: "/tests" },
144
+ React.createElement(Tab, { eventKey: "features", title: React.createElement(NavLink, { to: "/taskMan/features", className: "nav-link" }, "Features") }),
145
+ React.createElement(Tab, { eventKey: "kanban", title: React.createElement(NavLink, { to: "/taskMan/kanban", className: "nav-link" }, "Kanban") }),
146
+ React.createElement(Tab, { eventKey: "gantt", title: React.createElement(NavLink, { to: "/taskMan/gantt", className: "nav-link" }, "Gantt") }))),
147
+ React.createElement(NavDropdown, { align: "end", title: "User", id: "basic-nav-dropdown" },
148
+ users.map((user) => {
149
+ return React.createElement(NavDropdown.Item, { href: "#action/3.1" }, user.email);
150
+ }),
151
+ React.createElement(NavDropdown.Divider, null),
152
+ React.createElement(NavDropdown.Item, { href: "#action/3.4" }, "all")),
153
+ React.createElement(ButtonGroup, { className: "mb-2" },
154
+ React.createElement(ToggleButton, { id: "toggle-check", type: "checkbox", variant: "outline-primary", checked: adminMode, value: "1", onChange: (e) => setAdminMode(!adminMode) }, "\u2699\uFE0F")))))),
155
+ children);
156
+ };
157
+ const DocGal = ({ setAdminMode, users, adminMode, children }) => {
158
+ return React.createElement("div", null,
159
+ React.createElement("div", { className: "row" },
160
+ React.createElement(Navbar, { expand: "md", className: "bg-body-tertiary" },
161
+ React.createElement(Container, { fluid: true },
162
+ React.createElement(Navbar.Toggle, { "aria-controls": "basic-navbar-nav" }),
163
+ React.createElement(Navbar.Collapse, { id: "docGal-navbar-nav" },
164
+ React.createElement(Nav, { className: "me-auto" },
165
+ React.createElement(Tabs, { defaultActiveKey: "/fs" },
166
+ React.createElement(Tab, { eventKey: "fs", title: React.createElement(NavLink, { to: "/docGal/fs", className: "nav-link" }, "FS") }),
167
+ React.createElement(Tab, { eventKey: "db", title: React.createElement(NavLink, { to: "/docGal/db", className: "nav-link" }, "DB") }))))))),
168
+ children);
169
+ };
170
+ const ChatCat = ({ children }) => {
171
+ return React.createElement("div", null,
172
+ React.createElement("div", { className: "row" },
173
+ React.createElement(Navbar, { expand: "md", className: "bg-body-tertiary" },
174
+ React.createElement(Container, { fluid: true },
175
+ React.createElement(Navbar.Toggle, { "aria-controls": "basic-navbar-nav" }),
176
+ React.createElement(Navbar.Collapse, { id: "basic-navbar-nav" },
177
+ React.createElement(Nav, { className: "me-auto" },
178
+ React.createElement(Tabs, { defaultActiveKey: "/chatCat/mostRecent" },
179
+ React.createElement(Tab, { eventKey: "/chatCat/mostRecent", title: React.createElement(NavLink, { to: "/chatCat/mostRecent", className: "nav-link" }, "Most Recent") }),
180
+ React.createElement(Tab, { eventKey: "/chatCat/bySubject", title: React.createElement(NavLink, { to: "/chatCat/bySubject", className: "nav-link" }, "by Subject") }))))))),
181
+ children);
182
+ // return <div>
183
+ // <Row>
184
+ // <Col sm={2}>
185
+ // <Nav variant="pills" className="flex-column">
186
+ // <h4>Rooms</h4>
187
+ // {(chatCatRooms).map((room, ndx) => <Nav.Item key={ndx}>
188
+ // <Nav.Link eventKey={`chatCat/room/${room._id}`}>
189
+ // {room.name}
190
+ // </Nav.Link>
191
+ // </Nav.Item>)}
192
+ // <h4>Huddles</h4>
193
+ // {(chatCatHuddles).map((huddle, ndx) => <Nav.Item key={ndx}>
194
+ // <Nav.Link eventKey={`chatCat/user${huddle._id}`}>
195
+ // {huddle.name}
196
+ // </Nav.Link>
197
+ // </Nav.Item>)}
198
+ // <h4>Users</h4>
199
+ // {(users).map((user, ndx) => <Nav.Item key={ndx}>
200
+ // <Nav.Link eventKey={`chatCat/user/${user._id}`}>
201
+ // {user.email}
202
+ // </Nav.Link>
203
+ // </Nav.Item>)}
204
+ // </Nav>
205
+ // </Col>
206
+ // <Col sm={10}>
207
+ // <Tab.Content>
208
+ // {(chatCatRooms).map((channel, ndx) => {
209
+ // return (
210
+ // <Tab.Pane eventKey={`chatCat/${channel}`} key={ndx}>
211
+ // <pre>{JSON.stringify(channel, null, 2)}</pre>
212
+ // </Tab.Pane>
213
+ // )
214
+ // }
215
+ // )}
216
+ // </Tab.Content>
217
+ // </Col>
218
+ // </Row>
219
+ // </div>
220
+ };
221
+ const WhoThat = ({ children }) => {
222
+ return React.createElement("div", null,
223
+ React.createElement("div", { className: "row" },
224
+ React.createElement(Navbar, { expand: "md", className: "bg-body-tertiary" },
225
+ React.createElement(Container, { fluid: true },
226
+ React.createElement(Navbar.Toggle, { "aria-controls": "basic-navbar-nav" }),
227
+ React.createElement(Navbar.Collapse, { id: "basic-navbar-nav" },
228
+ React.createElement(Nav, { className: "me-auto" },
229
+ React.createElement(Tabs, { defaultActiveKey: "/whoThat/people" },
230
+ React.createElement(Tab, { eventKey: "/whoThat/people", title: React.createElement(NavLink, { to: "/whoThat/people", className: "nav-link" }, "People") }),
231
+ React.createElement(Tab, { eventKey: "/whoThat/groups", title: React.createElement(NavLink, { to: "/whoThat/groups", className: "nav-link" }, "Groups") }),
232
+ React.createElement(Tab, { eventKey: "/whoThat/org", title: React.createElement(NavLink, { to: "/whoThat/org", className: "nav-link" }, "Org") }))),
233
+ React.createElement(ButtonGroup, { className: "mb-2" },
234
+ React.createElement(ToggleButton, { id: "toggle-check", type: "checkbox", variant: "outline-primary", checked: false, value: "1" }, "\u2699\uFE0F")))))),
235
+ children);
236
+ // return <div>
237
+ // <Row>
238
+ // <Col sm={2}>
239
+ // <Nav variant="pills" className="flex-column">
240
+ // <h4>Rooms</h4>
241
+ // {(chatCatRooms).map((room, ndx) => <Nav.Item key={ndx}>
242
+ // <Nav.Link eventKey={`chatCat/room/${room._id}`}>
243
+ // {room.name}
244
+ // </Nav.Link>
245
+ // </Nav.Item>)}
246
+ // <h4>Huddles</h4>
247
+ // {(chatCatHuddles).map((huddle, ndx) => <Nav.Item key={ndx}>
248
+ // <Nav.Link eventKey={`chatCat/user${huddle._id}`}>
249
+ // {huddle.name}
250
+ // </Nav.Link>
251
+ // </Nav.Item>)}
252
+ // <h4>Users</h4>
253
+ // {(users).map((user, ndx) => <Nav.Item key={ndx}>
254
+ // <Nav.Link eventKey={`chatCat/user/${user._id}`}>
255
+ // {user.email}
256
+ // </Nav.Link>
257
+ // </Nav.Item>)}
258
+ // </Nav>
259
+ // </Col>
260
+ // <Col sm={10}>
261
+ // <Tab.Content>
262
+ // {(chatCatRooms).map((channel, ndx) => {
263
+ // return (
264
+ // <Tab.Pane eventKey={`chatCat/${channel}`} key={ndx}>
265
+ // <pre>{JSON.stringify(channel, null, 2)}</pre>
266
+ // </Tab.Pane>
267
+ // )
268
+ // }
269
+ // )}
270
+ // </Tab.Content>
271
+ // </Col>
272
+ // </Row>
273
+ // </div>
274
+ };
275
+ const Kanban = ({ features, tests, results, kanban, openNewColumnModal, adminMode }) => {
276
+ const board = {
277
+ columns: [
278
+ {
279
+ id: -1,
280
+ title: 'BACKLOG',
281
+ cards: features.filter((f) => f.state === undefined)
282
+ },
283
+ {
284
+ id: 0,
285
+ title: 'ARCHIVE',
286
+ cards: features.filter((f) => f.state === "ARCHIVED")
287
+ },
288
+ ...kanban.map((kb) => {
289
+ return {
290
+ id: kb._id,
291
+ title: kb.title,
292
+ cards: features.filter((f) => f.state === kb._id)
293
+ };
294
+ }),
295
+ // {
296
+ // id: 1,
297
+ // title: 'Backlog',
298
+ // cards: [
299
+ // {
300
+ // id: 1,
301
+ // title: 'Add card',
302
+ // description: 'Add capability to add a card in a column'
303
+ // },
304
+ // ]
305
+ // },
306
+ ]
307
+ };
308
+ if (!adminMode)
309
+ return React.createElement(Tab.Container, { id: "left-tabs-example8", defaultActiveKey: "feature-0" },
310
+ React.createElement(Row, null,
311
+ React.createElement(Col, { sm: 12 },
312
+ React.createElement("button", { onClick: () => {
313
+ openNewColumnModal();
314
+ } }, "new column"),
315
+ React.createElement(UncontrolledBoard, { initialBoard: board }))));
316
+ return React.createElement(Crud2, { schema: kanbanSchema, collectionName: "kanban", collection: kanban });
317
+ };
318
+ const GanttChart = ({ gantt, tests, results, features, adminMode }) => {
319
+ if (!adminMode) {
320
+ if (gantt.length > 1) {
321
+ return React.createElement(Row, null,
322
+ React.createElement(Col, { sm: 12 },
323
+ React.createElement(Gantt, { tasks: (gantt || []).map((g) => {
324
+ console.log(g);
325
+ let task = {
326
+ start: new Date(2020, 1, 1),
327
+ end: new Date(2020, 1, 2),
328
+ name: g.name,
329
+ id: g._id,
330
+ type: g.type,
331
+ progress: 45,
332
+ isDisabled: false,
333
+ styles: { progressColor: '#ffbb54', progressSelectedColor: '#ff9e0d' },
334
+ };
335
+ console.log(task);
336
+ return task;
337
+ }) })));
338
+ }
339
+ else {
340
+ return React.createElement("p", null, "you need to add some gantt items");
341
+ }
342
+ }
343
+ return React.createElement(Crud2, { schema: ganttSchema, collectionName: "gantt", collection: gantt });
344
+ };
345
+ const Users = ({ users, adminMode }) => {
346
+ if (!adminMode)
347
+ return React.createElement(Tab.Container, { id: "left-tabs-example9", defaultActiveKey: "feature-0" },
348
+ React.createElement(Row, null,
349
+ React.createElement(Col, { sm: 12 },
350
+ React.createElement("ul", null, users.map((user) => {
351
+ return React.createElement("li", null, user.email);
352
+ })))));
353
+ return React.createElement(Crud2, { schema: userSchema, collectionName: "users", collection: users });
354
+ };
355
+ const OrgChart = ({ users, adminMode }) => {
356
+ const initialNodes = [
357
+ { id: '1', position: { x: 0, y: 0 }, data: { label: '1' } },
358
+ { id: '2', position: { x: 0, y: 100 }, data: { label: '2' } },
359
+ ];
360
+ const initialEdges = [{ id: 'e1-2', source: '1', target: '2' }];
361
+ if (!adminMode)
362
+ return React.createElement(Tab.Container, { id: "left-tabs-example9", defaultActiveKey: "feature-0" },
363
+ React.createElement(Row, null,
364
+ React.createElement(Col, { sm: 12 },
365
+ React.createElement("div", { style: { width: '100vw', height: '100vh' } },
366
+ React.createElement(ReactFlow, { nodes: [
367
+ ...initialNodes,
368
+ ...users.map((user) => {
369
+ return ({ id: user._id, position: { x: 0, y: 0 }, data: { label: user.email } });
370
+ })
371
+ ], edges: initialEdges })))));
372
+ return React.createElement(Crud2, { schema: userSchema, collectionName: "users", collection: users });
373
+ };
374
+ const DocGalFsNav = ({ docGalFs, filepath }) => {
375
+ return React.createElement("div", null,
376
+ React.createElement("ul", null, ...docGalFs.map((lm) => {
377
+ return React.createElement("li", null,
378
+ React.createElement("a", { href: `${filepath}/${lm.name}` }, lm.name),
379
+ lm.children.length > 0 && React.createElement(DocGalFsNav, { docGalFs: lm.children, filepath: `${filepath}/${lm.name}` }));
380
+ })));
381
+ };
382
+ const DocGalFs = ({ docGalFs,
383
+ // tests, results, features, adminMode
384
+ }) => {
385
+ // return <Row>
386
+ // <Col sm={12}>
387
+ // {JSON.stringify(docGalFs, null, 2)}
388
+ // </Col>
389
+ // </Row>
390
+ return React.createElement(Row, null,
391
+ React.createElement(Col, { sm: 4 },
392
+ React.createElement(DocGalFsNav, { docGalFs: docGalFs, filepath: "" })),
393
+ React.createElement(Col, { sm: 4 },
394
+ React.createElement(Tab.Content, null)));
395
+ };
396
+ const DocGalDb = ({}) => {
397
+ return React.createElement(Row, null,
398
+ React.createElement(Col, { sm: 12 }, "DocGalDb"));
399
+ };
400
+ const ChatCatPeople = ({ users }) => {
401
+ return React.createElement(Tab.Container, { id: "left-tabs-example9", defaultActiveKey: "feature-0" },
402
+ React.createElement(Row, null,
403
+ React.createElement(Col, { sm: 12 },
404
+ React.createElement("ul", null, users.map((user) => {
405
+ return React.createElement("li", null, user.email);
406
+ })))));
407
+ };
408
+ const ChatCatConversations = ({ users, conversations }) => {
409
+ // return <Tab.Container id="left-tabs-example9" defaultActiveKey="feature-0">
410
+ // <Row>
411
+ // <Col sm={12}>
412
+ // <ul>
413
+ // {
414
+ // users.map((user) => {
415
+ // return <li>
416
+ // {user.email}
417
+ // </li>
418
+ // })
419
+ // }
420
+ // </ul>
421
+ // </Col>
422
+ // </Row>
423
+ // </Tab.Container>
424
+ return React.createElement(Row, null,
425
+ React.createElement(Navbar, { expand: "md", className: "bg-body-tertiary" },
426
+ React.createElement(Container, { fluid: true },
427
+ React.createElement(Navbar.Toggle, { "aria-controls": "basic-navbar-nav" }),
428
+ React.createElement(Navbar.Collapse, { id: "basic-navbar-nav" },
429
+ React.createElement(Nav, { className: "me-auto" },
430
+ React.createElement(Tabs, { defaultActiveKey: "/chatCat/mostRecent" },
431
+ React.createElement(Tab, { eventKey: "/chatCat/mostRecent", title: React.createElement(NavLink, { to: "/chatCat/mostRecent", className: "nav-link" }, "Feature") }),
432
+ React.createElement(Tab, { eventKey: "/chatCat/bySubject", title: React.createElement(NavLink, { to: "/chatCat/bySubject", className: "nav-link" }, "Kanban") }),
433
+ React.createElement(Tab, { eventKey: "/chatCat/bySubject", title: React.createElement(NavLink, { to: "/chatCat/bySubject", className: "nav-link" }, "Gantt") }),
434
+ React.createElement(Tab, { eventKey: "/chatCat/bySubject", title: React.createElement(NavLink, { to: "/chatCat/bySubject", className: "nav-link" }, "FS docs") }),
435
+ React.createElement(Tab, { eventKey: "/chatCat/bySubject", title: React.createElement(NavLink, { to: "/chatCat/bySubject", className: "nav-link" }, "DB docs") }),
436
+ React.createElement(Tab, { eventKey: "/chatCat/bySubject", title: React.createElement(NavLink, { to: "/chatCat/bySubject", className: "nav-link" }, "Groups") }))),
437
+ React.createElement(ButtonGroup, { className: "mb-2" },
438
+ React.createElement(ToggleButton, { id: "toggle-check", type: "checkbox", variant: "outline-primary", checked: false, value: "1" }, "\u2699\uFE0F"))))));
439
+ };
440
+ const ChatCatRooms = ({ users, rooms }) => {
441
+ return React.createElement(Tab.Container, { id: "left-tabs-example9", defaultActiveKey: "feature-0" },
442
+ React.createElement(Row, null,
443
+ React.createElement(Col, { sm: 12 },
444
+ React.createElement("ul", null, users.map((user) => {
445
+ return React.createElement("li", null, user.email);
446
+ })))));
447
+ };
448
+ const Report = () => {
449
+ const [state, setState] = useState({
450
+ tests: [],
451
+ buildDir: "",
452
+ results: {}
453
+ });
454
+ const [tests, setTests] = useState({
455
+ tests: [],
456
+ buildDir: ""
457
+ });
458
+ const [features, setFeatures] = useState([]);
459
+ const [kanban, setKanban] = useState([]);
460
+ const importResults = async () => {
461
+ const config = await (await fetch("./testeranto.json")).json();
462
+ const results = await Promise.all(config.tests.map((test) => {
463
+ return new Promise(async (res, rej) => {
464
+ const src = test[0];
465
+ const runtime = test[1];
466
+ const s = [tests.buildDir, runtime].concat(src.split(".").slice(0, -1).join(".")).join("/");
467
+ const exitcode = await (await fetch(config.outdir + "/" + s + "/exitcode")).text();
468
+ const log = await (await fetch(config.outdir + "/" + s + "/log.txt")).text();
469
+ const testresults = await (await fetch(config.outdir + "/" + s + "/tests.json")).json();
470
+ const manifest = await (await fetch(config.outdir + "/" + s + "/manifest.json")).json();
471
+ res({ src, exitcode, log, testresults, manifest });
472
+ });
473
+ }));
474
+ setState({ tests: config.tests, results, buildDir: config.buildDir });
475
+ };
476
+ const importFeatures = async () => {
477
+ fetch('http://localhost:3000/features.json')
478
+ .then(response => response.json())
479
+ .then(json => setFeatures(json))
480
+ .catch(error => console.error(error));
481
+ };
482
+ useEffect(() => { importFeatures(); }, []);
483
+ const importKanban = async () => {
484
+ fetch('http://localhost:3000/kanbans.json')
485
+ .then(response => response.json())
486
+ .then(json => setKanban(json))
487
+ .catch(error => console.error(error));
488
+ };
489
+ useEffect(() => { importKanban(); }, []);
490
+ const [users, setUsers] = useState([]);
491
+ const importUsers = async () => {
492
+ fetch('http://localhost:3000/users.json')
493
+ .then(response => response.json())
494
+ .then(json => setUsers(json))
495
+ .catch(error => console.error(error));
496
+ };
497
+ useEffect(() => { importUsers(); }, []);
498
+ const [gantt, setGantt] = useState([]);
499
+ const importGantt = async () => {
500
+ fetch('http://localhost:3000/gantts.json')
501
+ .then(response => response.json())
502
+ .then(json => setGantt(json))
503
+ .catch(error => console.error(error));
504
+ };
505
+ useEffect(() => { importGantt(); }, []);
506
+ const importTests = async () => {
507
+ const x = await fetch("./testeranto.json");
508
+ const y = await x.json();
509
+ setTests(y);
510
+ };
511
+ useEffect(() => { importResults(); }, []);
512
+ useEffect(() => { importTests(); }, []);
513
+ const [activeKey, setActiveKey] = useState('home');
514
+ const handleSelect = (selectedKey) => {
515
+ setActiveKey(selectedKey);
516
+ };
517
+ const [adminMode, setAdminMode] = useState(false);
518
+ const [docGalFs, setDocGalFs] = useState([]);
519
+ const importFs = async () => {
520
+ fetch('http://localhost:3000/docGal/fs.json')
521
+ .then(response => response.json())
522
+ .then(json => setDocGalFs(json))
523
+ .catch(error => console.error(error));
524
+ };
525
+ useEffect(() => { importFs(); }, []);
526
+ const [chatCatRooms, setChatCatRooms] = useState([]);
527
+ const importChatCatRooms = async () => {
528
+ fetch('http://localhost:3000/rooms.json')
529
+ .then(response => response.json())
530
+ .then(json => setChatCatRooms(json))
531
+ .catch(error => console.error(error));
532
+ };
533
+ useEffect(() => { importChatCatRooms(); }, []);
534
+ return (React.createElement("div", null,
535
+ React.createElement("style", null, `
536
+ pre, code, p {
537
+ max-width: 40rem;
538
+ text-wrap: auto;
539
+ }
540
+ footer {
541
+ background-color: lightgray;
542
+ margin: 0.5rem;
543
+ padding: 0.5rem;
544
+ position: fixed;
545
+ bottom: 0;
546
+ right: 0;
547
+ }
548
+
549
+ #root > div > ul {
550
+
551
+ top: 0;
552
+ }
553
+ `),
554
+ React.createElement(Router, null,
555
+ React.createElement(Navbar, { expand: "md", className: "bg-body-tertiary" },
556
+ React.createElement(Container, { fluid: true },
557
+ React.createElement(Navbar.Toggle, { "aria-controls": "basic-navbar-nav" }),
558
+ React.createElement(Navbar.Collapse, { id: "basic-navbar-nav" },
559
+ React.createElement(Nav, { className: "me-auto" },
560
+ React.createElement(Tabs, { defaultActiveKey: "/tests" },
561
+ React.createElement(Tab, { eventKey: "tests", title: React.createElement(NavLink, { to: "/tests", className: "nav-link" }, "TestPup") }),
562
+ React.createElement(Tab, { eventKey: "taskMan", title: React.createElement(NavLink, { to: "/taskMan/features", className: "nav-link" }, "TaskMan") }),
563
+ React.createElement(Tab, { eventKey: "docGal", title: React.createElement(NavLink, { to: "/docGal/fs", className: "nav-link" }, "DocGal") }),
564
+ React.createElement(Tab, { eventKey: "chatCat", title: React.createElement(NavLink, { to: "/chatCat/mostRecent", className: "nav-link" }, "ChatCat") }),
565
+ React.createElement(Tab, { eventKey: "whoThat", title: React.createElement(NavLink, { to: "/whoThat/people", className: "nav-link" }, "WhoThat") })))),
566
+ React.createElement(ButtonGroup, { className: "mb-2" },
567
+ React.createElement(Button, { id: "login", value: "1", onChange: (e) => setAdminMode(!adminMode) }, "Login")))),
568
+ React.createElement(Routes, null,
569
+ React.createElement(Route, { path: "/tests", element: React.createElement(Tests, { adminMode: adminMode, features: features, results: state.results, tests: tests }) }),
570
+ React.createElement(Route, { path: "/chatCat/mostRecent", element: React.createElement(ChatCat, { chatCatRooms: chatCatRooms, chatCatHuddles: [], users: users },
571
+ React.createElement(ChatCatPeople, { users: users })) }),
572
+ React.createElement(Route, { path: "/chatCat/bySubject", element: React.createElement(ChatCat, { chatCatRooms: chatCatRooms, chatCatHuddles: [], users: users },
573
+ React.createElement(ChatCatConversations, { users: users, conversations: [] })) }),
574
+ React.createElement(Route, { path: "/docGal/fs", element: React.createElement(DocGal, { adminMode: adminMode, setAdminMode: setAdminMode, users: users },
575
+ React.createElement(DocGalFs, { docGalFs: docGalFs })) }),
576
+ React.createElement(Route, { path: "/docGal/db", element: React.createElement(DocGal, { adminMode: adminMode, setAdminMode: setAdminMode, users: users },
577
+ React.createElement(DocGalDb, null)) }),
578
+ React.createElement(Route, { path: "/taskMan/features", element: React.createElement(TaskMan, { adminMode: adminMode, setAdminMode: setAdminMode, users: users },
579
+ React.createElement(Features, { adminMode: adminMode, features: features, results: state.results, tests: tests })) }),
580
+ React.createElement(Route, { path: "/taskMan/kanban", element: React.createElement(TaskMan, { adminMode: adminMode, setAdminMode: setAdminMode, users: users },
581
+ React.createElement(Kanban, { adminMode: adminMode, kanban: kanban, results: state.results, tests: tests, features: features, openNewColumnModal: () => {
582
+ } })) }),
583
+ React.createElement(Route, { path: "/taskMan/gantt", element: React.createElement(TaskMan, { adminMode: adminMode, setAdminMode: setAdminMode, users: users },
584
+ React.createElement(GanttChart, { adminMode: adminMode, gantt: gantt, features: features, results: state.results, tests: tests })) }),
585
+ React.createElement(Route, { path: "/whoThat/people", element: React.createElement(WhoThat, { users: users },
586
+ React.createElement(Users, { adminMode: adminMode, users: users })) }),
587
+ React.createElement(Route, { path: "/whoThat/groups", element: React.createElement(WhoThat, { users: users },
588
+ React.createElement(Users, { adminMode: adminMode, users: users })) }),
589
+ React.createElement(Route, { path: "/whoThat/org", element: React.createElement(WhoThat, { users: users },
590
+ React.createElement(OrgChart, { adminMode: adminMode, users: users })) }))),
591
+ React.createElement("footer", null,
592
+ "made with \u2764\uFE0F and ",
593
+ React.createElement("a", { href: "https://adamwong246.github.io/testeranto/" }, "testeranto "))));
594
+ };
595
+ document.addEventListener("DOMContentLoaded", function () {
596
+ const elem = document.getElementById("root");
597
+ if (elem) {
598
+ ReactDom.createRoot(elem).render(React.createElement(Report, {}));
599
+ }
600
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,34 @@
1
+ import { PM_Web } from "./PM/web";
2
+ import Testeranto from "./lib/core.js";
3
+ import { defaultTestResourceRequirement, } from "./lib/index.js";
4
+ class WebTesteranto extends Testeranto {
5
+ constructor(input, testSpecification, testImplementation, testResourceRequirement, testInterface) {
6
+ super(input, testSpecification, testImplementation, testResourceRequirement, testInterface);
7
+ }
8
+ async receiveTestResourceConfig(partialTestResource) {
9
+ const t = partialTestResource; //JSON.parse(partialTestResource);
10
+ const pm = new PM_Web(t);
11
+ const { failed, artifacts, logPromise } = await this.testJobs[0].receiveTestResourceConfig(pm);
12
+ pm.customclose();
13
+ // Promise.all([...artifacts, logPromise]).then(async () => {
14
+ // console.log("hello world");
15
+ // pm.customclose();
16
+ // // we can't close the window becuase we might be taking a screenshot
17
+ // // window.close();
18
+ // // console.log(
19
+ // // "(window as any).browser",
20
+ // // JSON.stringify(await (window as any).browser)
21
+ // // );
22
+ // // var currentWindow = (await (window as any).browser).getCurrentWindow();
23
+ // // window.close();
24
+ // // var customWindow = window.open("", "_blank", "");
25
+ // // customWindow.close();
26
+ // // this.puppetMaster.browser.page
27
+ // // window["customclose"]();
28
+ // // console.log("goodbye", window["customclose"]());
29
+ // });
30
+ }
31
+ }
32
+ export default async (input, testSpecification, testImplementation, testInterface, testResourceRequirement = defaultTestResourceRequirement) => {
33
+ return new WebTesteranto(input, testSpecification, testImplementation, testResourceRequirement, testInterface);
34
+ };
@@ -0,0 +1,12 @@
1
+ export default (config) => {
2
+ return {
3
+ bundle: true,
4
+ entryPoints: [config.features],
5
+ minify: config.minify === true,
6
+ outbase: config.outbase,
7
+ write: true,
8
+ outfile: `${config.outdir}/features.test.js`,
9
+ // external: ["graphology"],
10
+ format: "esm",
11
+ };
12
+ };