Bug fixes, refactor
This commit is contained in:
parent
548752f55f
commit
20808940d0
90
src/main.js
90
src/main.js
|
@ -35,7 +35,7 @@ var Locale = {
|
||||||
,"MDB file not found":
|
,"MDB file not found":
|
||||||
"No se encontro el fichero MDB"
|
"No se encontro el fichero MDB"
|
||||||
,"Cache files have been deleted":
|
,"Cache files have been deleted":
|
||||||
"Se han borrado todos los ficheros cacheados"
|
"Se han borrado todos los ficheros de la caché"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -227,19 +227,11 @@ var App = {
|
||||||
|
|
||||||
var version = this.fetchVersion();
|
var version = this.fetchVersion();
|
||||||
|
|
||||||
if (version) {
|
if (version !== null) {
|
||||||
this.disableUi(true, _('Updating'));
|
this.disableUi(true, _('Updating'));
|
||||||
var remoteFile;
|
var remoteFile = version
|
||||||
|
? '.archive/'+ this.module +'/'+ version +'.7z'
|
||||||
if (version.code == 'last') {
|
: this.module +'.7z?'+ new Date().getTime();
|
||||||
remoteFile = this.module +'.7z?';
|
|
||||||
remoteFile += version.number
|
|
||||||
? 'v'+ version.number
|
|
||||||
: new Date().getTime();
|
|
||||||
} else {
|
|
||||||
remoteFile = '.archive/'+ this.module +'/'+ version.number;
|
|
||||||
}
|
|
||||||
|
|
||||||
remoteFile = Conf.remoteUrl +'/'+ remoteFile;
|
remoteFile = Conf.remoteUrl +'/'+ remoteFile;
|
||||||
|
|
||||||
var request = new ActiveXObject('MSXML2.XMLHTTP');
|
var request = new ActiveXObject('MSXML2.XMLHTTP');
|
||||||
|
@ -258,66 +250,59 @@ var App = {
|
||||||
/**
|
/**
|
||||||
* Gets information about the version to download.
|
* Gets information about the version to download.
|
||||||
*
|
*
|
||||||
* @return {Object} Version information or %null if local is up-to-date
|
* @return {Number|Boolean} Version number, %false if cannot
|
||||||
|
* fetch or %null if local is up-to-date
|
||||||
*/
|
*/
|
||||||
fetchVersion: function() {
|
fetchVersion: function() {
|
||||||
// Gets the last version number using the MySQL ODBC connection
|
// Gets the last version number using the MySQL ODBC connection
|
||||||
|
|
||||||
var mysqlConn;
|
var mysqlConn = new ActiveXObject('ADODB.Connection');;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
mysqlConn = this.openOdbc({
|
mysqlConn.open(this.getOdbcString({
|
||||||
'Driver': '{MySQL ODBC 5.1 Driver}',
|
'Driver': '{MySQL ODBC 5.1 Driver}',
|
||||||
'Server': Conf.dbHost,
|
'Server': Conf.dbHost,
|
||||||
'Database': Conf.dbName,
|
'Database': Conf.dbName,
|
||||||
'User': this.$('user').value,
|
'Uid': this.$('user').value,
|
||||||
'Password': this.$('password').value,
|
'Pwd': this.$('password').value,
|
||||||
'SslVerify': 1,
|
'Sslverify': 1,
|
||||||
'SslCa': this.certFile
|
'Sslca': this.certFile
|
||||||
});
|
}));
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
var dbErrors = mysqlConn.errors;
|
var dbErrors = mysqlConn && mysqlConn.errors;
|
||||||
|
|
||||||
if (dbErrors.count > 0) {
|
if (dbErrors && dbErrors.count > 0) {
|
||||||
var newErr;
|
|
||||||
var dbError = dbErrors.item(0);
|
var dbError = dbErrors.item(0);
|
||||||
|
|
||||||
switch (dbError.NativeError) {
|
switch (dbError.NativeError) {
|
||||||
case 1045: // Access denied
|
case 1045: // Access denied
|
||||||
clearPassword = true;
|
clearPassword = true;
|
||||||
newErr = new Error(_('Bad login'));
|
err = new Error(_('Bad login'));
|
||||||
newErr.code = 'BadLogin';
|
err.name = 'BadLogin';
|
||||||
break;
|
break;
|
||||||
case 2003: // Can't connect
|
case 2003: // Can't connect
|
||||||
newErr = new Error(_('Server can\'t be reached'));
|
err = new Error(_('Server can\'t be reached'));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
errorMsg = dbError.description;
|
err = new Error(dbError.description);
|
||||||
}
|
}
|
||||||
|
|
||||||
dbErrors.clear();
|
dbErrors.clear();
|
||||||
throw newErr;
|
}
|
||||||
} else
|
|
||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
|
|
||||||
var sql = "SELECT version FROM versiones WHERE programa = '"+ this.module +"'";
|
var sql = "SELECT version FROM versiones WHERE programa = '"+ this.module +"'";
|
||||||
var rs = mysqlConn.execute(sql);
|
var rs = mysqlConn.execute(sql);
|
||||||
|
|
||||||
var lastVersion = rs.EOF ? null : parseInt(rs.fields(0).value);
|
var version = rs.EOF ? false : parseInt(rs.fields(0).value);
|
||||||
var version = {
|
|
||||||
code: 'last',
|
|
||||||
number: lastVersion
|
|
||||||
};
|
|
||||||
|
|
||||||
rs.close();
|
rs.close();
|
||||||
mysqlConn.close();
|
mysqlConn.close();
|
||||||
|
|
||||||
if (this.$('previous-version').checked && lastVersion > 1)
|
if (this.$('previous-version').checked && version > 1)
|
||||||
version = {
|
version -= 1;
|
||||||
code: 'previous',
|
|
||||||
number: lastVersion - 1
|
|
||||||
};
|
|
||||||
|
|
||||||
// Checks if it's already open
|
// Checks if it's already open
|
||||||
|
|
||||||
|
@ -346,33 +331,32 @@ var App = {
|
||||||
var localVersion;
|
var localVersion;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
var mdbConn = this.openOdbc({
|
var mdbConn = new ActiveXObject('ADODB.Connection');
|
||||||
|
mdbConn.open(this.getOdbcString({
|
||||||
'Provider': 'Microsoft.Jet.OLEDB.4.0',
|
'Provider': 'Microsoft.Jet.OLEDB.4.0',
|
||||||
'Data Source': this.mdbFile
|
'Data Source': this.mdbFile
|
||||||
});
|
}));
|
||||||
|
|
||||||
var oRs = new ActiveXObject('ADODB.Recordset');
|
var oRs = new ActiveXObject('ADODB.Recordset');
|
||||||
oRs.Open('SELECT Version FROM tblVariables', mdbConn);
|
oRs.Open('SELECT Version FROM tblVariables', mdbConn);
|
||||||
localVersion = oRs.EOF ? -1 : parseInt(oRs('Version'));
|
localVersion = oRs.EOF ? false : parseInt(oRs('Version'));
|
||||||
|
|
||||||
oRs.close();
|
oRs.close();
|
||||||
mdbConn.close();
|
mdbConn.close();
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
|
|
||||||
// Compares the local version with the requested version
|
// Determines if should download
|
||||||
|
|
||||||
return !localVersion || localVersion != version.number
|
return !localVersion || version === false || localVersion != version
|
||||||
? version
|
? version
|
||||||
: null;
|
: null;
|
||||||
},
|
},
|
||||||
|
|
||||||
openOdbc(options) {
|
getOdbcString: function(options) {
|
||||||
var optionsArray = [];
|
var optionsArray = [];
|
||||||
for (var option of options)
|
for (var option in options)
|
||||||
optionsArray.push(option +'='+ options[option]);
|
optionsArray.push(option +'='+ options[option]);
|
||||||
|
return optionsArray.join(';');
|
||||||
var conn = new ActiveXObject('ADODB.Connection');
|
|
||||||
return conn.open(optionsArray.join(';'));
|
|
||||||
},
|
},
|
||||||
|
|
||||||
onRequestReady: function(request) {
|
onRequestReady: function(request) {
|
||||||
|
@ -428,7 +412,7 @@ var App = {
|
||||||
},
|
},
|
||||||
|
|
||||||
catchError: function(err) {
|
catchError: function(err) {
|
||||||
var clearPassword = err.code == 'BadLogin';
|
var clearPassword = err.name == 'BadLogin';
|
||||||
|
|
||||||
if (!this.$('remember').checked || clearPassword)
|
if (!this.$('remember').checked || clearPassword)
|
||||||
this.regWrite(Conf.dsPath, 'PWD', '', 'REG_SZ');
|
this.regWrite(Conf.dsPath, 'PWD', '', 'REG_SZ');
|
||||||
|
|
Loading…
Reference in New Issue