Skip to content
This repository has been archived by the owner on Aug 31, 2023. It is now read-only.

Commit

Permalink
⚡ support monorepo edit url (#187)
Browse files Browse the repository at this point in the history
close #186
  • Loading branch information
afc163 authored Jun 16, 2020
1 parent 9cfa016 commit 14ffd7b
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 32 deletions.
43 changes: 31 additions & 12 deletions @antv/gatsby-theme-antv/site/templates/document.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ const getMenuItemLocaleKey = (slug = '') => {
const slugPieces = slug.split('/');
const menuItemLocaleKey = slugPieces
.slice(slugPieces.indexOf('docs') + 1)
.filter(key => key)
.filter((key) => key)
.join('/');
return menuItemLocaleKey;
};
Expand All @@ -42,7 +42,7 @@ const getDocument = (docs: any[], slug = '', level: number) => {
if (slug.split('/').length !== level + 2) {
return;
}
return docs.find(doc => doc.slug === slug);
return docs.find((doc) => doc.slug === slug);
};

// https://github.com/antvis/gatsby-theme-antv/issues/114
Expand Down Expand Up @@ -131,6 +131,25 @@ const renderMenu = (menuData: MenuData[]) =>
return null;
});

export const getGithubSourceUrl = ({
githubUrl,
relativePath,
prefix,
}: {
githubUrl: string;
relativePath: string;
prefix: string;
}) => {
// https://github.com/antvis/x6/tree/master/packages/x6-sites
if (githubUrl.includes('/tree/master/')) {
return `${githubUrl.replace(
'/tree/master/',
'/edit/master/',
)}/${prefix}/${relativePath}`;
}
return `${githubUrl}/edit/master/${prefix}/${relativePath}`;
};

export default function Template({
data, // this prop will be injected by the GraphQL query below.
location,
Expand Down Expand Up @@ -169,22 +188,18 @@ export default function Template({
node: {
fields: { slug: slugString },
},
}: any) =>
slugString
.split('/')
.slice(0, -1)
.join('/'),
}: any) => slugString.split('/').slice(0, -1).join('/'),
);

const filterGroupedEdges = {} as any;
Object.keys(groupedEdges)
.filter(key => shouldBeShown(key, pathWithoutPrefix, i18n.language))
.filter((key) => shouldBeShown(key, pathWithoutPrefix, i18n.language))
.forEach((key: string) => {
filterGroupedEdges[key] = groupedEdges[key];
});

const [openKeys, setOpenKeys] = useState<string[]>(
Object.keys(filterGroupedEdges).filter(key => slug.startsWith(key)),
Object.keys(filterGroupedEdges).filter((key) => slug.startsWith(key)),
);

const menuData = getMenuData({
Expand All @@ -199,7 +214,7 @@ export default function Template({
selectedKeys={[slug]}
style={{ height: '100%' }}
openKeys={openKeys}
onOpenChange={currentOpenKeys => setOpenKeys(currentOpenKeys)}
onOpenChange={(currentOpenKeys) => setOpenKeys(currentOpenKeys)}
inlineIndent={16}
forceSubMenuRender
>
Expand All @@ -223,7 +238,7 @@ export default function Template({
)
}
wrapperClassName={styles.menuDrawer}
onChange={open => setDrawOpen(!!open)}
onChange={(open) => setDrawOpen(!!open)}
width={280}
>
{menu}
Expand Down Expand Up @@ -261,7 +276,11 @@ export default function Template({
{frontmatter.title}
<Tooltip title={t('在 GitHub 上编辑')}>
<a
href={`${githubUrl}/edit/master/docs/${relativePath}`}
href={getGithubSourceUrl({
githubUrl,
relativePath,
prefix: 'docs',
})}
target="_blank"
rel="noopener noreferrer"
className={styles.editOnGtiHubButton}
Expand Down
37 changes: 18 additions & 19 deletions @antv/gatsby-theme-antv/site/templates/example.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import PlayGrounds from '../components/PlayGrounds';
import NavigatorBanner from '../components/NavigatorBanner';
import { capitalize } from '../utils';
import { usePrevAndNext } from '../hooks';
import { getGithubSourceUrl } from './document';
import styles from './markdown.module.less';

const MenuIcon = createFromIconfontCN({
Expand Down Expand Up @@ -74,7 +75,7 @@ const getMenuItemLocaleKey = (slug = '') => {
const slugPieces = slug.split('/');
const menuItemLocaleKey = slugPieces
.slice(slugPieces.indexOf('examples') + 1)
.filter(key => key)
.filter((key) => key)
.join('/');
return menuItemLocaleKey;
};
Expand All @@ -91,8 +92,8 @@ const getExampleOrder = ({
};
}): number => {
const key = getMenuItemLocaleKey(groupedEdgeKey);
if (examples.find(item => item.slug === key)) {
return (examples.findIndex(item => item.slug === key) || 0) + 100;
if (examples.find((item) => item.slug === key)) {
return (examples.findIndex((item) => item.slug === key) || 0) + 100;
}
if (!groupedEdges[groupedEdgeKey] && !groupedEdges[groupedEdgeKey].length) {
return 0;
Expand Down Expand Up @@ -157,19 +158,13 @@ export default function Template({
}: any) => {
// API.md and deisgn.md
if (slugString.endsWith('/API') || slugString.endsWith('/design')) {
return slugString
.split('/')
.slice(0, -2)
.join('/');
return slugString.split('/').slice(0, -2).join('/');
}
// index.md
return slugString
.split('/')
.slice(0, -1)
.join('/');
return slugString.split('/').slice(0, -1).join('/');
},
);
const defaultOpenKeys = Object.keys(groupedEdges).filter(key =>
const defaultOpenKeys = Object.keys(groupedEdges).filter((key) =>
slug.startsWith(key),
);
const [openKeys, setOpenKeys] = useState<string[]>(defaultOpenKeys);
Expand All @@ -191,11 +186,11 @@ export default function Template({
selectedKeys={[slug]}
style={{ height: '100%' }}
openKeys={openKeys}
onOpenChange={currentOpenKeys => setOpenKeys(currentOpenKeys)}
onOpenChange={(currentOpenKeys) => setOpenKeys(currentOpenKeys)}
forceSubMenuRender
>
{Object.keys(groupedEdges)
.filter(key => key.startsWith(`/${i18n.language}/`))
.filter((key) => key.startsWith(`/${i18n.language}/`))
.sort((a: string, b: string) => {
const aOrder = getExampleOrder({
groupedEdgeKey: a,
Expand All @@ -209,7 +204,7 @@ export default function Template({
});
return aOrder - bOrder;
})
.map(slugString => {
.map((slugString) => {
const slugPieces = slugString.split('/');
if (slugPieces.length <= 3) {
return renderMenuItems(groupedEdges[slugString]);
Expand Down Expand Up @@ -259,14 +254,14 @@ export default function Template({
)
}
wrapperClassName={styles.menuDrawer}
onChange={open => setDrawOpen(!!open)}
onChange={(open) => setDrawOpen(!!open)}
width={280}
>
{menu}
</Drawer>
);

const allDemosInCategory = groupBy(allDemos || [], demo => {
const allDemosInCategory = groupBy(allDemos || [], (demo) => {
if (!demo.postFrontmatter || !demo.postFrontmatter[i18n.language]) {
return 'OTHER';
}
Expand Down Expand Up @@ -314,7 +309,7 @@ export default function Template({
.sort((a, b) => {
return (a.order || -1) - (b.order || -1);
})
.map(demo => {
.map((demo) => {
let cardTitle;
if (typeof demo.title === 'string') {
cardTitle = demo.title;
Expand Down Expand Up @@ -364,7 +359,11 @@ export default function Template({
{frontmatter.title}
<Tooltip title={t('在 GitHub 上编辑')}>
<a
href={`${githubUrl}/edit/master/examples/${relativePath}`}
href={getGithubSourceUrl({
githubUrl,
relativePath,
prefix: 'examples',
})}
target="_blank"
rel="noopener noreferrer"
className={styles.editOnGtiHubButton}
Expand Down
2 changes: 1 addition & 1 deletion example/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"homepage": "https://test.antv.vision",
"repository": {
"type": "git",
"url": "https://github.com/antvis/antvis.github.io"
"url": "https://github.com/antvis/gatsby-theme-antv/tree/master/example"
},
"bugs": {
"url": "https://github.com/antvis/antvis.github.io/issues"
Expand Down

0 comments on commit 14ffd7b

Please sign in to comment.