diff --git a/packages/javascript-fun/src/client/main.ts b/packages/javascript-fun/src/client/main.ts index 2ab3c69..7c72ec7 100644 --- a/packages/javascript-fun/src/client/main.ts +++ b/packages/javascript-fun/src/client/main.ts @@ -2,10 +2,26 @@ import './layout'; import '../components/GitBox/style.less'; import gitPageStyle from '../pages/GitPage/style.less'; import { debounce, getNow } from './util'; -import { defaultIcon } from '../config'; +import { iconCdnUrl } from '../config'; const { updateTime } = gitPageStyle; +const defaultIcon = (function getIconFromDate() { + const now = new Date(); + const month = now.getMonth(); + const day = now.getDate(); + if (month === 2 && day > 14 && day < 18) { + return 'default-irish.svg'; + } + if (month === 9 && day > 29) { + return 'default-halloween.svg'; + } + if (month === 11 && day > 19 && day < 25) { + return 'default-xmas.svg'; + } + return 'default-github-0.svg'; +})(); + const setTime = () => { const timeElem = ( document.getElementsByClassName(updateTime) as HTMLCollectionOf @@ -19,9 +35,20 @@ const lazyLoadImg = () => { for (let j = 0; j < imgLen; j += 1) { const imgObj = imgElems[j]; const { i } = imgObj.dataset; - if (i) { - imgObj.src = imgObj.src.replace(defaultIcon, i); - imgObj.removeAttribute('data-i'); + if (!i) continue; + imgObj.src = `${iconCdnUrl}/${i}`; + imgObj.removeAttribute('data-i'); + } +}; + +const renderDefaultIcon = () => { + const imgElems = document.getElementsByTagName('img'); + const imgLen = imgElems.length; + for (let j = 0; j < imgLen; j += 1) { + const imgObj = imgElems[j]; + const src = imgObj.getAttribute('src'); + if (!src) { + imgObj.src = `${iconCdnUrl}/${defaultIcon}`; } } }; @@ -37,3 +64,4 @@ const initLazyLoad = debounce( window.addEventListener('scroll', initLazyLoad); setTime(); +renderDefaultIcon(); diff --git a/packages/javascript-fun/src/components/GitBox/index.spec.tsx b/packages/javascript-fun/src/components/GitBox/index.spec.tsx index 2555c97..324d741 100644 --- a/packages/javascript-fun/src/components/GitBox/index.spec.tsx +++ b/packages/javascript-fun/src/components/GitBox/index.spec.tsx @@ -9,7 +9,6 @@ describe('render properly', () => { url="//www.cnn.com" name={name} img="news" - imgSrc="news" star={123} inactiveDate="Jun 22 2020" /> diff --git a/packages/javascript-fun/src/components/GitBox/index.tsx b/packages/javascript-fun/src/components/GitBox/index.tsx index ffdd9ee..fb602d8 100644 --- a/packages/javascript-fun/src/components/GitBox/index.tsx +++ b/packages/javascript-fun/src/components/GitBox/index.tsx @@ -5,8 +5,7 @@ import style from './style.less'; interface GitBoxProps { url: string; name: string; - img: string; - imgSrc: string; + img?: string; star: number; lazyImg?: string; inactiveDate: string; @@ -16,7 +15,6 @@ const GitBox: FC = ({ name, url, img, - imgSrc, star, lazyImg, inactiveDate, @@ -24,7 +22,7 @@ const GitBox: FC = ({
- {name} + {name}

{name}

diff --git a/packages/javascript-fun/src/config.ts b/packages/javascript-fun/src/config.ts index 319bd17..9f8fccf 100644 --- a/packages/javascript-fun/src/config.ts +++ b/packages/javascript-fun/src/config.ts @@ -33,22 +33,6 @@ export const hideGithubCorner = false; export const showDisqus = false; // also uncomment import in /src/client/layout/index.js export const showAdsense = false; export const gitRepo = `${githubUrl}/${repoUrl}`; -/* istanbul ignore next */ -export const defaultIcon = (function getIconFromDate() { - const now = new Date(); - const month = now.getMonth(); - const day = now.getDate(); - if (month === 2 && day > 14 && day < 18) { - return 'default-irish.svg'; - } - if (month === 9 && day > 25) { - return 'default-halloween.svg'; - } - if (month === 11 && day > 10 && day < 25) { - return 'default-xmas.svg'; - } - return 'default-github-0.svg'; -})(); /* istanbul ignore next */ export const primaryYear = ( diff --git a/packages/javascript-fun/src/pages/GitPage/index.spec.tsx b/packages/javascript-fun/src/pages/GitPage/index.spec.tsx index cb7f1be..debd88d 100644 --- a/packages/javascript-fun/src/pages/GitPage/index.spec.tsx +++ b/packages/javascript-fun/src/pages/GitPage/index.spec.tsx @@ -1,5 +1,5 @@ import { render } from '@testing-library/react'; -import GitPage from '.'; +import GitPage from './index'; describe('render properly', () => { test('render correct', () => { @@ -38,7 +38,6 @@ describe('render properly', () => { nonLazyImgIndex={-1} githubUrl="github.com" iconCdnUrl="aws.com" - defaultIcon="default.img" source={src} adSenseClient="abc" adSenseUnits={['1', '2', '3']} @@ -50,7 +49,6 @@ describe('render properly', () => { nonLazyImgIndex={1} githubUrl="github.com" iconCdnUrl="aws.com" - defaultIcon="default.img" source={src} adSenseClient="abc" adSenseUnits={['1', '2', '3']} diff --git a/packages/javascript-fun/src/pages/GitPage/index.tsx b/packages/javascript-fun/src/pages/GitPage/index.tsx index 57560ee..7b05369 100644 --- a/packages/javascript-fun/src/pages/GitPage/index.tsx +++ b/packages/javascript-fun/src/pages/GitPage/index.tsx @@ -13,7 +13,6 @@ interface GitPageProps { source: GitGroupSchema[]; githubUrl: string; iconCdnUrl: string; - defaultIcon: string; nonLazyImgIndex: number; adSenseClient: string; adSenseUnits: string[]; @@ -24,7 +23,6 @@ const GitPage: FC = ({ source, githubUrl, iconCdnUrl, - defaultIcon, nonLazyImgIndex, adPositions, adSenseClient, @@ -43,18 +41,29 @@ const GitPage: FC = ({ anchorId={v.anchorId} linkIconUrl={`${iconCdnUrl}/fa-link.svg`} > - {v.list.map((v1) => ( - - ))} + {v.list.map((v1) => { + let img = v1.img ? `${iconCdnUrl}/${v1.img}` : ''; + let lazyImg; + + if (lazyLoad) { + img = ''; + if (v1.img) { + lazyImg = v1.img; + } + } + + return ( + + ); + })} {adIndex > -1 && ( diff --git a/packages/javascript-fun/src/render/index.tsx b/packages/javascript-fun/src/render/index.tsx index 48684cb..785292e 100644 --- a/packages/javascript-fun/src/render/index.tsx +++ b/packages/javascript-fun/src/render/index.tsx @@ -9,7 +9,6 @@ import LinkPage from '../pages/LinkPage'; const { iconCdnUrl, - defaultIcon, topNavDict, renderOutputFolder, criticalAssetPath, @@ -48,7 +47,6 @@ const generateGitPage = (url: string) => { source={gitSource.filter((v) => v.page === topNavDict[url].page)} githubUrl={githubUrl} iconCdnUrl={iconCdnUrl} - defaultIcon={defaultIcon} adSenseUnits={adSenseUnits} adSenseClient={adSenseClient} adPositions={topNavDict[url].adPositions} diff --git a/packages/javascript-fun/src/server/middleware.tsx b/packages/javascript-fun/src/server/middleware.tsx index 6fee54c..d819764 100644 --- a/packages/javascript-fun/src/server/middleware.tsx +++ b/packages/javascript-fun/src/server/middleware.tsx @@ -12,7 +12,6 @@ import { GitGroupSchema, LinkGroupSchema } from '../typings/interface'; import { nonLazyImg, iconCdnUrl, - defaultIcon, topNavDict, renderOutputFolder, adSenseUnits, @@ -58,7 +57,6 @@ export const gitMd = (req: Request, res: Response) => { source={gitSource.filter((v) => v.page === topNavDict[req.url].page)} githubUrl={githubUrl} iconCdnUrl={iconCdnUrl} - defaultIcon={defaultIcon} adSenseUnits={adSenseUnits} adSenseClient={adSenseClient} adPositions={topNavDict[req.url].adPositions}