From 48ce20308842929bf3dc8c0ef9b9ca510e54afaf Mon Sep 17 00:00:00 2001 From: mossroy Date: Tue, 25 Dec 2012 19:03:50 +0100 Subject: [PATCH] Implement multiple archive files Add GPL v3 License header --- evopedia-html5/WebContent/evopedia.html | 34 ++++++++-- evopedia-html5/WebContent/evopedia.js | 90 +++++++++++++++++-------- 2 files changed, 93 insertions(+), 31 deletions(-) diff --git a/evopedia-html5/WebContent/evopedia.html b/evopedia-html5/WebContent/evopedia.html index 85720678..9a38ef41 100644 --- a/evopedia-html5/WebContent/evopedia.html +++ b/evopedia-html5/WebContent/evopedia.html @@ -1,5 +1,29 @@ + @@ -11,23 +35,25 @@

Evopedia




Choose a title :
+File number : +
Blockstart :
Blockoffset :
Length :
- +
 

diff --git a/evopedia-html5/WebContent/evopedia.js b/evopedia-html5/WebContent/evopedia.js index 9f2adf2e..0aa6b5e1 100644 --- a/evopedia-html5/WebContent/evopedia.js +++ b/evopedia-html5/WebContent/evopedia.js @@ -1,5 +1,28 @@ +/* +Port of Evopedia (offline wikipedia reader) in HTML5/Javascript, with Firefox OS as the primary target +The original application is at http://www.evopedia.info/ +It uses wikipedia dumps located at http://dumpathome.evopedia.info/dumps/finished -var dataFile=document.getElementById('dataFile').files[0]; +Author : Mossroy - mossroy@free.fr + +License: + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 3 of the License, or (at your + option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program; if not, see + . + +*/ +var dataFiles=document.getElementById('dataFiles').files; var titleFile=document.getElementById('titleFile').files[0]; var storage = navigator.getDeviceStorage('music'); @@ -8,15 +31,15 @@ var storage = navigator.getDeviceStorage('music'); if (!storage) { //alert("no device storage available"); document.getElementById('openLocalFiles').style.visibility="visible"; - document.getElementById('dataFile').addEventListener('change', handleDataFileSelect, false); + document.getElementById('dataFiles').addEventListener('change', handleDataFileSelect, false); document.getElementById('titleFile').addEventListener('change', handleTitleFileSelect, false); } else { var filerequest = storage.get('wikipedia_small_2010-08-14/wikipedia_00.dat'); //alert(filerequest); filerequest.onsuccess = function() { - dataFile = filerequest.result; - //alert(dataFile); + dataFiles[0] = filerequest.result; + //alert(dataFiles); filerequest = storage.get('wikipedia_small_2010-08-14/titles.idx'); filerequest.onsuccess = function() { titleFile = filerequest.result; @@ -34,6 +57,7 @@ else { function updateOffsetsFromTitle(selectValue) { var offsets=selectValue.split(/\|/); + document.getElementById("filenumber").value=offsets[0]; document.getElementById("blockstart").value=offsets[1]; document.getElementById("blockoffset").value=offsets[2]; document.getElementById("length").value=offsets[3]; @@ -99,29 +123,16 @@ function readAllTitlesFromIndex(titleFile) { blockoffset = readIntegerFrom4Bytes(byteArray,i+7); length = readIntegerFrom4Bytes(byteArray,i+11); var newLineIndex = i+15; - /* - var buf = new ArrayBuffer(); - var bufView = new Uint16Array(buf); - var j=0; - while (byteArray[newLineIndex]!=128) { - bufView[j] = byteArray[newLineIndex]; - j++ - newLineIndex++; - } - title = String.fromCharCode(bufView); - */ + while (newLineIndex0) { + var filenumber = document.getElementById('filenumber').value; var blockstart = document.getElementById('blockstart').value; var blockoffset = document.getElementById('blockoffset').value; var length = document.getElementById('length').value; + var dataFile; + for (var i=0; i