Skip to content

Commit

Permalink
Merge pull request #7 from akhilkala/document_title
Browse files Browse the repository at this point in the history
Page titles for each individual resources.
  • Loading branch information
snyaggarwal committed Sep 7, 2021
2 parents 3b2497e + d07aef4 commit 9cdd0f9
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/components/app/App.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import ConceptMapHome from '../fhir/ConceptMapHome';
import Header from './Header';
import Footer from './Footer';
import RootView from './RootView';
import DocumentTitle from "./DocumentTitle"
import './App.scss';


Expand Down Expand Up @@ -66,6 +67,7 @@ const App = props => {

return (
<div>
<DocumentTitle/>
<Header {...props} onOpen={setMenuOpen} />
<ErrorBoundary>
<main className={menuOpen ? 'content menu-open' : 'content'}>
Expand Down
77 changes: 77 additions & 0 deletions src/components/app/DocumentTitle.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
import { useEffect } from 'react'
import { useLocation } from "react-router-dom";
import { forEach, includes, capitalize } from 'lodash';

const TITLES = {
'/accounts/login': 'Sign In - OCL',
'/accounts/signup': 'Sign Up - OCL',
'/accounts/password/reset': 'Password Reset - OCL',
"/accounts/([a-zA-Z0-9\-\.\_\@]+)/password/reset/([a-zA-Z0-9\-\.\_\@]+)": "Change Password - OCL",
"/accounts/([a-zA-Z0-9\-\.\_\@]+)/verify/([a-zA-Z0-9\-\.\_\@]+)": "Verify Email - OCL",
"/users/([a-zA-Z0-9\-\.\_\@]+)": "$1 - OCL",
"/users/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)": "$1 - $2 - OCL",
"/orgs/([a-zA-Z0-9\-\.\_\@]+)": "$1 - OCL",
"/users/([a-zA-Z0-9\-\.\_\@]+)/collections/([a-zA-Z0-9\-\.\_\@]+)": "$3 / $1 - OCL",
"/orgs/([a-zA-Z0-9\-\.\_\@]+)/collections/([a-zA-Z0-9\-\.\_\@]+)": "$3 / $1 - OCL",
"/users/([a-zA-Z0-9\-\.\_\@]+)/collections/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)": "$4 / $2 - OCL",
"/orgs/([a-zA-Z0-9\-\.\_\@]+)/collections/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)" : "$4 / $2 - OCL",
"/users/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)": "$3 / $1 - OCL",
"/orgs/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)": "$3 / $1 - OCL",
"/users/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)": "$1 - $4 / $2 - OCL",
"/orgs/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)": "$1 - $4 / $2- OCL",
"/orgs/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/mappings/([a-zA-Z0-9\-\.\_\@]+)":"$6 / $4 / $3 / $1 - OCL",
"/orgs/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/mappings/([a-zA-Z0-9\-\.\_\@]+)":"$5 / $3 / $1 - OCL",
"/orgs/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/mappings/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)":"$6 / $4 / $2 - OCL",
"/users/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/mappings/([a-zA-Z0-9\-\.\_\@]+)":"$5 / $3 / $1 - OCL",
"/users/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/mappings/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)":"$6 / $4 / $2 - OCL",
"/orgs/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/mappings/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)":"$7 / $5 / $4 / $2 / $1 - OCL",
"/orgs/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/mappings/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)":"$1 - $8 / $6 / $5 / $3 / $2 - OCL",
"/users/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/mappings/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)":"$7 / $5 / $4 / $2 - OCL",
"/users/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/mappings/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)":"$1 - $8 / $6 / $5 / $3 / $2 - OCL",
"/orgs/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/mappings/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)":"$1 - $7 / $5 / $3 / $2 - OCL",
"/users/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/mappings/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)":"$1 - $7 / $5 / $3 / $2 - OCL",
"/orgs/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/concepts/([a-zA-Z0-9\-\.\_\@]+)":"$6 / $4 / $3 / $1 - OCL",
"/orgs/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/concepts/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)":"$6 / $4 / $3 / $1 - OCL",
"/users/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/concepts/([a-zA-Z0-9\-\.\_\@]+)":"$6 / $4 / $3 / $1 - OCL",
"/users/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/concepts/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)":"$6 / $4 / $3 / $1 - OCL",
"/orgs/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/concepts/([a-zA-Z0-9\-\.\_\@]+)":"$5 / $3 / $1 - OCL",
"/orgs/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/concepts/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)":"$6 / $4 / $2 - OCL",
"/users/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/concepts/([a-zA-Z0-9\-\.\_\@]+)":"$5 / $3 / $1 - OCL",
"/users/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/concepts/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)":"$6 / $4 / $2 - OCL",
"/orgs/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/concepts/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)":"$1 - $8 / $6 / $5 / $3 / $2 - OCL",
"/users/([a-zA-Z0-9\-\.\_\@]+)/sources/:source([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/concepts/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)":"$7 / $5 / $4 / $2 / $1 - OCL",
"/users/([a-zA-Z0-9\-\.\_\@]+)/sources/:source([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/concepts/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)":"$1 - $8 / $6 / $5 / $3 / $2 - OCL",
"/orgs/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/concepts/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)":"$1 - $7 / $5 / $3 / $2 - OCL",
"/users/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/concepts/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)":"$1 - $7 / $5 / $3 / $2 - OCL",
"/orgs/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)":"$5 / $3 / $2 - OCL",
"/users/([a-zA-Z0-9\-\.\_\@]+)/sources/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)":"$5 / $3 / $2 - OCL",
"/orgs/([a-zA-Z0-9\-\.\_\@]+)/collections/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)" : "$5 / $3 / $2 - OCL",
"/users/([a-zA-Z0-9\-\.\_\@]+)/collections/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)/([a-zA-Z0-9\-\.\_\@]+)" : "$5 / $3 / $2 - OCL",
"/([a-zA-Z0-9\-\.\_\@]+)/compare":"Compare - $2 - OCL",
"/imports":"Imports - OCL",
"/search":"Search - OCL"
}


export default function DocumentTitle() {
const { pathname } = useLocation();
const capitalWords = ['concepts', 'mappings', 'versions', 'details', 'history', 'sources', 'collections', 'orgs', 'references', 'about']
useEffect(() => {
forEach(TITLES, (title, routeName) => {
if(new RegExp(routeName).test(pathname)) {
const keywords = pathname.split("/").filter(ele => ele).reverse()
keywords.forEach((keyword, index) => {
if(includes(capitalWords, keyword)) {
keyword = capitalize(keyword)
}
title = title.replace(`$${index+1}`, keyword)
})
document.title = title
}
})

return () => document.title = 'OCL'
}, [pathname]);

return null;
}

0 comments on commit 9cdd0f9

Please sign in to comment.