Skip to content

Update .env.example with latest settings #208

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 94 commits into
base: qa
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
0b96a40
Added more prior treatment type and field for matching.
kevinwangcanada Nov 11, 2024
4a8285c
Merge branch 'qa' into kevin-prior-treatment
kevinwangcanada Nov 18, 2024
04815bc
Update .env.example with latest settings
jagnathan Nov 21, 2024
8456533
Update .env.example
jagnathan Nov 22, 2024
efe3b68
Update .env.example
jagnathan Nov 27, 2024
9527f55
CTM-654: added different type of treatment including surgery, medical…
kevinwangcanada Nov 29, 2024
bf40dec
CTM-654: clean up the prior treatment form code.
kevinwangcanada Dec 2, 2024
586d547
Merge pull request #209 from pughlab/kevin-ctm-654
mickey-ng Dec 3, 2024
edab883
CTM-640 fix fields not updated in db when value set to undefined
mickey-ng Dec 3, 2024
e75370d
Merge pull request #210 from pughlab/mickey-CTM-640
mickey-ng Dec 3, 2024
3b5b96c
removed debug log
mickey-ng Dec 11, 2024
3aa4781
CTM-666: fixed the bug to crash the application.
kevinwangcanada Jan 8, 2025
4ad1ff3
CTM-668: add the fix to flatten the container object.
kevinwangcanada Jan 8, 2025
7c975a0
updated gene name source json
mickey-ng Jan 9, 2025
fe61540
Merge pull request #214 from pughlab/kevin-ctm-668
mickey-ng Jan 9, 2025
119923e
Merge pull request #213 from pughlab/kevin-ctm-666
mickey-ng Jan 9, 2025
474da8f
added env to gitignore
mickey-ng Jan 10, 2025
b61bfe7
CTM-667: Fixed the bug when switching to different node on left menu …
kevinwangcanada Jan 13, 2025
48517cb
Merge pull request #216 from pughlab/kevin-ctm-667
mickey-ng Jan 15, 2025
12e016c
CTM-645
garciad016 Jan 17, 2025
f0adc14
CTM-643
garciad016 Jan 17, 2025
8858519
CTM-645
garciad016 Jan 20, 2025
c3cb6f5
Merge pull request #218 from pughlab/daniel-ctm-645-V2
mickey-ng Jan 21, 2025
650f05e
CTM-645
garciad016 Jan 21, 2025
c2b288a
Merge branch 'dev' of https://github.com/pughlab/ctims into daniel-ct…
garciad016 Jan 21, 2025
12cc4b8
Pulled from dev
garciad016 Jan 21, 2025
cdb0e2d
Removed unused code
garciad016 Jan 22, 2025
241b9ca
Merge pull request #219 from pughlab/daniel-ctm-643
mickey-ng Jan 22, 2025
e705f00
CTM-604 WIP
garciad016 Jan 23, 2025
c75b46f
CTM-645
garciad016 Jan 23, 2025
4c76682
Merge branch 'dev' of https://github.com/pughlab/ctims into daniel-ct…
garciad016 Jan 23, 2025
2d8591b
CTM-645
garciad016 Jan 29, 2025
311d7c7
CTM-645
garciad016 Jan 29, 2025
b7ded88
test deploy to QA
mickey-ng Jan 30, 2025
73ad565
test styles
mickey-ng Jan 30, 2025
900e5c2
CTM-645
garciad016 Jan 30, 2025
88e02a5
Merge pull request #225 from pughlab/daniel-ctm-645-V2
mickey-ng Jan 30, 2025
40f0459
CTM-691
garciad016 Jan 30, 2025
ab0feab
CTM-691
garciad016 Jan 30, 2025
ccce5c9
Merge branch 'dev' into daniel-ctm-691
garciad016 Jan 30, 2025
f94d74b
CTM-691
garciad016 Jan 30, 2025
909e102
CTM-691
garciad016 Jan 30, 2025
fab736e
Merge branch 'daniel-ctm-691' of https://github.com/pughlab/ctims int…
garciad016 Jan 30, 2025
2110487
CTM-691
garciad016 Jan 30, 2025
c8c8785
CTM-691
garciad016 Jan 30, 2025
095b909
Merge pull request #226 from pughlab/daniel-ctm-691
mickey-ng Jan 30, 2025
b88cab7
CTM-675: fixed the prior treatment form not rendered properly bug. al…
kevinwangcanada Feb 4, 2025
e03a0ec
Merge pull request #228 from pughlab/kevin-ctm-675
mickey-ng Feb 4, 2025
b0d39d8
CTM-695
garciad016 Feb 4, 2025
51a0175
CTM-695
garciad016 Feb 4, 2025
baf2e77
Merge pull request #230 from pughlab/daniel-ctm-645-V2
mickey-ng Feb 4, 2025
b83127d
Added toggle functionality to Protein Change input text field
Feb 5, 2025
7b9cb98
Adding toggle to autocomplete component which leads to adding toggle …
Feb 5, 2025
902f128
Added togle functionality for cnv_call field in Genomic criteria
Feb 5, 2025
81a7e79
CTM-692
garciad016 Feb 7, 2025
e63451b
Fixed bug related to negation
Feb 8, 2025
b6d4ce8
Merge branch 'dev' of https://github.com/pughlab/ctims into daniel-ct…
garciad016 Feb 10, 2025
774873b
Merge pull request #233 from dgavini/Dheeraj_CTM-698_New
mickey-ng Feb 11, 2025
4f49f12
CTM-692
garciad016 Feb 11, 2025
6c8178b
CTM-692
garciad016 Feb 11, 2025
df0241f
Merge pull request #236 from pughlab/daniel-ctm-692
mickey-ng Feb 11, 2025
5c1a42e
Merge branch 'dev' into Dheeraj_CTM-699
mickey-ng Feb 11, 2025
12bf8f4
Merge pull request #235 from dgavini/Dheeraj_CTM-699
mickey-ng Feb 11, 2025
d622deb
Added regular expression to hugo symbol field
Feb 12, 2025
904d7aa
CTM-604
garciad016 Feb 12, 2025
ae57160
Merge branch 'dev' of https://github.com/pughlab/ctims into daniel-ct…
garciad016 Feb 12, 2025
760bb71
CTM-604
garciad016 Feb 12, 2025
5da50bb
CTM-604
garciad016 Feb 12, 2025
951ae04
CTM-604
garciad016 Feb 12, 2025
92a4d28
CTM-604
garciad016 Feb 12, 2025
fc6bef4
CTM-604
garciad016 Feb 12, 2025
f6d9d05
CTM-604
garciad016 Feb 12, 2025
8e18cbc
CTM-604
garciad016 Feb 12, 2025
30a0279
CTM-604
garciad016 Feb 12, 2025
9f4eed6
CTM-604
garciad016 Feb 12, 2025
559901d
CTM-604
garciad016 Feb 12, 2025
c36fc1f
Merge pull request #239 from pughlab/daniel-ctm-604
mickey-ng Feb 12, 2025
a59e707
Added comments in regex function
Feb 12, 2025
eab333b
Merge pull request #234 from dgavini/Dheeraj_CTM-700
mickey-ng Feb 12, 2025
69e5be2
Toggle is enable only after entering a value
Feb 14, 2025
154ce11
CTM-691
garciad016 Feb 18, 2025
1590972
CTM-691
garciad016 Feb 18, 2025
45e44a3
CTM-691
garciad016 Feb 18, 2025
ae5da0d
Merge pull request #241 from pughlab/daniel-ctm-691
mickey-ng Feb 24, 2025
202ceb1
Optimized cide after code review
Mar 3, 2025
71ba959
Merge pull request #243 from dgavini/Dheeraj_CTM-700
mickey-ng Mar 3, 2025
4a80454
Added toggle functionality for Fusion Partner Hugo Symbol Field
Mar 3, 2025
2dfdd46
Merge pull request #244 from dgavini/Dheeraj_CTM-701_Latest
mickey-ng Mar 7, 2025
c19d09e
Update .env.example with latest settings
jagnathan Nov 21, 2024
82b2b5c
Update .env.example
jagnathan Nov 22, 2024
d969008
Update .env.example
jagnathan Nov 27, 2024
e65d2e6
Merge branch 'jag-update-env-vars' of https://github.com/pughlab/ctim…
jagnathan Apr 11, 2025
679cdf1
Update Dockerfile
jagnathan Apr 11, 2025
784e5ff
Update docker-compose.yml
jagnathan Apr 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 51 additions & 7 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,15 +1,59 @@
NEXTAUTH_SECRET=dAbxJF2DRzqwGYn+BWKdj8o9ieMri4FWsmIRn77r2F8=
# Please modify the following environment variables accordingly.

CTIMS_ENV=development
CTIMS_API_VERSION=2.1


#DATABASE_URL=mysql://ctims:ctims@localhost:3306/ctims
#AES 256 key, it can be generated using https://cloak.47ng.com/key
#Random example key given here. Please replace this key for your install.
#PRISMA_FIELD_ENCRYPTION_KEY=k1.aesgcm256.wPyWsb8gQ2Xn-UgiaOQRqs3nb4FWIYR01DDihQgeqBg=

# command to create a new secret - openssl rand -base64 32
# NEXTAUTH Secret is used to encrypt the NextAuth.js JWT
#Example value QG0ip+EjLW4j9BNlXPcC5kXjXcEAW/cYP1mbZKLP1q8=
NEXTAUTH_SECRET=secret
REACT_APP_API_URL=http://localhost:3333/api
NEXTAUTH_URL=http://localhost:3000
NEXT_AUTH_API_URL=http://backend:3333/api
NEXTAUTH_API_URL=http://backend:3333/api
NEXT_PUBLIC_SIGNOUT_REDIRECT_URL=http://localhost:3000
NEXT_PUBLIC_TRIAL_LOCK_PING_TIME_MS=240000
NEXT_TRIAL_LOCK_CLEAR_TIME_MS=300000


#keycloak settings
KEYCLOAK_URL=<KEYCLOAK_URL>
KEYCLOAK_CLIENT_ID=<client_id>
# Keycloak client uuid. This is different from the id above.
# If you cannot find it in the client settings, the URL usually includes it. Example: http://localhost:8080/admin/master/console/#/ctims/clients/3813811a-***/settings, 3813811a-*** is the uuid
KEYCLOAK_CLIENT_UUID=<uuid>
# We suggest creating a new realm instead of using the default master realm.
KEYCLOAK_REALM=<realm>
# This is the client secret that stored under the Credentials tab in the client page.
# The realm needs to have client authentication enabled to see the Credentials tab.
KEYCLOAK_CLIENT_SECRET=<client_secret>
KEYCLOAK_ADMIN_CLIENT_ID=ctims-admin # a client with sevice account enabled
# a client with sevice account enabled
# It does not need to be a separate client. If your above client already has service account enabled, use the same ID here.
KEYCLOAK_ADMIN_CLIENT_ID=ctims-admin
KEYCLOAK_ADMIN_CLIENT_SECRET=<secret>
KEYCLOAK_TOKEN_ENDPOINT=https://cbioportal.pmgenomics.ca/newauth/realms/UHN/protocol/openid-connect/token
NEXT_PUBLIC_ENABLE_MATCHMINER_INTEGRATION=true
NEXT_PUBLIC_TRIAL_LOCK_PING_TIME_MS=240000
NEXT_TRIAL_LOCK_CLEAR_TIME_MS=300000
# This is the endpoint to get access token.
KEYCLOAK_TOKEN_ENDPOINT=

#matchminer settings - only if matchminer integration is enabled
NEXT_PUBLIC_ENABLE_MATCHMINER_INTEGRATION = true
MM_API_URL=<matchminer-api-url>/api
MM_API_TOKEN=

#Rabbitmq settings for MatchMiner communication
RABBITMQ_URL=rabbitmq
RABBITMQ_PORT=5672
MATCHMINER_SEND_QUEUE=run_match
MATCHMINER_RECEIVE_QUEUE=match_message

# email notification settings
#example Host name gmail.com
MAIL_HOST=<hostname>
MAIL_USERNAME=<userid>
MAIL_PASSWORD=<leave_blank>
CTIMS_SUPPORT_EMAIL=<ctims_support_email>
CTIMS_URL=<ctims_website_url>
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
*.sublime-workspace
apps/api/.env
apps/web/.env
apps/api/prisma/.env
.env

# IDE - VSCode
.vscode/*
Expand Down
3 changes: 0 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,6 @@ COPY --from=build /app/dist/apps/web .
RUN rm -rf /var/www/html/.next/cache
RUN sh -c 'echo "[]" > /var/www/html/.next/server/next-font-manifest.json'

ENV NEXTAUTH_SECRET=dAbxJF2DRzqwGYn+BWKdj8o9ieMri4FWsmIRn77r2F8=
ENV REACT_APP_API_URL=http://backend:3333/api
ENV NEXTAUTH_URL=http://localhost:3000

RUN yarn install --production

Expand Down
4 changes: 2 additions & 2 deletions apps/api/prisma/seed/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ main().then(() => {
async function fetchHgncData() {
try {
const response = await get(
'https://ftp.ebi.ac.uk/pub/databases/genenames/hgnc/json/hgnc_complete_set.json'
'http://storage.googleapis.com/public-download-files/hgnc/json/json/hgnc_complete_set.json'
);
if (response.status != 200) {
throw new Error('Failed to fetch data');
Expand All @@ -63,7 +63,7 @@ async function saveGenes(data) {
hugoSymbol: x.symbol,
};
});

await prisma.gene.createMany({
data: genesData,
skipDuplicates: true,
Expand Down
6 changes: 3 additions & 3 deletions apps/api/src/app/trial/trial.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -134,9 +134,9 @@ export class TrialService implements OnModuleInit {
where: { id: existing_trial.id },
data: {
status,
principal_investigator,
nickname,
nct_id,
principal_investigator: principal_investigator === undefined? null : principal_investigator,
nickname: nickname === undefined? null : nickname,
nct_id: nct_id === undefined? null : nct_id,
ctml_schemas: {
connect: {
version: ctml_schema_version
Expand Down
56 changes: 30 additions & 26 deletions apps/web/components/editor/EditorTopBar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ import useHandleSignOut from "../../hooks/useHandleSignOut";
import useUpdateTrialLock from "../../hooks/useUpdateTrialLock";

interface EditorTopBarProps {
title?: string;
lastSaved: string;
setLastSaved: any;
title?: string;
lastSaved: string;
setLastSaved: any;
}

const EditorTopBar = (props: EditorTopBarProps) => {
Expand Down Expand Up @@ -264,7 +264,7 @@ const EditorTopBar = (props: EditorTopBarProps) => {
<>
<Toast ref={toast} position="top-center" />
<ConfirmDialog visible={isConfirmationDialogVisible} onHide={() => setIsConfirmationDialogVisible(false)} message="Are you sure you want to leave this page? Unsaved inputs will be lost."
header="Confirmation" acceptLabel="Discard" rejectLabel="Cancel" accept={accept} reject={reject}
header="Confirmation" acceptLabel="Discard" rejectLabel="Cancel" accept={accept} reject={reject}
/>
<ExportCtmlDialog
isDialogVisible={isDialogVisible}
Expand All @@ -276,33 +276,37 @@ const EditorTopBar = (props: EditorTopBarProps) => {
sendCtmlClicked={onSendClick}
onCTMLDialogHide={() => setIsSendDialogVisible(false)}
onIsOKClicked={handleSendCTMLOKClicked}/>
<div className={styles.topBar}>
<div className={styles.logoContainer}>
<img src={'/assets/ctims-logo.svg'} alt={'logo'} className={styles.logo}/>
</div>
<div className={styles.nav}>
<div className={styles.btnTitleContainer}>
<div className={styles.backBtn} onClick={(e) => backClick(e)}>
<i className="pi pi-arrow-left"></i>
</div>
<div className={styles.title}>{props.title ? props.title : "New CTML"}</div>
<div className={styles.topBar}>
<div className={styles.logoContainer}>
<img src={'/assets/ctims-logo.svg'} alt={'logo'} className={styles.logo}/>
</div>
<div className={styles.lastsaved}>Last saved: {props.lastSaved}</div>
<div className={styles.menuBtnGroup}>
{/*<Button label="Discard" className="p-button-text p-button-plain" />*/}
<Button label={isGroupAdmin ? 'Export' : 'Validate'}
onClick={onExportClick}
className="p-button-text p-button-plain" />
<>
<div className={styles.nav}>
<div className={styles.btnTitleContainer}>
<div className={styles.backBtn} onClick={(e) => backClick(e)}>
<i className="pi pi-arrow-left"></i>
</div>
<div className={styles.title}>{props.title ? props.title : "New CTML"}</div>
</div>
<div className={styles.lastsaved}>Last saved: {props.lastSaved}</div>
<div className={styles.menuBtnGroup}>
{/*<Button label="Discard" className="p-button-text p-button-plain" />*/}
{isGroupAdmin &&
<Button disabled={isFormDisabled} label="Send CTML to Matcher" className={styles.saveBtn} onClick={onSendClick} />
<Button
label="Export"
onClick={onExportClick}
className="p-button-text p-button-plain"
/>
}
</>
<Button disabled={isFormDisabled} label="Save" className={styles.saveBtn} onClick={onSaveClick} />
</div>
<>
{isGroupAdmin &&
<Button disabled={isFormDisabled} label="Send CTML to Matcher" className={styles.saveBtn} onClick={onSendClick} />
}
</>
<Button disabled={isFormDisabled} label="Save" className={styles.saveBtn} onClick={onSaveClick} />
</div>

</div>
</div>
</div>
</>
)
}
Expand Down
3 changes: 3 additions & 0 deletions apps/web/components/trials/Results.module.scss
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
width: 100%;
box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.25);
border-radius: 8px;
overflow: hidden;


}

.titleText {
Expand Down
87 changes: 75 additions & 12 deletions apps/web/components/trials/Results.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ import useGetMatchResults from '../../hooks/useGetMatchResults';
import useDownloadResults from '../../hooks/useDownloadResults';
import { classNames } from 'primereact/utils';
import styles from './Results.module.scss';
import { DataTable } from 'primereact/datatable';
import {DataTable, DataTableSortMeta} from 'primereact/datatable';
import { Column } from 'primereact/column';
import { CSVLink } from "react-csv";
import {MULTI_SORT_META_RESULTS} from "../../constants/appConstants";
import {TrialStatusEnum} from "../../../../libs/types/src/trial-status.enum";
import { setIsLongOperation } from 'apps/web/store/slices/contextSlice';
import { useDispatch } from 'react-redux';
Expand Down Expand Up @@ -48,6 +49,10 @@ const Results = (props: {trials: [], getTrialsForUsersInGroupLoading: boolean})
useEffect(() => {
if (getMatchResultsResponse) {
const processedData = postProcess(getMatchResultsResponse);

// Sort by 'updatedAt' in descending order BEFORE rendering
processedData.sort((a, b) => new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime());

setResults(processedData);
}
}, [getMatchResultsResponse])
Expand Down Expand Up @@ -75,6 +80,10 @@ const Results = (props: {trials: [], getTrialsForUsersInGroupLoading: boolean})
// result download file name
const [resultFileName, setResultFileName] = useState<string>('');


const DEFAULT_SORT: DataTableSortMeta[] = [{ field: 'updatedAt', order: -1 }];
const [multiSortMeta, setMultiSortMeta] = useState<DataTableSortMeta[]>(DEFAULT_SORT);

const headers = [
{label: "Trial Id", key: "trialId"},
{label: "Nickname", key: "nickname"},
Expand Down Expand Up @@ -114,6 +123,43 @@ const Results = (props: {trials: [], getTrialsForUsersInGroupLoading: boolean})
// don't have global const state for csvLink as it can be null as component is mounted/unmounted when datatable is changed
let csvLink: React.MutableRefObject<any> = useRef(null);

const onSort = (event: any) => {
if (event.multiSortMeta?.length) {
setMultiSortMeta(event.multiSortMeta);
sessionStorage.setItem(MULTI_SORT_META_RESULTS, JSON.stringify(event.multiSortMeta));
} else {
setMultiSortMeta(DEFAULT_SORT);
sessionStorage.removeItem(MULTI_SORT_META_RESULTS);
}
};

// Restore sorting when the component mounts
useEffect(() => {
const savedSortMeta = sessionStorage.getItem(MULTI_SORT_META_RESULTS);
if (savedSortMeta) {
setMultiSortMeta(JSON.parse(savedSortMeta));
}
}, []);

const extractDateTime = (dateStr) => {
if (!dateStr || typeof dateStr !== 'string') {
return ''; // Return an empty string to prevent crashes
}

// Extract date and time before "by" in the string
const match = dateStr.match(/(.*?)(?=\s+by\s+|$)/);
return match ? match[1] : dateStr;
};

const customDateSort = (event) => {
const { data, order, field } = event;
return [...data].sort((a, b) => {
const dateA = new Date(extractDateTime(a[field])).getTime();
const dateB = new Date(extractDateTime(b[field])).getTime();
return order * (dateA - dateB);
});
};

const downloadBodyTemplate = (rowData) => {
// set the ref in body template so we know it's mounted
csvLink = React.useRef<CSVLink & HTMLAnchorElement & { link: HTMLAnchorElement }>();
Expand Down Expand Up @@ -183,20 +229,36 @@ const Results = (props: {trials: [], getTrialsForUsersInGroupLoading: boolean})
<span className={styles.titleText}>Match Results</span>

<div className={styles.tableContainer}>
<DataTable value={results} rowHover={true}
<DataTable value={results} rowHover={true} paginator rows={10}
rowsPerPageOptions={[5, 10, 25, 50]}
loading={props.getTrialsForUsersInGroupLoading || getMatchResultsLoading}
sortField="createdOn" sortOrder={-1}
emptyMessage={'No match results.'}
sortMode="multiple"
multiSortMeta={multiSortMeta}
onSort={onSort}
removableSort
sortField="updatedAt" // Force 'Modified on' column to sort
defaultSortOrder={-1} // Enforce descending order
>
<Column field="trialId" header="ID"></Column>
<Column field="nickname" header="Nickname"></Column>
<Column field="principal_investigator" header="Principal Investigator"></Column>
<Column field="createdAt" header="Created on" dataType="date"></Column>
<Column field="updatedAt" header="Modified on" dataType="date"></Column>
<Column field="trialStatus" header="Match Status" sortable></Column>
<Column field="trialRetCount" header="Match Results"></Column>
<Column field="matchSentDate" header="Last Matched" dataType="date"></Column>
<Column field="matchedDate" header="Last New Result" dataType="date"></Column>
<Column field="trialId" header="ID" sortable></Column>
<Column field="nickname" header="Nickname" sortable></Column>
<Column field="principal_investigator" header="Principal Investigator" sortable></Column>
<Column
field="createdAt"
header="Created on"
sortable
sortFunction={customDateSort}
/>
<Column
field="updatedAt"
header="Modified on"
sortable
sortFunction={customDateSort}
/>
<Column field="trialStatus" header="Match Status" sortable ></Column>
<Column field="trialRetCount" header="Match Results" sortable></Column>
<Column field="matchSentDate" header="Last Matched" dataType="date" sortable></Column>
<Column field="matchedDate" header="Last New Result" dataType="date" sortable></Column>
<Column field="download" header="Download" dataType="boolean" style={{minWidth: '6rem'}}
body={downloadBodyTemplate}></Column>
</DataTable>
Expand All @@ -205,4 +267,5 @@ const Results = (props: {trials: [], getTrialsForUsersInGroupLoading: boolean})
</>
)
}

export default Results;
2 changes: 2 additions & 0 deletions apps/web/components/trials/Trials.module.scss
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@
width: 100%;
box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.25);
border-radius: 8px;
overflow: hidden; // Add this to contain the table

}

.trailsEllipseBtn {
Expand Down
Loading