Records lokaal opslaan om ook offline te kunnen werken?
De gebruikers van het systeem hebben niet altijd internet, dus het systeem is niet altijd bruikbaar, bijvoorbeeld bij gebruik op lokatie. Nu is vooraf wel bekend welke records op een dag gebruikt gaan worden, dus ik zit er aan te denken om die records op de een of andere manier eerst naar een lokaal bestand te bufferen (dan is er nl. nog wel internet). Vervolgens moet de applicatie wanneer er geen internet is gebruik gaan maken van de lokale records en wanneer er later wel weer internet is, moet ik de lokaal gebufferde records weer kunnen inlezen in de MySQL database.
Het moet systeemonafhankelijk werken, dus op een laptop, smartphone en tablet, ongeacht of het Windows is, Android of IOS en ongeacht welke browser gebruikt wordt. De huidige applicatie werkt nl. ook zo en dat is mede de kracht van het systeem.
Het hoeft niet allemaal geautomatiseerd te gaan, dus export en import van een of meer records mag handmatig. Hoe pak ik dit praktisch aan? Waar vind ik voorbeelden?
Gewijzigd op 08/12/2014 14:53:01 door John D
Export naar Excel is geen optie, tenzij ik het XLSX bestand zou kunnen gebruiken in een HTML pagina als "database", maar dat kan ik me zo niet voorstellen. Lokaal werken in Excel wijkt teveel af van van de huidige interface, nog even afgezien van de benodigde licenties. Ik stel me voor dat we dit toch in een HTML pagina gaan verwerken.
Overigens kun je in HTML5 redelijk wat informatie opslaan met het localStorage Object. Ik heb geen idee of dat al een beetje op de handhelds ondersteunt wordt. En daarnaast lijkt het me lastig om een gebruiker te laten schakelen tussen offline en online.
Ik heb een keer een project gezien waarbij op de laptops een applicatie draaide die met een Oracle database op de laptop functioneerde (40 laptops) en waarbij er zodra er contact was met het netwerk automatisch een geprogrammeerde sync startte naar de centrale database. Iedere monteur had zijn eigen regio dus het syncen was niet complex. In jouw geval zou je dat kunnen doen met XAMP (apache/mysql/php) bijvoorbeeld. Is wel een flink project. Met name het syncen van de MySQL databases.
Gewijzigd op 08/12/2014 16:08:54 door John D
Ik zoek dus eigenlijk een lokale database o.i.d. waarin in gegevens kan bufferen. Schakelen tussen online en offline krijg ik zo te zien wel voor elkaar.
Toevoeging op 08/12/2014 16:09:52:
John, XAMP krijg ik volgens niet op alle devices aan de praat; denk aan smartphones, ipads.
Gerrit broekhuis op 08/12/2014 16:08:27:
MySQL is eenvoudig op laptops te draaien maar ik denk dat je dan ook wel apache nodig hebt dus XAMP oid.Ik zoek dus eigenlijk een lokale database o.i.d. waarin in gegevens kan bufferen. Schakelen tussen online en offline krijg ik zo te zien wel voor elkaar.
==>> niet op alle devices
Inderdaad Gerrit, je was me net voor :(
SQLite kan je toepassen op android maar op IOS? Geen idee.
Gewijzigd op 08/12/2014 16:14:38 door John D
LocalStorage Object ziet er veelbelovend uit en HTML5 is nu toch wel overal ingeburgerd lijkt me. Dit gaat me wel een avondje kosten :-)
Maak dan eerst maar een testcase. Zou zonde zijn als je er een hoop tijd in stopt en later blijkt het niet toereikend te zijn...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php>
// code als php weergegeven voor de leesbaarheid; het is echter html code
<div id="result"></div>
<script>
// Check browser support
if (typeof(Storage) != "undefined") {
// Store
// localStorage.setItem("project", "2014120801");
localStorage.setItem("project", <?php echo $getuserrow['PROJECT_ID'] ?)>;
// Retrieve
document.getElementById("result").innerHTML = localStorage.getItem("project");
} else {
document.getElementById("result").innerHTML = "Sorry, your browser does not support Web Storage...";
}
</script>
<?>
Ik zit er nu al te lang naar te kijken en probeer morgen weer verder.
// code als php weergegeven voor de leesbaarheid; het is echter html code
<div id="result"></div>
<script>
// Check browser support
if (typeof(Storage) != "undefined") {
// Store
// localStorage.setItem("project", "2014120801");
localStorage.setItem("project", <?php echo $getuserrow['PROJECT_ID'] ?)>;
// Retrieve
document.getElementById("result").innerHTML = localStorage.getItem("project");
} else {
document.getElementById("result").innerHTML = "Sorry, your browser does not support Web Storage...";
}
</script>
<?>
Ik zit er nu al te lang naar te kijken en probeer morgen weer verder.
Gewijzigd op 08/12/2014 21:45:08 door gerrit broekhuis