1 Commits

Author SHA1 Message Date
Sebastian Molenda b970e5e735 hello apk 2026-05-26 22:16:09 +02:00
11 changed files with 37 additions and 53 deletions
@@ -1,14 +1,27 @@
name: Build APK name: Build APK
on:
push:
tags:
- 'v*'
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
container:
image: cimg/android:2024.01
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- name: Setup Android SDK
uses: android-actions/setup-android@v3
- name: Grant execute permission - name: Grant execute permission
run: chmod +x ./gradlew run: chmod +x ./gradlew
@@ -20,9 +33,3 @@ jobs:
with: with:
name: app-release name: app-release
path: app/build/outputs/apk/release/app-release.apk path: app/build/outputs/apk/release/app-release.apk
- name: Upload APK
uses: actions/upload-artifact@v4
with:
name: app-release
path: app/build/outputs/apk/release/app-release.apk
+1 -1
View File
@@ -265,7 +265,7 @@ body {
} }
.progress-bar { .progress-bar {
width: 100%; width: 120px;
height: 8px; height: 8px;
background-color: #e2e8f0; background-color: #e2e8f0;
border-radius: 4px; border-radius: 4px;
+3 -4
View File
@@ -39,7 +39,9 @@
<span id="blank-progress" class="play-progress"></span> <span id="blank-progress" class="play-progress"></span>
</header> </header>
<div id="progressbar-placeholder"></div> <div class="play-progress-bar">
<div id="dyk-progress-bar-inner" class="play-progress-bar-inner"></div>
</div>
<div class="play-body"> <div class="play-body">
<div class="play-scroll-area" id="dyk-scroll"> <div class="play-scroll-area" id="dyk-scroll">
@@ -69,9 +71,6 @@
}).then(html => { }).then(html => {
document.getElementById('header-placeholder').outerHTML = html; document.getElementById('header-placeholder').outerHTML = html;
}); });
loadComponent('components/progress-bar.html', {'{PROGRESS_ID}': 'dyk-progress-bar-inner'}).then(html => {
document.getElementById('progressbar-placeholder').outerHTML = html;
});
loadComponent('components/footer.html').then(html => { loadComponent('components/footer.html').then(html => {
document.getElementById('footer-placeholder').outerHTML = html; document.getElementById('footer-placeholder').outerHTML = html;
}); });
+3 -4
View File
@@ -51,7 +51,9 @@
<span id="progress-label" class="progress-text">0/20</span> <span id="progress-label" class="progress-text">0/20</span>
</div> </div>
</header> </header>
<div id="progressbar-placeholder"></div> <div class="read-progress-bar">
<div id="progress-inner" class="read-progress-bar-inner"></div>
</div>
<div class="play-body"> <div class="play-body">
<div class="problem-display"> <div class="problem-display">
@@ -105,9 +107,6 @@
}).then(html => { }).then(html => {
document.getElementById('header-placeholder').outerHTML = html; document.getElementById('header-placeholder').outerHTML = html;
}); });
loadComponent('components/progress-bar.html', {'{PROGRESS_ID}': 'progress-inner'}).then(html => {
document.getElementById('progressbar-placeholder').outerHTML = html;
});
loadComponent('components/footer.html').then(html => { loadComponent('components/footer.html').then(html => {
document.getElementById('footer-placeholder').outerHTML = html; document.getElementById('footer-placeholder').outerHTML = html;
}); });
+1 -1
View File
@@ -55,7 +55,7 @@ const statusEl = document.getElementById('status');
// load settings from localStorage // load settings from localStorage
function loadSettings(){ function loadSettings(){
try{ try{
let progressInner = null const raw = localStorage.getItem('matma:settings')
if (raw) { if (raw) {
const s = JSON.parse(raw) const s = JSON.parse(raw)
state.settings = Object.assign(state.settings, s) state.settings = Object.assign(state.settings, s)
+2 -3
View File
@@ -21,7 +21,7 @@
const readViewport = document.getElementById('read-viewport') const readViewport = document.getElementById('read-viewport')
const readTextEl = document.getElementById('read-text') const readTextEl = document.getElementById('read-text')
const nextLineBtn = document.getElementById('next-line-btn') const nextLineBtn = document.getElementById('next-line-btn')
let progressBar = null const progressBar = document.getElementById('read-progress-bar-inner')
// ── Load text list from dyktanda.json ──────────────────────────────────── // ── Load text list from dyktanda.json ────────────────────────────────────
fetch('json/dyktanda.json') fetch('json/dyktanda.json')
@@ -132,7 +132,6 @@
function updateProgressBar() { function updateProgressBar() {
const progress = maxOffset > 0 ? (yOffset / maxOffset) * 100 : 100 const progress = maxOffset > 0 ? (yOffset / maxOffset) * 100 : 100
if (!progressBar) progressBar = document.getElementById('read-progress-bar-inner') progressBar.style.width = `${progress}%`
if (progressBar) progressBar.style.width = `${progress}%`
} }
})() })()
+2 -16
View File
@@ -35,7 +35,7 @@
const summaryScore = document.getElementById('summary-score') const summaryScore = document.getElementById('summary-score')
const summaryBackBtn = document.getElementById('summary-back-btn') const summaryBackBtn = document.getElementById('summary-back-btn')
const dykScroll = document.getElementById('dyk-scroll') const dykScroll = document.getElementById('dyk-scroll')
let progressBar = null const progressBar = document.getElementById('dyk-progress-bar-inner')
// ── Load texts ──────────────────────────────────────────────────────────── // ── Load texts ────────────────────────────────────────────────────────────
fetch('json/dyktanda.json') fetch('json/dyktanda.json')
@@ -53,20 +53,6 @@
textList.innerHTML = '<p style="color:var(--muted)">Nie udało się wczytać tekstów.</p>' textList.innerHTML = '<p style="color:var(--muted)">Nie udało się wczytać tekstów.</p>'
}) })
// Poczekaj na dynamiczne załadowanie progress bara
document.addEventListener('DOMContentLoaded', () => {
// progress bar jest ładowany przez loadComponent w dyktando.html
const checkProgressBar = () => {
const el = document.getElementById('dyk-progress-bar-inner')
if (el) {
progressBar = el
} else {
setTimeout(checkProgressBar, 50)
}
}
checkProgressBar()
})
customStartBtn.addEventListener('click', () => { customStartBtn.addEventListener('click', () => {
const txt = customInput.value.trim() const txt = customInput.value.trim()
if (!txt) return if (!txt) return
@@ -112,7 +98,7 @@
textDisplay.classList.remove('hidden') textDisplay.classList.remove('hidden')
choicesEl.classList.remove('hidden') choicesEl.classList.remove('hidden')
progressEl.textContent = '' progressEl.textContent = ''
if (progressBar) progressBar.style.width = '0%' progressBar.style.width = '0%'
listWrap.classList.add('hidden') listWrap.classList.add('hidden')
playWrap.classList.remove('hidden') playWrap.classList.remove('hidden')
+2 -5
View File
@@ -8,7 +8,7 @@
const problemEl = document.getElementById('problem') const problemEl = document.getElementById('problem')
const answerEl = document.getElementById('answer') const answerEl = document.getElementById('answer')
const feedbackEl = document.getElementById('feedback') const feedbackEl = document.getElementById('feedback')
let progressInner = null const progressInner = document.getElementById('progress-inner')
const progressLabel = document.getElementById('progress-label') const progressLabel = document.getElementById('progress-label')
const summaryText = document.getElementById('summary-text') const summaryText = document.getElementById('summary-text')
const totalInput = document.getElementById('total-input') const totalInput = document.getElementById('total-input')
@@ -99,10 +99,7 @@
function updateBar() { function updateBar() {
const pct = st.total > 0 ? Math.round((st.solved / st.total) * 100) : 0 const pct = st.total > 0 ? Math.round((st.solved / st.total) * 100) : 0
if (!progressInner) { progressInner.style.width = pct + '%'
progressInner = document.getElementById('progress-inner')
}
if (progressInner) progressInner.style.width = pct + '%'
progressLabel.textContent = `${st.solved}/${st.total}` progressLabel.textContent = `${st.solved}/${st.total}`
} }
+2 -3
View File
@@ -8,7 +8,7 @@
const problemEl = document.getElementById('problem') const problemEl = document.getElementById('problem')
const answerEl = document.getElementById('answer') const answerEl = document.getElementById('answer')
const feedbackEl = document.getElementById('feedback') const feedbackEl = document.getElementById('feedback')
let progressInner = null const progressInner = document.getElementById('progress-inner')
const progressLabel = document.getElementById('progress-label') const progressLabel = document.getElementById('progress-label')
const scoreLabel = document.getElementById('score-label') // This element is removed, but we might re-purpose the logic const scoreLabel = document.getElementById('score-label') // This element is removed, but we might re-purpose the logic
const summaryText = document.getElementById('summary-text') const summaryText = document.getElementById('summary-text')
@@ -99,8 +99,7 @@
function updateBar() { function updateBar() {
const pct = st.total > 0 ? Math.round((st.solved / st.total) * 100) : 0 const pct = st.total > 0 ? Math.round((st.solved / st.total) * 100) : 0
if (!progressInner) progressInner = document.getElementById('progress-inner') progressInner.style.width = pct + '%'
if (progressInner) progressInner.style.width = pct + '%'
progressLabel.textContent = `${st.solved}/${st.total}` progressLabel.textContent = `${st.solved}/${st.total}`
// scoreLabel is removed, so we comment this out // scoreLabel is removed, so we comment this out
// scoreLabel.textContent = `✔ ${st.score}` // scoreLabel.textContent = `✔ ${st.score}`
+3 -4
View File
@@ -51,7 +51,9 @@
<span id="progress-label" class="progress-text">0/20</span> <span id="progress-label" class="progress-text">0/20</span>
</div> </div>
</header> </header>
<div id="progressbar-placeholder"></div> <div class="read-progress-bar">
<div id="progress-inner" class="read-progress-bar-inner"></div>
</div>
<div class="play-body"> <div class="play-body">
<div class="problem-display"> <div class="problem-display">
@@ -105,9 +107,6 @@
}).then(html => { }).then(html => {
document.getElementById('header-placeholder').outerHTML = html; document.getElementById('header-placeholder').outerHTML = html;
}); });
loadComponent('components/progress-bar.html', {'{PROGRESS_ID}': 'progress-inner'}).then(html => {
document.getElementById('progressbar-placeholder').outerHTML = html;
});
loadComponent('components/footer.html').then(html => { loadComponent('components/footer.html').then(html => {
document.getElementById('footer-placeholder').outerHTML = html; document.getElementById('footer-placeholder').outerHTML = html;
}); });
+3 -4
View File
@@ -100,7 +100,9 @@
<div id="status" class="play-status">Trening</div> <div id="status" class="play-status">Trening</div>
<div id="score" class="play-score">0</div> <div id="score" class="play-score">0</div>
</header> </header>
<div id="progressbar-placeholder"></div> <div class="play-progress-bar">
<div id="progress_inner" class="play-progress-bar-inner"></div>
</div>
<div class="play-body"> <div class="play-body">
<div class="problem-display"> <div class="problem-display">
@@ -159,9 +161,6 @@
}).then(html => { }).then(html => {
document.getElementById('header-placeholder').outerHTML = html; document.getElementById('header-placeholder').outerHTML = html;
}); });
loadComponent('components/progress-bar.html', {'{PROGRESS_ID}': 'progress_inner'}).then(html => {
document.getElementById('progressbar-placeholder').outerHTML = html;
});
loadComponent('components/footer.html').then(html => { loadComponent('components/footer.html').then(html => {
document.getElementById('footer-placeholder').outerHTML = html; document.getElementById('footer-placeholder').outerHTML = html;
}); });