irec guias - CGastrell/phonegap GitHub Wiki

Guias

Las guias quedaran almacenadas en un archivo guias.json. Este es un archivo de texto y tiene las mismas limitaciones que cuando queriamos almacenar datos en localStorage, por lo cual estaremos usando JSON.parse() y JSON.stringify() para leer y guardar respectivamente el contenido del archivo.

Vamos a crear un objeto guias y vamos a darle funciones basicas: inicializacion, guardar y leer:

var guias = {
  lista: [], // <-- array para tener la lista de guias a mano
  ready: false,
  initialize: function(){
    guias.obtenerGuias(function(err, contents){
      if(err) {
        console.log('Error obteniendo el archivo de guias');
        guias.lista = [];
      }
      if(contents) {
        guias.lista = JSON.parse(contents);
      }
      guias.ready = true;
    });
  },
  guardarGuias: function(callback){
    var guiasEnTexto = JSON.stringify(guias.lista);
    fileApi.writeTextFile('guias.json', guiasEnTexto, function(){
      callback && callback();
    });
  },
  obtenerGuias: function(callback) {
    var onError = function(err) {
      callback && callback(err, null);
    }
    var onFile = function(fileEntry) {
      fileEntry.file(
        function(fileObject){
          var reader = new FileReader();
          reader.onloadend = function(){
            callback && callback(null, this.result);
          }
          reader.readAsText(fileObject);
        },
        onError
      );
    }
    fileApi.dir.getFile('guias.json', {create:true}, onFile, onError);
  }
}

Se puede ver que los 3 metodos de guias dependen de fileApi, por lo cual es importante que solo inicialicemos guias si fileApi esta inicializado.

Ahora en el callback de fileApi.initialize() podemos inicializar guias (busquenlo al final de la funcion init):

  fileApi.initialize(function(err, apiRef){
    if(err) {
      console.log('file api error');
      console.log(err);
      return;
    }

    //inicializaciones dependientes de fileApi
    guias.initialize();
  });

Si probamos este codigo en el dispositivo podemos examinar en la consola el objeto guias. De la ultima clase deberiamos tener la funcion crearGuia() que usamos para pruebas.

Desde la consola podemos crear la guia de ejemplo:

crearGuia()

Y usando el objeto guias podemos crear la primer guia desde la consola y guardarla:

guias.lista.push(crearGuia());
guias.guardarGuias(function(){console.log('se guardaron las guias')})

Luego de esta prueba ya deberian tener guardado el archivo guias.json con la guia de prueba dentro.

A continuacion veremos el objeto entrevistas que es casi identico a guias.