Fix fast-loading support

pull/2885/head
v-crispadvice 2023-07-14 13:16:56 +03:00
parent a4632726a8
commit 98fb9ff018
6 changed files with 176 additions and 176 deletions

View File

@ -1,4 +1,5 @@
1.0: Local cards data
1.1: Download cards data from Trello public board
1.2: Configuration instructions added and card layout optimized
1.3: Font size can be changed in Settings
1.00: Local cards data
1.10: Download cards data from Trello public board
1.20: Configuration instructions added and card layout optimized
1.30: Font size can be changed in Settings
1.31: Fix for fast-loading support

View File

@ -10,7 +10,7 @@ Configuration:
4. Add ".json" to the end of the Trello board URL and refresh page
5. Find your list ID
6. Save list ID to the "flashcards.settings.json" file on your watch, e.g.:
{"listId":"65942f7b27z68000996ddc00","fontSize":1,"cardWidth":9,"swipeGesture":0}
{"listId":"65942f7b27z68000996ddc00","fontSize":1,"cardWidth":9,"swipeGesture":1}
7. Connect phone with Gadgetbridge to the watch
8. Enable "Allow Internet Access" in Gadgetbridge
9. On the watch go to Settings -> Apps -> Flash Cards -> Get from Trello

View File

@ -2,17 +2,18 @@
* Copyright 2023 Crisp Advice
* We believe in Finnish
*/
{
// Modules
var Layout = require("Layout");
var locale = require("locale");
var storage = require("Storage");
let Layout = require("Layout");
let locale = require("locale");
let storage = require("Storage");
// Global variables
let SWAP_SIDE_BUZZ_MILLISECONDS = 50;
let CARD_DATA_FILE = "flashcards.data.json";
let CARD_SETTINGS_FILE = "flashcards.settings.json";
let CARD_EMPTY = "no cards found";
const SWAP_SIDE_BUZZ_MILLISECONDS = 50;
const CARD_DATA_FILE = "flashcards.data.json";
const CARD_SETTINGS_FILE = "flashcards.settings.json";
const CARD_EMPTY = "no cards found";
let cards = [];
let cardIndex = 0;
let backSide = false;
@ -25,11 +26,11 @@ let settings = Object.assign({
listId: "",
fontSize: 1,
cardWidth: 9,
swipeGesture: 0
swipeGesture: 1
}, storage.readJSON(CARD_SETTINGS_FILE, true) || {});
// Cards data
function wordWrap(textStr, maxLength) {
let wordWrap = function (textStr, maxLength) {
if (maxLength == undefined) {
maxLength = settings.cardWidth;
}
@ -55,7 +56,7 @@ function wordWrap(textStr, maxLength) {
return res + str;
}
function loadLocalCards() {
let loadLocalCards = function() {
var cardsJSON = "";
if (storage.read(CARD_DATA_FILE))
{
@ -64,7 +65,7 @@ function loadLocalCards() {
refreshCards(cardsJSON,false);
}
function refreshCards(cardsJSON,showMsg)
let refreshCards = function(cardsJSON,showMsg)
{
cardIndex = 0;
backSide = false;
@ -102,25 +103,25 @@ let cardLayout = new Layout( {
]
}, {lazy:true});
function drawCard() {
let drawCard = function() {
cardLayout.card.label = cards[cardIndex][backSide ? 1 : 0];
cardLayout.clock.label = locale.time(new Date(),1);
cardLayout.render();
}
function drawMessage(msg) {
let drawMessage = function(msg) {
cardLayout.card.label = wordWrap(msg);
cardLayout.render();
console.log(msg);
}
function draw() {
let draw = function() {
drawCard();
Bangle.drawWidgets();
queueDraw();
}
function swipeCard(forward)
let swipeCard = function(forward)
{
if(forward) {
cardIndex = (cardIndex + 1) % cards.length;
@ -132,21 +133,21 @@ function swipeCard(forward)
}
// Handle a touch: swap card side
function handleTouch(zone, event) {
let handleTouch = function(zone, event) {
backSide = !backSide;
drawCard();
Bangle.buzz(SWAP_SIDE_BUZZ_MILLISECONDS);
}
// Handle a stroke event: cycle cards
function handleStroke(event) {
let handleStroke = function(event) {
let first_x = event.xy[0];
let last_x = event.xy[event.xy.length - 2];
swipeCard((last_x - first_x) > 0);
}
// Handle a drag event: cycle cards
function handleDrag(event) {
let handleDrag = function(event) {
let isFingerReleased = (event.b === 0);
if(isFingerReleased) {
let isHorizontalDrag = (Math.abs(lastDragX) >= Math.abs(lastDragY)) &&
@ -162,14 +163,12 @@ function handleDrag(event) {
}
// Ensure pressing the button goes to the launcher (by making this seem like a clock?)
Bangle.setUI({mode:"clock"/*, remove:function() {
// Code to enable fast load. NOTE: this doesn't work on this app because all
// functions and vars are declared global: https://www.espruino.com/Bangle.js+Fast+Load
Bangle.setUI({mode:"clock", remove:function() {
if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = undefined;
Bangle.removeListener("touch", handleTouch);
if (settings.swipeGesture) { Bangle.removeListener("drag", handleDrag);} else { Bangle.removeListener("stroke", handleStroke); }
}*/});
}});
// initialize
cardLayout.update();
@ -182,6 +181,6 @@ if (settings.swipeGesture) { Bangle.on("drag", handleDrag); } else { Bangle.on("
// On start: display the first card
g.clear();
draw();
}

View File

@ -1 +1 @@
{"listId":"","fontSize":1,"cardWidth":9,"swipeGesture":0}
{"listId":"","fontSize":1,"cardWidth":9,"swipeGesture":1}

View File

@ -2,7 +2,7 @@
"id": "flashcards",
"name": "Flash Cards",
"shortName": "Flash Cards",
"version": "1.3",
"version": "1.31",
"description": "Flash cards based on public Trello board",
"readme":"README.md",
"screenshots" : [ { "url":"screenshot.png" }],

View File

@ -10,7 +10,7 @@
listId: "",
fontSize: 1,
cardWidth: 9,
swipeGesture: 0
swipeGesture: 1
}, storage.readJSON(settingsFile, true) || {});
function writeSettings() {
@ -24,7 +24,7 @@
"< Back" : () => back(),
/*LANG*/"Get from Trello": () => {
if (!storage.read(settingsFile)) { writeSettings();}
E.showPrompt("Download cards?").then((v) => {
E.showPrompt(/*LANG*/"Download cards?").then((v) => {
let delay = 500;
if (v) {
if (Bangle.http)