@eventcatalog/core 0.0.10 → 0.0.14
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.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +31 -30
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/config.json +3 -3
- package/.next/cache/eslint/.cache_1bay4w0 +1 -1
- package/.next/cache/next-server.js.nft.json +1 -1
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +1 -1
- package/.next/routes-manifest.json +1 -1
- package/.next/server/chunks/526.js +1 -1
- package/.next/server/chunks/565.js +17 -5
- package/.next/server/chunks/730.js +8 -13
- package/.next/server/chunks/938.js +18 -4
- package/.next/server/chunks/944.js +31 -32
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/_app.js +4 -0
- package/.next/server/pages/events/AddedItemToCart.html +5 -5
- package/.next/server/pages/events/AddedItemToCart.json +1 -1
- package/.next/server/pages/events/OrderComplete.html +3 -3
- package/.next/server/pages/events/OrderComplete.json +1 -1
- package/.next/server/pages/events/OrderConfirmed.html +3 -3
- package/.next/server/pages/events/OrderConfirmed.json +1 -1
- package/.next/server/pages/events/OrderRequested.html +3 -3
- package/.next/server/pages/events/OrderRequested.json +1 -1
- package/.next/server/pages/events/PaymentProcessed.html +3 -3
- package/.next/server/pages/events/PaymentProcessed.json +1 -1
- package/.next/server/pages/events/RemovedItemFromCart.html +3 -3
- package/.next/server/pages/events/RemovedItemFromCart.json +1 -1
- package/.next/server/pages/events/ShipmentDelivered.html +3 -3
- package/.next/server/pages/events/ShipmentDelivered.json +1 -1
- package/.next/server/pages/events/ShipmentDispatched.html +3 -3
- package/.next/server/pages/events/ShipmentDispatched.json +1 -1
- package/.next/server/pages/events/ShipmentPrepared.html +3 -3
- package/.next/server/pages/events/ShipmentPrepared.json +1 -1
- package/.next/server/pages/events/[name]/v/[version].js +1 -8
- package/.next/server/pages/events/[name]/v/[version].js.nft.json +1 -1
- package/.next/server/pages/events/[name].js +1 -8
- package/.next/server/pages/events/[name].js.nft.json +1 -1
- package/.next/server/pages/events.js +19 -37
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/overview.js +9 -6
- package/.next/server/pages/services/Basket Service.html +2 -2
- package/.next/server/pages/services/Basket Service.json +1 -1
- package/.next/server/pages/services/Data Lake.html +2 -2
- package/.next/server/pages/services/Data Lake.json +1 -1
- package/.next/server/pages/services/Payment Service.html +2 -2
- package/.next/server/pages/services/Payment Service.json +1 -1
- package/.next/server/pages/services/Shipping Service.html +2 -2
- package/.next/server/pages/services/Shipping Service.json +1 -1
- package/.next/server/pages/services/[name].js +31 -39
- package/.next/server/pages/services/[name].js.nft.json +1 -1
- package/.next/server/pages/services.js +66 -60
- package/.next/server/pages/services.js.nft.json +1 -1
- package/.next/server/pages/users/[id].js +3 -3
- package/.next/server/pages/users/[id].js.nft.json +1 -1
- package/.next/static/DTt5tyVKdntQwbNsYqVj8/_buildManifest.js +1 -0
- package/.next/static/{yc3MsaLWgBvovlJpHpfqc → DTt5tyVKdntQwbNsYqVj8}/_middlewareManifest.js +0 -0
- package/.next/static/{yc3MsaLWgBvovlJpHpfqc → DTt5tyVKdntQwbNsYqVj8}/_ssgManifest.js +0 -0
- package/.next/static/chunks/336-8b7da71a40e0c439.js +1 -0
- package/.next/static/chunks/873-31046e43f178cc08.js +1 -0
- package/.next/static/chunks/954-4d4a09c3269dda3f.js +1 -0
- package/.next/static/chunks/pages/{_app-c9d3172cc09cf069.js → _app-1adc361d4508683f.js} +1 -1
- package/.next/static/chunks/pages/events/[name]/v/{[version]-dc146dc9bfa7362d.js → [version]-963d3e8377b51e86.js} +1 -1
- package/.next/static/chunks/pages/events/{[name]-fb77119f66a5793e.js → [name]-578828157369b5cd.js} +1 -1
- package/.next/static/chunks/pages/events-1eb91650cc339723.js +1 -0
- package/.next/static/chunks/pages/{overview-5ac749891cbe1922.js → overview-176af2f7c17b91c9.js} +1 -1
- package/.next/static/chunks/pages/services/[name]-78378d531eb27bc2.js +1 -0
- package/.next/static/chunks/pages/services-7557ffe917633232.js +1 -0
- package/.next/static/chunks/pages/users/[id]-c21144bb8aa7887b.js +1 -0
- package/.next/static/chunks/{webpack-afe52d4a9fcc5a75.js → webpack-895c2707d065aab1.js} +1 -1
- package/.next/static/css/fd7bcdba1dee3675.css +3 -0
- package/.next/trace +37 -37
- package/CHANGELOG.md +24 -0
- package/components/Grids/EventGrid.tsx +1 -1
- package/components/Grids/ServiceGrid.tsx +8 -1
- package/components/Mermaid/index.tsx +17 -4
- package/components/NotFound/index.tsx +17 -17
- package/components/Sidebars/ServiceSidebar.tsx +3 -3
- package/components/SyntaxHighlighter.tsx +1 -1
- package/lib/graphs.ts +7 -3
- package/package.json +1 -1
- package/pages/_app.tsx +2 -0
- package/pages/events/[name].tsx +6 -5
- package/pages/events.tsx +2 -15
- package/pages/overview.tsx +7 -4
- package/pages/services/[name].tsx +9 -5
- package/pages/services.tsx +27 -14
- package/.next/static/chunks/236-0acd5083c102a9cb.js +0 -1
- package/.next/static/chunks/336-5d9007a96aa8f2c7.js +0 -1
- package/.next/static/chunks/873-9d69271e4b2dd496.js +0 -1
- package/.next/static/chunks/pages/events-bcad8442f21d6b67.js +0 -1
- package/.next/static/chunks/pages/services/[name]-69692188d11304b7.js +0 -1
- package/.next/static/chunks/pages/services-bcc61898062e1bf4.js +0 -1
- package/.next/static/chunks/pages/users/[id]-2da54ccb6319b207.js +0 -1
- package/.next/static/css/b44e1178a88a93b4.css +0 -3
- package/.next/static/yc3MsaLWgBvovlJpHpfqc/_buildManifest.js +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# @eventcatalog/core
|
|
2
2
|
|
|
3
|
+
## 0.0.14
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`7c23703`](https://github.com/boyney123/eventcatalog/commit/7c237039535d7f5d6f229396cf59eb5cbf5b0645) [#109](https://github.com/boyney123/eventcatalog/pull/109) Thanks [@boyney123](https://github.com/boyney123)! - fix: issue with long names for services and events rendering incorrectly
|
|
8
|
+
|
|
9
|
+
## 0.0.13
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [`732dac2`](https://github.com/boyney123/eventcatalog/commit/732dac24c1de62537732083a53c2218c2794773a) [#102](https://github.com/boyney123/eventcatalog/pull/102) Thanks [@boyney123](https://github.com/boyney123)! - feat: allow default frontmatter when creating events
|
|
14
|
+
|
|
15
|
+
## 0.0.12
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- [`dd1b29f`](https://github.com/boyney123/eventcatalog/commit/dd1b29f81658a3c5bea9ed92c1cf54265c7feb0b) [#98](https://github.com/boyney123/eventcatalog/pull/98) Thanks [@boyney123](https://github.com/boyney123)! - feat: adding more mermaid support in mdx
|
|
20
|
+
|
|
21
|
+
## 0.0.11
|
|
22
|
+
|
|
23
|
+
### Patch Changes
|
|
24
|
+
|
|
25
|
+
- [`97e447a`](https://github.com/boyney123/eventcatalog/commit/97e447aa0ec255b2c879eac7fa83d7b705230790) [#95](https://github.com/boyney123/eventcatalog/pull/95) Thanks [@boyney123](https://github.com/boyney123)! - fix: edit url is now optional in not found pages and no longer fetche…
|
|
26
|
+
|
|
3
27
|
## 0.0.10
|
|
4
28
|
|
|
5
29
|
### Patch Changes
|
|
@@ -38,7 +38,7 @@ function EventGrid({ events = [], showMermaidDiagrams = false }: EventGridProps)
|
|
|
38
38
|
/>
|
|
39
39
|
<div className="w-full border-t border-r border-b border-gray-200 bg-white rounded-r-md ">
|
|
40
40
|
<div className="p-4 text-sm space-y-2 flex flex-col justify-between h-full">
|
|
41
|
-
<div className="text-gray-900 font-bold hover:text-gray-600">
|
|
41
|
+
<div className="text-gray-900 font-bold hover:text-gray-600 break-all">
|
|
42
42
|
{event.name}
|
|
43
43
|
<span className="ml-2 inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-yellow-100 text-yellow-800">
|
|
44
44
|
v{event.version}
|
|
@@ -4,14 +4,16 @@ import Link from 'next/link';
|
|
|
4
4
|
import { CubeIcon } from '@heroicons/react/outline';
|
|
5
5
|
|
|
6
6
|
import { Service } from '@eventcatalog/types';
|
|
7
|
+
import Mermaid from '@/components/Mermaid';
|
|
7
8
|
|
|
8
9
|
import getBackgroundColor from '@/utils/random-bg';
|
|
9
10
|
|
|
10
11
|
interface ServiceGridProps {
|
|
11
12
|
services: Service[];
|
|
13
|
+
showMermaidDiagrams?: boolean;
|
|
12
14
|
}
|
|
13
15
|
|
|
14
|
-
function ServiceGrid({ services = [] }: ServiceGridProps) {
|
|
16
|
+
function ServiceGrid({ services = [], showMermaidDiagrams = false }: ServiceGridProps) {
|
|
15
17
|
return (
|
|
16
18
|
<ul className="mt-3 grid grid-cols-1 gap-5 md:grid-cols-2">
|
|
17
19
|
{services.map((service) => {
|
|
@@ -38,6 +40,11 @@ function ServiceGrid({ services = [] }: ServiceGridProps) {
|
|
|
38
40
|
)}
|
|
39
41
|
<div className="text-gray-500 text-xs font-normal mt-2 line-clamp-3">{service.summary}</div>
|
|
40
42
|
</div>
|
|
43
|
+
{showMermaidDiagrams && (
|
|
44
|
+
<div className="h-full items-center flex">
|
|
45
|
+
<Mermaid source="service" data={service} rootNodeColor={getBackgroundColor(service.name)} />
|
|
46
|
+
</div>
|
|
47
|
+
)}
|
|
41
48
|
<div className="flex space-x-4 text-xs pt-2 relative bottom-0 left-0">
|
|
42
49
|
<div className=" font-medium text-gray-500">
|
|
43
50
|
<CubeIcon className="h-4 w-4 text-green-400 inline-block mr-2" aria-hidden="true" />
|
|
@@ -30,17 +30,30 @@ interface MermaidProps {
|
|
|
30
30
|
data: Event | Service;
|
|
31
31
|
source: 'event' | 'service';
|
|
32
32
|
rootNodeColor?: string;
|
|
33
|
+
charts?: string[];
|
|
33
34
|
}
|
|
34
35
|
|
|
35
|
-
function Mermaid({ data, source = 'event', rootNodeColor }: MermaidProps) {
|
|
36
|
+
function Mermaid({ data, source = 'event', rootNodeColor, charts }: MermaidProps) {
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
mermaid.contentLoaded();
|
|
39
|
+
}, []);
|
|
40
|
+
|
|
41
|
+
if (charts) {
|
|
42
|
+
return (
|
|
43
|
+
<>
|
|
44
|
+
{charts.map((content, index) => (
|
|
45
|
+
<div key={`chart-${index}`} className="mermaid">
|
|
46
|
+
{content}
|
|
47
|
+
</div>
|
|
48
|
+
))}
|
|
49
|
+
</>
|
|
50
|
+
);
|
|
51
|
+
}
|
|
36
52
|
const mermaidChart =
|
|
37
53
|
source === 'event'
|
|
38
54
|
? buildMermaidFlowChartForEvent(data as Event, rootNodeColor)
|
|
39
55
|
: buildMermaidFlowChartForService(data as Service, rootNodeColor);
|
|
40
56
|
|
|
41
|
-
useEffect(() => {
|
|
42
|
-
mermaid.contentLoaded();
|
|
43
|
-
}, []);
|
|
44
57
|
return <div className="mermaid">{mermaidChart}</div>;
|
|
45
58
|
}
|
|
46
59
|
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
import { DocumentAddIcon } from '@heroicons/react/solid';
|
|
2
|
-
import url from 'url';
|
|
3
2
|
|
|
4
3
|
interface NotFoundProps {
|
|
5
4
|
type: 'service' | 'event';
|
|
6
5
|
name: string;
|
|
7
|
-
editUrl
|
|
6
|
+
editUrl?: string;
|
|
8
7
|
}
|
|
9
8
|
|
|
10
9
|
export default function Example(props: NotFoundProps) {
|
|
11
10
|
const { type, name, editUrl } = props;
|
|
12
11
|
|
|
13
|
-
const urlToAddPage = url.resolve(editUrl, `${type}/${name}`);
|
|
14
|
-
|
|
15
12
|
return (
|
|
16
13
|
<main className="min-h-full bg-cover bg-top sm:bg-top h-screen">
|
|
17
14
|
<div className="max-w-7xl mx-auto px-4 py-16 text-center sm:px-6 sm:py-24 lg:px-8 lg:py-48">
|
|
@@ -19,21 +16,24 @@ export default function Example(props: NotFoundProps) {
|
|
|
19
16
|
Failed to find {type}
|
|
20
17
|
</p>
|
|
21
18
|
<h1 className="mt-2 text-4xl font-extrabold text-gray-900 tracking-tight sm:text-5xl">Missing Documentation</h1>
|
|
22
|
-
<p className="mt-2 text-lg font-medium text-gray-700 text-opacity-50">
|
|
23
|
-
Documentation for {type}
|
|
19
|
+
<p className="mt-2 text-lg font-medium text-gray-700 text-opacity-50 text-center ">
|
|
20
|
+
Documentation for {type} is missing!
|
|
21
|
+
<span className="block font-bold text-gray-800 underline break-all max-w-2xl mx-auto py-4">{name}</span>
|
|
24
22
|
</p>
|
|
25
23
|
<p className="mt-4 text-xs text-gray-400">Help the eco-system and add the documentation for others ❤️ </p>
|
|
26
|
-
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
24
|
+
{editUrl && (
|
|
25
|
+
<div className="mt-12">
|
|
26
|
+
<a
|
|
27
|
+
href={editUrl}
|
|
28
|
+
target="_blank"
|
|
29
|
+
className="inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md text-white bg-black bg-opacity-75 "
|
|
30
|
+
rel="noreferrer"
|
|
31
|
+
>
|
|
32
|
+
<DocumentAddIcon className="-ml-1 mr-2 h-5 w-5" aria-hidden="true" />
|
|
33
|
+
Add missing <span className="underline px-1">{type}</span> documentation
|
|
34
|
+
</a>
|
|
35
|
+
</div>
|
|
36
|
+
)}
|
|
37
37
|
</div>
|
|
38
38
|
</main>
|
|
39
39
|
);
|
|
@@ -42,13 +42,13 @@ function ServiceSidebar({ service }: ServiceSideBarProps) {
|
|
|
42
42
|
</h2>
|
|
43
43
|
<ul className="mt-2 leading-8">
|
|
44
44
|
{publishes.map((event) => (
|
|
45
|
-
<li className="inline" key={event.name}>
|
|
45
|
+
<li className="inline " key={event.name}>
|
|
46
46
|
<Link href={`/events/${event.name}`}>
|
|
47
47
|
<a href="#" className="relative inline-flex items-center rounded-full border border-gray-300 px-3 py-0.5">
|
|
48
48
|
<div className="absolute flex-shrink-0 flex items-center justify-center">
|
|
49
49
|
<span className="h-1.5 w-1.5 rounded-full bg-indigo-500 animate animate-pulse" aria-hidden="true" />
|
|
50
50
|
</div>
|
|
51
|
-
<div className="ml-3.5 text-sm font-medium text-gray-900">{event.name}</div>
|
|
51
|
+
<div className="ml-3.5 text-sm font-medium text-gray-900 truncate max-w-xs">{event.name}</div>
|
|
52
52
|
</a>
|
|
53
53
|
</Link>
|
|
54
54
|
</li>
|
|
@@ -70,7 +70,7 @@ function ServiceSidebar({ service }: ServiceSideBarProps) {
|
|
|
70
70
|
<div className="absolute flex-shrink-0 flex items-center justify-center">
|
|
71
71
|
<span className="h-1.5 w-1.5 rounded-full bg-green-500 animate animate-pulse" aria-hidden="true" />
|
|
72
72
|
</div>
|
|
73
|
-
<div className="ml-3.5 text-sm font-medium text-gray-900">{event.name}</div>
|
|
73
|
+
<div className="ml-3.5 text-sm font-medium text-gray-900 truncate max-w-xs">{event.name}</div>
|
|
74
74
|
</a>
|
|
75
75
|
</Link>
|
|
76
76
|
</li>
|
|
@@ -23,7 +23,7 @@ function SyntaxHighlighter({ language, name = '', ...props }: any) {
|
|
|
23
23
|
>
|
|
24
24
|
{showCopied ? 'Copied' : 'Copy'}
|
|
25
25
|
</button>
|
|
26
|
-
<PrismSyntaxHighlighter style={codeStyle} language={language} {...props} wrapLines>
|
|
26
|
+
<PrismSyntaxHighlighter style={codeStyle} language={language} {...props} wrapLines className="max-h-96 overflow-auto">
|
|
27
27
|
{props.children.replace(regex, '\n')}
|
|
28
28
|
</PrismSyntaxHighlighter>
|
|
29
29
|
{name && <span className="-mb-2 block text-xs text-right font-bold">{name}</span>}
|
package/lib/graphs.ts
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import type { Event, Service } from '@eventcatalog/types';
|
|
2
2
|
|
|
3
|
+
const MAX_LENGTH_FOR_NODES = '50';
|
|
4
|
+
|
|
5
|
+
const truncateNode = (value) => (value.length > MAX_LENGTH_FOR_NODES ? `${value.substring(0, MAX_LENGTH_FOR_NODES)}...` : value);
|
|
6
|
+
|
|
3
7
|
const buildMermaid = (centerNode, leftNodes, rightNodes, rootNodeColor) => {
|
|
4
8
|
// mermaid does not work with spaces in nodes
|
|
5
9
|
const removeSpacesInNames = (nodes) => nodes.map((node) => node.replace(/ /g, '_'));
|
|
6
|
-
const lNodes = removeSpacesInNames(leftNodes);
|
|
7
|
-
const rNodes = removeSpacesInNames(rightNodes);
|
|
8
|
-
const nodeValue = centerNode.replace(/ /g, '_');
|
|
10
|
+
const lNodes = removeSpacesInNames(leftNodes).map(truncateNode);
|
|
11
|
+
const rNodes = removeSpacesInNames(rightNodes).map(truncateNode);
|
|
12
|
+
const nodeValue = truncateNode(centerNode.replace(/ /g, '_'));
|
|
9
13
|
|
|
10
14
|
return `flowchart LR
|
|
11
15
|
${lNodes.map((node) => `${node}:::producer-->${nodeValue}:::event\n`).join('')}
|
package/package.json
CHANGED
package/pages/_app.tsx
CHANGED
|
@@ -12,6 +12,8 @@ export default ({ Component, pageProps }: AppProps) => (
|
|
|
12
12
|
<script src="//unpkg.com/three" />
|
|
13
13
|
<script src="//unpkg.com/three/examples/js/renderers/CSS2DRenderer.js" />
|
|
14
14
|
|
|
15
|
+
<link rel="stylesheet" href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.css" />
|
|
16
|
+
|
|
15
17
|
<meta
|
|
16
18
|
name="description"
|
|
17
19
|
content="An open source project to Discover, Explore and Document your Event Driven Architectures."
|
package/pages/events/[name].tsx
CHANGED
|
@@ -2,7 +2,6 @@ import Head from 'next/head';
|
|
|
2
2
|
import { MDXRemote } from 'next-mdx-remote';
|
|
3
3
|
|
|
4
4
|
import { Event } from '@eventcatalog/types';
|
|
5
|
-
import { editUrl } from '../../eventcatalog.config';
|
|
6
5
|
import Admonition from '@/components/Mdx/Admonition';
|
|
7
6
|
import Examples from '@/components/Mdx/Examples';
|
|
8
7
|
|
|
@@ -57,10 +56,10 @@ export const getComponents = ({ event, schema, examples }: any) => ({
|
|
|
57
56
|
);
|
|
58
57
|
return null;
|
|
59
58
|
},
|
|
60
|
-
Mermaid: ({ title }: { title: string }) => (
|
|
59
|
+
Mermaid: ({ title, charts }: { title: string; charts?: string[] }) => (
|
|
61
60
|
<div className="mx-auto w-full py-10">
|
|
62
61
|
{title && <h2 className="text-lg font-medium text-gray-900 underline">{title}</h2>}
|
|
63
|
-
<Mermaid source="event" data={event} rootNodeColor={getBackgroundColor(event.name)} />
|
|
62
|
+
<Mermaid source="event" data={event} rootNodeColor={getBackgroundColor(event.name)} charts={charts} />
|
|
64
63
|
</div>
|
|
65
64
|
),
|
|
66
65
|
});
|
|
@@ -69,9 +68,11 @@ export default function Events(props: EventsPageProps) {
|
|
|
69
68
|
const { event, markdown, loadedVersion, notFound } = props;
|
|
70
69
|
const { getEditUrl, hasEditUrl } = useUrl();
|
|
71
70
|
|
|
72
|
-
if (notFound) return <NotFound type="event" name={event.name} editUrl={editUrl} />;
|
|
73
|
-
|
|
74
71
|
const { name, summary, draft, schema, examples, version } = event;
|
|
72
|
+
|
|
73
|
+
if (notFound)
|
|
74
|
+
return <NotFound type="event" name={event.name} editUrl={hasEditUrl ? getEditUrl(`/events/${name}/index.md`) : ''} />;
|
|
75
|
+
|
|
75
76
|
const { lastModifiedDate } = markdown;
|
|
76
77
|
|
|
77
78
|
const pages = [
|
package/pages/events.tsx
CHANGED
|
@@ -2,8 +2,6 @@ import { Fragment, useState } from 'react';
|
|
|
2
2
|
import Head from 'next/head';
|
|
3
3
|
import type { Event, Service } from '@eventcatalog/types';
|
|
4
4
|
|
|
5
|
-
import Link from 'next/link';
|
|
6
|
-
|
|
7
5
|
import { Menu, Transition } from '@headlessui/react';
|
|
8
6
|
import { ChevronDownIcon } from '@heroicons/react/solid';
|
|
9
7
|
import EventGrid from '@/components/Grids/EventGrid';
|
|
@@ -28,7 +26,7 @@ export default function Page({ events, services }: PageProps) {
|
|
|
28
26
|
const filters = [
|
|
29
27
|
{
|
|
30
28
|
id: 'services',
|
|
31
|
-
name: 'Services',
|
|
29
|
+
name: 'Filter by Services',
|
|
32
30
|
options: services.map((service) => ({
|
|
33
31
|
value: service,
|
|
34
32
|
label: service,
|
|
@@ -123,19 +121,8 @@ export default function Page({ events, services }: PageProps) {
|
|
|
123
121
|
<div className="grid grid-cols-4 gap-x-8 gap-y-10">
|
|
124
122
|
{/* Filters */}
|
|
125
123
|
<form className="hidden lg:block">
|
|
126
|
-
<span className="text-sm font-bold text-gray-900 mb-4 block">Events</span>
|
|
127
|
-
<ul className=" text-sm text-gray-600 space-y-4 pb-6 border-b border-gray-200 items-stretch">
|
|
128
|
-
{events.map((event) => (
|
|
129
|
-
<li key={event.name}>
|
|
130
|
-
<Link href={`/events/${event.name}`}>
|
|
131
|
-
<a>{event.name}</a>
|
|
132
|
-
</Link>
|
|
133
|
-
</li>
|
|
134
|
-
))}
|
|
135
|
-
</ul>
|
|
136
|
-
|
|
137
124
|
{filters.map((section: any) => (
|
|
138
|
-
<div key={section.id} className="border-b border-gray-200
|
|
125
|
+
<div key={section.id} className="border-b border-gray-200 pb-6">
|
|
139
126
|
<h3 className="-my-3 flow-root">
|
|
140
127
|
<div className="py-3 bg-white w-full flex items-center justify-between text-sm text-gray-400 hover:text-gray-500">
|
|
141
128
|
<span className="font-medium text-gray-900">{section.name}</span>
|
package/pages/overview.tsx
CHANGED
|
@@ -12,15 +12,18 @@ function NodeElement({ node: { id } }: { node: { id: string } }) {
|
|
|
12
12
|
return <div className={`text-sm text-center p-1 rounded-md `}>{id}</div>;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
const MAX_LENGTH_FOR_NODES = 30;
|
|
16
|
+
const truncateNode = (value) => (value.length > MAX_LENGTH_FOR_NODES ? `${value.substring(0, MAX_LENGTH_FOR_NODES)}...` : value);
|
|
17
|
+
|
|
15
18
|
const graph = ({ events, services }) => {
|
|
16
|
-
const eventNodes = events.map(({ name: event }) => ({ id: event, group: 1, type: 'event' }));
|
|
17
|
-
const serviceNodes = services.map((service) => ({ id: service, group: 2, type: 'service' }));
|
|
19
|
+
const eventNodes = events.map(({ name: event }) => ({ id: truncateNode(event), group: 1, type: 'event' }));
|
|
20
|
+
const serviceNodes = services.map((service) => ({ id: truncateNode(service), group: 2, type: 'service' }));
|
|
18
21
|
|
|
19
22
|
// Create all links
|
|
20
23
|
const links = events.reduce((nodes, event) => {
|
|
21
24
|
const { consumers = [], producers = [], name } = event;
|
|
22
|
-
const consumerNodes = consumers.map((consumer) => ({ source: name, target: consumer }));
|
|
23
|
-
const producerNodes = producers.map((producer) => ({ source: producer, target: name }));
|
|
25
|
+
const consumerNodes = consumers.map((consumer) => ({ source: truncateNode(name), target: truncateNode(consumer) }));
|
|
26
|
+
const producerNodes = producers.map((producer) => ({ source: truncateNode(producer), target: truncateNode(name) }));
|
|
24
27
|
return nodes.concat(consumerNodes).concat(producerNodes);
|
|
25
28
|
}, []);
|
|
26
29
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import Head from 'next/head';
|
|
2
2
|
import { MDXRemote } from 'next-mdx-remote';
|
|
3
3
|
import { Service } from '@eventcatalog/types';
|
|
4
|
-
import { editUrl } from '../../eventcatalog.config.js';
|
|
5
4
|
import ContentView from '@/components/ContentView';
|
|
6
5
|
import { getAllServices, getServiceByName } from '@/lib/services';
|
|
7
6
|
|
|
@@ -21,25 +20,30 @@ interface ServicesPageProps {
|
|
|
21
20
|
notFound?: boolean;
|
|
22
21
|
}
|
|
23
22
|
|
|
24
|
-
function MermaidComponent({ title, service }: { title: string; service: Service }) {
|
|
23
|
+
function MermaidComponent({ title, service, charts }: { title: string; service: Service; charts?: string[] }) {
|
|
25
24
|
return (
|
|
26
25
|
<div className="mx-auto w-full py-10">
|
|
27
26
|
{title && <h2 className="text-lg font-medium text-gray-900 underline">{title}</h2>}
|
|
28
|
-
<Mermaid source="service" data={service} rootNodeColor={getBackgroundColor(service.name)} />
|
|
27
|
+
<Mermaid source="service" data={service} rootNodeColor={getBackgroundColor(service.name)} charts={charts} />
|
|
29
28
|
</div>
|
|
30
29
|
);
|
|
31
30
|
}
|
|
32
31
|
|
|
33
32
|
const getComponents = (service) => ({
|
|
34
33
|
Admonition,
|
|
35
|
-
Mermaid: ({ title }: { title: string }) =>
|
|
34
|
+
Mermaid: ({ title, charts }: { title: string; charts?: string[] }) => (
|
|
35
|
+
<MermaidComponent service={service} title={title} charts={charts} />
|
|
36
|
+
),
|
|
36
37
|
});
|
|
37
38
|
|
|
38
39
|
export default function Services(props: ServicesPageProps) {
|
|
39
40
|
const { service, markdown, notFound } = props;
|
|
40
41
|
const { getEditUrl, hasEditUrl } = useUrl();
|
|
41
42
|
|
|
42
|
-
if (notFound)
|
|
43
|
+
if (notFound)
|
|
44
|
+
return (
|
|
45
|
+
<NotFound type="service" name={service.name} editUrl={hasEditUrl ? getEditUrl(`/services/${service.name}/index.md`) : ''} />
|
|
46
|
+
);
|
|
43
47
|
|
|
44
48
|
const { name, summary, draft } = service;
|
|
45
49
|
const { lastModifiedDate } = markdown;
|
package/pages/services.tsx
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import { Fragment } from 'react';
|
|
1
|
+
import { Fragment, useState } from 'react';
|
|
2
2
|
import Head from 'next/head';
|
|
3
3
|
import { Service } from '@eventcatalog/types';
|
|
4
4
|
|
|
5
|
-
import Link from 'next/link';
|
|
6
|
-
|
|
7
5
|
import { Menu, Transition } from '@headlessui/react';
|
|
8
6
|
import { ChevronDownIcon } from '@heroicons/react/solid';
|
|
9
7
|
import ServiceGrid from '@/components/Grids/ServiceGrid';
|
|
@@ -24,6 +22,8 @@ export interface PageProps {
|
|
|
24
22
|
}
|
|
25
23
|
|
|
26
24
|
export default function Page({ services }: PageProps) {
|
|
25
|
+
const [showMermaidDiagrams, setShowMermaidDiagrams] = useState(false);
|
|
26
|
+
|
|
27
27
|
return (
|
|
28
28
|
<>
|
|
29
29
|
<Head>
|
|
@@ -83,22 +83,35 @@ export default function Page({ services }: PageProps) {
|
|
|
83
83
|
<div className="grid grid-cols-4 gap-x-8 gap-y-10">
|
|
84
84
|
{/* Filters */}
|
|
85
85
|
<form className="hidden lg:block">
|
|
86
|
-
<
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
86
|
+
<div className="border-b border-gray-200 pb-6">
|
|
87
|
+
<h3 className="-my-3 flow-root">
|
|
88
|
+
<div className="py-3 bg-white w-full flex items-center justify-between text-sm text-gray-400 hover:text-gray-500">
|
|
89
|
+
<span className="font-medium text-gray-900">Features</span>
|
|
90
|
+
</div>
|
|
91
|
+
</h3>
|
|
92
|
+
<div className="pt-6">
|
|
93
|
+
<div className="space-y-4">
|
|
94
|
+
<div className="flex items-center">
|
|
95
|
+
<input
|
|
96
|
+
id="show-mermaid"
|
|
97
|
+
type="checkbox"
|
|
98
|
+
onChange={(e) => setShowMermaidDiagrams(e.target.checked)}
|
|
99
|
+
defaultChecked={showMermaidDiagrams}
|
|
100
|
+
className="h-4 w-4 border-gray-300 rounded text-gray-600 focus:ring-gray-500"
|
|
101
|
+
/>
|
|
102
|
+
<label htmlFor="show-mermaid" className="ml-3 text-sm text-gray-600">
|
|
103
|
+
Show Mermaid Diagrams
|
|
104
|
+
</label>
|
|
105
|
+
</div>
|
|
106
|
+
</div>
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
96
109
|
</form>
|
|
97
110
|
|
|
98
111
|
<div className="col-span-4 lg:col-span-3">
|
|
99
112
|
<div>
|
|
100
113
|
<h2 className="text-gray-500 text-xs font-medium uppercase tracking-wide">Services</h2>
|
|
101
|
-
<ServiceGrid services={services} />
|
|
114
|
+
<ServiceGrid services={services} showMermaidDiagrams={showMermaidDiagrams} />
|
|
102
115
|
</div>
|
|
103
116
|
</div>
|
|
104
117
|
</div>
|