feat: refs #5308 Upgrade to v7
34
LICENSE
|
@ -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".
|
||||
|
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 959 KiB After Width: | Height: | Size: 959 KiB |
20
setup.iss
|
@ -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
|
||||
|
|
BIN
src/7za.exe
|
@ -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-----
|
42
src/main.js
|
@ -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);
|
||||
}
|
||||
|
|
619
src/style.css
|
@ -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;
|
||||
}
|
|
@ -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()">
|
||||
♥
|
||||
</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>
|
||||
|
||||
|
|