Document toolboxDocument toolbox

Generic Cards

What is a card?

A card is a UI component that contains content and actions about a single subject. In this case, the Generic Card is a highly configurable component used to render a single row of a Synapse Table or View.

Here are a few examples:

 

Each UI field must be mapped to a column in the Synapse Table/View.

*type: Indicates the object type, for example “Project”. Icons are automatically mapped for some types.
*title: Column name to use for the title.
link: Column name that contains an URL to make the title a link.
subTitle: Column name to use for the sub-title.
description: Column name to use for the description.
descriptionLinkConfig: Indicate if the description is markdown.
icon: Column name that contains the name of the icon to use in this card.
imageFileHandleColumnName: Column name that contains the FileHandleID of a custom image to be displayed on the card.
ctaButtonLinkConfig: Configure the CTA button link. Define what the button text should be, and the link configuration (column to use for the value, and how to create the internal link).
labelLinkConfig: Instruct the card on how to create links in the secondary labels. Columns may contain markdown, or their value could be used to create an internal link (to a details page for example).
columnIconOptions: Also include a special icon/label for specific values found in the secondary label column.
dataTypeIconNames: Column name that contains the list of data types to show as additional icons.
backgroundColor: Background color of the card.
isHeader: Indicate if the card should be rendered as a Header.
iconOptions: For all cards in a list, use a custom icon mapping.

How would someone set these up in Synapse?

Initiatives Example

https://www.synapse.org/#!Synapse:syn24189696/tables/

Synapse Table schema contains the following relevant columns: initiative, summary, website, image (File type column that contain the custom images).

Example Card Configuration that a web engineer would write for your table/view:

{ genericCardSchema: { type: 'Initiative', title: 'initiative', description: 'summary', link: 'website', imageFileHandleColumnName: 'image', }, ctaButtonLinkConfig: { buttonText: 'Explore Studies', linkConfig: { matchColumnName: 'initiative', isMarkdown: false, baseURL: 'Explore/Initiatives/DetailsPage', URLColumnName: 'initiative', } }

 

 

Studies Example

https://www.synapse.org/#!Synapse:syn16787123/tables/

Synapse Table schema contains the following relevant columns: studyName, summary, studyLeads, studyStatus, dataStatus, diseaseFocus, manifestation, fundingAgency,institutions, studyId, dataType (StringList type column that contain the names of data type icons).

Example Card Configuration that a web engineer would write for your table/view:

{ genericCardSchema: { title: 'studyName', type: STUDY, description: 'summary', subTitle: 'studyLeads', icon: 'studyStatus', secondaryLabels: [ 'studyStatus', 'dataStatus', 'diseaseFocus', 'manifestation', 'fundingAgency', 'institutions', 'studyId', ], dataTypeIconNames: 'dataType' }, iconOptions: { Active: studyActiveSvg, Completed: studyCompleteSvg, }, titleLinkConfig: { isMarkdown: false, baseURL: 'Explore/Studies/DetailsPage', URLColumnName: 'studyId', matchColumnName: 'studyId', }, columnIconOptions: { columns: { 'dataStatus': { 'Available': { icon: 'data', color: '#28A745' }, 'Partially Available': { icon: 'data', color: '#DE9A1F' }, 'Under Embargo': { icon: 'dataLocked', color: '#D46D1E' }, 'None': { icon: 'data', color: '#BBBBBC' }, }, 'studyStatus': { 'Active': { icon: 'reload', color: '#28A745' }, 'Completed': { icon: 'check', color: '#B2242A' }, }, 'dataType': { 'genomicVariants': { icon: 'geneVariants', label: 'Genomic Variants Data Available' }, 'geneExpression': { icon: 'geneExpression', label: 'Gene Expression Data Available' }, 'image': { icon: 'imaging', label: 'Image Data Available' }, 'drugScreen': { icon: 'lineGraph', label: 'Drug Screen (Cell) Data Available' }, 'behavior process': { icon: 'rat', label: 'Behavior Process Data Available' }, 'chromatinActivity': { icon: 'chromatin', label: 'Chromatin Activity Data Available' }, 'proteomics': { icon: 'proteomics', label: 'Proteomics Data Available' }, 'kinomics': { icon: 'kinomics', label: 'Kinomics Data Available' }, 'clinical': { icon: 'clinical', label: 'Clinical Data Available' }, 'other': { icon: 'other', label: 'Other Data Available' }, } } } }