feat: refs #5308 Upgrade to v7

This commit is contained in:
Guillermo Bonet 2024-02-21 12:38:50 +01:00
parent d4eea78851
commit acf586e2ec
30 changed files with 471 additions and 442 deletions

34
LICENSE
View File

@ -1,17 +1,17 @@
Copyright (C) 2023 - Verdnatura Levante S.L.
This package 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 <http://www.gnu.org/licenses/>.
On Debian systems, the complete text of the GNU General Public
License can be found in "/usr/share/common-licenses/GPL-3".
Copyright (C) 2024 - Verdnatura Levante S.L.
This package 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 <http://www.gnu.org/licenses/>.
On Debian systems, the complete text of the GNU General Public
License can be found in "/usr/share/common-licenses/GPL-3".

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

Before

Width:  |  Height:  |  Size: 959 KiB

After

Width:  |  Height:  |  Size: 959 KiB

View File

@ -1,6 +1,6 @@
#define MyAppName "Verdnatura"
#define MyAppVersion "6"
#define MyAppVersion "7"
#define MyAppPublisher "Verdnatura"
#define MyAppURL "https://www.verdnatura.es/"
@ -17,8 +17,8 @@ AppUpdatesURL={#MyAppURL}
CreateAppDir=yes
DefaultDirName={commonpf}\{#MyAppName}
DefaultGroupName={#MyAppName}
WizardSmallImageFile=iss\wizard-small.bmp
WizardImageFile=iss\wizard.bmp
WizardSmallImageFile=img\iss\wizard-small.bmp
WizardImageFile=img\iss\wizard.bmp
LicenseFile=src\LICENSE.txt
SetupIconFile=src\icon.ico
UninstallDisplayIcon={app}\icon.ico
@ -48,13 +48,13 @@ Source: "odbc\*"; \
DestDir: {tmp}; Flags: deleteafterinstall; AfterInstall: InstallMsi;
Source: "src\*"; \
DestDir: "{app}"; Flags: ignoreversion
Source: "branches\*"; \
DestDir: "{app}\branches"; Flags: ignoreversion
Source: "datasources\*"; \
DestDir: "{app}\datasources"; Flags: ignoreversion
Source: "apiSources\*"; \
DestDir: "{app}\apiSources"; Flags: ignoreversion
Source: "icons\*"; \
Source: "img\branches\*"; \
DestDir: "{app}branches"; Flags: ignoreversion
Source: "img\datasources\*"; \
DestDir: "{app}datasources"; Flags: ignoreversion
Source: "img\apiSources\*"; \
DestDir: "{app}apiSources"; Flags: ignoreversion
Source: "img\appIcons\*"; \
DestDir: "{app}\icons"; Flags: ignoreversion
Source: "ocx\*"; \
DestDir: {sys}; Flags: onlyifdoesntexist regserver 32bit

Binary file not shown.

View File

@ -1,25 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIEQzCCAyugAwIBAgIJAJimL+J4jUaQMA0GCSqGSIb3DQEBBQUAMIG2MQswCQYD
VQQGEwJFUzEdMBsGA1UECAwUQ29tdW5pZGFkIFZhbGVuY2lhbmExETAPBgNVBAcM
CFZhbGVuY2lhMR4wHAYDVQQKDBVWZXJkbmF0dXJhIExldmFudGUgU0wxFDASBgNV
BAsMC0luZm9ybWF0aWNhMRYwFAYDVQQDDA12ZXJkbmF0dXJhLmVzMScwJQYJKoZI
hvcNAQkBFhhob3N0bWFzdGVyQHZlcmRuYXR1cmEuZXMwIBcNMTMwNjExMTE1MjQ1
WhgPMjA2MzA1MzAxMTUyNDVaMIG2MQswCQYDVQQGEwJFUzEdMBsGA1UECAwUQ29t
dW5pZGFkIFZhbGVuY2lhbmExETAPBgNVBAcMCFZhbGVuY2lhMR4wHAYDVQQKDBVW
ZXJkbmF0dXJhIExldmFudGUgU0wxFDASBgNVBAsMC0luZm9ybWF0aWNhMRYwFAYD
VQQDDA12ZXJkbmF0dXJhLmVzMScwJQYJKoZIhvcNAQkBFhhob3N0bWFzdGVyQHZl
cmRuYXR1cmEuZXMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsqq+h
1kUfZE19Inm3M2XF1ytIqXeIsXsiZ5T9aVdedQrF2xcVOr4dvJyE5zp9g7NNxy9T
FyAHPXiPWKSoX3w0uoQfLW9Hm19QZYu40hBD5oRrJy5m6l4JU3Gj0tnkvYc4m8Fl
2uEUT3ain0FE2I1XjKpL6eQi9TKjhgmWNRgDJUbllAB3lsQLkNfB6EFo2QJykiKl
aRi4UaHdSkd3zkUJyYRdcG7IxCFvsViKpwr3JF+TLXSN/oronLFgG8cKedrn+sMW
pBm2FZQKAh8hLT3QQQqQgGpQ2y4t2EVJkYVdcGBXCyWYDKegMXgJR10WunICFCaD
kM0P3pYQdtbgr7e9AgMBAAGjUDBOMB0GA1UdDgQWBBQ9+iZdf7pLNQItxs4o43dN
FZD0CTAfBgNVHSMEGDAWgBQ9+iZdf7pLNQItxs4o43dNFZD0CTAMBgNVHRMEBTAD
AQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAcFzJhm3jjuexZf9tTgQfzwtsafLLsYkrm
EZOTkhvZFJYbBd8UngL5UPF1M3buSEV1VqsWCALLrFkxzbmjk5uM8cswZR/3J6un
7GFYWTEllVgkD8KmNA2b6j5uSuGCQmOccsR4069vwNjrvTbtQpEpEAAnDf6d5/N4
MXuDozHq3iEYi7qyGf++5mp4D+82y2ONSUsiLgxqnMT5JX/yhDKI1IiX1ndyt+6r
ie2i2fzdOgovlAILuTM4hoUjPYFOxwmUwpxU2EAjPqo9Bi7bQiH+fv0QBzbpQ9on
DRHo7NuXaDG49nvatJjuf4DiDELBCTMeKBOk5hG7kyWCIwp5wr+w
-----END CERTIFICATE-----

View File

@ -13,7 +13,7 @@ var Conf = {
maxCorruptSize: 600,
odbcDriver: 'MySQL ODBC 8.0 Unicode Driver',
driverPath: '\\MySQL\\Connector ODBC 8.0\\myodbc8w.dll',
version: 6,
version: 7,
cdnURL: 'https://cdn.verdnatura.es/vn-access',
identifier: '.vn',
productionDatasource: 'production.vn'
@ -51,11 +51,10 @@ var Locale = {
var App = {
shell: new ActiveXObject('WScript.Shell'),
fso: new ActiveXObject('scripting.filesystemobject'),
init: function() {
// Specify the size of window
var width = 450;
var height = 595;
var height = 610;
window.resizeTo(width, height);
window.moveTo((screen.width - width) / 2, (screen.height - height) / 2);
},
@ -76,12 +75,15 @@ var App = {
this.certFile = this.appDir +'\\cacert.pem';
this.lockFile = this.moduleDir +'\\' + this.module +'.ldb';
this.mdbFile = this.moduleDir +'\\' + this.module +'.mdb';
this.hasDeveloperMode = this.regRead(Conf.regPath, 'hasDeveloperMode');
document.title = "vn-access v" + Conf.version + " (" + this.module + ")";
var mdbDsName = this.mdbGetValue(
'SELECT dsName FROM TblConfig',
'dsName', String
);
var userDefaultDatasource = this.regRead(Conf.regPath, 'defaultDatasource');
this.dsName = mdbDsName || userDefaultDatasource || Conf.defaultDatasource;
this.heartClicks = 0;
// Creates the necessary registry entries
var lastVersion = this.regRead(Conf.regPath, 'lastExecutedVersion');
@ -111,7 +113,6 @@ var App = {
this.regWrite(Conf.regPath, 'lastExecutedVersion', Conf.version);
this.regWrite(Conf.regPath, 'selectedApiSource', Conf.defaultApiSource);
this.regWrite(Conf.regPath + '\\apiSources', Conf.defaultApiSource, Conf.defaultRemoteURL);
this.createODBC(
Conf.odbcPath,
Conf.productionDatasource,
@ -158,6 +159,7 @@ var App = {
userDefaultBranch = this.regRead(Conf.regPath, 'defaultBranch');
branch = userDefaultBranch || Conf.defaultBranch;
}
this.$('branch').value = branch;
this.onChangeBranch();
@ -177,6 +179,11 @@ var App = {
}
this.$('datasource').value = this.dsName;
if (this.regRead(Conf.regPath, 'autoDeployDevOptions') && this.hasDeveloperMode)
App.openOptions()
this.refreshDeveloperMode();
if (autoLogin) {
this.onChangeDatasource();
this.onEnterClick();
@ -233,7 +240,7 @@ var App = {
this.$('notSignOut').disabled = disabled;
this.$('autoLogin').disabled = disabled;
this.$('enter').disabled = disabled;
var display = disabled ? 'block' : 'none';
this.$('background').style.display = display;
this.$('spinner').style.display = display;
@ -259,6 +266,18 @@ var App = {
this.$('datasourceLogo').className = '';
},
onHeartClick: function() {
this.heartClicks++
if (this.heartClicks >= 5) {
var action = this.hasDeveloperMode ? 'disabled' : 'enabled'
var isActive = !this.hasDeveloperMode ? true : false
this.regWrite(Conf.regPath, 'hasDeveloperMode', isActive)
this.hasDeveloperMode = isActive;
this.showMessage(_('Developer mode ' + action), 'notice');
this.refreshDeveloperMode();
this.heartClicks = 0;
}
},
refreshLogout: function() {
var style = this.$('logout').style;
var password = this.regRead(this.getOdbcPath(), 'PWD');
@ -267,6 +286,15 @@ var App = {
else
style.display = 'none';
},
refreshDeveloperMode: function() {
var stylesName = ['branchOptions', 'datasourceOptions']
for (var n in stylesName) {
var style = this.$(stylesName[n]).style;
this.regRead(Conf.regPath, 'hasDeveloperMode')
? style.visibility = 'visible'
: style.visibility = 'hidden'
}
},
onChangeBranch: function() {
if (this.$('branch').value == 'master'||'test'||'dev') {
this.$('branchButton').className = this.$('branch').value;
@ -673,7 +701,7 @@ var App = {
} catch (e) {}
},
request: function (method, url, data, cb) {
var remoteURL = this.regRead(Conf.regPath,'remoteURL');
var remoteURL = this.regRead(Conf.regPath, 'remoteURL');
if (!remoteURL)
remoteURL = Conf.defaultRemoteURL;
@ -716,7 +744,7 @@ var App = {
err.status = status;
err.req = req;
if (status >= 400 && status < 600)
err.error = JSON.parse(req.responseText);
alert(_('Bad request') +': '+ err);
cb(err);
}

View File

@ -1,302 +1,319 @@
body {
font-family: 'Poppins', 'Verdana', 'Sans';
font-size: 18px;
padding: .8em;
overflow: hidden;
color: #222;
}
a {
text-decoration: none;
color: black;
}
/* Login form */
#logo {
display: block;
margin: 0 auto;
margin-bottom: 4em;
width: 62%;
}
button,
input {
font-size: 1em;
background-color: transparent;
color: black;
}
select {
font-size: 1em;
background-color: #8d8d8d;
}
option {
color: white;
}
#fields {
max-width: 14.4em;
margin-left: 3.4em;
}
#inputs > div {
margin-top: 1em;
}
#inputs > div > * {
display: block;
}
#inputs label {
color: rgb(155, 155, 155);
font-size: .8em;
}
input[type='text'],
input[type='password'] {
width: 100%;
border: none;
border-bottom: 1px solid #c9c9c9;
font-size: 1em;
color: #333;
padding-top: .5em;
padding-bottom: .5em;
padding-left: .3em;
max-width: auto;
}
input[type='text']:focus,
input[type='password']:focus {
border-bottom: 1px solid black;
}
#optionsSection {
margin-top: 1em;
font-size: .8em;
margin-bottom: 2.5em;
}
#logout {
float: right;
margin-top: -4.3em;
margin-left: .4em;
padding: .4em;
}
#logout:hover {
border-radius: 25px;
background-color: #f0f0f0;
cursor: pointer;
}
#submit {
margin-top: 1em;
}
#clean {
margin-top: 1.3em;
font-size: .8em;
text-align: center;
}
#submit,
#cleanDiv {
text-align: center;
}
#cleanDiv {
margin-top: 10px;
}
#clean:hover {
text-decoration: underline;
text-decoration-color: #44f;
}
button {
color: #FFF;
background-color: black;
padding: 1em;
padding-right: 5.2em;
padding-left: 5.2em;
border: none;
border-radius: 25px;
font-size: .9em;
}
button:hover {
background-color: #3d3f42;
cursor: pointer;
}
select {
color: white;
}
/* Branch */
#branchOptions {
margin-top: 2em;
}
#branchLogo {
cursor: pointer;
padding-top: .4em;
padding-left: .4em;
padding-right: .4em;
}
#branch {
border: none;
cursor: pointer;
float: right;
}
#branchSelector {
float: right;
margin-top: .7em;
width: 125px;
display: none;
padding-left: .4em;
padding-right: .9em;
max-width: 133px;
}
#branchButton {
float: left;
border-radius: 25px;
color: black;
box-shadow: 0 0 .25em rgba(1,1,1,.6);
background-color: #8d8d8d;
}
#branchButton:hover {
box-shadow: none;
}
#branchButton.master {
background-color: #c20000;
}
#branchButton.test {
background-color: #b1a32b;
}
#branchButton.dev {
background-color: #31a527;
}
select.master {
background-color: #c20000;
}
select.test {
background-color: #b1a32b;
}
select.dev {
background-color: #31a527;
}
/* Datasource */
#datasourceOptions {
margin-top: 2em;
margin-left: 17.3em;
}
#datasourceLogo {
cursor: pointer;
padding-top: .4em;
padding-left: .4em;
padding-right: .4em;
}
#datasourceLogo.on {
cursor: pointer;
padding-top: .4em;
padding-left: .4em;
padding-right: .4em;
margin-left: 8em;
}
#datasource {
border: none;
cursor: pointer;
padding-left: .2em;
float: left;
}
#datasourceSelector {
float: right;
display: none;
padding-left: .5em;
margin-top: -1.91em;
width: 180px;
}
#datasourceButton {
float: right;
border-radius: 25px;
color: black;
box-shadow: 0 0 .25em rgba(1,1,1,.6);
background-color: #8d8d8d;
}
#datasourceButton:hover {
box-shadow: none;
}
#datasourceButton.production {
background-color: #c20000;
}
#datasourceButton.test {
background-color: #b1a32b;
}
#datasourceButton.development {
background-color: #31a527;
}
select.production {
background-color: #c20000;
}
select.test {
background-color: #b1a32b;
}
select.development {
background-color: #31a527;
}
/* Message */
#message {
z-index: 2;
position: absolute;
top: 1.8em;
left: 11.8em;
width: 20em;
padding: .5em;
margin-left: -7.25em;
margin-top: 2.5em;
background-color: #EBB;
color: #644;
text-align: center;
font-size: .8em;
display: none;
border-radius: 5px;
box-shadow: 0 0 .4em rgba(1,1,1,.6);
}
#message.error {
border-color: black;
background-color: #ffcdd2;
color: #bf0000;
}
#message.notice {
border-color: black;
background-color: #d0cdff;
color: #0d00bf;
}
/* Spinner */
#background {
z-index: 1;
position: absolute;
width: 100%;
height: 100%;
background-color: black;
opacity: .7;
filter: alpha(opacity=50);
top: 0;
left: 0;
display: none;
}
#spinner {
z-index: 2;
position: absolute;
padding: 1em;
width: 10em;
height: 5em;
margin-top: -4em;
margin-left: -6.1em;
top: 50%;
left: 50%;
background-color: white;
display: none;
text-align: center;
border: 1px solid black;
border-radius: 25px;
}
#spinner * {
vertical-align: middle;
}
#spinner img {
width: 2.5em;
height: 2.5em;
margin-top: .5em;
}
#loading-message {
font-size: .9em;
body {
font-family: 'Poppins', 'Verdana', 'Sans';
font-size: 18px;
padding: .8em;
overflow: hidden;
color: #222;
}
a {
text-decoration: none;
color: black;
}
/* Login form */
#logo {
display: block;
margin: 0 auto;
margin-bottom: 4em;
width: 62%;
}
button,
input {
font-size: 1em;
background-color: transparent;
color: black;
}
select {
font-size: 1em;
background-color: #8d8d8d;
}
option {
color: white;
}
#fields {
max-width: 14.4em;
margin-left: 3.4em;
}
#inputs > div {
margin-top: 1em;
}
#inputs > div > * {
display: block;
}
#inputs label {
color: rgb(155, 155, 155);
font-size: .8em;
}
input[type='text'],
input[type='password'] {
width: 100%;
border: none;
border-bottom: 1px solid #c9c9c9;
font-size: 1em;
color: #333;
padding-top: .5em;
padding-bottom: .5em;
padding-left: .3em;
max-width: auto;
}
input[type='text']:focus,
input[type='password']:focus {
border-bottom: 1px solid black;
}
#optionsSection {
margin-top: 1em;
font-size: .8em;
margin-bottom: 2.5em;
}
#logout {
float: right;
margin-top: -4.3em;
margin-left: .4em;
padding: .4em;
}
#logout:hover {
border-radius: 25px;
background-color: #f0f0f0;
cursor: pointer;
}
#submit {
margin-top: 1em;
}
#clean {
margin-top: 1.3em;
font-size: .8em;
text-align: center;
}
#submit,
#cleanDiv {
text-align: center;
}
#cleanDiv {
margin-top: 10px;
}
#clean:hover {
text-decoration: underline;
text-decoration-color: #44f;
}
button {
color: #FFF;
background-color: black;
padding: 1em;
padding-right: 5.2em;
padding-left: 5.2em;
border: none;
border-radius: 25px;
font-size: .9em;
}
button:hover {
background-color: #3d3f42;
cursor: pointer;
}
select {
color: white;
}
/* Branch */
#branchOptions {
margin-top: 1em;
visibility: hidden;
}
#branchLogo {
cursor: pointer;
padding-top: .4em;
padding-left: .4em;
padding-right: .4em;
}
#branch {
border: none;
cursor: pointer;
float: right;
}
#branchSelector {
float: right;
margin-top: .7em;
width: 125px;
display: none;
padding-left: .4em;
padding-right: .9em;
max-width: 133px;
}
#branchButton {
float: left;
border-radius: 25px;
color: black;
box-shadow: 0 0 .25em rgba(1,1,1,.6);
background-color: #8d8d8d;
}
#branchButton:hover {
box-shadow: none;
}
#branchButton.master {
background-color: #c20000;
}
#branchButton.test {
background-color: #b1a32b;
}
#branchButton.dev {
background-color: #31a527;
}
select.master {
background-color: #c20000;
}
select.test {
background-color: #b1a32b;
}
select.dev {
background-color: #31a527;
}
/* Datasource */
#datasourceOptions {
margin-top: 1em;
margin-left: 17.3em;
visibility: hidden;
}
#datasourceLogo {
cursor: pointer;
padding-top: .4em;
padding-left: .4em;
padding-right: .4em;
}
#datasourceLogo.on {
cursor: pointer;
padding-top: .4em;
padding-left: .4em;
padding-right: .4em;
margin-left: 8em;
}
#datasource {
border: none;
cursor: pointer;
padding-left: .2em;
float: left;
}
#datasourceSelector {
float: right;
display: none;
padding-left: .5em;
margin-top: -1.91em;
width: 180px;
}
#datasourceButton {
float: right;
border-radius: 25px;
color: black;
box-shadow: 0 0 .25em rgba(1,1,1,.6);
background-color: #8d8d8d;
}
#datasourceButton:hover {
box-shadow: none;
}
#datasourceButton.production {
background-color: #c20000;
}
#datasourceButton.test {
background-color: #b1a32b;
}
#datasourceButton.development {
background-color: #31a527;
}
select.production {
background-color: #c20000;
}
select.test {
background-color: #b1a32b;
}
select.development {
background-color: #31a527;
}
/* Footer */
#footer {
width: 100%;
text-align: center;
font-size: 14px;
margin-top: 6em;
color: #303030
}
#heart {
color: #97d700;
}
/* Message */
#message {
z-index: 2;
position: absolute;
top: 1.8em;
left: 11.8em;
width: 20em;
padding: .5em;
margin-left: -7.25em;
margin-top: 2.5em;
background-color: #EBB;
color: #644;
text-align: center;
font-size: 1em;
display: none;
border-radius: 5px;
box-shadow: 0 0 .4em rgba(1,1,1,.6);
}
#message.error {
border-color: black;
background-color: #ffcdd2;
color: #bf0000;
}
#message.notice {
border-color: black;
background-color: #d0cdff;
color: #0d00bf;
}
/* Spinner */
#background {
z-index: 1;
position: absolute;
width: 100%;
height: 100%;
background-color: black;
opacity: .7;
filter: alpha(opacity=50);
top: 0;
left: 0;
display: none;
}
#spinner {
z-index: 2;
position: absolute;
padding: 1em;
width: 10em;
height: 5em;
margin-top: -4em;
margin-left: -6.1em;
top: 50%;
left: 50%;
background-color: white;
display: none;
text-align: center;
border: 1px solid black;
border-radius: 25px;
font-size: 18px;
}
#spinner * {
vertical-align: middle;
}
#spinner img {
width: 2.7em;
height: 2.7em;
margin-top: .5em;
}
#loading-message {
font-size: .9em;
}

View File

@ -1,82 +1,91 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" http-equiv="X-UA-Compatible" content="IE=9"/>
<title>v6</title>
<link rel="stylesheet" href="style.css"/>
<script type="text/javascript" src="main.js"></script>
<hta:application
id="Verdnatura"
applicationname="Verdnatura"
border="dialog"
maximizebutton="no"
scrollflat="yes"
caption="yes"
selection="no"
innerborder="no"
icon="icon.ico"
scroll="no"
showintaskbar="yes"
singleinstance="no"
sysmenu="yes"
windowsstate="normal"/>
</head>
<body
onload="App.onLoad(event)"
onunload="App.onUnload(event)"
onkeypress="App.onKeyPress(event)"
onclick="App.onBodyClick(event)">
<img id="logo" src="verdnatura.svg" alt="Verdnatura"/>
<div id="fields">
<div id="inputs">
<div>
<label for="user">Usuario</label>
<input id="user" type="text"/>
</div>
<div>
<label for="password">Contraseña</label>
<input id="password" type="password"/>
</div>
</div>
<div id="optionsSection">
<input id="notSignOut" type="checkbox">
<label for="notSignOut">No cerrar sesión</label>
<br/>
<input id="autoLogin" type="checkbox"/>
<label for="autoLogin">Auto-login</label>
</div>
<img id="logout" src="logout.png" onclick="App.logout()"/>
</div>
<div id="submit">
<button id="enter" onclick="App.onEnterClick()">Iniciar sesión</button>
</div>
<div id="cleanDiv">
<a id="clean" href="#" onclick="App.onCleanCacheClick()">Limpiar caché</a>
</div>
<div id="branchOptions">
<div id="branchButton">
<img id="branchLogo" src="branch.png" onclick="App.openOptions()" alt="Change branch"/>
<div id="branchSelector">
<select id="branch" onchange="App.onChangeBranch()"></select>
</div>
</div>
</div>
<div id="datasourceOptions">
<div id="datasourceButton">
<img id="datasourceLogo" src="datasource.png" onclick="App.openOptions()" alt="Change datasource"/>
<div id="datasourceSelector">
<select id="datasource" onchange="App.onChangeDatasource()"></select>
</div>
</div>
</div>
<div id="background"></div>
<div id="spinner">
<img alt="Cargando..." src="spinner.gif"/>
<br/>
<span id="loading-message"></span>
</div>
<div id="message">
</div>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" http-equiv="X-UA-Compatible" content="IE=9"/>
<title>.</title>
<link rel="stylesheet" href="style.css"/>
<script type="text/javascript" src="main.js"></script>
<hta:application
id="Verdnatura"
applicationname="Verdnatura"
border="dialog"
maximizebutton="no"
scrollflat="yes"
caption="yes"
selection="no"
innerborder="no"
icon="icon.ico"
scroll="no"
showintaskbar="yes"
singleinstance="no"
sysmenu="yes"
windowsstate="normal"/>
</head>
<body
onload="document.title = document.title + ' - ' + this.module()"
onload="App.onLoad(event)"
onunload="App.onUnload(event)"
onkeypress="App.onKeyPress(event)"
onclick="App.onBodyClick(event)">
<img id="logo" src="verdnatura.svg" alt="Verdnatura"/>
<div id="fields">
<div id="inputs">
<div>
<label for="user">Usuario</label>
<input id="user" type="text"/>
</div>
<div>
<label for="password">Contraseña</label>
<input id="password" type="password"/>
</div>
</div>
<div id="optionsSection">
<input id="notSignOut" type="checkbox">
<label for="notSignOut">No cerrar sesión</label>
<br/>
<input id="autoLogin" type="checkbox"/>
<label for="autoLogin">Auto-login</label>
</div>
<img id="logout" src="logout.png" onclick="App.logout()"/>
</div>
<div id="submit">
<button id="enter" onclick="App.onEnterClick()">Iniciar sesión</button>
</div>
<div id="cleanDiv">
<a id="clean" href="#" onclick="App.onCleanCacheClick()">Limpiar caché</a>
</div>
<div id="branchOptions">
<div id="branchButton">
<img id="branchLogo" src="branch.png" onclick="App.openOptions()" alt="Change branch"/>
<div id="branchSelector">
<select id="branch" onchange="App.onChangeBranch()"></select>
</div>
</div>
</div>
<div id="datasourceOptions">
<div id="datasourceButton">
<img id="datasourceLogo" src="datasource.png" onclick="App.openOptions()" alt="Change datasource"/>
<div id="datasourceSelector">
<select id="datasource" onchange="App.onChangeDatasource()"></select>
</div>
</div>
</div>
<div id="footer">
<span>
developed by Verdnatura with
<span id="heart" onclick="App.onHeartClick()">
&hearts;
</span>
</span>
<div>
<div id="background"></div>
<div id="spinner">
<img alt="Cargando..." src="spinner.gif"/>
<br/>
<span id="loading-message"></span>
</div>
<div id="message">
</div>
</body>
</html>