testeranto 0.79.69 → 0.80.0

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 (236) hide show
  1. package/.eslintrc.js +5 -2
  2. package/README.md +7 -108
  3. package/build-tests.ts +16 -0
  4. package/dist/common/build-tests.js +38 -0
  5. package/dist/common/init-docs.js +8 -0
  6. package/dist/common/run-tests.js +34 -0
  7. package/dist/common/src/Aider.js +96 -0
  8. package/dist/common/src/Init.js +10 -0
  9. package/dist/common/{PM → src/PM}/main.js +9 -3
  10. package/dist/common/{Puppeteer.js → src/Puppeteer.js} +8 -4
  11. package/dist/common/{SubPackages → src/SubPackages}/react-dom/jsx/web.js +37 -38
  12. package/dist/common/{esbuildConfigs → src/esbuildConfigs}/inputFilesPlugin.js +5 -2
  13. package/dist/common/{esbuildConfigs → src/esbuildConfigs}/node.js +5 -3
  14. package/dist/common/{esbuildConfigs → src/esbuildConfigs}/web.js +1 -1
  15. package/dist/common/{lib → src/lib}/abstractBase.js +41 -13
  16. package/dist/common/{lib → src/lib}/basebuilder.js +8 -0
  17. package/dist/common/testeranto.js +15 -0
  18. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  19. package/dist/module/build-tests.js +10 -0
  20. package/dist/module/init-docs.js +3 -0
  21. package/dist/module/run-tests.js +6 -0
  22. package/dist/module/src/Aider.js +89 -0
  23. package/dist/module/src/Init.js +5 -0
  24. package/dist/module/{PM → src/PM}/main.js +9 -3
  25. package/dist/module/{Puppeteer.js → src/Puppeteer.js} +8 -4
  26. package/dist/module/{SubPackages → src/SubPackages}/react-dom/jsx/web.js +37 -38
  27. package/dist/module/{esbuildConfigs → src/esbuildConfigs}/inputFilesPlugin.js +5 -2
  28. package/dist/module/{esbuildConfigs → src/esbuildConfigs}/node.js +4 -2
  29. package/dist/module/{esbuildConfigs → src/esbuildConfigs}/web.js +1 -1
  30. package/dist/module/{lib → src/lib}/abstractBase.js +41 -13
  31. package/dist/module/{lib → src/lib}/basebuilder.js +8 -0
  32. package/dist/module/testeranto.js +13 -0
  33. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  34. package/dist/types/build-tests.d.ts +3 -0
  35. package/dist/types/init-docs.d.ts +2 -0
  36. package/dist/types/run-tests.d.ts +2 -0
  37. package/dist/types/src/Aider.d.ts +1 -0
  38. package/dist/types/{PM → src/PM}/index.d.ts +1 -1
  39. package/dist/types/{Types.d.ts → src/Types.d.ts} +3 -2
  40. package/dist/types/testeranto.d.ts +16 -0
  41. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  42. package/init-docs.ts +5 -0
  43. package/package.json +49 -20
  44. package/run-tests.ts +9 -0
  45. package/src/Aider.ts +125 -0
  46. package/src/Init.ts +0 -31
  47. package/src/PM/index.ts +1 -1
  48. package/src/PM/main.ts +11 -5
  49. package/src/Puppeteer.ts +11 -4
  50. package/src/SubPackages/react-dom/jsx/web.ts +46 -49
  51. package/src/Types.ts +3 -1
  52. package/src/esbuildConfigs/inputFilesPlugin.ts +32 -30
  53. package/src/esbuildConfigs/node.ts +2 -2
  54. package/src/esbuildConfigs/web.ts +1 -1
  55. package/src/lib/abstractBase.ts +42 -15
  56. package/src/lib/basebuilder.ts +9 -0
  57. package/testeranto.ts +13 -0
  58. package/tsconfig.common.json +12 -4
  59. package/tsconfig.json +9 -2
  60. package/tsconfig.module.json +2 -2
  61. package/tsconfig.types.json +1 -1
  62. package/Report.Dockerfile +0 -44
  63. package/dist/common/Features.js +0 -51
  64. package/dist/common/Init.js +0 -30
  65. package/dist/common/Reporter.js +0 -112
  66. package/dist/common/Scheduler.js +0 -1
  67. package/dist/common/TaskManBackEnd.js +0 -167
  68. package/dist/common/mongooseSchemas.js +0 -56
  69. package/dist/common/preload.js +0 -15
  70. package/dist/common/report.html.js +0 -31
  71. package/dist/module/ExampleTab.js +0 -112
  72. package/dist/module/Features.js +0 -41
  73. package/dist/module/Init.js +0 -25
  74. package/dist/module/Reporter.js +0 -107
  75. package/dist/module/Scheduler.js +0 -1
  76. package/dist/module/TaskManBackEnd.js +0 -162
  77. package/dist/module/TaskManFrontEnd.js +0 -605
  78. package/dist/module/mongooseSchemas.js +0 -50
  79. package/dist/module/preload.js +0 -15
  80. package/dist/module/report.html.js +0 -29
  81. package/dist/prebuild/TaskManBackEnd.mjs +0 -170
  82. package/dist/prebuild/TaskManFrontEnd.css +0 -12301
  83. package/dist/prebuild/TaskManFrontEnd.js +0 -81262
  84. package/dist/types/Features.d.ts +0 -35
  85. package/dist/types/Reporter.d.ts +0 -1
  86. package/dist/types/Scheduler.d.ts +0 -0
  87. package/dist/types/TaskManBackEnd.d.ts +0 -3
  88. package/dist/types/mongooseSchemas.d.ts +0 -124
  89. package/dist/types/preload.d.ts +0 -0
  90. package/dist/types/report.html.d.ts +0 -2
  91. package/src/ExampleTab.tsx +0 -219
  92. package/src/Features.ts +0 -64
  93. package/src/Reporter.ts +0 -126
  94. package/src/Scheduler.ts +0 -0
  95. package/src/TaskManBackEnd.ts +0 -226
  96. package/src/TaskManFrontEnd.tsx +0 -1254
  97. package/src/mongooseSchemas.ts +0 -105
  98. package/src/preload.ts +0 -17
  99. package/src/report.html.ts +0 -29
  100. package/tests/Rectangle.test.ts +0 -189
  101. package/trash/TaskMan.Dockerfile +0 -23
  102. package/trash/TaskMan1.Dockerfile +0 -43
  103. package/trash/devBot.dockerfile +0 -12
  104. package/trash/docker-compose-dev.yml +0 -9
  105. package/trash/docker-compose-prod.yml +0 -18
  106. package/trash/electronBuild.ts +0 -32
  107. /package/dist/common/{Node.js → src/Node.js} +0 -0
  108. /package/dist/common/{PM → src/PM}/index.js +0 -0
  109. /package/dist/common/{PM → src/PM}/node.js +0 -0
  110. /package/dist/common/{PM → src/PM}/web.js +0 -0
  111. /package/dist/common/{Project.js → src/Project.js} +0 -0
  112. /package/dist/common/{SubPackages → src/SubPackages}/puppeteer.js +0 -0
  113. /package/dist/common/{SubPackages → src/SubPackages}/react/component/node.js +0 -0
  114. /package/dist/common/{SubPackages → src/SubPackages}/react/component/web.js +0 -0
  115. /package/dist/common/{SubPackages → src/SubPackages}/react/jsx/index.js +0 -0
  116. /package/dist/common/{SubPackages → src/SubPackages}/react/jsx/node.js +0 -0
  117. /package/dist/common/{SubPackages → src/SubPackages}/react/jsx/web.js +0 -0
  118. /package/dist/common/{SubPackages → src/SubPackages}/react-dom/component/node.js +0 -0
  119. /package/dist/common/{SubPackages → src/SubPackages}/react-dom/component/web.js +0 -0
  120. /package/dist/common/{SubPackages → src/SubPackages}/react-dom/jsx/index.js +0 -0
  121. /package/dist/common/{SubPackages → src/SubPackages}/react-dom/jsx/node.js +0 -0
  122. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/MemoExoticComponent/node.js +0 -0
  123. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/component/index.js +0 -0
  124. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/component/interface.js +0 -0
  125. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/component/node.js +0 -0
  126. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/component/web.js +0 -0
  127. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/fc/node.js +0 -0
  128. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/fc/web.js +0 -0
  129. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx/index.js +0 -0
  130. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx/node.js +0 -0
  131. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx/web.js +0 -0
  132. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/index.js +0 -0
  133. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/node.js +0 -0
  134. /package/dist/common/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/web.js +0 -0
  135. /package/dist/common/{Types.js → src/Types.js} +0 -0
  136. /package/dist/common/{Web.js → src/Web.js} +0 -0
  137. /package/dist/common/{esbuildConfigs → src/esbuildConfigs}/features.js +0 -0
  138. /package/dist/common/{esbuildConfigs → src/esbuildConfigs}/index.js +0 -0
  139. /package/dist/common/{esbuildConfigs → src/esbuildConfigs}/report.js +0 -0
  140. /package/dist/common/{esbuildConfigs → src/esbuildConfigs}/tests.js +0 -0
  141. /package/dist/common/{lib → src/lib}/classBuilder.js +0 -0
  142. /package/dist/common/{lib → src/lib}/core.js +0 -0
  143. /package/dist/common/{lib → src/lib}/index.js +0 -0
  144. /package/dist/common/{lib → src/lib}/types.js +0 -0
  145. /package/dist/common/{puppeteerConfiger.js → src/puppeteerConfiger.js} +0 -0
  146. /package/dist/common/{utils.js → src/utils.js} +0 -0
  147. /package/dist/common/{web.html.js → src/web.html.js} +0 -0
  148. /package/dist/module/{Node.js → src/Node.js} +0 -0
  149. /package/dist/module/{PM → src/PM}/index.js +0 -0
  150. /package/dist/module/{PM → src/PM}/node.js +0 -0
  151. /package/dist/module/{PM → src/PM}/web.js +0 -0
  152. /package/dist/module/{Project.js → src/Project.js} +0 -0
  153. /package/dist/module/{SubPackages → src/SubPackages}/puppeteer.js +0 -0
  154. /package/dist/module/{SubPackages → src/SubPackages}/react/component/node.js +0 -0
  155. /package/dist/module/{SubPackages → src/SubPackages}/react/component/web.js +0 -0
  156. /package/dist/module/{SubPackages → src/SubPackages}/react/jsx/index.js +0 -0
  157. /package/dist/module/{SubPackages → src/SubPackages}/react/jsx/node.js +0 -0
  158. /package/dist/module/{SubPackages → src/SubPackages}/react/jsx/web.js +0 -0
  159. /package/dist/module/{SubPackages → src/SubPackages}/react-dom/component/node.js +0 -0
  160. /package/dist/module/{SubPackages → src/SubPackages}/react-dom/component/web.js +0 -0
  161. /package/dist/module/{SubPackages → src/SubPackages}/react-dom/jsx/index.js +0 -0
  162. /package/dist/module/{SubPackages → src/SubPackages}/react-dom/jsx/node.js +0 -0
  163. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/MemoExoticComponent/node.js +0 -0
  164. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/component/index.js +0 -0
  165. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/component/interface.js +0 -0
  166. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/component/node.js +0 -0
  167. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/component/web.js +0 -0
  168. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/fc/node.js +0 -0
  169. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/fc/web.js +0 -0
  170. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx/index.js +0 -0
  171. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx/node.js +0 -0
  172. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx/web.js +0 -0
  173. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/index.js +0 -0
  174. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/node.js +0 -0
  175. /package/dist/module/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/web.js +0 -0
  176. /package/dist/module/{Types.js → src/Types.js} +0 -0
  177. /package/dist/module/{Web.js → src/Web.js} +0 -0
  178. /package/dist/module/{esbuildConfigs → src/esbuildConfigs}/features.js +0 -0
  179. /package/dist/module/{esbuildConfigs → src/esbuildConfigs}/index.js +0 -0
  180. /package/dist/module/{esbuildConfigs → src/esbuildConfigs}/report.js +0 -0
  181. /package/dist/module/{esbuildConfigs → src/esbuildConfigs}/tests.js +0 -0
  182. /package/dist/module/{lib → src/lib}/classBuilder.js +0 -0
  183. /package/dist/module/{lib → src/lib}/core.js +0 -0
  184. /package/dist/module/{lib → src/lib}/index.js +0 -0
  185. /package/dist/module/{lib → src/lib}/types.js +0 -0
  186. /package/dist/module/{puppeteerConfiger.js → src/puppeteerConfiger.js} +0 -0
  187. /package/dist/module/{utils.js → src/utils.js} +0 -0
  188. /package/dist/module/{web.html.js → src/web.html.js} +0 -0
  189. /package/dist/types/{Init.d.ts → src/Init.d.ts} +0 -0
  190. /package/dist/types/{Node.d.ts → src/Node.d.ts} +0 -0
  191. /package/dist/types/{PM → src/PM}/main.d.ts +0 -0
  192. /package/dist/types/{PM → src/PM}/node.d.ts +0 -0
  193. /package/dist/types/{PM → src/PM}/web.d.ts +0 -0
  194. /package/dist/types/{Project.d.ts → src/Project.d.ts} +0 -0
  195. /package/dist/types/{Puppeteer.d.ts → src/Puppeteer.d.ts} +0 -0
  196. /package/dist/types/{SubPackages → src/SubPackages}/puppeteer.d.ts +0 -0
  197. /package/dist/types/{SubPackages → src/SubPackages}/react/component/node.d.ts +0 -0
  198. /package/dist/types/{SubPackages → src/SubPackages}/react/component/web.d.ts +0 -0
  199. /package/dist/types/{SubPackages → src/SubPackages}/react/jsx/index.d.ts +0 -0
  200. /package/dist/types/{SubPackages → src/SubPackages}/react/jsx/node.d.ts +0 -0
  201. /package/dist/types/{SubPackages → src/SubPackages}/react/jsx/web.d.ts +0 -0
  202. /package/dist/types/{SubPackages → src/SubPackages}/react-dom/component/node.d.ts +0 -0
  203. /package/dist/types/{SubPackages → src/SubPackages}/react-dom/component/web.d.ts +0 -0
  204. /package/dist/types/{SubPackages → src/SubPackages}/react-dom/jsx/index.d.ts +0 -0
  205. /package/dist/types/{SubPackages → src/SubPackages}/react-dom/jsx/node.d.ts +0 -0
  206. /package/dist/types/{SubPackages → src/SubPackages}/react-dom/jsx/web.d.ts +0 -0
  207. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/MemoExoticComponent/node.d.ts +0 -0
  208. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/component/index.d.ts +0 -0
  209. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/component/interface.d.ts +0 -0
  210. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/component/node.d.ts +0 -0
  211. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/component/web.d.ts +0 -0
  212. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/fc/node.d.ts +0 -0
  213. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/fc/web.d.ts +0 -0
  214. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx/index.d.ts +0 -0
  215. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx/node.d.ts +0 -0
  216. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx/web.d.ts +0 -0
  217. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/index.d.ts +0 -0
  218. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/node.d.ts +0 -0
  219. /package/dist/types/{SubPackages → src/SubPackages}/react-test-renderer/jsx-promised/web.d.ts +0 -0
  220. /package/dist/types/{Web.d.ts → src/Web.d.ts} +0 -0
  221. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/features.d.ts +0 -0
  222. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/index.d.ts +0 -0
  223. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/inputFilesPlugin.d.ts +0 -0
  224. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/node.d.ts +0 -0
  225. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/report.d.ts +0 -0
  226. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/tests.d.ts +0 -0
  227. /package/dist/types/{esbuildConfigs → src/esbuildConfigs}/web.d.ts +0 -0
  228. /package/dist/types/{lib → src/lib}/abstractBase.d.ts +0 -0
  229. /package/dist/types/{lib → src/lib}/basebuilder.d.ts +0 -0
  230. /package/dist/types/{lib → src/lib}/classBuilder.d.ts +0 -0
  231. /package/dist/types/{lib → src/lib}/core.d.ts +0 -0
  232. /package/dist/types/{lib → src/lib}/index.d.ts +0 -0
  233. /package/dist/types/{lib → src/lib}/types.d.ts +0 -0
  234. /package/dist/types/{puppeteerConfiger.d.ts → src/puppeteerConfiger.d.ts} +0 -0
  235. /package/dist/types/{utils.d.ts → src/utils.d.ts} +0 -0
  236. /package/dist/types/{web.html.d.ts → src/web.html.d.ts} +0 -0
@@ -1,1254 +0,0 @@
1
- import { ReactFlow } from '@xyflow/react';
2
- import { Button, ButtonGroup, Container, Dropdown, DropdownButton, Form, Navbar, NavDropdown, Table, ToggleButton } from "react-bootstrap";
3
- import mongoose from "mongoose";
4
- import React, { useEffect, useState } from "react";
5
- import ReactDom from "react-dom/client";
6
- import Col from 'react-bootstrap/Col';
7
- import Nav from 'react-bootstrap/Nav';
8
- import Row from 'react-bootstrap/Row';
9
- import Tab from 'react-bootstrap/Tab';
10
- import Tabs from 'react-bootstrap/Tabs';
11
- import { BrowserRouter as Router, Route, NavLink, Routes } from 'react-router-dom';
12
- import { UncontrolledBoard, KanbanBoard } from '@caldwell619/react-kanban'
13
- import '@caldwell619/react-kanban/dist/styles.css'
14
- import { Gantt, Task, EventOption, StylingOption, ViewMode, DisplayOption } from 'gantt-task-react';
15
- import "gantt-task-react/dist/index.css";
16
- import 'bootstrap/dist/css/bootstrap.min.css';
17
- import '@xyflow/react/dist/style.css';
18
- import { IRunTime } from "./lib/types";
19
-
20
- import {
21
- IFeature, featuresSchema, ganttSchema, IKanban, IUser, kanbanSchema, userSchema,
22
- IGantt,
23
- IChatCatHuddle,
24
- IChatCatRoom
25
- } from "./mongooseSchemas";
26
-
27
- const InputElementString = ({ tree, name }: { tree: any, name: string }) => {
28
- console.log("mark string", tree)
29
-
30
- // return <Form.Control type="email" placeholder={name} />
31
- return <Form.Group className="mb-3" controlId={name}>
32
- <Form.Label>{name}</Form.Label>
33
- <Form.Control placeholder={name} />
34
-
35
- </Form.Group>
36
- };
37
-
38
- const InputElementArray = ({ tree, name }: { tree: any, name: string }) => {
39
- console.log("mark5", tree)
40
-
41
- return <Form.Control type="email" placeholder="Enter email" />
42
- };
43
-
44
- const InputElementObject = ({ tree, name }: { tree: any, name?: string }) => {
45
- // const x = schema.path(path);
46
-
47
- console.log("mark4", tree, tree.properties)
48
-
49
- return <div>
50
- {
51
- ...Object.keys(tree.properties).map((name) => {
52
-
53
- console.log("mark6", name, tree.properties[name].type)
54
-
55
- if (tree.properties[name].type === "object") {
56
- return <InputElementObject tree={tree.properties[name]} name={name} ></InputElementObject >
57
- }
58
-
59
- if (tree.properties[name].type === "string") {
60
- return <InputElementString tree={tree.properties[name]} name={name} ></InputElementString >
61
- }
62
-
63
- if (Array.isArray(tree.properties[name].type)) {
64
- return <InputElementArray tree={tree.properties[name]} name={name} ></InputElementArray >
65
- }
66
-
67
- })
68
- }
69
- </div >
70
-
71
-
72
- // // if (tree.type === "string") {
73
- // // return <InputElementString tree={tree.properties[path]} path={path}></InputElementString >
74
- // // }
75
-
76
-
77
- // return <div>IDK</div>
78
- // return <Form.Group>
79
- // {/* {
80
- // schema.get(path)
81
- // } */}
82
- // </Form.Group>
83
-
84
- };
85
-
86
-
87
- const InputForm = ({ schema, path }: { schema: mongoose.Schema, path?: string }) => {
88
-
89
- return <Form.Group>
90
-
91
- <InputElementObject tree={schema.toJSONSchema()} ></InputElementObject>
92
-
93
-
94
- </Form.Group>
95
-
96
- };
97
-
98
- const Crud2 = ({ collection, collectionName, schema }: { collection: any, collectionName: string, schema: mongoose.Schema }) => {
99
- return <div>
100
- {/* <h3>{collectionName}</h3> */}
101
- <Table striped bordered hover>
102
- <thead>
103
- <tr>
104
- <th>id</th>
105
- <th></th>
106
-
107
- </tr>
108
- </thead>
109
- <tbody>
110
- <tr>
111
-
112
- <td>add new record</td>
113
- <td>
114
- <Form>
115
- {/* <Form.Group className="mb-3" controlId="formBasicEmail">
116
- <Form.Label>Email address</Form.Label>
117
- <Form.Control type="email" placeholder="Enter email" />
118
- <Form.Text className="text-muted">
119
- We'll never share your email with anyone else.
120
- </Form.Text>
121
- </Form.Group>
122
-
123
- <Form.Group className="mb-3" controlId="formBasicPassword">
124
- <Form.Label>Password</Form.Label>
125
- <Form.Control type="password" placeholder="Password" />
126
- </Form.Group>
127
- <Form.Group className="mb-3" controlId="formBasicCheckbox">
128
- <Form.Check type="checkbox" label="Check me out" />
129
- </Form.Group> */}
130
-
131
-
132
- <InputForm schema={schema}></InputForm>
133
-
134
-
135
- <Button variant="primary" type="submit">
136
- Submit
137
- </Button>
138
-
139
-
140
- </Form>
141
- </td>
142
-
143
- </tr>
144
- {
145
- collection.map((doc) => {
146
- return <tr>
147
- <td>{doc._id}</td>
148
- <td>{JSON.stringify(doc, null, 2)}</td>
149
- </tr>
150
- })
151
- }
152
-
153
-
154
- </tbody>
155
- </Table>
156
- </div>
157
- }
158
-
159
- const Features = ({ features, tests, results, adminMode }) => {
160
- if (!adminMode) return <Tab.Container id="left-tabs-example5" defaultActiveKey="feature-0">
161
- <Row>
162
- <Col sm={4}>
163
- <Nav variant="pills" className="flex-column">
164
- {(features).map((feature, ndx) => <Nav.Item key={ndx}>
165
- <Nav.Link eventKey={`feature/${feature._id}`}>
166
- {feature.title}
167
- </Nav.Link>
168
- </Nav.Item>)}
169
- </Nav>
170
- </Col>
171
- <Col sm={8}>
172
- <Tab.Content>
173
- {(features).map((feature, ndx) => {
174
- // const feature = features[featureKey];
175
- return (
176
- <Tab.Pane eventKey={`feature/${feature._id}`} key={ndx}>
177
- <pre>{JSON.stringify(feature, null, 2)}</pre>
178
-
179
- {/* <pre>{JSON.stringify(results, null, 2)}</pre> */}
180
-
181
- <ol>
182
- {
183
- results.filter((result) => {
184
- console.log("mark1", (result.testresults.src));
185
- // return test._id === feature._id
186
- // (result.testresults.givens.features || []).includes(feature._id)
187
-
188
- // console.log("ark3", new Set(result.testresults.givens.reduce((mm: string[], el) => {
189
- // mm = mm.concat(el.features)
190
-
191
- // // console.log("mark2", el);
192
-
193
- // // el.features.forEach((feature) => {
194
- // // mm.add(feature)
195
- // // });
196
- // return mm;
197
- // }, [])));
198
-
199
-
200
- return new Set(result.testresults.givens.reduce((mm: string[], el) => {
201
- mm = mm.concat(el.features)
202
-
203
- // console.log("mark2", el);
204
-
205
- // el.features.forEach((feature) => {
206
- // mm.add(feature)
207
- // });
208
- return mm;
209
- }, [])).has(feature._id)
210
-
211
- }).map((result) => {
212
- return <li>
213
- {/* <pre>{JSON.stringify(test.src, null, 2)}</pre> */}
214
- {result.src}
215
- </li>
216
- })
217
- }
218
- </ol>
219
-
220
- </Tab.Pane>
221
- )
222
- }
223
- )}
224
- </Tab.Content>
225
- </Col>
226
- </Row>
227
- </Tab.Container>;
228
-
229
-
230
- return <Crud2 schema={featuresSchema} collectionName="features" collection={features}></Crud2>
231
- };
232
-
233
- const Tests = ({ tests, results, features, adminMode }) => {
234
- return <div>
235
- <Navbar expand="md" className="bg-body-tertiary">
236
- <Container fluid>
237
- <NavDropdown align="end" title="User" id="basic-nav-dropdown">
238
- {/* {
239
- users.map((user) => {
240
- return <NavDropdown.Item href="#action/3.1">
241
- {user.email}
242
- </NavDropdown.Item>
243
- })
244
- } */}
245
- {/* <NavDropdown.Item href="#action/3.1">Action</NavDropdown.Item>
246
- <NavDropdown.Item href="#action/3.2">
247
- Another action
248
- </NavDropdown.Item>
249
- <NavDropdown.Item href="#action/3.3">Something</NavDropdown.Item> */}
250
-
251
- <NavDropdown.Item href="#action/3.4">
252
- localhost:8080
253
- </NavDropdown.Item>
254
- <NavDropdown.Divider />
255
- <NavDropdown.Item href="#action/3.4">
256
- origin/master
257
- </NavDropdown.Item>
258
- <NavDropdown.Item href="#action/3.4">
259
- origin/feature
260
- </NavDropdown.Item>
261
- </NavDropdown>
262
-
263
- </Container>
264
- </Navbar>
265
-
266
- <Tab.Container id="left-tabs-example5" defaultActiveKey="feature-0">
267
- <Row>
268
- <Col sm={4}>
269
- <Nav variant="pills" className="flex-column">
270
- {
271
- tests.tests.map((t, ndx) =>
272
- <Nav.Item key={ndx}>
273
- <Nav.Link eventKey={`test-${ndx}`}>
274
- {t[0]} - {t[1]}
275
- </Nav.Link>
276
- </Nav.Item>
277
- )
278
- }
279
- </Nav>
280
- </Col>
281
-
282
- <Col sm={4}>
283
- <Tab.Content>
284
-
285
- {
286
- tests.tests.map((t, ndx) =>
287
- <Tab.Pane eventKey={`test-${ndx}`}>
288
- {/* <pre>{JSON.stringify(t, null, 2)}</pre> */}
289
- {/* <pre>{JSON.stringify(state.results, null, 2)}</pre> */}
290
- <pre>{JSON.stringify(Object.entries(results).filter(([k, v]: [string, { src: string }]) => {
291
- console.log(v.src, tests.tests[ndx][0])
292
- return v.src === tests.tests[ndx][0]
293
- }), null, 2)}</pre>
294
-
295
- {/* {tests.tests.map((t, ndx) => {
296
- return (
297
- <Tab.Pane eventKey={`feature-${ndx}`} key={ndx}>
298
- <pre>{JSON.stringify(t, null, 2)}</pre>
299
- </Tab.Pane>
300
- )
301
- }
302
- )} */}
303
-
304
- </Tab.Pane>
305
-
306
- )
307
- }
308
-
309
-
310
-
311
-
312
- </Tab.Content>
313
- </Col>
314
-
315
-
316
- </Row>
317
- </Tab.Container>
318
-
319
- </div>
320
-
321
-
322
- };
323
-
324
- const TaskMan = ({ setAdminMode, users, adminMode, children }) => {
325
- return <div>
326
- <div className="row">
327
- <Navbar expand="md" className="bg-body-tertiary">
328
- <Container fluid>
329
- {/* <Navbar.Brand href="#home">testeranto</Navbar.Brand> */}
330
- <Navbar.Toggle aria-controls="basic-navbar-nav" />
331
- <Navbar.Collapse id="basic-navbar-nav">
332
- <Nav className="me-auto">
333
- < Tabs defaultActiveKey="/tests" >
334
- {/* <Tab eventKey="tests" title={<NavLink to="/tests" className="nav-link">Tests</NavLink>}></Tab> */}
335
- <Tab eventKey="features"
336
-
337
- title={<NavLink to="/taskMan/features" className="nav-link">Features</NavLink>
338
-
339
-
340
- }></Tab>
341
-
342
- <Tab eventKey="kanban" title={<NavLink to="/taskMan/kanban" className="nav-link">Kanban</NavLink>}></Tab>
343
- <Tab eventKey="gantt" title={<NavLink to="/taskMan/gantt" className="nav-link">Gantt</NavLink>}></Tab>
344
- {/* <Tab eventKey="users" title={<NavLink to="/taskMan/users" className="nav-link">Users</NavLink>}></Tab> */}
345
- </Tabs>
346
-
347
-
348
-
349
- </Nav>
350
-
351
- <NavDropdown align="end" title="User" id="basic-nav-dropdown">
352
- {
353
- users.map((user) => {
354
- return <NavDropdown.Item href="#action/3.1">
355
- {user.email}
356
- </NavDropdown.Item>
357
- })
358
- }
359
- {/* <NavDropdown.Item href="#action/3.1">Action</NavDropdown.Item>
360
- <NavDropdown.Item href="#action/3.2">
361
- Another action
362
- </NavDropdown.Item>
363
- <NavDropdown.Item href="#action/3.3">Something</NavDropdown.Item> */}
364
- <NavDropdown.Divider />
365
- <NavDropdown.Item href="#action/3.4">
366
- all
367
- </NavDropdown.Item>
368
- </NavDropdown>
369
-
370
- <ButtonGroup className="mb-2">
371
- <ToggleButton
372
- id="toggle-check"
373
- type="checkbox"
374
- variant="outline-primary"
375
- checked={adminMode}
376
- value="1"
377
- onChange={(e) => setAdminMode(!adminMode)}
378
- >
379
- ⚙️
380
- </ToggleButton>
381
- </ButtonGroup>
382
-
383
- </Navbar.Collapse>
384
- </Container>
385
-
386
-
387
- </Navbar>
388
- </div>
389
- {children}
390
- </div>
391
-
392
- };
393
-
394
- const DocGal = ({ setAdminMode, users, adminMode, children }) => {
395
- return <div>
396
- <div className="row">
397
- <Navbar expand="md" className="bg-body-tertiary">
398
- <Container fluid>
399
-
400
- <Navbar.Toggle aria-controls="basic-navbar-nav" />
401
- <Navbar.Collapse id="docGal-navbar-nav">
402
- <Nav className="me-auto">
403
- < Tabs defaultActiveKey="/fs" >
404
-
405
- <Tab eventKey="fs" title={<NavLink to="/docGal/fs" className="nav-link">FS</NavLink>}></Tab>
406
- <Tab eventKey="db" title={<NavLink to="/docGal/db" className="nav-link">DB</NavLink>}></Tab>
407
-
408
- </Tabs>
409
-
410
-
411
-
412
- </Nav>
413
-
414
-
415
-
416
- </Navbar.Collapse>
417
- </Container>
418
-
419
-
420
- </Navbar>
421
- </div>
422
- {children}
423
- </div>
424
-
425
- };
426
-
427
- const ChatCat = ({ children }: {
428
- children: any,
429
- chatCatRooms: ({ _id: string } & IChatCatRoom)[],
430
- chatCatHuddles: ({ _id: string } & any)[],
431
- users: ({ _id: string } & IUser)[],
432
-
433
- }) => {
434
- return <div>
435
- <div className="row">
436
- <Navbar expand="md" className="bg-body-tertiary">
437
- <Container fluid>
438
- <Navbar.Toggle aria-controls="basic-navbar-nav" />
439
- <Navbar.Collapse id="basic-navbar-nav">
440
- <Nav className="me-auto">
441
- < Tabs defaultActiveKey="/chatCat/mostRecent" >
442
- <Tab eventKey="/chatCat/mostRecent" title={<NavLink to="/chatCat/mostRecent" className="nav-link">Most Recent</NavLink>}></Tab>
443
- <Tab eventKey="/chatCat/bySubject" title={<NavLink to="/chatCat/bySubject" className="nav-link">by Subject</NavLink>}></Tab>
444
- </Tabs>
445
-
446
-
447
-
448
- </Nav>
449
-
450
-
451
-
452
-
453
- </Navbar.Collapse>
454
- </Container>
455
-
456
-
457
- </Navbar>
458
- </div>
459
- {children}
460
- </div>
461
- // return <div>
462
- // <Row>
463
- // <Col sm={2}>
464
-
465
- // <Nav variant="pills" className="flex-column">
466
-
467
- // <h4>Rooms</h4>
468
-
469
- // {(chatCatRooms).map((room, ndx) => <Nav.Item key={ndx}>
470
- // <Nav.Link eventKey={`chatCat/room/${room._id}`}>
471
- // {room.name}
472
- // </Nav.Link>
473
- // </Nav.Item>)}
474
-
475
- // <h4>Huddles</h4>
476
-
477
- // {(chatCatHuddles).map((huddle, ndx) => <Nav.Item key={ndx}>
478
- // <Nav.Link eventKey={`chatCat/user${huddle._id}`}>
479
- // {huddle.name}
480
- // </Nav.Link>
481
- // </Nav.Item>)}
482
-
483
- // <h4>Users</h4>
484
-
485
- // {(users).map((user, ndx) => <Nav.Item key={ndx}>
486
- // <Nav.Link eventKey={`chatCat/user/${user._id}`}>
487
- // {user.email}
488
- // </Nav.Link>
489
- // </Nav.Item>)}
490
- // </Nav>
491
- // </Col>
492
-
493
-
494
- // <Col sm={10}>
495
- // <Tab.Content>
496
- // {(chatCatRooms).map((channel, ndx) => {
497
- // return (
498
- // <Tab.Pane eventKey={`chatCat/${channel}`} key={ndx}>
499
- // <pre>{JSON.stringify(channel, null, 2)}</pre>
500
-
501
-
502
- // </Tab.Pane>
503
- // )
504
- // }
505
- // )}
506
- // </Tab.Content>
507
- // </Col>
508
- // </Row>
509
- // </div>
510
-
511
- };
512
-
513
- const WhoThat = ({ children }: {
514
- children: any,
515
- // chatCatRooms: ({ _id: string } & IChatCatRoom)[],
516
- // chatCatHuddles: ({ _id: string } & any)[],
517
- users: ({ _id: string } & IUser)[],
518
-
519
- }) => {
520
- return <div>
521
- <div className="row">
522
- <Navbar expand="md" className="bg-body-tertiary">
523
- <Container fluid>
524
- <Navbar.Toggle aria-controls="basic-navbar-nav" />
525
- <Navbar.Collapse id="basic-navbar-nav">
526
- <Nav className="me-auto">
527
- < Tabs defaultActiveKey="/whoThat/people" >
528
- <Tab eventKey="/whoThat/people" title={<NavLink to="/whoThat/people" className="nav-link">People</NavLink>}></Tab>
529
- <Tab eventKey="/whoThat/groups" title={<NavLink to="/whoThat/groups" className="nav-link">Groups</NavLink>}></Tab>
530
- <Tab eventKey="/whoThat/org" title={<NavLink to="/whoThat/org" className="nav-link">Org</NavLink>}></Tab>
531
- </Tabs>
532
-
533
-
534
-
535
- </Nav>
536
-
537
-
538
- <ButtonGroup className="mb-2">
539
- <ToggleButton
540
- id="toggle-check"
541
- type="checkbox"
542
- variant="outline-primary"
543
- checked={false}
544
- value="1"
545
- // onChange={(e) => setAdminMode(!adminMode)}
546
- >
547
- ⚙️
548
- </ToggleButton>
549
- </ButtonGroup>
550
- </Navbar.Collapse>
551
-
552
-
553
-
554
- </Container>
555
-
556
-
557
- </Navbar>
558
- </div>
559
- {children}
560
- </div>
561
- // return <div>
562
- // <Row>
563
- // <Col sm={2}>
564
-
565
- // <Nav variant="pills" className="flex-column">
566
-
567
- // <h4>Rooms</h4>
568
-
569
- // {(chatCatRooms).map((room, ndx) => <Nav.Item key={ndx}>
570
- // <Nav.Link eventKey={`chatCat/room/${room._id}`}>
571
- // {room.name}
572
- // </Nav.Link>
573
- // </Nav.Item>)}
574
-
575
- // <h4>Huddles</h4>
576
-
577
- // {(chatCatHuddles).map((huddle, ndx) => <Nav.Item key={ndx}>
578
- // <Nav.Link eventKey={`chatCat/user${huddle._id}`}>
579
- // {huddle.name}
580
- // </Nav.Link>
581
- // </Nav.Item>)}
582
-
583
- // <h4>Users</h4>
584
-
585
- // {(users).map((user, ndx) => <Nav.Item key={ndx}>
586
- // <Nav.Link eventKey={`chatCat/user/${user._id}`}>
587
- // {user.email}
588
- // </Nav.Link>
589
- // </Nav.Item>)}
590
- // </Nav>
591
- // </Col>
592
-
593
-
594
- // <Col sm={10}>
595
- // <Tab.Content>
596
- // {(chatCatRooms).map((channel, ndx) => {
597
- // return (
598
- // <Tab.Pane eventKey={`chatCat/${channel}`} key={ndx}>
599
- // <pre>{JSON.stringify(channel, null, 2)}</pre>
600
-
601
-
602
- // </Tab.Pane>
603
- // )
604
- // }
605
- // )}
606
- // </Tab.Content>
607
- // </Col>
608
- // </Row>
609
- // </div>
610
-
611
- };
612
-
613
- const Kanban = ({
614
- features, tests, results, kanban, openNewColumnModal, adminMode
615
- }: {
616
- features: IFeature[],
617
- tests: any,
618
- kanban: (IKanban & { _id: string })[],
619
- results: any,
620
- openNewColumnModal: any,
621
- adminMode: boolean,
622
- }) => {
623
-
624
- const board: KanbanBoard<any> = {
625
- columns: [
626
- {
627
- id: -1,
628
- title: 'BACKLOG',
629
- cards: features.filter((f) => f.state === undefined)
630
- },
631
- {
632
- id: 0,
633
- title: 'ARCHIVE',
634
- cards: features.filter((f) => f.state === "ARCHIVED")
635
- },
636
- ...kanban.map((kb) => {
637
- return {
638
- id: kb._id,
639
- title: kb.title,
640
- cards: features.filter((f) => f.state === kb._id)
641
- }
642
- }),
643
- // {
644
- // id: 1,
645
- // title: 'Backlog',
646
- // cards: [
647
- // {
648
- // id: 1,
649
- // title: 'Add card',
650
- // description: 'Add capability to add a card in a column'
651
- // },
652
- // ]
653
- // },
654
-
655
- ]
656
- }
657
-
658
- if (!adminMode) return <Tab.Container id="left-tabs-example8" defaultActiveKey="feature-0">
659
-
660
-
661
- <Row>
662
- <Col sm={12}>
663
- <button onClick={() => {
664
- openNewColumnModal()
665
- }}>new column</button>
666
- <UncontrolledBoard initialBoard={board} />
667
- </Col>
668
- </Row>
669
- </Tab.Container>
670
-
671
- return <Crud2 schema={kanbanSchema} collectionName="kanban" collection={kanban}></Crud2>
672
-
673
- };
674
-
675
- const GanttChart = ({ gantt, tests, results, features, adminMode }: {
676
- gantt: IGantt[],
677
- tests: any,
678
- results: any,
679
- features: any,
680
- adminMode: boolean
681
-
682
- }) => {
683
- if (!adminMode) {
684
- if (gantt.length > 1) {
685
- return <Row>
686
- <Col sm={12}>
687
- <Gantt tasks={(gantt || []).map((g: IGantt & { _id: string }) => {
688
- console.log(g)
689
- let task: Task =
690
- {
691
- start: new Date(2020, 1, 1),
692
- end: new Date(2020, 1, 2),
693
- name: g.name,
694
- id: g._id,
695
- type: g.type,
696
- progress: 45,
697
- isDisabled: false,
698
- styles: { progressColor: '#ffbb54', progressSelectedColor: '#ff9e0d' },
699
- };
700
-
701
- console.log(task)
702
- return task;
703
- })} />
704
- </Col>
705
- </Row>
706
- } else {
707
- return <p>you need to add some gantt items</p>
708
- }
709
- }
710
-
711
- return <Crud2 schema={ganttSchema} collectionName="gantt" collection={gantt}></Crud2>
712
-
713
- };
714
-
715
- const Users = ({ users, adminMode }) => {
716
- if (!adminMode) return <Tab.Container id="left-tabs-example9" defaultActiveKey="feature-0">
717
- <Row>
718
- <Col sm={12}>
719
- <ul>
720
- {
721
- users.map((user) => {
722
- return <li>
723
- {user.email}
724
- </li>
725
- })
726
- }
727
- </ul>
728
- </Col>
729
- </Row>
730
- </Tab.Container>
731
-
732
- return <Crud2 schema={userSchema} collectionName="users" collection={users} ></Crud2>
733
-
734
- };
735
-
736
- const OrgChart = ({ users, adminMode }) => {
737
-
738
- const initialNodes = [
739
- { id: '1', position: { x: 0, y: 0 }, data: { label: '1' } },
740
- { id: '2', position: { x: 0, y: 100 }, data: { label: '2' } },
741
- ];
742
- const initialEdges = [{ id: 'e1-2', source: '1', target: '2' }];
743
-
744
-
745
- if (!adminMode) return <Tab.Container id="left-tabs-example9" defaultActiveKey="feature-0">
746
- <Row>
747
- <Col sm={12}>
748
- <div style={{ width: '100vw', height: '100vh' }}>
749
- <ReactFlow nodes={[
750
- ...initialNodes,
751
- ...users.map((user) => {
752
- return ({ id: user._id, position: { x: 0, y: 0 }, data: { label: user.email } })
753
- })
754
- ]} edges={initialEdges} />
755
- </div>
756
- </Col>
757
- </Row>
758
- </Tab.Container>
759
-
760
- return <Crud2 schema={userSchema} collectionName="users" collection={users} ></Crud2>
761
-
762
- };
763
-
764
- const DocGalFsNav = ({ docGalFs, filepath }: {
765
- filepath: string
766
- docGalFs: {
767
- name: string,
768
- children: any[]
769
- }[]
770
- }) => {
771
-
772
- return <div>
773
- <ul>
774
- {
775
- ...docGalFs.map((lm) => {
776
- return <li>
777
- <a href={`${filepath}/${lm.name}`}>{lm.name}</a>
778
- {/* <p>{lm.name}</p>
779
- <p>{lm.name}</p> */}
780
- {
781
- lm.children.length > 0 && <DocGalFsNav docGalFs={lm.children} filepath={`${filepath}/${lm.name}`} />
782
- }
783
- </li>
784
- })
785
- }
786
- </ul>
787
- </div>
788
- }
789
-
790
- const DocGalFs = ({
791
- docGalFs,
792
- // tests, results, features, adminMode
793
- }: {
794
- docGalFs: any[],
795
- // tests: any,
796
- // results: any,
797
- // features: any,
798
- // adminMode: boolean
799
-
800
- }) => {
801
- // return <Row>
802
- // <Col sm={12}>
803
- // {JSON.stringify(docGalFs, null, 2)}
804
- // </Col>
805
- // </Row>
806
-
807
- return <Row>
808
- <Col sm={4}>
809
- <DocGalFsNav docGalFs={docGalFs} filepath="" />
810
- {/* {JSON.stringify(docGalFs, null, 2)} */}
811
- {/* <Nav variant="pills" className="flex-column">
812
- {
813
- docGalFs.map((t, ndx) =>
814
- <Nav.Item key={ndx}>
815
- <Nav.Link eventKey={`docGalFs-${ndx}`}>
816
- {t}
817
- </Nav.Link>
818
- </Nav.Item>
819
- )
820
- }
821
- </Nav> */}
822
- </Col>
823
-
824
- <Col sm={4}>
825
- <Tab.Content>
826
-
827
-
828
-
829
-
830
-
831
-
832
- </Tab.Content>
833
- </Col>
834
-
835
-
836
- </Row>
837
-
838
- };
839
-
840
- const DocGalDb = ({
841
- // gantt, tests, results, features, adminMode
842
- }: {
843
- // gantt: IGantt[],
844
- // tests: any,
845
- // results: any,
846
- // features: any,
847
- // adminMode: boolean
848
-
849
- }) => {
850
- return <Row>
851
- <Col sm={12}>
852
- DocGalDb
853
- </Col>
854
- </Row>
855
-
856
- };
857
-
858
- const ChatCatPeople = ({ users }) => {
859
- return <Tab.Container id="left-tabs-example9" defaultActiveKey="feature-0">
860
- <Row>
861
- <Col sm={12}>
862
- <ul>
863
- {
864
- users.map((user) => {
865
- return <li>
866
- {user.email}
867
- </li>
868
- })
869
- }
870
- </ul>
871
- </Col>
872
- </Row>
873
- </Tab.Container>
874
- };
875
-
876
- const ChatCatConversations = ({ users, conversations }: {
877
- users: any,
878
- conversations: any;
879
- }) => {
880
- // return <Tab.Container id="left-tabs-example9" defaultActiveKey="feature-0">
881
- // <Row>
882
- // <Col sm={12}>
883
- // <ul>
884
- // {
885
- // users.map((user) => {
886
- // return <li>
887
- // {user.email}
888
- // </li>
889
- // })
890
- // }
891
- // </ul>
892
- // </Col>
893
- // </Row>
894
- // </Tab.Container>
895
- return <Row>
896
- <Navbar expand="md" className="bg-body-tertiary">
897
- <Container fluid>
898
- <Navbar.Toggle aria-controls="basic-navbar-nav" />
899
- <Navbar.Collapse id="basic-navbar-nav">
900
- <Nav className="me-auto">
901
- < Tabs defaultActiveKey="/chatCat/mostRecent" >
902
- <Tab eventKey="/chatCat/mostRecent" title={<NavLink to="/chatCat/mostRecent" className="nav-link">Feature</NavLink>}></Tab>
903
- <Tab eventKey="/chatCat/bySubject" title={<NavLink to="/chatCat/bySubject" className="nav-link">Kanban</NavLink>}></Tab>
904
- <Tab eventKey="/chatCat/bySubject" title={<NavLink to="/chatCat/bySubject" className="nav-link">Gantt</NavLink>}></Tab>
905
- <Tab eventKey="/chatCat/bySubject" title={<NavLink to="/chatCat/bySubject" className="nav-link">FS docs</NavLink>}></Tab>
906
- <Tab eventKey="/chatCat/bySubject" title={<NavLink to="/chatCat/bySubject" className="nav-link">DB docs</NavLink>}></Tab>
907
- <Tab eventKey="/chatCat/bySubject" title={<NavLink to="/chatCat/bySubject" className="nav-link">Groups</NavLink>}></Tab>
908
- </Tabs>
909
-
910
-
911
-
912
- </Nav>
913
-
914
- <ButtonGroup className="mb-2">
915
- <ToggleButton
916
- id="toggle-check"
917
- type="checkbox"
918
- variant="outline-primary"
919
- checked={false}
920
- value="1"
921
- // onChange={(e) => setAdminMode(!adminMode)}
922
- >
923
- ⚙️
924
- </ToggleButton>
925
- </ButtonGroup>
926
-
927
-
928
- </Navbar.Collapse>
929
- </Container>
930
-
931
-
932
- </Navbar>
933
- </Row>
934
- };
935
-
936
- const ChatCatRooms = ({ users, rooms }) => {
937
- return <Tab.Container id="left-tabs-example9" defaultActiveKey="feature-0">
938
- <Row>
939
- <Col sm={12}>
940
- <ul>
941
- {
942
- users.map((user) => {
943
- return <li>
944
- {user.email}
945
- </li>
946
- })
947
- }
948
- </ul>
949
- </Col>
950
- </Row>
951
- </Tab.Container>
952
- };
953
-
954
- const Report = () => {
955
-
956
- const [state, setState] = useState<{
957
- tests: any[],
958
- buildDir: string,
959
- results: any
960
- }>({
961
- tests: [],
962
- buildDir: "",
963
- results: {}
964
- });
965
-
966
- const [tests, setTests] = useState<
967
- {
968
- tests: any[],
969
- buildDir: string,
970
- }
971
-
972
- >
973
- ({
974
- tests: [],
975
- buildDir: ""
976
- });
977
-
978
- const [features, setFeatures] = useState<IFeature[]>(
979
- []
980
- );
981
-
982
-
983
- const [kanban, setKanban] = useState<any[]>(
984
- []
985
- );
986
-
987
- const importResults = async () => {
988
- const config = await (await fetch("./testeranto.json")).json();
989
- const results = await Promise.all(config.tests.map((test) => {
990
- return new Promise(async (res, rej) => {
991
- const src: string = test[0];
992
- const runtime: IRunTime = test[1];
993
- const s: string = [tests.buildDir, runtime as string].concat(src.split(".").slice(0, - 1).join(".")).join("/");
994
- const exitcode = await (await fetch("/docs" + "/" + s + "/exitcode")).text()
995
- const log = await (await fetch("/docs" + "/" + s + "/log.txt")).text()
996
- const testresults = await (await fetch("/docs" + "/" + s + "/tests.json")).json()
997
- const manifest = await (await fetch("/docs" + "/" + s + "/manifest.json")).json()
998
-
999
- res({ src, exitcode, log, testresults, manifest })
1000
- })
1001
- }))
1002
-
1003
- setState({ tests: config.tests as any, results, buildDir: config.buildDir })
1004
- };
1005
-
1006
- const importFeatures = async () => {
1007
- fetch('http://localhost:3000/features.json')
1008
- .then(response => response.json())
1009
- .then(json => setFeatures(json))
1010
- .catch(error => console.error(error));
1011
-
1012
- };
1013
- useEffect(() => { importFeatures(); }, []);
1014
-
1015
- const importKanban = async () => {
1016
- fetch('http://localhost:3000/kanbans.json')
1017
- .then(response => response.json())
1018
- .then(json => setKanban(json))
1019
- .catch(error => console.error(error));
1020
-
1021
- };
1022
- useEffect(() => { importKanban(); }, []);
1023
-
1024
- const [users, setUsers] = useState<({ _id: string } & IUser)[]>(
1025
- []
1026
- );
1027
-
1028
-
1029
- const importUsers = async () => {
1030
- fetch('http://localhost:3000/users.json')
1031
- .then(response => response.json())
1032
- .then(json => setUsers(json))
1033
- .catch(error => console.error(error));
1034
-
1035
- };
1036
- useEffect(() => { importUsers(); }, []);
1037
-
1038
-
1039
- const [gantt, setGantt] = useState<IGantt[]>(
1040
- []
1041
- );
1042
-
1043
- const importGantt = async () => {
1044
- fetch('http://localhost:3000/gantts.json')
1045
- .then(response => response.json())
1046
- .then(json => setGantt(json))
1047
- .catch(error => console.error(error));
1048
-
1049
- };
1050
- useEffect(() => { importGantt(); }, []);
1051
-
1052
- const importTests = async () => {
1053
- const x = await fetch("./testeranto.json")
1054
- const y = await x.json();
1055
- setTests(y as any);
1056
- };
1057
-
1058
- useEffect(() => { importResults(); }, []);
1059
-
1060
- useEffect(() => { importTests(); }, []);
1061
-
1062
- const [activeKey, setActiveKey] = useState('home');
1063
-
1064
- const handleSelect = (selectedKey) => {
1065
- setActiveKey(selectedKey);
1066
- };
1067
-
1068
-
1069
- const [adminMode, setAdminMode] = useState(false);
1070
-
1071
- const [docGalFs, setDocGalFs] = useState<IUser[]>(
1072
- []
1073
- );
1074
-
1075
- const importFs = async () => {
1076
- fetch('http://localhost:3000/docGal/fs.json')
1077
- .then(response => response.json())
1078
- .then(json => setDocGalFs(json))
1079
- .catch(error => console.error(error));
1080
-
1081
- };
1082
- useEffect(() => { importFs(); }, []);
1083
-
1084
-
1085
- const [chatCatRooms, setChatCatRooms] = useState<({ _id: string } & IChatCatRoom)[]>(
1086
- []
1087
- );
1088
-
1089
- const importChatCatRooms = async () => {
1090
- fetch('http://localhost:3000/rooms.json')
1091
- .then(response => response.json())
1092
- .then(json => setChatCatRooms(json))
1093
- .catch(error => console.error(error));
1094
- };
1095
- useEffect(() => { importChatCatRooms(); }, []);
1096
-
1097
-
1098
- return (
1099
- <div>
1100
- <style>
1101
- {`
1102
- pre, code, p {
1103
- max-width: 40rem;
1104
- text-wrap: auto;
1105
- }
1106
- footer {
1107
- background-color: lightgray;
1108
- margin: 0.5rem;
1109
- padding: 0.5rem;
1110
- position: fixed;
1111
- bottom: 0;
1112
- right: 0;
1113
- }
1114
-
1115
- #root > div > ul {
1116
-
1117
- top: 0;
1118
- }
1119
- `}
1120
- </style>
1121
-
1122
- <Router>
1123
-
1124
- <Navbar expand="md" className="bg-body-tertiary">
1125
- <Container fluid>
1126
- {/* <Navbar.Brand href="#home">testeranto</Navbar.Brand> */}
1127
- <Navbar.Toggle aria-controls="basic-navbar-nav" />
1128
- <Navbar.Collapse id="basic-navbar-nav">
1129
- <Nav className="me-auto">
1130
- {/* <Nav.Link href="#home">Tests</Nav.Link>
1131
- <Nav.Link href="#link">TaskMan</Nav.Link> */}
1132
-
1133
- < Tabs defaultActiveKey="/tests" >
1134
-
1135
-
1136
- <Tab eventKey="tests" title={<NavLink to="/tests" className="nav-link">TestPup</NavLink>}></Tab>
1137
- <Tab eventKey="taskMan" title={<NavLink to="/taskMan/features" className="nav-link">TaskMan</NavLink>}></Tab>
1138
- <Tab eventKey="docGal" title={<NavLink to="/docGal/fs" className="nav-link">DocGal</NavLink>}></Tab>
1139
- <Tab eventKey="chatCat" title={<NavLink to="/chatCat/mostRecent" className="nav-link">ChatCat</NavLink>}></Tab>
1140
- <Tab eventKey="whoThat" title={<NavLink to="/whoThat/people" className="nav-link">WhoThat</NavLink>}></Tab>
1141
- </Tabs>
1142
-
1143
-
1144
-
1145
- </Nav>
1146
-
1147
-
1148
-
1149
- </Navbar.Collapse>
1150
-
1151
- <ButtonGroup className="mb-2">
1152
- <Button
1153
- id="login"
1154
-
1155
-
1156
-
1157
- value="1"
1158
- onChange={(e) => setAdminMode(!adminMode)}
1159
- >
1160
- Login
1161
- </Button>
1162
- </ButtonGroup>
1163
-
1164
- </Container>
1165
- </Navbar>
1166
-
1167
- <Routes>
1168
- <Route path="/tests" element={<Tests adminMode={adminMode} features={features} results={state.results} tests={tests} />} />
1169
-
1170
- <Route path="/chatCat/mostRecent" element={
1171
- <ChatCat
1172
- chatCatRooms={chatCatRooms}
1173
- chatCatHuddles={[]}
1174
- users={users}
1175
- >
1176
- <ChatCatPeople users={users} />
1177
-
1178
- </ChatCat>} />
1179
-
1180
- <Route path="/chatCat/bySubject" element={
1181
- <ChatCat
1182
- chatCatRooms={chatCatRooms}
1183
- chatCatHuddles={[]}
1184
- users={users}
1185
- >
1186
- <ChatCatConversations users={users} conversations={[]} />
1187
-
1188
- </ChatCat>} />
1189
-
1190
- <Route path="/docGal/fs" element={
1191
- <DocGal adminMode={adminMode} setAdminMode={setAdminMode} users={users} >
1192
- <DocGalFs docGalFs={docGalFs} />
1193
- </DocGal>} />
1194
-
1195
- <Route path="/docGal/db" element={
1196
- <DocGal adminMode={adminMode} setAdminMode={setAdminMode} users={users} >
1197
- <DocGalDb />
1198
- </DocGal>} />
1199
-
1200
- <Route path="/taskMan/features" element={
1201
- <TaskMan adminMode={adminMode} setAdminMode={setAdminMode} users={users} >
1202
- <Features adminMode={adminMode} features={features} results={state.results} tests={tests} />
1203
- </TaskMan>} />
1204
-
1205
- <Route path="/taskMan/kanban" element={
1206
- <TaskMan adminMode={adminMode} setAdminMode={setAdminMode} users={users} >
1207
- <Kanban
1208
- adminMode={adminMode} kanban={kanban} results={state.results} tests={tests} features={features}
1209
- openNewColumnModal={() => {
1210
- }}
1211
- />
1212
- </TaskMan>} />
1213
-
1214
- <Route path="/taskMan/gantt" element={
1215
- <TaskMan adminMode={adminMode} setAdminMode={setAdminMode} users={users} >
1216
- <GanttChart
1217
- adminMode={adminMode} gantt={gantt} features={features} results={state.results} tests={tests} />
1218
- </TaskMan>
1219
- } />
1220
- <Route path="/whoThat/people" element={
1221
- <WhoThat users={users} >
1222
- <Users adminMode={adminMode} users={users} />
1223
- </WhoThat>
1224
- } />
1225
-
1226
- <Route path="/whoThat/groups" element={
1227
- <WhoThat users={users} >
1228
- <Users adminMode={adminMode} users={users} />
1229
- </WhoThat>
1230
- } />
1231
-
1232
- <Route path="/whoThat/org" element={
1233
- <WhoThat users={users} >
1234
- <OrgChart adminMode={adminMode} users={users} />
1235
- </WhoThat>
1236
- } />
1237
-
1238
-
1239
- </Routes>
1240
- </Router>
1241
-
1242
-
1243
- <footer>made with ❤️ and <a href="https://adamwong246.github.io/testeranto/" >testeranto </a></footer>
1244
-
1245
- </div >
1246
- );
1247
- };
1248
-
1249
- document.addEventListener("DOMContentLoaded", function () {
1250
- const elem = document.getElementById("root");
1251
- if (elem) {
1252
- ReactDom.createRoot(elem).render(React.createElement(Report, {}));
1253
- }
1254
- });