Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6386a3420e | |||
| eecb0ed95b | |||
| 99bb3b2981 |
@@ -19,8 +19,8 @@ android {
|
|||||||
applicationId "ru.ua1zbe.bus127"
|
applicationId "ru.ua1zbe.bus127"
|
||||||
minSdk 26
|
minSdk 26
|
||||||
targetSdk 34
|
targetSdk 34
|
||||||
versionCode 3
|
versionCode 4
|
||||||
versionName "2.1"
|
versionName "2.2"
|
||||||
}
|
}
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
.where{text-align:center;color:var(--muted);font-size:13px;margin:2px 0 12px}
|
.where{text-align:center;color:var(--muted);font-size:13px;margin:2px 0 12px}
|
||||||
|
|
||||||
.dir{display:grid;grid-template-columns:1fr 1fr;gap:12px}
|
.dir{display:grid;grid-template-columns:1fr 1fr;gap:12px}
|
||||||
|
.dir .card:only-child{grid-column:1 / -1} /* одна карточка — во всю ширину */
|
||||||
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px}
|
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px}
|
||||||
.card h3{margin:0 0 4px;font-size:15px;font-weight:700}
|
.card h3{margin:0 0 4px;font-size:15px;font-weight:700}
|
||||||
.card h3 .arr{color:var(--accent)}
|
.card h3 .arr{color:var(--accent)}
|
||||||
@@ -123,18 +124,18 @@ const SCHEDULE = [
|
|||||||
["18:20","19:10","19:40","20:05"],
|
["18:20","19:10","19:40","20:05"],
|
||||||
["20:20","21:10","21:40","22:05"]
|
["20:20","21:10","21:40","22:05"]
|
||||||
];
|
];
|
||||||
|
const TRIPS_SHOWN = 5; // сколько ближайших рейсов показывать в карточке
|
||||||
const DIRECTIONS = {
|
const DIRECTIONS = {
|
||||||
|
// От Кандалакши и Зашейка все рейсы идут через Полярные Зори — одна карточка
|
||||||
"Кандалакша": [
|
"Кандалакша": [
|
||||||
{to:"Полярные Зори", dep:0, arr:1, via:"через 1 час"},
|
{to:"Полярные Зори, Зашеек", dep:0, arr:2, arrLabel:"Зашеек", via:"через Полярные Зори"}
|
||||||
{to:"Зашеек", dep:0, arr:2, via:"через Полярные Зори"}
|
|
||||||
],
|
],
|
||||||
"Полярные Зори": [
|
"Полярные Зори": [
|
||||||
{to:"Зашеек", dep:1, arr:2, via:"≈ 30 мин в пути"},
|
{to:"Зашеек", dep:1, arr:2, via:"≈ 30 мин в пути"},
|
||||||
{to:"Кандалакша", dep:3, arr:null, via:"≈ 1 час в пути"}
|
{to:"Кандалакша", dep:3, arr:null, via:"≈ 1 час в пути"}
|
||||||
],
|
],
|
||||||
"Зашеек": [
|
"Зашеек": [
|
||||||
{to:"Полярные Зори", dep:2, arr:3, via:"≈ 20 мин в пути"},
|
{to:"Полярные Зори, Кандалакша", dep:2, arr:3, arrLabel:"Кандалакша", via:"через Полярные Зори"}
|
||||||
{to:"Кандалакша", dep:2, arr:null, via:"через Полярные Зори"}
|
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
const DAYS = ["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"];
|
const DAYS = ["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"];
|
||||||
@@ -192,10 +193,10 @@ function render(){
|
|||||||
.map((r,ri)=>({dep:toMin(r[d.dep]), arr:d.arr!==null?r[d.arr]:null, ri}))
|
.map((r,ri)=>({dep:toMin(r[d.dep]), arr:d.arr!==null?r[d.arr]:null, ri}))
|
||||||
.filter(x=>x.dep >= curMin)
|
.filter(x=>x.dep >= curMin)
|
||||||
.sort((a,b)=>a.dep-b.dep)
|
.sort((a,b)=>a.dep-b.dep)
|
||||||
.slice(0,3)
|
.slice(0,TRIPS_SHOWN)
|
||||||
.map(x=>{
|
.map(x=>{
|
||||||
const w = x.dep - curMin;
|
const w = x.dep - curMin;
|
||||||
const arr = x.arr ? `<small>прибытие ${x.arr}</small>` : "";
|
const arr = x.arr ? `<small>прибытие${d.arrLabel ? " "+d.arrLabel : ""} ${x.arr}</small>` : "";
|
||||||
return `<div class="trip ${w<15?'soon':''}">
|
return `<div class="trip ${w<15?'soon':''}">
|
||||||
<span class="t">${SCHEDULE[x.ri][d.dep]}${arr}</span>
|
<span class="t">${SCHEDULE[x.ri][d.dep]}${arr}</span>
|
||||||
<span class="w">${fmtWait(w)}</span>
|
<span class="w">${fmtWait(w)}</span>
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
.where{text-align:center;color:var(--muted);font-size:13px;margin:2px 0 12px}
|
.where{text-align:center;color:var(--muted);font-size:13px;margin:2px 0 12px}
|
||||||
|
|
||||||
.dir{display:grid;grid-template-columns:1fr 1fr;gap:12px}
|
.dir{display:grid;grid-template-columns:1fr 1fr;gap:12px}
|
||||||
|
.dir .card:only-child{grid-column:1 / -1} /* одна карточка — во всю ширину */
|
||||||
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px}
|
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px}
|
||||||
.card h3{margin:0 0 4px;font-size:15px;font-weight:700}
|
.card h3{margin:0 0 4px;font-size:15px;font-weight:700}
|
||||||
.card h3 .arr{color:var(--accent)}
|
.card h3 .arr{color:var(--accent)}
|
||||||
@@ -123,18 +124,18 @@ const SCHEDULE = [
|
|||||||
["18:20","19:10","19:40","20:05"],
|
["18:20","19:10","19:40","20:05"],
|
||||||
["20:20","21:10","21:40","22:05"]
|
["20:20","21:10","21:40","22:05"]
|
||||||
];
|
];
|
||||||
|
const TRIPS_SHOWN = 5; // сколько ближайших рейсов показывать в карточке
|
||||||
const DIRECTIONS = {
|
const DIRECTIONS = {
|
||||||
|
// От Кандалакши и Зашейка все рейсы идут через Полярные Зори — одна карточка
|
||||||
"Кандалакша": [
|
"Кандалакша": [
|
||||||
{to:"Полярные Зори", dep:0, arr:1, via:"через 1 час"},
|
{to:"Полярные Зори, Зашеек", dep:0, arr:2, arrLabel:"Зашеек", via:"через Полярные Зори"}
|
||||||
{to:"Зашеек", dep:0, arr:2, via:"через Полярные Зори"}
|
|
||||||
],
|
],
|
||||||
"Полярные Зори": [
|
"Полярные Зори": [
|
||||||
{to:"Зашеек", dep:1, arr:2, via:"≈ 30 мин в пути"},
|
{to:"Зашеек", dep:1, arr:2, via:"≈ 30 мин в пути"},
|
||||||
{to:"Кандалакша", dep:3, arr:null, via:"≈ 1 час в пути"}
|
{to:"Кандалакша", dep:3, arr:null, via:"≈ 1 час в пути"}
|
||||||
],
|
],
|
||||||
"Зашеек": [
|
"Зашеек": [
|
||||||
{to:"Полярные Зори", dep:2, arr:3, via:"≈ 20 мин в пути"},
|
{to:"Полярные Зори, Кандалакша", dep:2, arr:3, arrLabel:"Кандалакша", via:"через Полярные Зори"}
|
||||||
{to:"Кандалакша", dep:2, arr:null, via:"через Полярные Зори"}
|
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
const DAYS = ["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"];
|
const DAYS = ["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"];
|
||||||
@@ -192,10 +193,10 @@ function render(){
|
|||||||
.map((r,ri)=>({dep:toMin(r[d.dep]), arr:d.arr!==null?r[d.arr]:null, ri}))
|
.map((r,ri)=>({dep:toMin(r[d.dep]), arr:d.arr!==null?r[d.arr]:null, ri}))
|
||||||
.filter(x=>x.dep >= curMin)
|
.filter(x=>x.dep >= curMin)
|
||||||
.sort((a,b)=>a.dep-b.dep)
|
.sort((a,b)=>a.dep-b.dep)
|
||||||
.slice(0,3)
|
.slice(0,TRIPS_SHOWN)
|
||||||
.map(x=>{
|
.map(x=>{
|
||||||
const w = x.dep - curMin;
|
const w = x.dep - curMin;
|
||||||
const arr = x.arr ? `<small>прибытие ${x.arr}</small>` : "";
|
const arr = x.arr ? `<small>прибытие${d.arrLabel ? " "+d.arrLabel : ""} ${x.arr}</small>` : "";
|
||||||
return `<div class="trip ${w<15?'soon':''}">
|
return `<div class="trip ${w<15?'soon':''}">
|
||||||
<span class="t">${SCHEDULE[x.ri][d.dep]}${arr}</span>
|
<span class="t">${SCHEDULE[x.ri][d.dep]}${arr}</span>
|
||||||
<span class="w">${fmtWait(w)}</span>
|
<span class="w">${fmtWait(w)}</span>
|
||||||
|
|||||||
Reference in New Issue
Block a user