@@ -33,6 +33,18 @@ function GettingStarted({ data }) {
3333 toCardData ( project , defaultCover )
3434 ) ;
3535
36+ const engine = data . engineIssues . nodes [ 0 ] ;
37+ const engineIssues = engine . issues . nodes
38+ . map ( ( issue ) => {
39+ const { title, author, labels, updatedAt, url } = issue ;
40+ const { login } = author ;
41+ const { nodes } = labels ;
42+ const tags = nodes . flatMap ( ( node ) => node . name ) ;
43+ return { title, author : login , tags, date : updatedAt , url } ;
44+ } )
45+ . sort ( ( a , b ) =>
46+ new Date ( a . date ) . getTime ( ) <= new Date ( b . date ) . getTime ( ) ? 1 : 0
47+ ) ;
3648 const moduleIssues = data . moduleIssues . nodes
3749 . filter ( ( module ) => module . issues . nodes . length !== 0 )
3850 . flatMap ( ( module ) => {
@@ -336,6 +348,13 @@ function GettingStarted({ data }) {
336348 </ a >
337349 </ li >
338350 </ ul >
351+ < p >
352+ Jump below to our{ " " }
353+ < Link to = "#good-first-engine-issues" className = "text-success" >
354+ < b > Good First Issues in Engine</ b >
355+ </ Link >
356+ .
357+ </ p >
339358 </ Col >
340359 </ Row >
341360 </ Section >
@@ -459,6 +478,81 @@ function GettingStarted({ data }) {
459478 ) ) }
460479 </ Col >
461480 </ Section >
481+ < Section tag = "h4" title = "Good First Engine Issues" >
482+ < Row className = "justify-content-center align-items-start" >
483+ < Col md = "8" className = "text-justify justify-content-center" >
484+ < p >
485+ Find some of our engine issues below. If you would like to work
486+ on one of them, start a draft PR for it. You can also view the
487+ full list on{ " " }
488+ < a
489+ className = "text-success font-weight-bold"
490+ href = "https://github.com/MovingBlocks/Terasology/issues?q=is%3Aopen+is%3Aissue+label%3A%22Good+First+Issue%22"
491+ >
492+ GitHub
493+ </ a >
494+ .
495+ </ p >
496+ </ Col >
497+ </ Row >
498+ < Col lg = "12" className = "card-spacing" >
499+ { engineIssues . map ( ( { title, tags, author, url, date } ) => (
500+ < Row className = "justify-content-start align-items-start" >
501+ < Card
502+ className = "row_shadow h-100 md-12 my-3"
503+ style = { { width : "100%" } }
504+ >
505+ < CardHeader className = "bg-success" />
506+ < a
507+ href = { url }
508+ className = "btn-light"
509+ target = "_blank"
510+ rel = "noreferrer"
511+ >
512+ < Row className = "justify-content-start align-items-center" >
513+ < Col md = "1" className = "ml-5 pt-0 pb-2" >
514+ < div >
515+ < IconContext . Provider value = { githubIconSize } >
516+ < FaGithub />
517+ </ IconContext . Provider >
518+ </ div >
519+ </ Col >
520+ < Col md = "10" className = "pt-0 pb-2" >
521+ < CardBody >
522+ { tags ? (
523+ < CardSubtitle tag = "h7" >
524+ < Tags tags = { tags } />
525+ </ CardSubtitle >
526+ ) : (
527+ ""
528+ ) }
529+ < CardTitle tag = "h5" className = "mt-3" >
530+ { title }
531+ </ CardTitle >
532+ { author ? (
533+ < CardSubtitle className = "text-muted" >
534+ < b > Author:</ b > { author }
535+ </ CardSubtitle >
536+ ) : (
537+ ""
538+ ) }
539+ { date ? (
540+ < CardSubtitle className = "text-muted" >
541+ < b > Last updated on: </ b >
542+ { moment ( date ) . format ( "MMMM DD, YYYY" ) }
543+ </ CardSubtitle >
544+ ) : (
545+ ""
546+ ) }
547+ </ CardBody >
548+ </ Col >
549+ </ Row >
550+ </ a >
551+ </ Card >
552+ </ Row >
553+ ) ) }
554+ </ Col >
555+ </ Section >
462556 </ Section >
463557 </ Layout >
464558 ) ;
@@ -505,6 +599,26 @@ export const pageQuery = graphql`
505599 }
506600 }
507601 }
602+ engineIssues: allTerasologyEngine {
603+ nodes {
604+ issues {
605+ nodes {
606+ id
607+ title
608+ author {
609+ login
610+ }
611+ labels {
612+ nodes {
613+ name
614+ }
615+ }
616+ updatedAt
617+ url
618+ }
619+ }
620+ }
621+ }
508622 projectCover: file(name: { eq: "defaultCardcover" }, ext: { eq: ".jpg" }) {
509623 childImageSharp {
510624 gatsbyImageData
0 commit comments