new URLSearchParams(search), [search]);\r\n }\r\n\r\nfunction Detail() {\r\n let { topicId } = useParams();\r\n let query = useQuery();\r\n let [content,SetContent]=useState('Loading...');\r\n let [data,setData] = useState(null)\r\n const key = query.get('key');\r\n\r\n const loadNewspaper=()=>{\r\n Utils.clientNoauthPost(`/Newspaper/GetNewspaperDetails?id=${topicId}`).then(r=>{\r\n SetContent(r.content)\r\n window.scrollTo(0, 0)\r\n })\r\n }\r\n const loadbttc=()=>{\r\n Utils.clientNoauthPost(`/Symbol/GetSymbolContentNews?id=${topicId}`).then(r=>{\r\n setData(r)\r\n window.scrollTo(0, 0)\r\n })\r\n }\r\n\r\n React.useEffect(()=>{\r\n console.log('here')\r\n if(key==='bcpt'){\r\n loadbttc()\r\n }else{\r\n loadNewspaper()\r\n }\r\n \r\n },[topicId])\r\n\r\n let p = new Parser();\r\n if(key!=='bcpt')\r\n return {p.parse(content)}
\r\n\r\n if(data==null)\r\n return ....
\r\n document.title = `${data.symbol}: ${data.title}`\r\n let sContent = JSON.parse(data.content);\r\n console.log(sContent)\r\n if(sContent.type !=2 ){\r\n return\r\n
{data.symbol}: {data.title}
\r\n
{Utils.formatHour(data.upTime)}
\r\n {\r\n sContent.texts.map((e,i)=>(\r\n
\r\n {p.parse(e)}\r\n
\r\n ))\r\n }\r\n
Tài liệu:
\r\n {\r\n sContent.links.map((e,i)=>(\r\n
\r\n ))\r\n }\r\n
\r\n }\r\n return {p.parse(data.content)}
\r\n}\r\n\r\nconst Item=({item,isList,type} )=>{\r\n return\r\n {\r\n type!=='bcpt'&&
\r\n \r\n
\r\n }\r\n
\r\n
{item.title}
\r\n {Utils.formatHour(item.upTime)}
\r\n \r\n
\r\n}\r\nconst TinMoi=({item})=>{\r\n let match = useRouteMatch();\r\n let location = useLocation();\r\n const [data,setData] = React.useState([\r\n {title:'Báo cáo phân tích',lkey:'bcpt',data:[]},\r\n {title:'Chứng khoán',lkey:'chungkhoan',data:[]},\r\n {title:'Thế giới',lkey:'thegioi',data:[]},\r\n {title:'BĐS',lkey:'bds',data:[]},\r\n {title:'Thị trường',lkey:'thitruong',data:[]},\r\n {title:'Vĩ mô',lkey:'vimo',data:[]},\r\n ])\r\n React.useEffect(()=>{\r\n Utils.clientNoauthPost(item.url).then(r=>{\r\n setData([\r\n {title:'Báo cáo phân tích',lkey:'bcpt',data:r.bcpt},\r\n {title:'Chứng khoán',lkey:'chungkhoan',data:r.chungkhoan},\r\n {title:'Thế giới',lkey:'thegioi',data:r.thegioi},\r\n {title:'BĐS',lkey:'bds',data:r.bds},\r\n {title:'Thị trường',lkey:'thitruong',data:r.thitruong},\r\n {title:'Vĩ mô',lkey:'vimo',data:r.vimo},\r\n ]) \r\n }).catch(e=>{\r\n })\r\n },[])\r\n let isList = location.pathname===match.path\r\n console.log(data)\r\n return \r\n {\r\n data.map(e=>
\r\n
{e.title}\r\n {\r\n e.data.map((el,i)=>
\r\n \r\n )\r\n }\r\n
)\r\n }\r\n
\r\n}\r\nconst ListItem=({data})=>{\r\n let match = useRouteMatch();\r\n let location = useLocation();\r\n\r\n let [page,SetPage] = useState(0);\r\n let [items,SetItems] = useState([]);\r\n let [isLoading,setIsLoading] = useState(false);\r\n let [isLoadMore,setIsLoadMore] = useState(true);\r\n \r\n const _last = React.useRef(0);\r\n\r\n const loadMore = ()=>{\r\n if(isLoading || !isLoadMore) \r\n return;\r\n setIsLoading(true);\r\n Utils.clientNoauthPost(data.url + _last.current).then(r=>{\r\n console.log(r)\r\n if(r.length===0){\r\n setIsLoadMore(false);\r\n return;\r\n }\r\n SetPage(page+1)\r\n SetItems([...items,...r])\r\n setIsLoading(false);\r\n _last.current = r[r.length-1].id;\r\n }).catch(e=>{\r\n setIsLoading(false);\r\n })\r\n }\r\n\r\n let isList = location.pathname===match.path;\r\n \r\n return \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n data.type==1?:Loading ...}\r\n useWindow={false}\r\n >\r\n {\r\n items.map(e=>\r\n \r\n )\r\n } \r\n \r\n }\r\n \r\n
\r\n \r\n}\r\n\r\nconst Screen=(props)=>{\r\n let match = useRouteMatch();\r\n const menus = [\r\n {href:'/tin-moi', title:'Tin mới',url:'/Newspaper/GetLatest',type:1},\r\n {href:'/chung-khoan', title:'Chứng khoán',url:'/Newspaper/GetNewspaper?type=1,2,3,5&last='},\r\n {href:'/bao-cao-phan-tich', title:'Báo cáo PT',url:'/Newspaper/GetBCTC?last=',lkey:'bcpt'},\r\n {href:'/the-gioi', title:'Thế giới',url:'/Newspaper/GetNewspaper?type=8&last='},\r\n {href:'/bat-dong-san', title:'Bất Động Sản',url:'/Newspaper/GetNewspaper?type=4&last='},\r\n {href:'/thi-truong', title:'Thị trương',url:'/Newspaper/GetNewspaper?type=9,10&last='},\r\n {href:'/vi-mo', title:'Vĩ mô',url:'/Newspaper/GetNewspaper?type=7&last='},\r\n ]\r\n return <>\r\n \r\n \r\n \r\n \r\n \r\n {\r\n menus.map((e,i)=>\r\n \r\n \r\n )\r\n }\r\n \r\n >\r\n}\r\nexport default Screen;","import React,{useState} from 'react';\r\nimport { Route ,useRouteMatch,\r\n useLocation,NavLink,useParams } from 'react-router-dom'\r\nimport * as Utils from '../utils';\r\nimport InfiniteScroll from 'react-infinite-scroller';\r\nimport {Container,Row,Col,Image} from 'react-bootstrap';\r\nimport {Parser} from 'html-to-react';\r\n\r\nfunction Detail() {\r\n let { topicId } = useParams();\r\n let [content,SetContent]=useState({});\r\n let [loading,SetLoading] = useState(true);\r\n React.useEffect(()=>{\r\n Utils.fetchData(`getnewcontentfull?id=${topicId}`).then(r=>{\r\n console.log(r)\r\n SetContent(r)\r\n SetLoading(false)\r\n window.scrollTo(0, 0)\r\n })\r\n },[topicId]);\r\n if(loading){\r\n returnLoading...
\r\n }\r\n document.title = `${content.MCK}: ${content.Title}`\r\n let p = new Parser();\r\n let sContent = JSON.parse(content.Content);\r\n if(sContent.type===0){\r\n return\r\n
{content.MCK}: {content.Title}
\r\n
{Utils.formatDate(content.CreatedDate)}
\r\n {\r\n sContent.Texts.map((e,i)=>(\r\n
\r\n {p.parse(e)}\r\n
\r\n ))\r\n }\r\n
Tài liệu:
\r\n {\r\n sContent.LsLink.map((e,i)=>(\r\n
\r\n ))\r\n }\r\n
\r\n }\r\n\r\n return {p.parse(sContent.wcontent)}
\r\n}\r\n\r\nconst Item=(props)=>{\r\n let {item,isList} = props;\r\n const [isError,SetIsError] = React.useState(false);\r\n return\r\n
\r\n {\r\n isError?
\r\n {item.MCK}\r\n
:
SetIsError(true)}\r\n src={`http://sigmastock.net/Content/compimg/${item.MCK}.jpg`} fluid/>\r\n }\r\n \r\n
\r\n
{item.Title}
\r\n {Utils.formatDate(item.CreatedDate)}
\r\n \r\n
\r\n}\r\nconst ListItem=(props)=>{\r\n let match = useRouteMatch();\r\n let location = useLocation();\r\n\r\n console.log('match',match)\r\n console.log('location',location)\r\n\r\n let [page,SetPage] = useState(0);\r\n let [items,SetItems] = useState([]);\r\n let [isLoading,setIsLoading] = useState(false);\r\n let [isLoadMore,setIsLoadMore] = useState(true);\r\n\r\n const loadMore = ()=>{\r\n if(isLoading) return;\r\n setIsLoading(true);\r\n Utils.fetchData(`getptdntin?begin=${page*40}&num=40`).then(r=>{\r\n if(r.length===0){\r\n setIsLoadMore(false);\r\n return;\r\n }\r\n SetPage(page+1)\r\n SetItems([...items,...r])\r\n setIsLoading(false);\r\n }).catch(e=>{\r\n console.log(e)\r\n })\r\n }\r\n \r\n let isList = location.pathname===match.path;\r\n\r\n return \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Loading ...}\r\n useWindow={false}\r\n >\r\n {\r\n items.map(e=>\r\n \r\n )\r\n } \r\n \r\n \r\n
\r\n \r\n}\r\n\r\nconst Screen=(props)=>{\r\n return \r\n}\r\nexport default Screen;","import React,{useState} from 'react';\r\nimport { Route ,useRouteMatch,\r\n useLocation,NavLink,useParams } from 'react-router-dom'\r\nimport * as Utils from '../utils';\r\nimport InfiniteScroll from 'react-infinite-scroller';\r\nimport {Container,Row,Col,Image} from 'react-bootstrap';\r\nimport {Parser} from 'html-to-react';\r\n\r\nfunction Detail() {\r\n let { topicId } = useParams();\r\n let [content,SetContent]=useState({});\r\n let [loading,SetLoading] = useState(true);\r\n React.useEffect(()=>{\r\n Utils.fetchData(`getnewcontentfull?id=${topicId}`).then(r=>{\r\n console.log(r)\r\n SetContent(r)\r\n SetLoading(false)\r\n window.scrollTo(0, 0)\r\n })\r\n },[topicId]);\r\n if(loading){\r\n returnLoading...
\r\n }\r\n document.title = `${content.MCK}: ${content.Title}`\r\n let p = new Parser();\r\n let sContent = JSON.parse(content.Content);\r\n if(sContent.type===0){\r\n return\r\n
{content.MCK}: {content.Title}
\r\n
{Utils.formatDate(content.CreatedDate)}
\r\n {\r\n sContent.Texts.map((e,i)=>(\r\n
\r\n {p.parse(e)}\r\n
\r\n ))\r\n }\r\n
Tài liệu:
\r\n {\r\n sContent.LsLink.map((e,i)=>(\r\n
\r\n ))\r\n }\r\n
\r\n }\r\n\r\n return {p.parse(sContent.wcontent)}
\r\n}\r\n\r\nconst Item=(props)=>{\r\n let {item,isList} = props;\r\n const [isError,SetIsError] = React.useState(false);\r\n return\r\n
\r\n {\r\n isError?
\r\n {item.MCK}\r\n
:
SetIsError(true)}\r\n src={`http://sigmastock.net/Content/compimg/${item.MCK}.jpg`} fluid/>\r\n }\r\n \r\n
\r\n
{item.MCK}: {item.Title}
\r\n {Utils.formatDate(item.CreatedDate)}
\r\n \r\n
\r\n}\r\nconst ListItem=(props)=>{\r\n let match = useRouteMatch();\r\n let location = useLocation();\r\n let [page,SetPage] = useState(0);\r\n let [items,SetItems] = useState([]);\r\n let [isLoading,setIsLoading] = useState(false);\r\n let [isLoadMore,setIsLoadMore] = useState(true);\r\n\r\n const loadMore = ()=>{\r\n if(isLoading) return;\r\n setIsLoading(true);\r\n Utils.fetchData(`getnewsbyfromid?fid=6&begin=${page*40}&num=40`).then(r=>{\r\n if(r.length===0){\r\n setIsLoadMore(false);\r\n return;\r\n }\r\n SetPage(page+1)\r\n SetItems([...items,...r])\r\n setIsLoading(false);\r\n }).catch(e=>{\r\n console.log(e)\r\n })\r\n }\r\n \r\n let isList = location.pathname===match.path;\r\n\r\n return \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Loading ...}\r\n useWindow={false}\r\n >\r\n {\r\n items.map(e=>\r\n \r\n )\r\n } \r\n \r\n \r\n
\r\n \r\n}\r\n\r\nconst Screen=(props)=>{\r\n return \r\n}\r\nexport default Screen;","import React from 'react';\r\n\r\nconst Screen =(props)=>{\r\n return \r\n Coming soon...\r\n
\r\n}\r\n\r\nexport default Screen;","import React from 'react';\r\n\r\nconst Screen =(props)=>{\r\n return \r\n Coming soon...\r\n
\r\n}\r\n\r\nexport default Screen;","import React from 'react';\r\n\r\nconst Screen =(props)=>{\r\n return \r\n Coming soon...\r\n
\r\n}\r\n\r\nexport default Screen;","import React from 'react';\r\nimport { Route, Switch, BrowserRouter } from 'react-router-dom'\r\nimport * as Screens from './screens';\r\nimport * as Components from './components';\r\n\r\nfunction App() {\r\n \r\n return (\r\n \r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n >\r\n \r\n )\r\n}\r\n\r\nexport default App;\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' },\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then(registration => {\r\n registration.unregister();\r\n })\r\n .catch(error => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\nimport * as serviceWorker from './serviceWorker';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n"],"sourceRoot":""}