{"version":3,"file":"component---src-pages-courses-js-0c177a6788e6e1a9b94b.js","mappings":"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","sources":["webpack://ace-industrial-academy/./src/components/titleBanner/TitleBannerEnquiry.js","webpack://ace-industrial-academy/./src/pages/courses.js"],"sourcesContent":["import React from \"react\"\nimport { useState } from \"react\"\nimport FilterButton from \"../common/filter/FilterButton\"\nimport SearchBox from \"../common/searchbox/SearchBox\"\nimport \"./banner.scss\"\nimport { useMediaQuery } from \"react-responsive\"\nimport { navigate } from \"gatsby\"\nimport BackgroundImage from \"gatsby-background-image\"\nimport { graphql, useStaticQuery } from \"gatsby\"\nimport { isBrowser } from \"../../context/utils\"\nimport Logo from \"../../assets/aia-logo\"\nimport { Link as GatsbyLink } from \"gatsby\"\nimport { Modal, ModalHeader, ModalBody } from \"reactstrap\"\nimport CourseRegistrationForm from \"../product-detail/CourseRegistration/courseRegistrationForm\"\n\nconst TitleBannerEnquiry = (props) => {\n const {\n id,\n title,\n description,\n handleFilterClick,\n isFilterOpen,\n withoutFilter,\n selfCheckout,\n withOnlyDescription,\n hasPlainBanner,\n netFee,\n coverPhoto,\n scroll,\n courseRuns,\n } = props\n\n const isMobile = useMediaQuery({\n query: \"(max-width: 565px)\",\n })\n\n const [isSuccess, setIsSuccess] = useState(false)\n const [modal, setModal] = useState(false)\n\n const toggle = () => setModal(!modal)\n\n const handleRegisterClick = () => {\n let url =\n \"mailto:training@aia.edu.sg?subject=Request for Course Quotation&body=Hello Ace, D%0A Course Title: test %0D%0A Name: D%0A Email: D%0A Contact Number:\"\n if (!isBrowser()) return\n window.open(url, \"_blank\")\n }\n\n const bannerImage = useStaticQuery(\n graphql`\n query {\n background1: file(\n relativePath: { eq: \"innerpage-bg.png\" }\n ) {\n childImageSharp {\n fluid(quality: 100, maxWidth: 1920) {\n ...GatsbyImageSharpFluid\n }\n }\n }\n background2: file(\n relativePath: { eq: \"contact-bg.png\" }\n ) {\n childImageSharp {\n fluid(quality: 100, maxWidth: 1920) {\n ...GatsbyImageSharpFluid\n }\n }\n }\n }\n `\n )\n\n const BannerBGImage1 =\n bannerImage.background1.childImageSharp.fluid\n const BannerBGImage2 =\n bannerImage.background2.childImageSharp.fluid\n\n return (\n <>\n \n
\n
\n

{title}

\n

\n {description}\n

\n
\n
\n handleRegisterClick()}\n >\n Enquire Now\n \n
\n
\n
\n
\n \n
\n \n \n \n \n \n \n \n \n \n \n
\n \n )\n}\n\nexport default TitleBannerEnquiry\n","import React, {\n useContext,\n useEffect,\n useState,\n} from \"react\"\nimport { graphql, navigate } from \"gatsby\"\nimport SEO from \"../components/seo\"\nimport TitleBannerEnquiry from \"../components/titleBanner/TitleBannerEnquiry\"\nimport { useMediaQuery } from \"react-responsive\"\nimport Filter from \"../components/filter/Filter\"\nimport CardsSliders from \"../components/common/cards-sliders/CardsSliders\"\nimport CardsList from \"../components/common/cardsList/CardsList\"\nimport {\n GlobalDispatchContext,\n GlobalStateContext,\n} from \"../context/GlobalContextProvider\"\n\nlet Courses = ({ data }) => {\n const [isFilterOpen, setisFilterOpen] = useState(false)\n const [withSearchList, setWithSearchList] =\n useState(false)\n\n const [hasActiveFilters, setHasActiveFilters] =\n useState(false)\n\n const [isMobileFilterOpen, setisMobileFilterOpen] =\n useState(false)\n\n const [isMobileView, setisMobileView] = useState(false)\n const state = useContext(GlobalStateContext)\n const dispatch = useContext(GlobalDispatchContext)\n\n const isMobile = useMediaQuery({\n query: \"(max-width: 767px)\",\n })\n\n const filterCourses = () => {\n const categories = state.filtersObject.categories\n const prices = state.filtersObject.prices\n const activeFilterNames = state.selectedFilterOptions\n\n const latestFilter = activeFilterNames.slice(-1)[0]\n\n setHasActiveFilters(true)\n\n const totalCategoryFiltersApplied = Object.values(\n categories\n ).filter((value) => value === true).length\n\n const totalPricesFiltersApplied = Object.values(\n prices\n ).filter((value) => value === true).length\n\n const hasAnyCategoryFilter = Object.values(\n categories\n ).some((cat) => cat === true)\n const hasAnyPriceFilter = Object.values(prices).some(\n (cat) => cat === true\n )\n\n const allCourses = state.courses\n\n let filteredCourses =\n state.filteredCoursesList?.length > 0\n ? state.filteredCoursesList\n : []\n\n let baseCourses = []\n\n if (hasAnyCategoryFilter && hasAnyPriceFilter) {\n baseCourses = filteredCourses\n } else if (\n (hasAnyCategoryFilter && !hasAnyPriceFilter) ||\n (!hasAnyCategoryFilter && hasAnyPriceFilter)\n ) {\n baseCourses = allCourses\n } else {\n setHasActiveFilters(false)\n }\n\n let filtered\n activeFilterNames.map((filterProp) => {\n filtered = baseCourses.filter((course) => {\n if (filterProp === \"all\") {\n return course\n } else if (filterProp === \"autodesk\") {\n if (course.category) {\n return course.category.includes(\"autodesk\")\n }\n } else if (filterProp === \"bentley\") {\n if (course.category) {\n return course.category.includes(\"bentley\")\n }\n } else if (filterProp === \"free\") {\n if (course.product?.netFee) {\n return course.product?.netFee === 0\n } else {\n return course.product?.price === 0\n }\n } else if (filterProp === \"0To49\") {\n if (course.product?.netFee) {\n return (\n course.product?.netFee > 0 &&\n course.product?.netFee <= 49\n )\n } else {\n return (\n course.product?.price > 0 &&\n course.product?.price <= 49\n )\n }\n } else if (filterProp === \"50To99\") {\n if (course.product?.netFee) {\n return (\n course.product?.netFee >= 50 &&\n course.product?.netFee <= 99\n )\n } else {\n return (\n course.product?.price >= 50 &&\n course.product?.price <= 99\n )\n }\n } else if (filterProp === \"100To499\") {\n if (course.product?.netFee) {\n return (\n course.product?.netFee >= 100 &&\n course.product?.netFee <= 499\n )\n } else {\n return (\n course.product?.price >= 100 &&\n course.product?.price <= 499\n )\n }\n } else if (filterProp === \"500To999\") {\n if (course.product?.netFee) {\n return (\n course.product?.netFee >= 500 &&\n course.product?.netFee <= 999\n )\n } else {\n return (\n course.product?.price >= 500 &&\n course.product?.price <= 999\n )\n }\n } else if (filterProp === \"moreThan1000\") {\n if (course.product?.netFee) {\n return course.product?.netFee > 999\n } else {\n return course.product?.price > 999\n }\n } else {\n return course\n }\n })\n })\n\n if (latestFilter === \"autodesk\") {\n filteredCourses = filtered\n } else if (\n (latestFilter === \"autodesk\" ||\n latestFilter === \"bentley\") &&\n totalCategoryFiltersApplied > 1\n ) {\n filteredCourses.push(...filtered)\n } else if (\n (latestFilter === \"free\" ||\n latestFilter === \"0To49\" ||\n latestFilter === \"50To99\" ||\n latestFilter === \"100To499\" ||\n latestFilter === \"500To999\" ||\n latestFilter === \"moreThan1000\") &&\n totalPricesFiltersApplied > 1\n ) {\n filteredCourses.push(...filtered)\n } else {\n filteredCourses = filtered\n }\n\n dispatch({\n type: \"SET_FILTERED_COURSES\",\n payload: filteredCourses,\n })\n }\n\n useEffect(() => {\n if (state.selectedFilterOptions) {\n filterCourses()\n }\n }, [state?.selectedFilterOptions, state?.filtersObject])\n\n useEffect(() => {\n const setViewStatus = () => {\n setisMobileView(isMobile)\n }\n setViewStatus()\n\n return () => {\n setisMobileView(false)\n }\n }, [isMobile])\n\n const isBrowser = typeof window !== \"undefined\"\n const windowObj = isBrowser ? window : null\n\n useEffect(() => {\n const setViewOption = () => {\n if (window.location.search.includes(\"searchquery\")) {\n setWithSearchList(true)\n } else {\n dispatch({\n type: \"SET_COURSE_SEARCH_RESULTS\",\n payload: [],\n })\n\n setWithSearchList(false)\n }\n if (\n window.location.search.includes(\"filter\") ||\n window.location.search.includes(\"searchquery\")\n ) {\n setisFilterOpen(true)\n }\n }\n if (isBrowser) {\n setViewOption()\n }\n return () => {\n setisFilterOpen(false)\n }\n }, [isBrowser, windowObj?.location.search])\n\n const handleFilterClick = () => {\n setisFilterOpen(true)\n\n if (isMobileView) {\n setisMobileFilterOpen(true)\n }\n }\n const closeFilter = () => {\n setisMobileFilterOpen(false)\n }\n\n const handleClearFilters = () => {\n dispatch({\n type: \"SET_FILTERED_COURSES\",\n payload: [],\n })\n dispatch({\n type: \"CLEAR_FILTER_VALUES\",\n })\n\n dispatch({\n type: \"SET_FILTER_OPTIONS\",\n payload: [],\n })\n setWithSearchList(false)\n navigate(\"/courses\")\n }\n\n return (\n <>\n \n \n\n {isFilterOpen ? (\n
\n {isMobileView ? (\n <>\n {isMobileFilterOpen && (\n \n )}\n \n ) : (\n \n )}\n\n \n
\n ) : (\n \n )}\n \n )\n}\n\nexport const query = graphql`\n query {\n courses: allContentfulTraining {\n nodes {\n id\n category\n title\n courseReference\n trainingMode\n updatedAt\n slug\n skillsFramework\n requirements\n lessons\n duration\n product {\n id\n name\n netFee\n price\n }\n coverPhoto {\n gatsbyImageData\n }\n courseRuns\n }\n }\n }\n`\n\nexport default Courses\n"],"names":["props","id","title","description","hasPlainBanner","handleFilterClick","isFilterOpen","withoutFilter","selfCheckout","withOnlyDescription","netFee","coverPhoto","scroll","courseRuns","useMediaQuery","query","useState","modal","setModal","toggle","bannerImage","useStaticQuery","BannerBGImage1","background1","childImageSharp","fluid","BannerBGImage2","background2","className","href","target","rel","onClick","isBrowser","window","open","isOpen","to","price","selectedCourse","data","setisFilterOpen","withSearchList","setWithSearchList","hasActiveFilters","setHasActiveFilters","isMobileFilterOpen","setisMobileFilterOpen","isMobileView","setisMobileView","state","useContext","GlobalStateContext","dispatch","GlobalDispatchContext","isMobile","useEffect","selectedFilterOptions","categories","filtersObject","prices","activeFilterNames","latestFilter","slice","filtered","totalCategoryFiltersApplied","Object","values","filter","value","length","totalPricesFiltersApplied","hasAnyCategoryFilter","some","cat","hasAnyPriceFilter","allCourses","courses","filteredCourses","filteredCoursesList","baseCourses","map","filterProp","course","category","includes","product","push","type","payload","filterCourses","windowObj","location","search","closeFilter","handleClearFilters","navigate","nodes"],"sourceRoot":""}