Beautify JS, bugs solved
This commit is contained in:
parent
1c6ca3ef62
commit
66e42d1808
352
src/main.js
352
src/main.js
|
@ -1,6 +1,5 @@
|
|||
|
||||
var Conf =
|
||||
{
|
||||
var Conf = {
|
||||
appName: 'Verdnatura'
|
||||
,dsName: 'verdnatura'
|
||||
,dsPath: 'HKCU\\Software\\ODBC\\ODBC.INI\\verdnatura'
|
||||
|
@ -11,7 +10,7 @@ var Conf =
|
|||
,defaultLocale: 'es'
|
||||
};
|
||||
|
||||
var Locale ={
|
||||
var Locale = {
|
||||
es: {
|
||||
"Enter a user name":
|
||||
"Introduce un nombre de usuario"
|
||||
|
@ -34,61 +33,56 @@ var Locale ={
|
|||
}
|
||||
};
|
||||
|
||||
var App =
|
||||
{
|
||||
|
||||
shell: new ActiveXObject ('WScript.Shell'),
|
||||
fso: new ActiveXObject ('scripting.filesystemobject'),
|
||||
var App = {
|
||||
shell: new ActiveXObject('WScript.Shell'),
|
||||
fso: new ActiveXObject('scripting.filesystemobject'),
|
||||
|
||||
init: function ()
|
||||
{
|
||||
init: function() {
|
||||
var width = 420;
|
||||
var height = 360;
|
||||
|
||||
window.resizeTo (width, height);
|
||||
window.moveTo ((screen.width - width) / 2, (screen.height - height) / 2);
|
||||
window.resizeTo(width, height);
|
||||
window.moveTo((screen.width - width) / 2, (screen.height - height) / 2);
|
||||
},
|
||||
|
||||
_onLoad: function ()
|
||||
{
|
||||
_onLoad: function() {
|
||||
// Initializes the global variables
|
||||
|
||||
var split = Verdnatura.commandLine.match(/(?:[^\s"]+|"[^"]*")+/g);
|
||||
|
||||
if (split.length > 1)
|
||||
this.module = split[1].replace (/^"+|"+$/g, '');
|
||||
this.module = split[1].replace(/^"+|"+$/g, '');
|
||||
if (!this.module)
|
||||
this.module = Conf.defaultModule;
|
||||
|
||||
this.appDir = this.getEnv ('ProgramFiles') +'\\'+ Conf.appName;
|
||||
this.moduleDir = this.shell.SpecialFolders ('AppData') +'\\'+ Conf.appName;
|
||||
this.appDir = this.getEnv('ProgramFiles') +'\\'+ Conf.appName;
|
||||
this.moduleDir = this.shell.SpecialFolders('AppData') +'\\'+ Conf.appName;
|
||||
this.remoteFile = Conf.remoteUrl +'/'+ this.module +'.7z';
|
||||
this.compressFile = this.getEnv ('TEMP') +'\\'+ this.module +'.7z';
|
||||
this.compressFile = this.getEnv('TEMP') +'\\'+ this.module +'.7z';
|
||||
this.mdbFile = this.moduleDir +'\\'+ this.module +'.mdb';
|
||||
|
||||
// Creates the necessary registry entries
|
||||
|
||||
var configured = this.regRead (Conf.regPath, 'configured');
|
||||
var configured = this.regRead(Conf.regPath, 'configured');
|
||||
|
||||
if (!configured)
|
||||
{
|
||||
if (!configured) {
|
||||
var path;
|
||||
|
||||
// Creates the Access configuration entries
|
||||
|
||||
path = 'HKCU\\Software\\Microsoft\\Office\\11.0\\Access\\Settings';
|
||||
this.regWrites (path, 'REG_DWORD', {
|
||||
this.regWrites(path, 'REG_DWORD', {
|
||||
'Confirm Document Deletions' : 0,
|
||||
'Confirm Action Queries' : 0,
|
||||
'Confirm Record Changes' : 0
|
||||
});
|
||||
|
||||
path = 'HKCU\\Software\\Microsoft\\Office\\11.0\\Access\\Security';
|
||||
this.regWrite (path, 'Level', 1, 'REG_DWORD');
|
||||
this.regWrite(path, 'Level', 1, 'REG_DWORD');
|
||||
|
||||
// Creates the MySQL ODBC connection
|
||||
|
||||
var driverPath = this.getEnv ('ProgramFiles')
|
||||
var driverPath = this.getEnv('ProgramFiles')
|
||||
+'\\MySQL\\Connector ODBC 5.1\\myodbc5.dll';
|
||||
|
||||
var params = {
|
||||
|
@ -101,7 +95,7 @@ var App =
|
|||
'AUTO_RECONNECT' : 1
|
||||
};
|
||||
|
||||
this.createOdbc (
|
||||
this.createOdbc(
|
||||
Conf.dsName,
|
||||
'Mysql ODBC 5.1 Driver',
|
||||
params
|
||||
|
@ -109,7 +103,7 @@ var App =
|
|||
|
||||
// Creates the PosgreSQL ODBC connection
|
||||
|
||||
var driverPath = this.getEnv ('ProgramFiles')
|
||||
var driverPath = this.getEnv('ProgramFiles')
|
||||
+'\\psqlODBC\\0804\\bin\\psqlodbc35w.dll';
|
||||
|
||||
var params = {
|
||||
|
@ -122,7 +116,7 @@ var App =
|
|||
'PASSWORD' : ''
|
||||
};
|
||||
|
||||
this.createOdbc (
|
||||
this.createOdbc(
|
||||
'verdnaturapg',
|
||||
'PostgreSQL Unicode',
|
||||
params
|
||||
|
@ -130,48 +124,45 @@ var App =
|
|||
|
||||
// Marks the application as configured
|
||||
|
||||
this.regWrite (Conf.regPath, 'configured', 1, 'REG_DWORD');
|
||||
this.regWrite(Conf.regPath, 'configured', 1, 'REG_DWORD');
|
||||
}
|
||||
|
||||
// Loads the form data
|
||||
|
||||
var user = this.regRead (Conf.dsPath, 'UID');
|
||||
var password = this.regRead (Conf.dsPath, 'PWD');
|
||||
var remember = this.regRead (Conf.regPath, 'remember');
|
||||
var user = this.regRead(Conf.dsPath, 'UID');
|
||||
var password = this.regRead(Conf.dsPath, 'PWD');
|
||||
var remember = this.regRead(Conf.regPath, 'remember');
|
||||
|
||||
if (user)
|
||||
this.$('user').value = user;
|
||||
|
||||
if (remember && password)
|
||||
{
|
||||
if (remember && password) {
|
||||
this.$('password').value = password;
|
||||
this.$('remember').checked = true;
|
||||
this._onEnterClick ();
|
||||
}
|
||||
else
|
||||
this.resetForm ();
|
||||
this._onEnterClick();
|
||||
} else
|
||||
this.resetForm(true);
|
||||
},
|
||||
|
||||
createOdbc: function (dsName, driverName, params)
|
||||
{
|
||||
resetForm: function(clearPassword) {
|
||||
if (clearPassword)
|
||||
this.$('password').value = '';
|
||||
|
||||
this.$('user').focus();
|
||||
this.$('user').select();
|
||||
},
|
||||
|
||||
createOdbc: function(dsName, driverName, params) {
|
||||
var odbcPath = 'HKCU\\Software\\ODBC\\ODBC.INI\\';
|
||||
|
||||
this.regWrites (odbcPath + dsName, 'REG_SZ', params);
|
||||
this.regWrite (odbcPath + 'ODBC Data Sources',
|
||||
this.regWrites(odbcPath + dsName, 'REG_SZ', params);
|
||||
this.regWrite(odbcPath + 'ODBC Data Sources',
|
||||
dsName, driverName, 'REG_SZ');
|
||||
},
|
||||
|
||||
resetForm: function ()
|
||||
{
|
||||
this.$('user').focus ();
|
||||
this.$('user').select ();
|
||||
this.$('password').value = '';
|
||||
},
|
||||
|
||||
_disableUi: function (disabled, loadMessage)
|
||||
{
|
||||
_disableUi: function(disabled, loadMessage) {
|
||||
if (disabled)
|
||||
this._hideMessage ();
|
||||
this._hideMessage();
|
||||
else
|
||||
loadMessage = '';
|
||||
|
||||
|
@ -187,72 +178,63 @@ var App =
|
|||
this.$('spinner').style.display = display;
|
||||
},
|
||||
|
||||
_onKeyPress: function (e)
|
||||
{
|
||||
switch (e.keyCode)
|
||||
{
|
||||
_onKeyPress: function(e) {
|
||||
switch (e.keyCode) {
|
||||
case 13: // Enter
|
||||
this._onEnterPress (e);
|
||||
this._onEnterPress(e);
|
||||
break;
|
||||
case 27: // Esc
|
||||
window.close ();
|
||||
window.close();
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
_onEnterPress: function (event)
|
||||
{
|
||||
_onEnterPress: function(event) {
|
||||
var target = event.target || event.srcElement;
|
||||
|
||||
if (target && target.id == 'user' && this.$('password').value == '')
|
||||
{
|
||||
this.$('password').focus ();
|
||||
if (target && target.id == 'user' && this.$('password').value == '') {
|
||||
this.$('password').focus();
|
||||
return;
|
||||
}
|
||||
|
||||
this._onEnterClick ();
|
||||
this._onEnterClick();
|
||||
},
|
||||
|
||||
_onEnterClick: function ()
|
||||
{
|
||||
this._disableUi (true, _('Loading'));
|
||||
setTimeout (function () {App.login ();}, 0);
|
||||
_onEnterClick: function() {
|
||||
setTimeout(function() {App.login();}, 0);
|
||||
},
|
||||
|
||||
login: function ()
|
||||
{
|
||||
login: function() {
|
||||
var clearPassword;
|
||||
|
||||
this._disableUi(true, _('Loading'));
|
||||
|
||||
try {
|
||||
var user = this.$('user').value;
|
||||
var password = this.$('password').value;
|
||||
|
||||
if (!user || user === '')
|
||||
throw new Error (_('Enter a user name'));
|
||||
throw new Error(_('Enter a user name'));
|
||||
if (!password || password === '')
|
||||
throw new Error (_('Enter a password'));
|
||||
throw new Error(_('Enter a password'));
|
||||
|
||||
this.regWrite (Conf.dsPath, 'UID', user, 'REG_SZ');
|
||||
this.regWrite (Conf.dsPath, 'PWD', password, 'REG_SZ');
|
||||
this.regWrite(Conf.dsPath, 'UID', user, 'REG_SZ');
|
||||
this.regWrite(Conf.dsPath, 'PWD', password, 'REG_SZ');
|
||||
|
||||
// Gets the last version number using the MySQL ODBC connection
|
||||
|
||||
var mysqlConn = new ActiveXObject ('ADODB.Connection');
|
||||
var mysqlConn = new ActiveXObject('ADODB.Connection');
|
||||
|
||||
try {
|
||||
mysqlConn.open (Conf.dsName);
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
mysqlConn.open(Conf.dsName);
|
||||
} catch (e) {
|
||||
var dbErrors = mysqlConn.errors;
|
||||
|
||||
if (dbErrors.count > 0)
|
||||
{
|
||||
if (dbErrors.count > 0) {
|
||||
var errorMsg;
|
||||
var dbError = dbErrors.item(0);
|
||||
|
||||
switch (dbError.NativeError)
|
||||
{
|
||||
switch (dbError.NativeError) {
|
||||
case 1045: // Access denied
|
||||
clearPassword = true;
|
||||
errorMsg = _('Bad login');
|
||||
|
@ -265,208 +247,178 @@ var App =
|
|||
}
|
||||
|
||||
dbErrors.clear();
|
||||
throw new Error (errorMsg);
|
||||
}
|
||||
else
|
||||
throw new Error(errorMsg);
|
||||
} else
|
||||
throw e;
|
||||
}
|
||||
|
||||
var sql = 'SELECT version FROM versiones WHERE programa = \''+ this.module +'\'';
|
||||
var rs = mysqlConn.execute (sql);
|
||||
var lastVersion = parseInt (rs.fields(0).value);
|
||||
var rs = mysqlConn.execute(sql);
|
||||
var lastVersion = parseInt(rs.fields(0).value);
|
||||
|
||||
rs.close ();
|
||||
mysqlConn.close ();
|
||||
rs.close();
|
||||
mysqlConn.close();
|
||||
|
||||
// Obtains the local version number from the MDB file
|
||||
|
||||
var localVersion = -1;
|
||||
|
||||
if (this.fso.fileExists (this.mdbFile))
|
||||
if (this.fso.fileExists(this.mdbFile))
|
||||
try {
|
||||
var mdbConn = new ActiveXObject ('ADODB.Connection');
|
||||
mdbConn.open ('Provider=Microsoft.Jet.OLEDB.4.0; Data Source='+ this.mdbFile +';');
|
||||
var mdbConn = new ActiveXObject('ADODB.Connection');
|
||||
mdbConn.open('Provider=Microsoft.Jet.OLEDB.4.0; Data Source='+ this.mdbFile +';');
|
||||
|
||||
var oRs = new ActiveXObject ('ADODB.Recordset');
|
||||
oRs.Open ('SELECT Version FROM tblVariables', mdbConn);
|
||||
localVersion = oRs.EOF ? -1 : parseInt (oRs('Version'));
|
||||
var oRs = new ActiveXObject('ADODB.Recordset');
|
||||
oRs.Open('SELECT Version FROM tblVariables', mdbConn);
|
||||
localVersion = oRs.EOF ? -1 : parseInt(oRs('Version'));
|
||||
|
||||
oRs.close ();
|
||||
mdbConn.close ();
|
||||
}
|
||||
catch (e) {}
|
||||
oRs.close();
|
||||
mdbConn.close();
|
||||
} catch (e) {}
|
||||
|
||||
// Compares the local version with the las version
|
||||
|
||||
if (localVersion < lastVersion)
|
||||
{
|
||||
this._disableUi (true, _('Updating'));
|
||||
var request = new ActiveXObject ('MSXML2.XMLHTTP');
|
||||
request.open ('GET', this.remoteFile +'?'+ new Date().getTime(), true);
|
||||
request.onreadystatechange = function () {
|
||||
App._onRequestReady (request);
|
||||
if (localVersion < lastVersion) {
|
||||
this._disableUi(true, _('Updating'));
|
||||
var request = new ActiveXObject('MSXML2.XMLHTTP');
|
||||
request.open('GET', this.remoteFile +'?'+ new Date().getTime(), true);
|
||||
request.onreadystatechange = function() {
|
||||
App._onRequestReady(request);
|
||||
};
|
||||
request.send ();
|
||||
}
|
||||
else
|
||||
this.openMdb ();
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
this._catchError (e, clearPassword);
|
||||
request.send();
|
||||
} else
|
||||
this.openMdb();
|
||||
} catch (e) {
|
||||
this._catchError(e, clearPassword);
|
||||
}
|
||||
},
|
||||
|
||||
_onRequestReady: function (request)
|
||||
_onRequestReady: function(request)
|
||||
{
|
||||
if (request.readyState !== 4)
|
||||
return;
|
||||
|
||||
try {
|
||||
if (request.status !== 200)
|
||||
throw new Error ('HTTP: '+ request.statusText);
|
||||
throw new Error('HTTP: '+ request.statusText);
|
||||
|
||||
if (this.fso.fileExists (this.compressFile))
|
||||
this.fso.deleteFile (this.compressFile);
|
||||
if (this.fso.fileExists(this.compressFile))
|
||||
this.fso.deleteFile(this.compressFile);
|
||||
|
||||
var stream = new ActiveXObject ('ADODB.Stream');
|
||||
stream.open ();
|
||||
var stream = new ActiveXObject('ADODB.Stream');
|
||||
stream.open();
|
||||
stream.Type = 1; //adTypeBinary
|
||||
stream.write (request.responseBody);
|
||||
stream.write(request.responseBody);
|
||||
stream.Position = 0;
|
||||
stream.saveToFile (this.compressFile, 2);
|
||||
stream.close ();
|
||||
stream.saveToFile(this.compressFile, 2);
|
||||
stream.close();
|
||||
|
||||
if (this.fso.fileExists (this.mdbFile))
|
||||
this.fso.deleteFile (this.mdbFile);
|
||||
if (this.fso.fileExists(this.mdbFile))
|
||||
this.fso.deleteFile(this.mdbFile);
|
||||
|
||||
this.run ('7za e "'+ this.compressFile +'" -o"'+ this.moduleDir +'"', true);
|
||||
this.fso.deleteFile (this.compressFile);
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
alert (_('Error while updating') +': '+ e.message);
|
||||
this.run('7za e "'+ this.compressFile +'" -o"'+ this.moduleDir +'"', true);
|
||||
this.fso.deleteFile(this.compressFile);
|
||||
} catch (e) {
|
||||
alert(_('Error while updating') +': '+ e.message);
|
||||
}
|
||||
|
||||
try {
|
||||
if (!this.fso.fileExists (this.mdbFile))
|
||||
throw new Error (_('MDB file not found'));
|
||||
if (!this.fso.fileExists(this.mdbFile))
|
||||
throw new Error(_('MDB file not found'));
|
||||
|
||||
this.openMdb ();
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
this._catchError (e);
|
||||
this.openMdb();
|
||||
} catch (e) {
|
||||
this._catchError(e);
|
||||
}
|
||||
},
|
||||
|
||||
_catchError: function (error, clearPassword)
|
||||
{
|
||||
if (error)
|
||||
{
|
||||
if (!this.$('remember').checked || clearPassword)
|
||||
this.regWrite (Conf.dsPath, 'PWD', '', 'REG_SZ');
|
||||
|
||||
this.showMessage (error.message);
|
||||
}
|
||||
|
||||
this._disableUi (false);
|
||||
this.$('user').focus ();
|
||||
this.$('user').select ();
|
||||
},
|
||||
|
||||
openMdb: function ()
|
||||
{
|
||||
openMdb: function() {
|
||||
var remember = this.$('remember').checked ? 1 : 0;
|
||||
this.regWrite (Conf.regPath, 'remember', remember, 'REG_DWORD');
|
||||
this.regWrite(Conf.regPath, 'remember', remember, 'REG_DWORD');
|
||||
|
||||
var programFiles = this.getEnv ('ProgramFiles');
|
||||
var programFiles = this.getEnv('ProgramFiles');
|
||||
var accessBin = programFiles +'\\Microsoft Office\\OFFICE11\\MSACCESS.EXE';
|
||||
|
||||
if (!this.fso.fileExists (accessBin))
|
||||
throw new Error (_('Microsoft Access 2003 is not installed'));
|
||||
if (!this.fso.fileExists(accessBin))
|
||||
throw new Error(_('Microsoft Access 2003 is not installed'));
|
||||
|
||||
this.shell.exec ('"'+ accessBin +'" "'+ this.mdbFile +'"');
|
||||
window.close ();
|
||||
this.shell.exec('"'+ accessBin +'" "'+ this.mdbFile +'"');
|
||||
window.close();
|
||||
},
|
||||
|
||||
showMessage: function (message)
|
||||
{
|
||||
_catchError: function(error, clearPassword) {
|
||||
if (!this.$('remember').checked || clearPassword)
|
||||
this.regWrite(Conf.dsPath, 'PWD', '', 'REG_SZ');
|
||||
|
||||
this._disableUi(false);
|
||||
this.showMessage(error.message);
|
||||
this.resetForm(clearPassword);
|
||||
},
|
||||
|
||||
showMessage: function(message) {
|
||||
if (this.messageTimeout)
|
||||
clearTimeout (this.messageTimeout);
|
||||
clearTimeout(this.messageTimeout);
|
||||
|
||||
var messageDiv = this.$('message');
|
||||
messageDiv.innerHTML = message;
|
||||
messageDiv.style.display = 'block';
|
||||
this.messageTimeout = setTimeout (function () {App._hideMessage();}, 10000);
|
||||
this.messageTimeout = setTimeout(function() {App._hideMessage();}, 10000);
|
||||
},
|
||||
|
||||
_onBodyClick: function ()
|
||||
{
|
||||
this._hideMessage ();
|
||||
_onBodyClick: function() {
|
||||
this._hideMessage();
|
||||
},
|
||||
|
||||
_hideMessage: function ()
|
||||
{
|
||||
if (this.messageTimeout)
|
||||
{
|
||||
_hideMessage: function() {
|
||||
if (this.messageTimeout) {
|
||||
this.$('message').style.display = 'none';
|
||||
clearTimeout (this.messageTimeout);
|
||||
clearTimeout(this.messageTimeout);
|
||||
this.messageTimeout = null;
|
||||
}
|
||||
},
|
||||
|
||||
_onUnload: function ()
|
||||
{
|
||||
this._disableUi (false);
|
||||
_onUnload: function() {
|
||||
this._disableUi(false);
|
||||
},
|
||||
|
||||
$: function (id)
|
||||
{
|
||||
return document.getElementById (id);
|
||||
$: function(id) {
|
||||
return document.getElementById(id);
|
||||
},
|
||||
|
||||
run: function (command, wait)
|
||||
{
|
||||
run: function(command, wait) {
|
||||
if (!wait)
|
||||
wait = false;
|
||||
|
||||
this.shell.run (command, 0, wait);
|
||||
this.shell.run(command, 0, wait);
|
||||
},
|
||||
|
||||
getEnv: function (varName)
|
||||
{
|
||||
return this.shell.expandEnvironmentStrings ('%'+ varName +'%');
|
||||
getEnv: function(varName) {
|
||||
return this.shell.expandEnvironmentStrings('%'+ varName +'%');
|
||||
},
|
||||
|
||||
regRead: function (path, key)
|
||||
{
|
||||
regRead: function(path, key) {
|
||||
try {
|
||||
var value = this.shell.regRead (path +'\\'+ key);
|
||||
}
|
||||
catch (e) {
|
||||
var value = this.shell.regRead(path +'\\'+ key);
|
||||
} catch (e) {
|
||||
var value = null;
|
||||
}
|
||||
|
||||
return value;
|
||||
},
|
||||
|
||||
regWrite: function (path, key, value, type)
|
||||
{
|
||||
this.shell.regWrite (path +'\\'+ key, value, type);
|
||||
regWrite: function(path, key, value, type) {
|
||||
this.shell.regWrite(path +'\\'+ key, value, type);
|
||||
},
|
||||
|
||||
regWrites: function (path, type, values)
|
||||
{
|
||||
for (var key in values)
|
||||
this.regWrite (path, key, values[key], type);
|
||||
regWrites: function(path, type, values) {
|
||||
for(var key in values)
|
||||
this.regWrite(path, key, values[key], type);
|
||||
}
|
||||
};
|
||||
|
||||
App.init ();
|
||||
App.init();
|
||||
|
||||
function _(string)
|
||||
{
|
||||
function _(string) {
|
||||
var translation = Locale[Conf.defaultLocale][string];
|
||||
return translation ? translation : string;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue