rats-search/src/app/router.js
2018-06-18 13:16:59 +03:00

134 lines
2.6 KiB
JavaScript

//import router from 'page';
import PagesPie from './pages-pie.js';
import FeedPage from './feed-page.js'
import SearchPage from './search-page.js'
import ActivityPage from './activity-page'
import TorrentPage from './torrent-page.js'
import DMCAPage from './dmca-page.js'
import ConfigPage from './config-page.js'
import TopPage from './top-page.js'
import DownloadPage from './download-page.js'
import ChangelogPage from './changelog-page.js'
import FiltersPage from './filters-page.js'
const history = []
let currentPage
let routers = {}
const router = (page, callback) => {
if(!callback)
{
currentPage = page ? page : '/'
if(history.length >= 10)
history.shift()
history.push(currentPage)
if(!page)
routers['/'].callback()
else
{
const p = page.split('/')
const pg = routers[`${p[0]}/${p[1]}`]
if(!pg)
return
p.splice(0, 2)
const params = {}
for(let i = 0; i < p.length; i++)
{
params[pg.args[i]] = p[i]
}
console.log(params)
pg.callback({
params
})
}
return;
}
const p = page.split('/')
routers[`${p[0]}/${p[1]}`] = {callback}
routers[`${p[0]}/${p[1]}`].args = []
for(let i = 2; i < p.length; i++)
{
if(p[i].startsWith(':'))
routers[`${p[0]}/${p[1]}`].args.push(p[i].substring(1))
}
}
window.router = router;
window.routerOpenPrev = () => {
console.log(history)
if(history.length < 2)
return
history.pop() // last page
router(history.pop())
}
window.routerFix = () => {
if(history.length >= 10)
history.shift()
history.push(currentPage)
currentPage = ''
}
window.routerCurrent = () => currentPage
router('/', () => {
//singleton
PagesPie.instance().open(FeedPage, {replace: 'all'});
});
router('/search', () => {
//singleton
PagesPie.instance().open(SearchPage, {replace: 'all'});
});
router('/torrent/:hash', (e) => {
//singleton
PagesPie.instance().open(TorrentPage, {
replace: 'all',
hash: e.params.hash,
});
});
router('/DMCA', () => {
//singleton
PagesPie.instance().open(DMCAPage, {replace: 'all'});
});
router('/config', () => {
//singleton
PagesPie.instance().open(ConfigPage, {replace: 'all'});
});
router('/filters', () => {
//singleton
PagesPie.instance().open(FiltersPage, {replace: 'all'});
});
router('/top', () => {
//singleton
PagesPie.instance().open(TopPage, {replace: 'all'});
});
router('/downloads', () => {
//singleton
PagesPie.instance().open(DownloadPage, {replace: 'all'});
});
router('/activity', () => {
//singleton
PagesPie.instance().open(ActivityPage, {replace: 'all'});
});
router('/changelog', () => {
//singleton
PagesPie.instance().open(ChangelogPage, {replace: 'all'});
});