Merge pull request '3971-modernizeStyle' (#6) from 3971-modernizeStyle into test
gitea/hedera-web/pipeline/head This commit looks good Details

Reviewed-on: #6
This commit is contained in:
Juan Ferrer 2022-05-26 08:02:24 +00:00
commit 09e418da95
263 changed files with 15924 additions and 17343 deletions

2
debian/changelog vendored
View File

@ -1,4 +1,4 @@
hedera-web (1.407.69) stable; urgency=low hedera-web (1.407.70) stable; urgency=low
* Initial Release. * Initial Release.

View File

@ -3,39 +3,39 @@ Hedera.AddressList = new Class
({ ({
Extends: Hedera.Form Extends: Hedera.Form
,activate: function () ,activate: function() {
{ this.$('user-model').setInfo('c', 'myClient', 'hedera');
this.$('user-model').setInfo ('c', 'myClient', 'hedera'); this.$('addresses').setInfo('a', 'myAddress', 'hedera');
this.$('addresses').setInfo ('a', 'myAddress', 'hedera');
} }
,onAddAddressClick: function () ,onAddAddressClick: function() {
{ this.hash.set({
this.hash.set ({
form: 'account/address', form: 'account/address',
address: 0 address: 0
}); });
} }
,onReturnClick: function () ,onReturnClick: function() {
{
window.history.back(); window.history.back();
} }
,onRemoveAddressClick: function (button, form) ,onSetDefaultClick: function(event, addressId) {
{ if (event.defaultPrevented) return;
if (confirm (_('AreYouSureDeleteAddress'))) this.$('defaultAddress').value = addressId;
{ Htk.Toast.showMessage(_('DefaultAddressModified'));
form.set ('isActive', false); }
form.refresh ();
,onRemoveAddressClick: function(form) {
if (confirm(_('AreYouSureDeleteAddress'))) {
form.set('isActive', false);
form.refresh();
} }
} }
,onEditAddressClick: function (button, form) ,onEditAddressClick: function(id) {
{ this.hash.set({
this.hash.set ({
form: 'account/address', form: 'account/address',
address: form.get ('id') address: id
}); });
} }
}); });

View File

@ -5,3 +5,4 @@ SetAsDefault: Establir com per defecte
RemoveAddress: Esborrar direcció RemoveAddress: Esborrar direcció
EditAddress: Modificar direcció EditAddress: Modificar direcció
AreYouSureDeleteAddress: Estàs segur de que vols eliminar la direcció? AreYouSureDeleteAddress: Estàs segur de que vols eliminar la direcció?
DefaultAddressModified: Adreça per defecte modificada

View File

@ -5,3 +5,4 @@ SetAsDefault: Set as default
RemoveAddress: Remove address RemoveAddress: Remove address
EditAddress: Edit address EditAddress: Edit address
AreYouSureDeleteAddress: Are you sure you want to delete the address? AreYouSureDeleteAddress: Are you sure you want to delete the address?
DefaultAddressModified: Default address modified

View File

@ -5,3 +5,4 @@ SetAsDefault: Establecer como predeterminada
RemoveAddress: Borrar dirección RemoveAddress: Borrar dirección
EditAddress: Modificar dirección EditAddress: Modificar dirección
AreYouSureDeleteAddress: ¿Estás seguro de que quieres borrar la dirección? AreYouSureDeleteAddress: ¿Estás seguro de que quieres borrar la dirección?
DefaultAddressModified: Dirección por defecto modificada

View File

@ -5,3 +5,4 @@ SetAsDefault: Définir par défaut
RemoveAddress: Supprimer l'adresse RemoveAddress: Supprimer l'adresse
EditAddress: Changement d'adresse EditAddress: Changement d'adresse
AreYouSureDeleteAddress: Souhaitez-vous vraiment supprier l'adresse? AreYouSureDeleteAddress: Souhaitez-vous vraiment supprier l'adresse?
DefaultAddressModified: Adresse par défaut modifiée

View File

@ -5,3 +5,4 @@ SetAsDefault: Selecionar como pre-determinado
RemoveAddress: Eliminar Morada RemoveAddress: Eliminar Morada
EditAddress: Modificar Morada EditAddress: Modificar Morada
AreYouSureDeleteAddress: Tens certeza que queres eliminar esta morada? AreYouSureDeleteAddress: Tens certeza que queres eliminar esta morada?
DefaultAddressModified: Endereço padrão modificado

View File

@ -1,48 +1,4 @@
.address-list .address-list .htk-list .side {
{ padding-right: 16px;
padding: 1em;
}
.address-list .box
{
max-width: 30em;
}
.address-list .form
{
margin: 0 auto;
max-width: 25em;
padding: 2em;
}
.address
{
padding: 1em;
border-bottom: 1px solid #DDD;
}
.address p
{
margin: 0.2em 0;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.address p.important
{
font-size: 1.2em;
}
.address .actions
{
float: right;
}
.address .actions > .htk-button
{
margin: 0;
}
.address .actions > *
{
display: inline-block;
vertical-align: middle;
}
.address .actions > input
{
margin: .6em;
} }

View File

@ -25,47 +25,48 @@
<htk-bar-button <htk-bar-button
icon="add" icon="add"
tip="_AddAddress" tip="_AddAddress"
on-click="onAddAddressClick"/> on-click="this.onAddAddressClick()"/>
</div> </div>
<div id="form" class="address-list"> <div id="form" class="address-list">
<div class="box"> <div class="box vn-w-sm">
<htk-radio-group <htk-radio-group
id="default-address" id="default-address"
column="defaultAddressFk" column="defaultAddressFk"
form="user-form"/> form="user-form"/>
<htk-repeater model="addresses" form-id="iter"> <htk-repeater model="addresses" form-id="address" class="htk-list">
<custom> <custom>
<div class="address"> <div class="item clickable" on-click="this.onSetDefaultClick($event, address.id)">
<div class="actions"> <div class="side">
<htk-radio <htk-radio
form="iter"
column="id"
radio-group="default-address" radio-group="default-address"
tip="_SetAsDefault"/> val="{{address.id}}"
<htk-button tip="_SetAsDefault"
form="iter" name="test"/>
column="id"
tip="_RemoveAddress"
icon="delete"
on-click="onRemoveAddressClick"/>
<htk-button
form="iter"
column="id"
tip="_EditAddress"
icon="edit"
on-click="onEditAddressClick"/>
</div> </div>
<div class="content">
<p class="important"> <p class="important">
<htk-text form="iter" column="nickname"/> {{address.nickname}}
</p> </p>
<p> <p>
<htk-text form="iter" column="street"/> {{address.street}}
</p> </p>
<p> <p>
<htk-text form="iter" column="postalCode"/>, {{address.postalCode}}, {{address.city}}
<htk-text form="iter" column="city"/>
</p> </p>
</div> </div>
<div
class="actions"
on-click="$event.preventDefault()">
<htk-button
icon="delete"
tip="_RemoveAddress"
on-click="this.onRemoveAddressClick($.address)"/>
<htk-button
icon="edit"
tip="_EditAddress"
on-click="this.onEditAddressClick(address.id)"/>
</div>
</div>
</custom> </custom>
</htk-repeater> </htk-repeater>
</div> </div>

View File

@ -8,9 +8,9 @@ Hedera.Address = new Class({
new Sql.Function({schema: 'account', name: 'myUser_getId'})); new Sql.Function({schema: 'account', name: 'myUser_getId'}));
}, },
onStatusChange: function(form) { onStatusChange: function() {
if (form.ready && this.$('address').value == 0) if (this.$('iter').ready && this.$('address').value == 0)
form.insertRow(); this.$('iter').insertRow();
}, },
onOperationsDone: function() { onOperationsDone: function() {

View File

@ -1,16 +0,0 @@
.address
{
padding: 1em;
}
.address .box
{
max-width: 30em;
padding: 2em;
}
.address .form
{
margin: 0 auto;
max-width: 25em;
}

View File

@ -2,13 +2,13 @@
<vn-group> <vn-group>
<vn-param id="address"/> <vn-param id="address"/>
<vn-hash-param key="address" param="address"/> <vn-hash-param key="address" param="address"/>
<db-form id="iter" on-status-changed="onStatusChange"> <db-form id="iter" on-status-changed="this.onStatusChange()">
<db-model <db-model
id="model" id="model"
property="model" property="model"
updatable="true" updatable="true"
mode="ON_DEMAND" mode="ON_DEMAND"
on-operations-done="onOperationsDone"> on-operations-done="this.onOperationsDone()">
SELECT a.id, a.street, a.nickname, a.city, SELECT a.id, a.street, a.nickname, a.city,
a.postalCode, a.provinceFk, p.countryFk a.postalCode, a.provinceFk, p.countryFk
FROM myAddress a FROM myAddress a
@ -23,40 +23,46 @@
</db-form> </db-form>
</vn-group> </vn-group>
<div id="title"> <div id="title">
<h1><t>AddEditAddress</t></h1> <h1><t>Configuration</t></h1>
</div> </div>
<div id="actions"> <div id="actions">
<htk-bar-button
icon="ok"
tip="_Accept"
on-click="onAcceptClick"/>
<htk-bar-button <htk-bar-button
icon="close" icon="close"
tip="_Return" tip="_Return"
on-click="onReturnClick"/> on-click="this.onReturnClick()"/>
<htk-bar-button
icon="check"
tip="_Accept"
on-click="this.onAcceptClick()"/>
</div> </div>
<div id="form" class="address"> <div id="form" class="address">
<div class="box"> <div class="form box vn-w-sm vn-pa-lg">
<div class="form"> <h5 class="vn-mb-md">
<t>AddEditAddress</t>
</h5>
<div class="form-group"> <div class="form-group">
<label><t>Name</t></label> <htk-entry
<htk-entry column="nickname" form="iter"/> placeholder="_Name"
column="nickname" form="iter"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label><t>Address</t></label> <htk-entry
<htk-entry column="street" form="iter"/> placeholder="_Address"
column="street" form="iter"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label><t>City</t></label> <htk-entry
<htk-entry column="city" form="iter"/> placeholder="_City"
column="city" form="iter"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label><t>ZipCode</t></label> <htk-entry
<htk-entry column="postalCode" form="iter"/> placeholder="_ZipCode"
column="postalCode" form="iter"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label><t>Country</t></label> <htk-combo
<htk-combo> placeholder="_Country">
<db-param <db-param
id="country" id="country"
property="param" property="param"
@ -70,8 +76,10 @@
</htk-combo> </htk-combo>
</div> </div>
<div class="form-group"> <div class="form-group">
<label><t>Province</t></label> <htk-combo
<htk-combo column="provinceFk" form="iter"> placeholder="_Province"
column="provinceFk"
form="iter">
<db-model property="model"> <db-model property="model">
SELECT id, name FROM vn.province SELECT id, name FROM vn.province
WHERE countryFk = #country WHERE countryFk = #country
@ -85,6 +93,5 @@
</htk-combo> </htk-combo>
</div> </div>
</div> </div>
</div>
</div> </div>
</vn> </vn>

View File

@ -4,6 +4,7 @@ Hedera.Conf = new Class({
,activate: function() { ,activate: function() {
this.$('user-model').setInfo('c', 'myClient', 'hedera'); this.$('user-model').setInfo('c', 'myClient', 'hedera');
this.$('user-model').setInfo('u', 'myUser', 'account');
if (this.hash.get('verificationToken')) if (this.hash.get('verificationToken'))
this.onPassChangeClick(); this.onPassChangeClick();

View File

@ -1,4 +1,5 @@
Configuration: Configuració Configuration: Configuració
Personal information: Dades personals
Username: Nom d'usuari Username: Nom d'usuari
Password: Contrasenya Password: Contrasenya
Email: Correu electrònic Email: Correu electrònic
@ -9,7 +10,7 @@ Receive invoices by email: Rebre factures per correu electrònic
Old password: Contrasenya antiga Old password: Contrasenya antiga
New password: Nova contrasenya New password: Nova contrasenya
Repeat password: Repetir contrasenya Repeat password: Repetir contrasenya
Info: Info Requirements: Requisits
Modify: Modificar Modify: Modificar
Password requirements: Requisits de contrasenya Password requirements: Requisits de contrasenya
characters long: caràcters de longitud characters long: caràcters de longitud

View File

@ -1,4 +1,5 @@
Configuration: Configuration Configuration: Configuration
Personal information: Personal information
Username: Username Username: Username
Password: Password Password: Password
Email: Email Email: Email
@ -9,7 +10,7 @@ Receive invoices by email: Receive invoices by email
Old password: Old password Old password: Old password
New password: New password New password: New password
Repeat password: Repeat password Repeat password: Repeat password
Info: Info Requirements: Requirements
Modify: Modify Modify: Modify
Password requirements: Password requirements Password requirements: Password requirements
characters long: characters long characters long: characters long

View File

@ -1,4 +1,5 @@
Configuration: Configuración Configuration: Configuración
Personal information: Datos personales
Username: Nombre de usuario Username: Nombre de usuario
Password: Contraseña Password: Contraseña
Email: Correo electrónico Email: Correo electrónico
@ -9,7 +10,7 @@ Receive invoices by email: Recibir facturas por correo electrónico
Old password: Contaseña antigua Old password: Contaseña antigua
New password: Nueva contraseña New password: Nueva contraseña
Repeat password: Repetir contraseña Repeat password: Repetir contraseña
Info: Info Requirements: Requisitos
Modify: Modificar Modify: Modificar
Password requirements: Requisitos de constraseña Password requirements: Requisitos de constraseña
characters long: carácteres de longitud characters long: carácteres de longitud

View File

@ -1,4 +1,5 @@
Configuration: Configuration Configuration: Configuration
Personal information: Informations personnelles
Username: Utilisateur Username: Utilisateur
Password: Mot de passe Password: Mot de passe
Email: Courriel Email: Courriel
@ -9,7 +10,7 @@ Receive invoices by email: Recevoir des factures par e-mail
Old password: Ancien mot de passe Old password: Ancien mot de passe
New password: Nouveau mot de passe New password: Nouveau mot de passe
Repeat password: Répéter le mot de passe Repeat password: Répéter le mot de passe
Info: Info Requirements: Exigences
Modify: Modifier Modify: Modifier
Password requirements: Mot de passe exigences Password requirements: Mot de passe exigences
characters long: Longs caractères characters long: Longs caractères

View File

@ -1,4 +1,5 @@
Configuration: Configuração Configuration: Configuração
Personal information: Dados pessoais
Username: Nome de usuario Username: Nome de usuario
Password: Palavra-Passe Password: Palavra-Passe
Email: E-Mail Email: E-Mail
@ -9,7 +10,7 @@ Receive invoices by email: Receber facturas por e-mail
Old password: Palavra-Passe antiga Old password: Palavra-Passe antiga
New password: Nova Palavra-Passe New password: Nova Palavra-Passe
Repeat password: Repetir Palavra-Passe Repeat password: Repetir Palavra-Passe
Info: Info Requirements: Requisitos
Modify: Modificar Modify: Modificar
Password requirements: Requisitos de Palavra-Passe Password requirements: Requisitos de Palavra-Passe
characters long: caracteres characters long: caracteres

View File

@ -1,33 +1,4 @@
.conf .pass-info ul {
{
padding: 1em;
}
.conf .box
{
max-width: 30em;
padding: 2em;
}
.conf .form
{
margin: 0 auto;
max-width: 25em;
}
.conf .form-group input[type=password]
{
margin-bottom: 0.5em;
}
.pass-change
{
max-width: 15em;
}
.pass-info
{
width: 15em;
}
.pass-info ul
{
list-style-type: none; list-style-type: none;
} }

View File

@ -27,30 +27,42 @@
<htk-bar-button <htk-bar-button
icon="place" icon="place"
tip="_Addresses" tip="_Addresses"
on-click="onAddressesClick"/> on-click="this.onAddressesClick()"/>
<htk-bar-button <htk-bar-button
icon="preferences" icon="lock_reset"
tip="_Change password" tip="_Change password"
on-click="onPassChangeClick"/> on-click="this.onPassChangeClick()"/>
</div> </div>
<div id="form" class="conf"> <div id="form" class="conf">
<div class="box"> <div class="form box vn-w-sm vn-pa-lg">
<div class="form"> <h5 class="vn-mb-md">
<t>Personal information</t>
</h5>
<div class="form-group"> <div class="form-group">
<label for="user-name"><t>Username</t></label> <htk-entry
<htk-text form="user-form" column="name"/> placeholder="_Username"
disabled="true"
form="user-form"
column="name"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="email"><t>Email</t></label> <htk-entry
<htk-entry form="user-form" column="email"></htk-entry> placeholder="_Email"
form="user-form"
column="email">
</htk-entry>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="nickname"><t>Display name</t></label> <htk-entry
<htk-entry form="user-form" column="nickname"/> placeholder="_Display name"
form="user-form"
column="nickname"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="lang"><t>Language</t></label> <htk-combo
<htk-combo form="user-form" column="lang"> placeholder="_Language"
form="user-form"
column="lang">
<db-model property="model"> <db-model property="model">
<custom> <custom>
SELECT code, name FROM language WHERE isActive SELECT code, name FROM language WHERE isActive
@ -59,17 +71,21 @@
</htk-combo> </htk-combo>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="mail"><t>Receive invoices by email</t></label> <label>
<htk-check form="user-form" column="isToBeMailed"/> <htk-check form="user-form" column="isToBeMailed"/>
</div> <t>Receive invoices by email</t>
</label>
</div> </div>
</div> </div>
</div> </div>
<htk-popup <htk-popup
id="change-password" id="change-password"
modal="true"> modal="true">
<div property="child-node" class="htk-dialog pass-change"> <div property="child-node" class="htk-dialog vn-w-xs vn-pa-lg">
<div> <div class="form">
<h5 class="vn-mb-md">
<t>Change password</t>
</h5>
<input <input
id="old-password" id="old-password"
type="password" type="password"
@ -84,11 +100,11 @@
placeholder="_Repeat password"/> placeholder="_Repeat password"/>
</div> </div>
<div class="button-bar"> <div class="button-bar">
<button class="thin" on-click="onPassModifyClick"> <button class="thin" on-click="this.onPassModifyClick()">
<t>Modify</t> <t>Modify</t>
</button> </button>
<button class="thin" on-click="onPassInfoClick"> <button class="thin" on-click="this.onPassInfoClick()">
<t>Info</t> <t>Requirements</t>
</button> </button>
<div class="clear"/> <div class="clear"/>
</div> </div>
@ -97,10 +113,10 @@
<htk-popup <htk-popup
id="password-info" id="password-info"
modal="true"> modal="true">
<div property="child-node" class="htk-dialog pass-info"> <div property="child-node" class="htk-dialog pass-info vn-w-xs vn-pa-lg">
<h3> <h5 class="vn-mb-md">
<t>Password requirements</t> <t>Password requirements</t>
</h3> </h5>
<ul> <ul>
<li> <li>
<htk-text form="password-form" column="length"/> <htk-text form="password-form" column="length"/>

View File

@ -1,6 +1,5 @@
Hedera.AccessLog = new Class Hedera.AccessLog = new Class({
({
Extends: Hedera.Form Extends: Hedera.Form
}); });

View File

@ -1,36 +1,12 @@
.access-log
{ .access-log .form > p {
padding: 1em;
}
.access-log .box
{
max-width: 25em;
margin: 0 auto;
}
.access-log .form
{
padding: 2em;
}
.access-log .form > p
{
font-size: 1.2em; font-size: 1.2em;
margin: .1em 0; margin: .1em 0;
} }
/* List */ /* List */
.access-log .list .access-log .htk-list {
{ margin-top: 16px;
margin-top: 1em;
}
.access-log .item
{
display: block;
padding: 1em;
border-bottom: 1px solid #DDD;
}
.access-log .item > p
{
margin: .1em 0;
} }

View File

@ -2,11 +2,14 @@
<vn-group> <vn-group>
<vn-param id="user"/> <vn-param id="user"/>
<vn-hash-param key="user" param="user"/> <vn-hash-param key="user" param="user"/>
<db-form id="user-form"> <db-form id="userForm">
<db-model property="model"> <db-model property="model">
<custom> <custom>
SELECT Id_Cliente, Cliente, Telefono, movil SELECT u.id, u.name user, u.nickname, u.email, c.phone, r.name role
FROM vn2008.Clientes WHERE Id_Cliente = #user FROM account.user u
JOIN account.role r ON r.id = u.role
LEFT JOIN vn.client c ON c.id = u.id
WHERE u.id = #user
</custom> </custom>
<sql-batch property="batch"> <sql-batch property="batch">
<custom> <custom>
@ -20,25 +23,16 @@
<h1><t>AccessLog</t></h1> <h1><t>AccessLog</t></h1>
</div> </div>
<div id="form" class="access-log"> <div id="form" class="access-log">
<div class="box"> <div class="box vn-w-xs vn-pa-lg">
<div class="form"> <div class="form">
<p> <h4><htk-text form="user-form" column="nickname"/></h4>
<htk-text form="user-form" column="Id_Cliente"/> <p>#<htk-text form="user-form" column="id"/> - <htk-text form="user-form" column="user"/></p>
</p> <p><htk-text form="user-form" column="role"/></p>
<p> <p><htk-text form="user-form" column="email"/></p>
<htk-text form="user-form" column="Cliente"/> <p><htk-text form="user-form" column="phone"/></p>
</p>
<p>
<htk-text form="user-form" column="Telefono"/>
</p>
<p>
<htk-text form="user-form" column="movil"/>
</p>
</div> </div>
</div> </div>
<div class="list box"> <htk-repeater form-id="iter" class="box vn-w-xs htk-list vn-mt-md">
<div>
<htk-repeater form-id="iter">
<db-model property="model"> <db-model property="model">
<custom> <custom>
SELECT u.stamp, a.platform, a.browser, a.version, a.javascript, a.cookies SELECT u.stamp, a.platform, a.browser, a.version, a.javascript, a.cookies
@ -57,18 +51,16 @@
</db-model> </db-model>
<custom> <custom>
<div class="item"> <div class="item">
<div class="content">
<p> <p>
<htk-text form="iter" column="stamp" format="_%a, %e %b %Y at %T"/> {{Vn.Value.format(iter.stamp, _('%a, %e %b %Y at %T'))}}
</p> </p>
<p> <p>
<htk-text form="iter" column="platform"/> - {{iter.platform}} - {{iter.browser}} {{iter.version}}
<htk-text form="iter" column="browser"/>
<htk-text form="iter" column="version"/>
</p> </p>
</div> </div>
</div>
</custom> </custom>
</htk-repeater> </htk-repeater>
</div>
</div>
</div> </div>
</vn> </vn>

View File

@ -4,33 +4,23 @@ Hedera.Connections = new Class({
,_timeoutId: null ,_timeoutId: null
,onModelStatusChange: function(model) { ,onModelStatusChange: function() {
if (!model.ready) if (!this.$('sessions').ready)
return; return;
if (this._timeoutId) if (this._timeoutId)
clearTimeout(this._timeoutId); clearTimeout(this._timeoutId);
this._timeoutId = setTimeout(this.onRefreshClick.bind(this), 60000); this._timeoutId = setTimeout(
() => this.$('sessions').refresh(), 60000);
} }
,deactivate: function() { ,deactivate: function() {
clearTimeout(this._timeoutId); clearTimeout(this._timeoutId);
} }
,onRefreshClick: function() { ,onChangeUserClick: function(userName) {
this.$('sessions').refresh(); this.gui.supplantUser(userName,
}
,onAccessLogClick: function(button, form) {
this.hash.set({
form: 'admin/access-log'
,user: form.get('userId')
});
}
,onChangeUserClick: function(button, form) {
this.gui.supplantUser(form.get('user'),
this._onUserSupplant.bind(this)); this._onUserSupplant.bind(this));
} }

View File

@ -1,44 +1,6 @@
.connections
{ .action-bar .connections-sum {
padding: 1em;
}
.connections .box
{
max-width: 25em;
margin: 0 auto;
}
.action-bar .connections-sum
{
padding: .4em; padding: .4em;
margin-top: .9em;
margin-right: .5em;
background-color: #1e88e5; background-color: #1e88e5;
border-radius: 0.1em; border-radius: .1em;
box-shadow: 0 0 0.4em #666;
} }
/* List */
.connections .item
{
display: block;
padding: 1em;
border-bottom: 1px solid #DDD;
}
.connections .item > button
{
float: right;
margin: 0;
}
.connections .item > p
{
margin: .1em 0;
}
.connections .item > p.important
{
font-size: 1.2em;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}

View File

@ -6,7 +6,7 @@
<htk-bar-button <htk-bar-button
icon="refresh" icon="refresh"
tip="_Refresh" tip="_Refresh"
on-click="onRefreshClick"/> on-click="$.sessions.refresh()"/>
<div class="connections-sum"> <div class="connections-sum">
<htk-text> <htk-text>
<db-calc-sum <db-calc-sum
@ -18,9 +18,11 @@
</div> </div>
</div> </div>
<div id="form" class="connections"> <div id="form" class="connections">
<div class="box"> <htk-repeater form-id="iter" class="box htk-list vn-w-xs">
<htk-repeater form-id="iter"> <db-model
<db-model property="model" id="sessions" on-status-changed="onModelStatusChange"> property="model"
id="sessions"
on-status-changed="this.onModelStatusChange()">
<custom> <custom>
SELECT vu.userFk userId, vu.stamp, u.nickname, s.lastUpdate, SELECT vu.userFk userId, vu.stamp, u.nickname, s.lastUpdate,
a.platform, a.browser, a.version, u.name user a.platform, a.browser, a.version, u.name user
@ -34,34 +36,30 @@
</custom> </custom>
</db-model> </db-model>
<custom> <custom>
<div class="item"> <a class="item"
<htk-button href="{{`#!form=admin/access-log&amp;user=${iter.userId}`}}"
form="iter" title="_Access log">
column="id" <div class="content">
tip="_Supplant user"
icon="incognito"
on-click="onChangeUserClick"/>
<htk-button
form="iter"
column="id"
tip="_Access log"
icon="gnome"
on-click="onAccessLogClick"/>
<p class="important"> <p class="important">
<htk-text form="iter" column="nickname"/> {{iter.nickname}}
</p> </p>
<p> <p>
<htk-text form="iter" column="stamp" format="%a, %T"/> - {{Vn.Value.format(iter.stamp, '%a, %T')}} -
<htk-text form="iter" column="lastUpdate" format="%T"/> {{Vn.Value.format(iter.lastUpdate, '%T')}}
</p> </p>
<p> <p>
<htk-text form="iter" column="platform"/> - {{iter.platform}} - {{iter.browser}} {{iter.version}}
<htk-text form="iter" column="browser"/>
<htk-text form="iter" column="version"/>
</p> </p>
</div> </div>
<div class="actions"
on-click="$event.preventDefault()">
<htk-button
tip="_Supplant user"
icon="supervisor_account"
on-click="this.onChangeUserClick(iter.user)"/>
</div>
</a>
</custom> </custom>
</htk-repeater> </htk-repeater>
</div>
</div> </div>
</vn> </vn>

View File

@ -1,41 +1,6 @@
.items
{
padding: 1em;
}
.items .box
{
max-width: 25em;
margin: 0 auto;
}
/* Row */ .items .item .photo {
border-radius: 50%;
.items .row height: 80px;
{ width: 80px;
padding: 1em;
border-bottom: 1px solid #DDD;
} }
.items .row > .photo
{
margin-right: 1em;
float: left;
border-radius: 3%;
height: 5.5em;
width: 5.5em;
}
.items .row > p
{
margin: .1em 0;
margin-left: 5em;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* Topbar */
.action-bar .htk-search-entry
{
margin: .8em .6em;
}

View File

@ -10,8 +10,10 @@
<htk-search-entry param="filter"/> <htk-search-entry param="filter"/>
</div> </div>
<div id="form" class="items"> <div id="form" class="items">
<div class="rows box"> <htk-repeater
<htk-repeater form-id="iter" empty-message="_Enter a search term"> class="htk-list rows box vn-w-xs"
form-id="iter"
empty-message="_Enter a search term">
<db-model property="model" id="items"> <db-model property="model" id="items">
SELECT i.id, i.longName, i.size, i.category, SELECT i.id, i.longName, i.size, i.category,
i.value5, i.value6, i.value7, i.value5, i.value6, i.value7,
@ -30,7 +32,8 @@
</sql-batch> </sql-batch>
</db-model> </db-model>
<custom> <custom>
<div class="row"> <div class="item">
<div class="side vn-mr-md">
<htk-image <htk-image
form="iter" form="iter"
column="image" column="image"
@ -41,24 +44,23 @@
full-dir="1600x900" full-dir="1600x900"
editable="true" editable="true"
conn="conn"/> conn="conn"/>
<p class="concept"> </div>
<htk-text form="iter" column="longName"/> <div class="content">
<p class="important">
{{iter.longName}}
</p> </p>
<p class="tags"> <p class="tags">
<htk-text form="iter" column="value5"/> {{iter.value5}} {{iter.value6}} {{iter.value7}}
<htk-text form="iter" column="value6"/>
<htk-text form="iter" column="value7"/>
</p> </p>
<p> <p>
#<htk-text form="iter" column="id"/> {{iter.id}}
</p> </p>
<p> <p>
<htk-text form="iter" column="image"/> {{iter.image}}
</p> </p>
<div class="clear"/> </div>
</div> </div>
</custom> </custom>
</htk-repeater> </htk-repeater>
</div>
</div> </div>
</vn> </vn>

View File

@ -1,11 +1,5 @@
Hedera.Links = new Class Hedera.Links = new Class({
({
Extends: Hedera.Form Extends: Hedera.Form
,repeaterFunc: function (res, form)
{
res.$('link').href = form.get ('link');
}
}); });

View File

@ -1,38 +1,50 @@
.cpanel .cpanel .items > div {
{ max-width: 900px;
padding: 1em; display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 16px;
margin: 0 auto;
} }
.cpanel .box .cpanel .item {
{ display: flex;
max-width: 30em; flex-direction: column;
align-items: center;
margin: 0;
width: 140px;
padding: 15px;
text-align: center;
transition: background-color 250ms ease-out;
} }
.cpanel .item:hover {
/* Items */
.cpanel .item
{
display: block;
padding: 1em;
border-bottom: 1px solid #DDD;
}
.cpanel .item:hover
{
background-color: rgba(1, 1, 1, 0.05); background-color: rgba(1, 1, 1, 0.05);
} }
.cpanel .item > .htk-image .cpanel .item > .htk-image {
{ display: flex;
justify-content: center;
align-items: center;
margin: 0; margin: 0;
margin-right: 1em;
float: left; float: left;
max-height: 2.8em; height: 80px;
max-width: 2.8em;
} }
.cpanel .item > p .cpanel .item > .htk-image > img {
{ max-height: 60px;
max-width: 60px;
padding: 0;
}
.cpanel .item > h6 {
flex: none;
margin: .1em 0; margin: .1em 0;
font-size: .9rem;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
} }
.cpanel .item > p.important .cpanel .item > .text-secondary {
{ flex: none;
font-size: 1.2em; margin: 0;
font-size: .8rem;
height: 40px;
overflow: hidden;
} }

View File

@ -3,8 +3,7 @@
<h1><t>ControlPanel</t></h1> <h1><t>ControlPanel</t></h1>
</div> </div>
<div id="form" class="cpanel"> <div id="form" class="cpanel">
<div class="box"> <htk-repeater form-id="iter" class="items">
<htk-repeater form-id="iter" renderer="repeaterFunc">
<db-model property="model"> <db-model property="model">
<custom> <custom>
SELECT image, name, description, link FROM link SELECT image, name, description, link FROM link
@ -12,21 +11,21 @@
</custom> </custom>
</db-model> </db-model>
<custom> <custom>
<a id="link" class="item" target="_blank"> <a class="item box"
href="{{iter.link}}"
target="_blank">
<htk-image <htk-image
form="iter" value="{{iter.image}}"
column="image"
directory="link" directory="link"
subdir="full"/> subdir="full"/>
<p class="important"> <h6>
<htk-text form="iter" column="name"/> {{iter.name}}
</p> </h6>
<p> <p class="text-secondary">
<htk-text form="iter" column="description"/> {{iter.description}}
</p> </p>
</a> </a>
</custom> </custom>
</htk-repeater> </htk-repeater>
</div>
</div> </div>
</vn> </vn>

View File

@ -6,8 +6,7 @@ var Status = {
,UPLOADED : 3 ,UPLOADED : 3
}; };
Hedera.Photos = new Class Hedera.Photos = new Class({
({
Extends: Hedera.Form Extends: Hedera.Form
,filesData: [] ,filesData: []
,uploadCount: 0 ,uploadCount: 0
@ -54,21 +53,22 @@ Hedera.Photos = new Class
statusNode.className = 'status'; statusNode.className = 'status';
li.appendChild(statusNode); li.appendChild(statusNode);
var button = new Htk.Button({
tip: 'Remove',
icon: 'delete'
});
button.on('click', this.onFileRemove, this);
li.appendChild(button.node);
var fileData = { var fileData = {
li: li, li: li,
file: file, file: file,
name: name, name: name,
statusNode: statusNode statusNode: statusNode
}; };
var button = new Htk.Button({
tip: 'Remove',
icon: 'delete'
});
button.node.addEventListener('click',
() => this.onFileRemove(fileData));
li.appendChild(button.node);
this.filesData.push(fileData); this.filesData.push(fileData);
button.value = fileData;
this.$('file-list').appendChild(li); this.$('file-list').appendChild(li);
this.setImageStatus(fileData, Status.NONE, 'add', _('Pending upload')); this.setImageStatus(fileData, Status.NONE, 'add', _('Pending upload'));
@ -151,8 +151,7 @@ Hedera.Photos = new Class
statusNode.title = title ? title : ''; statusNode.title = title ? title : '';
} }
,onFileRemove: function(button) { ,onFileRemove: function(fileData) {
var fileData = button.value;
this.$('file-list').removeChild(fileData.li); this.$('file-list').removeChild(fileData.li);
for (var i = 0; i < this.filesData.length; i++) for (var i = 0; i < this.filesData.length; i++)

View File

@ -1,12 +1,4 @@
.photos {
padding: 1em;
}
.photos .box {
max-width: 25em;
padding: 2em;
}
/* Dropzone */ /* Dropzone */
.photos .dropzone { .photos .dropzone {

View File

@ -3,7 +3,7 @@
<h1><t>Images</t></h1> <h1><t>Images</t></h1>
</div> </div>
<div id="form" class="photos"> <div id="form" class="photos">
<div class="box"> <div class="box form vn-w-sm vn-pa-lg">
<div class="form-group"> <div class="form-group">
<label><t>Collection</t></label> <label><t>Collection</t></label>
<htk-combo id="schema"> <htk-combo id="schema">

View File

@ -1,102 +1,91 @@
Hedera.Queries = new Class Hedera.Queries = new Class({
({
Extends: Hedera.Form Extends: Hedera.Form
,activate: function () ,activate: function() {
{
this.$('result-index').value = 0; this.$('result-index').value = 0;
} }
,clean: function () ,clean: function() {
{ if (this._grid) {
if (this._grid) this.$('grid-holder').removeChild(this._grid.node);
{ this._grid.unref();
this.$('grid-holder').removeChild (this._grid.node);
this._grid.unref ();
this._grid = null; this._grid = null;
} }
} }
,_onExecuteClick: function () ,onExecuteClick: function() {
{ this.clean();
this.clean ();
var model = new Db.Model ({ var model = new Db.Model({
conn: this.conn, conn: this.conn,
query: this.$('sql').value, query: this.$('sql').value,
resultIndex: this.$('result-index').value, resultIndex: this.$('result-index').value,
updatable: this.$('updatable').value updatable: this.$('updatable').value
}); });
model.on ('status-changed', this._onModelChange, this); model.on('status-changed', this.onModelChange, this);
} }
,_onCleanClick: function () ,onCleanClick: function() {
{ this.clean();
this.clean ();
} }
,_onModelChange: function (model, status) ,onModelChange: function(model, status) {
{ if (status !== Db.Model.Status.LOADING) {
if (status !== Db.Model.Status.LOADING) model.disconnect('status-changed', this.onModelChange, this);
{ model.unref();
model.disconnect ('status-changed', this._onModelChange, this);
model.unref ();
} }
if (status !== Db.Model.Status.READY) if (status !== Db.Model.Status.READY)
return; return;
Htk.Toast.showMessage (_('Query executed!')); Htk.Toast.showMessage(_('Query executed!'));
var gridHolder = this.$('grid-holder'); var gridHolder = this.$('grid-holder');
if (gridHolder.firstChild) if (gridHolder.firstChild)
gridHolder.removeChilds (gridHolder.firstChild); gridHolder.removeChilds(gridHolder.firstChild);
var grid = new Htk.Grid (); var grid = new Htk.Grid();
var columns = model.columns; var columns = model.columns;
for (var i = 0; i < columns.length; i++) for (var i = 0; i < columns.length; i++) {
{
var c = columns[i]; var c = columns[i];
switch (c.type) switch (c.type) {
{
case Db.Conn.Type.BOOLEAN: case Db.Conn.Type.BOOLEAN:
var column = new Htk.ColumnCheck (); var column = new Htk.ColumnCheck();
break; break;
case Db.Conn.Type.INTEGER: case Db.Conn.Type.INTEGER:
var column = new Htk.ColumnSpin (); var column = new Htk.ColumnSpin();
break; break;
case Db.Conn.Type.DOUBLE: case Db.Conn.Type.DOUBLE:
var column = new Htk.ColumnSpin ({digits: 2}); var column = new Htk.ColumnSpin({digits: 2});
break; break;
case Db.Conn.Type.DATE: case Db.Conn.Type.DATE:
var column = new Htk.ColumnDate ({format: '%a, %e %b %Y'}); var column = new Htk.ColumnDate({format: '%a, %e %b %Y'});
break; break;
case Db.Conn.Type.DATE_TIME: case Db.Conn.Type.DATE_TIME:
var column = new Htk.ColumnDate ({format: '%a, %e %b %Y, %T'}); var column = new Htk.ColumnDate({format: '%a, %e %b %Y, %T'});
break; break;
case Db.Conn.Type.STRING: case Db.Conn.Type.STRING:
default: default:
var column = new Htk.ColumnText (); var column = new Htk.ColumnText();
} }
column.setProperties ({ column.setProperties({
title: c.name, title: c.name,
editable: this.$('updatable').value, editable: this.$('updatable').value,
columnIndex: i columnIndex: i
}); });
grid.appendColumn (column); grid.appendColumn(column);
} }
grid.model = model; grid.model = model;
gridHolder.appendChild (grid.node); gridHolder.appendChild(grid.node);
this._grid = grid; this._grid = grid;
} }
}); });

View File

@ -1,25 +1,20 @@
.queries .queries {
{
padding: 1em; padding: 1em;
} }
.queries .box .queries .box {
{ max-width: 600px;
max-width: 40em;
margin: 0 auto; margin: 0 auto;
} }
.queries .form .queries .form {
{
box-sizing: border-box; box-sizing: border-box;
padding: 2em; padding: 2em;
} }
.queries textarea .queries textarea {
{
display: block; display: block;
width: 100%; width: 100%;
height: 8em; height: 8em;
} }
.queries .result .queries .result {
{
margin-top: 1em; margin-top: 1em;
overflow: auto; overflow: auto;
} }

View File

@ -6,11 +6,11 @@
<htk-bar-button <htk-bar-button
icon="ok" icon="ok"
tip="_Execute" tip="_Execute"
on-click="_onExecuteClick"/> on-click="this.onExecuteClick()"/>
<htk-bar-button <htk-bar-button
icon="delete" icon="delete"
tip="_Clean" tip="_Clean"
on-click="_onCleanClick"/> on-click="this.onCleanClick()"/>
</div> </div>
<div id="form" class="queries"> <div id="form" class="queries">
<div class="box form"> <div class="box form">

View File

@ -1,45 +1,11 @@
.users
{ .users-box.item > .actions {
padding: 1em; display: flex;
} }
.users .box .users-box .disabled {
{
max-width: 30em;
margin: 0 auto;
}
.users-box
{
padding: 1em;
border-bottom: 1px solid #DDD;
}
.users-box > button
{
float: right;
margin: 0;
}
.users-box > p
{
margin: .2em 0;
}
.users-box > p.important
{
font-size: 1.2em;
}
.users-box > .disabled
{
float: right;
color: white; color: white;
background-color: #F66; background-color: #F66;
border-radius: .2em; border-radius: .2em;
padding: .2em; padding: .3em;
margin: .3em;
font-size: .8em; font-size: .8em;
} }
/* Topbar */
.action-bar .htk-search-entry
{
margin: .8em .6em;
}

View File

@ -11,8 +11,7 @@
param="user-name"/> param="user-name"/>
</div> </div>
<div id="form" class="users"> <div id="form" class="users">
<div class="box"> <htk-repeater form-id="iter" renderer="rendererFunc" class="htk-list box vn-w-xs">
<htk-repeater form-id="iter" renderer="rendererFunc">
<db-model property="model"> <db-model property="model">
<custom> <custom>
SELECT u.id, u.name, u.nickname, u.active SELECT u.id, u.name, u.nickname, u.active
@ -29,34 +28,30 @@
</sql-batch> </sql-batch>
</db-model> </db-model>
<custom> <custom>
<div class="users-box"> <a class="users-box item"
<htk-button href="{{`#!form=admin/access-log&amp;user=${iter.id}`}}"
form="iter" title="_Access log">
column="id" <div class="content">
tip="_Access log" <p class="important">
icon="gnome" {{iter.nickname}}
on-click="onAccessLogClick"/> </p>
<htk-button <p>
id="impersonate" #{{iter.id}} - {{iter.name}}
form="iter" </p>
column="id" </div>
tip="_Impersonate user" <div class="actions"
icon="incognito" on-click="$event.preventDefault()">
on-click="onChangeUserClick"/>
<span id="disabled" class="disabled"> <span id="disabled" class="disabled">
<t>Disabled</t> <t>Disabled</t>
</span> </span>
<p class="important"> <htk-button
<htk-text form="iter" column="nickname"/> id="impersonate"
</p> icon="supervisor_account"
<p> tip="_Impersonate user"
#<htk-text form="iter" column="id"/> - on-click="this.onChangeUserClick(iter.name)"/>
<htk-text form="iter" column="name"/>
</p>
<div class="clear"/>
</div> </div>
</a>
</custom> </custom>
</htk-repeater> </htk-repeater>
</div>
</div> </div>
</vn> </vn>

View File

@ -2,13 +2,6 @@
Hedera.Users = new Class({ Hedera.Users = new Class({
Extends: Hedera.Form Extends: Hedera.Form
,onAccessLogClick: function(button, form) {
this.hash.set({
'form': 'admin/access-log'
,'user': form.get('id')
});
}
,rendererFunc: function(scope, form) { ,rendererFunc: function(scope, form) {
var isEnabled = form.get('active') var isEnabled = form.get('active')
scope.$('disabled').style.display = isEnabled ? scope.$('disabled').style.display = isEnabled ?
@ -17,8 +10,8 @@ Hedera.Users = new Class({
'block' : 'none'; 'block' : 'none';
} }
,onChangeUserClick: function(button, form) { ,onChangeUserClick: function(userName) {
this.gui.supplantUser(form.get('name'), this.gui.supplantUser(userName,
this.onUserSupplant.bind(this)); this.onUserSupplant.bind(this));
} }

View File

@ -1,46 +1,12 @@
.visits
{ .visits .box {
padding: 1em; margin-bottom: 16px;
} }
.visits .box .visits .box:last-child {
{ margin-bottom: 0;
max-width: 25em;
margin: 0 auto;
} }
.visits .form .visits .summary p {
{
padding: 1.5em;
max-width: 20em;
}
.visits .summary
{
margin-top: 1em;
}
.visits .summary p
{
padding: 1.5em;
font-size: 1.4em; font-size: 1.4em;
margin: 0;
text-align: right; text-align: right;
} }
/* List */
.visits .list
{
margin-top: 1em;
}
.visits .item
{
display: block;
padding: 1em;
border-bottom: 1px solid #DDD;
}
.visits .item > p
{
margin: .1em 0;
}
.visits .item > p.important
{
font-size: 1.2em;
}

View File

@ -6,15 +6,15 @@
<htk-bar-button <htk-bar-button
icon="refresh" icon="refresh"
tip="_Refresh" tip="_Refresh"
on-click="onRefreshClick"/> on-click="this.onRefreshClick()"/>
<htk-bar-button <htk-bar-button
icon="user-info" icon="visibility"
tip="_Connections" tip="_Connections"
on-click="onSessionsClick"/> on-click="this.onSessionsClick()"/>
</div> </div>
<div id="form" class="visits"> <div id="form" class="visits">
<div class="box"> <div class="vn-w-xs">
<div class="form"> <div class="form vn-pa-lg box">
<div class="form-group"> <div class="form-group">
<label><t>From</t></label> <label><t>From</t></label>
<htk-date-chooser> <htk-date-chooser>
@ -28,8 +28,7 @@
</htk-date-chooser> </htk-date-chooser>
</div> </div>
</div> </div>
</div> <div class="summary vn-pa-lg box">
<div class="summary box">
<p> <p>
<htk-text> <htk-text>
<db-calc-sum <db-calc-sum
@ -47,8 +46,10 @@
<t>news</t> <t>news</t>
</p> </p>
</div> </div>
<div class="list box"> <htk-repeater
<htk-repeater form-id="iter" empty-message="_Select date interval"> class="box htk-list"
form-id="iter"
empty-message="_Select date interval">
<db-model property="model" id="visits"> <db-model property="model" id="visits">
<custom> <custom>
SELECT browser, SELECT browser,
@ -73,21 +74,19 @@
</db-model> </db-model>
<custom> <custom>
<div class="item"> <div class="item">
<div class="content">
<p class="important"> <p class="important">
<htk-text form="iter" column="browser"/> {{iter.browser}} {{iter.minVersion}} - {{iter.maxVersion}}
<htk-text form="iter" column="minVersion"/> -
<htk-text form="iter" column="maxVersion"/>
</p> </p>
<p> <p>
<htk-text form="iter" column="visits"/> {{iter.visits}} <t>visits</t>,
<t>visits</t>, {{iter.newVisits}} <t>news</t>
<htk-text form="iter" column="newVisits"/>
<t>news</t>
</p> </p>
<p> <p>
<htk-text form="iter" column="lastVisit" format="_%a, %e %b %Y at %T"/> {{Vn.Value.format(iter.lastVisit, _('%a, %e %b %Y at %T'))}}
</p> </p>
</div> </div>
</div>
</custom> </custom>
</htk-repeater> </htk-repeater>
</div> </div>

View File

@ -1,22 +1,18 @@
Hedera.Visits = new Class Hedera.Visits = new Class({
({
Extends: Hedera.Form Extends: Hedera.Form
,activate: function () ,activate: function() {
{ this.$('from').value = new Date();
this.$('from').value = new Date (); this.$('to').value = new Date();
this.$('to').value = new Date ();
} }
,onRefreshClick: function () ,onRefreshClick: function() {
{ this.$('visits').refresh();
this.$('visits').refresh ();
} }
,onSessionsClick: function () ,onSessionsClick: function() {
{ this.hash.set({form: 'admin/connections'});
this.hash.set ({'form': 'admin/connections'});
} }
}); });

View File

@ -1,13 +1,11 @@
Hedera.Packages = new Class Hedera.Packages = new Class({
({
Extends: Hedera.Form Extends: Hedera.Form
,onShowClick: function (column, agencyId) ,onShowClick: function(column, agencyId) {
{ this.hash.set({
this.hash.set ({ form: 'agencies/provinces',
'form': 'agencies/provinces', agency: agencyId
'agency': agencyId
}); });
} }
}); });

View File

@ -1,9 +0,0 @@
.packages
{
padding: 1em;
}
.packages .box
{
max-width: 40em;
margin: 0 auto;
}

View File

@ -3,7 +3,7 @@
<h1><t>ListByAgency</t></h1> <h1><t>ListByAgency</t></h1>
</div> </div>
<div id="form" class="packages"> <div id="form" class="packages">
<div class="box"> <div class="box vn-w-sm">
<htk-grid> <htk-grid>
<db-model property="model"> <db-model property="model">
<custom> <custom>
@ -12,7 +12,7 @@
</db-model> </db-model>
<htk-column-button <htk-column-button
column="agency_id" column="agency_id"
icon="show" icon="search"
tip="_ShowByProvince" tip="_ShowByProvince"
on-clicked="onShowClick"/> on-clicked="onShowClick"/>
<htk-column-text title="_Agency" column="Agencia"/> <htk-column-text title="_Agency" column="Agencia"/>

View File

@ -1,9 +0,0 @@
.provinces
{
padding: 1em;
}
.provinces .box
{
max-width: 40em;
margin: 0 auto;
}

View File

@ -6,12 +6,12 @@
<div id="title"> <div id="title">
<h1><t>ByProvince</t></h1> <h1><t>ByProvince</t></h1>
</div> </div>
<div id="form" class="provinces"> <div id="form" class="provinces vn-w-sm">
<div class="box"> <div class="box">
<htk-grid> <htk-grid>
<db-model property="model"> <db-model property="model">
<custom> <custom>
CALL vn2008.desglose_volume (#agency) CALL vn2008.desglose_volume(#agency)
</custom> </custom>
<sql-batch property="batch"> <sql-batch property="batch">
<custom> <custom>

View File

@ -1,15 +1,5 @@
.about @media screen and (min-width: 1000px) /* and (max-width: 1399px) */ {
{
padding: 1em;
}
.about .cols
{
max-width: 85em;
margin: 0 auto;
}
@media screen and (min-width: 1000px) /* and (max-width: 1399px) */
{
.about .cols .about .cols
{ {
column-count: 2; column-count: 2;
@ -17,8 +7,7 @@
-webkit-column-count: 2; -webkit-column-count: 2;
} }
}/* }/*
@media screen and (min-width: 1400px) @media screen and (min-width: 1400px) {
{
.about .cols .about .cols
{ {
column-count: 3; column-count: 3;
@ -26,8 +15,7 @@
-webkit-column-count: 3; -webkit-column-count: 3;
} }
} }
@media screen and (min-width: 2000px) @media screen and (min-width: 2000px) {
{
.about .cols .about .cols
{ {
column-count: 4; column-count: 4;
@ -35,39 +23,33 @@
-webkit-column-count: 4; -webkit-column-count: 4;
} }
}*/ }*/
.about .box .about .box {
{
margin-bottom: 1em; margin-bottom: 1em;
padding: 2em; padding: 2em;
} }
.about h1 .about h1 {
{
padding: 0; padding: 0;
margin: 0; margin: 0;
font-weight: normal; font-weight: normal;
font-size: 1.6em; font-size: 1.6em;
} }
.about h2 .about h2 {
{
text-align: center; text-align: center;
font-size: 1.2em; font-size: 1.2em;
font-weight: normal; font-weight: normal;
margin: 1em; margin: 1em;
} }
.about h3 .about h3 {
{
text-align: center; text-align: center;
font-size: 1.2em; font-size: 1.2em;
font-weight: normal; font-weight: normal;
padding: 1em; padding: 1em;
color: #00796B; color: #00796B;
} }
.about p .about p {
{
margin: 1em 0; margin: 1em 0;
} }
.about p.summary .about p.summary {
{
max-width: 26em; max-width: 26em;
text-align: center; text-align: center;
background-color: #FF8; background-color: #FF8;
@ -79,8 +61,7 @@
/* Images */ /* Images */
.about img .about img {
{
max-width: 90%; max-width: 90%;
text-align: center; text-align: center;
padding: 1em; padding: 1em;
@ -90,16 +71,13 @@
.about img[alt="producers"], .about img[alt="producers"],
.about img[alt="4_control"], .about img[alt="4_control"],
.about img[alt="dealer"], .about img[alt="dealer"],
.about img[alt="goods_transport"] .about img[alt="goods_transport"] {
{
float: right; float: right;
} }
.about img[alt="2_control"] .about img[alt="2_control"] {
{
float: left; float: left;
} }
.about img[alt="glass"] .about img[alt="glass"] {
{
display: inline; display: inline;
padding: 0; padding: 0;
padding-left: 0.9em; padding-left: 0.9em;

View File

@ -3,7 +3,7 @@
<h1><t>About</t></h1> <h1><t>About</t></h1>
</div> </div>
<div id="form" class="about"> <div id="form" class="about">
<div class="cols"> <div class="cols vn-w-lg">
<div class="box"> <div class="box">
<h1> <h1>
<t>QualityAndVariety</t> <t>QualityAndVariety</t>

View File

@ -1,55 +1,38 @@
.contact .contact .form {
{
padding: 1em;
}
.contact .box
{
max-width: 30em;
padding: 2em;
}
.contact .form
{
position: relative; position: relative;
text-align: left; text-align: left;
max-width: 25em; max-width: 25em;
margin: 0 auto; margin: 0 auto;
} }
.contact form .contact form {
{
margin: 0 auto; margin: 0 auto;
} }
.contact form p .contact form p {
{
margin: 1em auto; margin: 1em auto;
display: block; display: block;
margin-top: 2em; margin-top: 2em;
} }
.contact textarea .contact textarea {
{
height: 5em; height: 5em;
} }
.contact button .contact button {
{
display: block; display: block;
margin: 0 auto; margin: 0 auto;
margin-top: 1em; margin-top: 1em;
padding: 0.6em; padding: 0.6em;
} }
.contact .mandatory-message .contact .mandatory-message {
{
font-size: .9em; font-size: .9em;
} }
/* Captcha */ /* Captcha */
.captcha img .captcha img {
{
vertical-align: middle; vertical-align: middle;
margin-left: 1em; margin-left: 1em;
} }
.captcha input .captcha input {
{
max-width: 8em; max-width: 8em;
} }

View File

@ -3,16 +3,10 @@
<h1><t>IWantCustomer</t></h1> <h1><t>IWantCustomer</t></h1>
</div> </div>
<div id="form" class="contact"> <div id="form" class="contact">
<div class="box"> <div class="box form vn-w-xs vn-pa-lg">
<div class="form"> <p><t>FillFormData</t></p>
<p> <p><t>OrCallUs</t></p>
<t>FillFormData</t> <form id="contact-form">
</p>
<p>
<t>OrCallUs</t>
</p>
<form
id="contact-form">
<input type="hidden" name="srv" value="json:misc/contact"/> <input type="hidden" name="srv" value="json:misc/contact"/>
<div class="form-group"> <div class="form-group">
<label><t>Name</t></label> <label><t>Name</t></label>
@ -46,11 +40,10 @@
<p class="mandatory-message"> <p class="mandatory-message">
<t>AllFieldsMandatory</t> <t>AllFieldsMandatory</t>
</p> </p>
<button class="thin"> <button>
<t>Send</t> <t>Send</t>
</button> </button>
</form> </form>
</div> </div>
</div>
</div> </div>
</vn> </vn>

View File

@ -1,9 +1,5 @@
Hedera.Home = new Class({ Hedera.Home = new Class({
Extends: Hedera.Form Extends: Hedera.Form
,onStartOrderClick: function() {
this.hash.set({form: 'ecomerce/catalog'});
}
}); });

View File

@ -1,70 +1,61 @@
.home {
padding: 0 !important;
}
/* News panel */ /* News panel */
.column .column {
{
margin: .5em; margin: .5em;
max-width: 120em; max-width: 120em;
} }
.action-bar button.start-order .action-bar button.start-order {
{ border: 1px solid white;
background-color: #EF5350;
margin: .7em;
padding: .5em;
box-shadow: 0 0 0.4em rgba(1, 1, 1, 0.4);
} }
.action-bar button.start-order:hover .action-bar button.start-order:hover {
{ background-color: white !important;
background-color: #F44336; color: black;
} }
/* New */ /* New */
.new .new {
{
text-align: left; text-align: left;
background-color: white;
color: #222;
border: none;
border-radius: 0.1em;
box-shadow: 0 0.2em 0.2em rgba(1, 1, 1, 0.2);
margin: .5em; margin: .5em;
} }
.new img .new img {
{
display: block; display: block;
margin: auto; margin: auto;
width: 100%; width: 100%;
} }
.new .top .new .top {
{
padding: 1.5em; padding: 1.5em;
padding-bottom: 1px; padding-bottom: 1px;
} }
.new h2 .new h2 {
{
font-size: 1.6em; font-size: 1.6em;
color: black; color: black;
font-weight: normal; font-weight: normal;
padding: 0; padding: 0;
} }
.new-info
{ .new-info {
font-size: 0.9em; font-size: 0.9em;
color: #444; color: #444;
text-align: right; text-align: right;
margin: 0.8em 0; margin: .8em 0;
} }
.new-text .new-text {
{
margin: 1.5em 0; margin: 1.5em 0;
font-family: 'Open Sans';
line-height: 1.3em;
} }
.new-text a .new-text a {
{ color: #6a1;
color: blue; }
.new-text a:hover {
text-decoration: underline; text-decoration: underline;
} }
.new-text li .new-text li {
{
margin: 0.4em 0; margin: 0.4em 0;
} }

View File

@ -5,13 +5,13 @@
<div id="actions" class="catalog-actions"> <div id="actions" class="catalog-actions">
<htk-bar-button <htk-bar-button
class="start-order" class="start-order"
icon="new-order" icon="add_shopping_cart"
tip="_Start order" tip="_Start order"
on-click="onStartOrderClick"/> on-click="this.hash.set({form: 'ecomerce/catalog'})"/>
</div> </div>
<div id="form" class="home"> <div id="form" class="home">
<div class="column mansonry" id="news-column"> <div class="column mansonry" id="news-column">
<htk-repeater form-id="new"> <htk-repeater form-id="iter">
<db-model property="model"> <db-model property="model">
<custom> <custom>
SELECT title, text, image, id FROM news SELECT title, text, image, id FROM news
@ -21,18 +21,17 @@
</db-model> </db-model>
<custom> <custom>
<div class="masonry-box"> <div class="masonry-box">
<div class="new"> <div class="new box">
<htk-image <htk-image
directory="news" directory="news"
subdir="full" subdir="full"
form="new" value="{{iter.image}}"
column="image"
editable="false" editable="false"
full-dir="full"/> full-dir="full"/>
<div class="top"> <div class="top">
<h2><htk-text form="new" column="title"/></h2> <h2>{{iter.title}}</h2>
<div class="new-text"> <div class="new-text">
<htk-html form="new" column="text"/> <htk-html value="{{iter.text}}"/>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1 +0,0 @@
{}

View File

@ -1 +0,0 @@
{}

View File

@ -1 +0,0 @@
{}

View File

@ -1 +0,0 @@
{}

View File

@ -1 +0,0 @@
{}

View File

@ -1,59 +0,0 @@
/* News panel */
.column
{
margin: .5em;
max-width: 120em;
}
/* New */
.new
{
text-align: left;
background-color: white;
color: #222;
border: none;
border-radius: 0.1em;
box-shadow: 0 0.2em 0.2em rgba(1, 1, 1, 0.2);
margin: .5em;
}
.new img
{
display: block;
margin: auto;
width: 100%;
}
.new .top
{
padding: 1.5em;
padding-bottom: 1px;
}
.new h2
{
font-size: 1.6em;
color: black;
font-weight: normal;
padding: 0;
}
.new-info
{
font-size: 0.9em;
color: #444;
text-align: right;
margin: 0.8em 0;
}
.new-text
{
margin: 1.5em 0;
}
.new-text a
{
color: blue;
text-decoration: underline;
}
.new-text li
{
margin: 0.4em 0;
}

View File

@ -1,5 +0,0 @@
Hedera.Training = new Class
({
Extends: Hedera.Form
});

View File

@ -1,41 +0,0 @@
<vn>
<div id="title">
<h1><t>Training</t></h1>
</div>
<div id="form" class="training">
<div class="column mansonry" id="news-column">
<htk-repeater form-id="new">
<db-model property="model">
<custom>
SELECT title, created, text, image, id FROM news
WHERE tag = 'course'
ORDER BY priority, created DESC
</custom>
</db-model>
<custom>
<div class="masonry-box">
<div class="new">
<htk-image
directory="news"
subdir="full"
form="new"
column="image"
editable="false"
full-dir="full"/>
<div class="top">
<h2><htk-text form="new" column="title"/></h2>
<p class="new-info">
<htk-text format="_%a, %e %b %Y" form="new" column="created"/>
</p>
<div class="new-text">
<htk-html form="new" column="text"/>
</div>
</div>
</div>
</div>
</custom>
</htk-repeater>
<div class="clear"/>
</div>
</div>
</vn>

View File

@ -1,27 +1,13 @@
.why .why ul {
{
padding: 1em;
}
.why .box
{
max-width: 40em;
margin: 0 auto;
}
.why ul
{
list-style-type: none; list-style-type: none;
padding: 0 1em; padding: 0;
padding-bottom: 1em; margin-top: 0;
max-width: 36em;
margin: 0 auto;
} }
.why li .why li {
{ padding-bottom: 16px;
padding: 0.5em 0;
} }
.why img .why img {
{
display: block; display: block;
margin: 0 auto; margin: 0 auto;
max-width: 95%; max-width: 95%;

View File

@ -3,9 +3,8 @@
<h1><t>AboutCompany</t></h1> <h1><t>AboutCompany</t></h1>
</div> </div>
<div id="form" class="why"> <div id="form" class="why">
<div class="box"> <div class="box vn-w-sm vn-pa-lg">
<div class="body"> <ul class="vn-mb-lg">
<ul>
<li><t>BecauseOurBigCatalog</t></li> <li><t>BecauseOurBigCatalog</t></li>
<li><t>BecauseThisWeb</t></li> <li><t>BecauseThisWeb</t></li>
<li><t>BecauseOurShoppingDep</t></li> <li><t>BecauseOurShoppingDep</t></li>
@ -17,6 +16,5 @@
</ul> </ul>
<img src="forms/cms/why/store.png" alt="Store photo"/> <img src="forms/cms/why/store.png" alt="Store photo"/>
</div> </div>
</div>
</div> </div>
</vn> </vn>

View File

@ -1,58 +1,36 @@
Hedera.Basket = new Class Hedera.Basket = new Class({
({
Extends: Hedera.Form Extends: Hedera.Form
,open: function () ,open: function() {
{ this.close();
this.close ();
this.isOpen = true; this.isOpen = true;
Hedera.BasketChecker.check (this.conn, Hedera.BasketChecker.check(this.conn,
this.onBasketCheck.bind (this)); this.onBasketCheck.bind(this));
} }
,onBasketCheck: function (isOk) ,onBasketCheck: function(isOk) {
{
if (isOk) if (isOk)
this.loadUi (); this.loadUi();
} }
,activate: function () ,activate: function() {
{ this.$('items').setInfo('bi', 'myBasketItem', 'hedera');
this.$('items').setInfo ('bi', 'myBasketItem', 'hedera');
} }
,onConfigureClick: function () ,onConfigureClick: function() {
{ Htk.Toast.showWarning(_('RememberReconfiguringImpact'));
Htk.Toast.showWarning (_('RememberReconfiguringImpact')); this.hash.set({form: 'ecomerce/checkout'});
this.hash.set ({form: 'ecomerce/checkout'});
} }
,onCatalogClick: function () ,onDeleteClick: function(form) {
{ if (confirm(_('ReallyDelete')))
this.hash.set ({form: 'ecomerce/catalog'}); form.deleteRow();
} }
,onCheckoutClick: function () ,subtotal: function(form) {
{ return form.get('amount') * form.get('price');
this.hash.set ({form: 'ecomerce/confirm'});
}
,repeaterFunc: function (res, form)
{
res.$('subtotal').value = this.subtotal (form);
}
,onDeleteClick: function (button, form)
{
if (confirm (_('ReallyDelete')))
form.deleteRow ();
}
,subtotal: function (form)
{
return form.get ('amount') * form.get ('price');
} }
}); });

View File

@ -1,91 +1,65 @@
.basket
{ .basket .head {
padding: 1em; border-bottom: 1px solid #DDD;
} }
.basket .box .basket .head p {
{ font-weight: bold;
max-width: 30em; margin: 0;
margin: 0 auto; padding: 0;
padding: 0 2em; font-size: 1.4em;
text-align: right;
} }
.basket .form > p .basket .form > p {
{
margin: 0; margin: 0;
font-size: 1.4em; font-size: 1.4em;
color: white; color: white;
text-align: right; text-align: right;
} }
.basket .head
{
padding: 1.8em 0;
margin: 0;
border-bottom: 1px solid #DDD;
}
.basket .head p
{
margin: 0;
padding: 0;
font-size: 1.4em;
text-align: right;
}
/* Lines */ /* Lines */
.basket .lines .basket .line {
{ display: flex;
padding: .8em 0; gap: 20px;
margin: 24px 0;
height: 65px;
} }
.basket .line .basket .line:last-child {
{ margin-bottom: 0;
padding: 1em 0;
} }
.basket .line > .delete .basket .line > .delete {
{ align-self: center;
margin: -0.5em;
margin-top: 1em;
margin-right: .5em;
float: left;
} }
.basket .line > .photo .basket .line > .photo {
{ flex: none;
margin-right: 1em;
float: left;
border-radius: 50%; border-radius: 50%;
height: 4.25em; width: 65px;
width: 4.25em;
} }
.basket .line > .info .basket .line > .info {
{ flex: 1;
margin-left: 7.5em;
} }
.basket .line > .info > h2 .basket .line > .info > h2 {
{
font-size: 1em; font-size: 1em;
font-weight: normal; font-weight: normal;
padding: 0; padding: 0;
padding-bottom: .1em; padding-bottom: .1em;
} }
.basket .line > .info > p .basket .line > .info > p {
{
margin: 0; margin: 0;
} }
.basket .line > .info > .tags .basket .line > .info > .tags {
{
color: #777; color: #777;
} }
.basket .line .subtotal .basket .line .subtotal {
{
float: right; float: right;
} }
/* Fields */ /* Fields */
.basket td.available-exceeded input .basket td.available-exceeded input {
{
background-color: #FCC; background-color: #FCC;
} }
.basket .icon > img .basket .icon > img {
{
border-radius: 50%; border-radius: 50%;
} }

View File

@ -4,21 +4,21 @@
</div> </div>
<div id="actions"> <div id="actions">
<htk-bar-button <htk-bar-button
icon="ok" icon="settings"
tip="_Checkout"
on-click="onCheckoutClick"/>
<htk-bar-button
icon="view-dual"
tip="_Catalog"
on-click="onCatalogClick"/>
<htk-bar-button
icon="preferences"
tip="_ConfigureOrder" tip="_ConfigureOrder"
on-click="onConfigureClick"/> on-click="this.onConfigureClick()"/>
<htk-bar-button
icon="local_florist"
tip="_Catalog"
on-click="this.hash.set({form: 'ecomerce/catalog'})"/>
<htk-bar-button
icon="shopping_cart_checkout"
tip="_Checkout"
on-click="this.hash.set({form: 'ecomerce/confirm'})"/>
</div> </div>
<div id="form" class="basket"> <div id="form" class="basket">
<div class="box"> <div class="box vn-w-sm vn-pa-lg">
<div class="head"> <div class="head vn-pb-lg">
<p> <p>
<t>Total</t> <t>Total</t>
<htk-text format="%.2d€"> <htk-text format="%.2d€">
@ -27,7 +27,7 @@
</p> </p>
</div> </div>
<div class="lines"> <div class="lines">
<htk-repeater form-id="iter" renderer="repeaterFunc"> <htk-repeater form-id="iter">
<db-model id="items" property="model" updatable="true"> <db-model id="items" property="model" updatable="true">
SELECT bi.id, bi.amount, bi.price, i.longName item, SELECT bi.id, bi.amount, bi.price, i.longName item,
i.tag5, i.value5, i.tag6, i.value6, i.tag7, i.value7, i.tag5, i.value5, i.tag6, i.value6, i.tag7, i.value7,
@ -41,12 +41,10 @@
<custom> <custom>
<div class="line"> <div class="line">
<htk-button <htk-button
form="iter"
column="id"
class="delete" class="delete"
tip="_Remove" tip="_Remove"
icon="delete" icon="delete"
on-click="onDeleteClick"/> on-click="this.onDeleteClick($.iter)"/>
<htk-image <htk-image
form="iter" form="iter"
column="image" column="image"
@ -60,19 +58,15 @@
<htk-text form="iter" column="item"/> <htk-text form="iter" column="item"/>
</h2> </h2>
<p class="tags"> <p class="tags">
<htk-text form="iter" column="value5"/> {{iter.value5}} {{iter.value6}} {{iter.value7}}
<htk-text form="iter" column="value6"/>
<htk-text form="iter" column="value7"/>
</p> </p>
<p class="amount"> <p class="amount">
<htk-text form="iter" column="amount"/> x {{iter.amount}} x {{Vn.Value.format(iter.price, '%.2d€')}}
<htk-text form="iter" column="price" format="%.2d€"/>
<span class="subtotal"> <span class="subtotal">
<htk-text id="subtotal" format="%.2d€"/> {{Vn.Value.format(iter.price * iter.amount, '%.2d€')}}
</span> </span>
</p> </p>
</div> </div>
<div class="clear"/>
</div> </div>
</custom> </custom>
</htk-repeater> </htk-repeater>

View File

@ -42,14 +42,14 @@ Hedera.Catalog = new Class({
,setView: function(view) { ,setView: function(view) {
if (view === Hedera.Catalog.View.GRID) { if (view === Hedera.Catalog.View.GRID) {
this.$('view-button').setProperties({ this.$('view-button').setProperties({
icon: 'view-list', icon: 'view_list',
tip: _('List view') tip: _('List view')
}); });
this.view = Hedera.Catalog.View.GRID; this.view = Hedera.Catalog.View.GRID;
var className = 'grid-view'; var className = 'grid-view';
} else { } else {
this.$('view-button').setProperties({ this.$('view-button').setProperties({
icon: 'view-grid', icon: 'grid_on',
tip: _('Grid view') tip: _('Grid view')
}); });
this.view = Hedera.Catalog.View.LIST; this.view = Hedera.Catalog.View.LIST;
@ -103,11 +103,6 @@ Hedera.Catalog = new Class({
'form': this.hash.get('form'), 'form': this.hash.get('form'),
'realm': form.get('id') 'realm': form.get('id')
}); });
var img = builder.$('image');
img.src = 'image/family/light/'+ form.get('code') +'.svg';
img.title = form.get('name');
img.alt = img.title;
} }
,onRealmChange: function(param, newValue) { ,onRealmChange: function(param, newValue) {
@ -119,7 +114,6 @@ Hedera.Catalog = new Class({
this.$('realm-msg').style.display = 'block'; this.$('realm-msg').style.display = 'block';
} }
this.refreshTitleColor();
this.refreshFilter(newValue, undefined); this.refreshFilter(newValue, undefined);
} }
@ -143,25 +137,6 @@ Hedera.Catalog = new Class({
batch.changed(); batch.changed();
} }
,refreshTitleColor: function() {
var realms = this.$('realms-model');
if (!realms.ready)
return;
var color = null;
var realm = this.$('realm').value;
if (realm) {
var row = realms.search('id', realm);
if (row != -1)
color = '#'+ realms.get(row, 'color');
}
this.gui.$('top-bar').style.backgroundColor = color;
}
,refreshTitle: function() { ,refreshTitle: function() {
var types = this.$('types-model'); var types = this.$('types-model');
@ -320,10 +295,8 @@ Vn.Filter = new Class({
Extends: Htk.Field Extends: Htk.Field
,Tag: 'vn-filter' ,Tag: 'vn-filter'
,Child: 'model' ,Child: 'model'
,Properties: ,Properties: {
{ model: {
model:
{
type: Db.Model type: Db.Model
,set: function(x) { ,set: function(x) {
x.batch = this._batch; x.batch = this._batch;
@ -334,8 +307,7 @@ Vn.Filter = new Class({
return this._model; return this._model;
} }
}, },
placeholder: placeholder: {
{
type: String type: String
,set: function(x) { ,set: function(x) {
this._select.placeholder = x; this._select.placeholder = x;
@ -345,8 +317,7 @@ Vn.Filter = new Class({
return this._placeholder; return this._placeholder;
} }
}, },
filter: filter: {
{
type: Sql.Filter type: Sql.Filter
,set: function(x) { ,set: function(x) {
this._filter = x; this._filter = x;
@ -355,7 +326,7 @@ Vn.Filter = new Class({
,get: function() { ,get: function() {
return this._filter; return this._filter;
} }
}, }
} }
,_valueColumnIndex: 0 ,_valueColumnIndex: 0
@ -439,7 +410,7 @@ Vn.Filter = new Class({
li.appendChild(button); li.appendChild(button);
var icon = new Htk.Icon({ var icon = new Htk.Icon({
icon: 'close', name: 'close',
alt: _('Close') alt: _('Close')
}); });
button.appendChild(icon.node); button.appendChild(icon.node);
@ -457,19 +428,25 @@ Vn.Filter = new Class({
if (!this._label) if (!this._label)
return; return;
var row = -1; let row = -1;
const model = this._model;
if (model) {
if (this._model.ready) if (this._model.ready)
row = this._model.searchByIndex(this._valueColumnIndex, this._value); row = model.searchByIndex(this._valueColumnIndex, this._value);
if (row != -1) { if (row != -1) {
var label = this._model.getByIndex(row, this._showColumnIndex); var label = model.getByIndex(row, this._showColumnIndex);
this._label.nodeValue = label; this._label.nodeValue = label;
this._emptyLabel = false; this._emptyLabel = false;
} else { } else {
this._emptyLabel = true; this._emptyLabel = true;
this._label.nodeValue = _('Loading...'); this._label.nodeValue = _('Loading...');
} }
} else {
this._emptyLabel = true;
this._label.nodeValue = '';
}
} }
}); });

View File

@ -2,7 +2,7 @@ Catalog: Catàleg
SearchResults: Resultats de cerca SearchResults: Resultats de cerca
SelectFamily: Selecciona una família SelectFamily: Selecciona una família
Choose filter from right menu: Tria un filtre en el menú de la dreta Choose filter from right menu: Tria un filtre en el menú de la dreta
Choose a realm: Tria un regne Choose a realm: Tria un categoria
ArticleNotFound: Artcle no trobat ArticleNotFound: Artcle no trobat
ArticleNotAvailable: Article no disponible ArticleNotAvailable: Article no disponible
List view: Vista de lista List view: Vista de lista
@ -15,7 +15,7 @@ Warehouse: Magatzem
Filter by: Filtrar per Filter by: Filtrar per
Order by: Ordenar per Order by: Ordenar per
Search: Cercar Search: Cercar
Change: Cambiar Modify: Modificar
Size: Mida Size: Mida
Realm: Regne Realm: Regne
Family: Família Family: Família

View File

@ -2,7 +2,7 @@ Catalog: Catalog
SearchResults: Search results SearchResults: Search results
SelectFamily: Select family SelectFamily: Select family
Choose filter from right menu: Choose a filter from the right menu Choose filter from right menu: Choose a filter from the right menu
Choose a realm: Choose a realm Choose a realm: Choose a category
ArticleNotFound: Item not found ArticleNotFound: Item not found
ArticleNotAvailable: Item not available ArticleNotAvailable: Item not available
List view: List view List view: List view
@ -15,7 +15,7 @@ Warehouse: Warehouse
Filter by: Filter by Filter by: Filter by
Order by: Order by Order by: Order by
Search: Search Search: Search
Change: Change Modify: Modify
Size: Size Size: Size
Realm: Realm Realm: Realm
Family: Family Family: Family

View File

@ -2,7 +2,7 @@ Catalog: Catálogo
SearchResults: Resultados de búsqueda SearchResults: Resultados de búsqueda
SelectFamily: Selecciona una familia SelectFamily: Selecciona una familia
Choose filter from right menu: Elige un filtro en el menú de la derecha Choose filter from right menu: Elige un filtro en el menú de la derecha
Choose a realm: Elige un reino Choose a realm: Elige una categoría
ArticleNotFound: Artículo no encontrado ArticleNotFound: Artículo no encontrado
ArticleNotAvailable: Artículo no disponible ArticleNotAvailable: Artículo no disponible
List view: Vista de lista List view: Vista de lista
@ -15,7 +15,7 @@ Warehouse: Almacén
Filter by: Filtrar por Filter by: Filtrar por
Order by: Ordenar por Order by: Ordenar por
Search: Buscar Search: Buscar
Change: Cambiar Modify: Modificar
Size: Medida Size: Medida
Realm: Reino Realm: Reino
Family: Familia Family: Familia

View File

@ -2,7 +2,7 @@ Catalog: Catalogue
SearchResults: Résultats de la recherche SearchResults: Résultats de la recherche
SelectFamily: Choisissez une famille SelectFamily: Choisissez une famille
Choose filter from right menu: Choisissez un filtre dans le menu de droite Choose filter from right menu: Choisissez un filtre dans le menu de droite
Choose a realm: Choisissez un royaume Choose a realm: Choisissez une catégorie
ArticleNotFound: Article non trouvé ArticleNotFound: Article non trouvé
ArticleNotAvailable: Article non disponible ArticleNotAvailable: Article non disponible
List view: Liste voir List view: Liste voir
@ -15,7 +15,7 @@ Warehouse: Entrepôt
Filter by: Filtrer par Filter by: Filtrer par
Order by: Trier par Order by: Trier par
Search: Recherche Search: Recherche
Change: Modifier Modify: Modifier
Size: Mesure Size: Mesure
Realm: Famille Realm: Famille
Family: Sous-genre Family: Sous-genre

View File

@ -2,7 +2,7 @@ Catalog: Catálogo
SearchResults: Resultados de busca SearchResults: Resultados de busca
SelectFamily: Seleccione uma família SelectFamily: Seleccione uma família
Choose filter from right menu: Escolha um filtro no menú da direita Choose filter from right menu: Escolha um filtro no menú da direita
Choose a realm: Escolha um reino Choose a realm: Escolha uma categoria
ArticleNotFound: Ítem não encontrado ArticleNotFound: Ítem não encontrado
ArticleNotAvailable: Ítem não disponível ArticleNotAvailable: Ítem não disponível
List view: Ver como lista List view: Ver como lista
@ -15,7 +15,7 @@ Warehouse: Armazém
Filter by: Filtrar por Filter by: Filtrar por
Order by: Ordenar por Order by: Ordenar por
Search: Buscar Search: Buscar
Change: Modificar Modify: Modificar
Size: Medida Size: Medida
Realm: Reino Realm: Reino
Family: Família Family: Família

View File

@ -1,120 +1,109 @@
.catalog .catalog {
{ padding: 0 !important;
margin-right: 17em; margin-right: 18em;
} }
/* Topbar */ /* Topbar */
.catalog-actions > .htk-search-entry .catalog-actions > .htk-search-entry {
{
margin-top: .8em;
margin-right: .4em; margin-right: .4em;
} }
/* Right panel */ /* Right panel */
.right-panel .right-panel {
{
position: fixed; position: fixed;
top: 3.9em; top: 4.4em;
bottom: 0; bottom: 0;
right: 0; right: 0;
width: 17em; width: 18em;
background-color: white;
box-shadow: 0 0 .2em rgba(1, 1, 1, .2);
overflow: auto; overflow: auto;
background-color: #fafafa;
} }
.right-panel .basket-info .right-panel .basket-info {
{ background-color: #8cc63f;
background-color: #00ACC1;
color: white; color: white;
box-shadow: 0 .1em .1em rgba(1, 1, 1, .3);
padding: 1.2em 2em; padding: 1.2em 2em;
border-radius: .5em;
margin: 1em;
text-align: center;
} }
.right-panel .basket-info > button .right-panel .basket-info > button {
{ color: white;
color: #E0F2F1;
margin: 0 auto; margin: 0 auto;
display: block; display: block;
margin-top: .4em; margin-top: .4em;
} }
.right-panel .basket-info > p .right-panel .basket-info > button:hover {
{ background-color: white;
color: #60872c;
}
.right-panel .basket-info > p {
margin: 0; margin: 0;
padding: .4em 0; padding: .4em 0;
font-size: 1.1em; font-size: 1.1em;
text-align: left;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
} }
.right-panel .filter .right-panel .filter {
{ margin: 1em;
padding: 1em; }
.right-panel .categories,
.right-panel .filters,
.right-panel .order {
margin: 1.5em 0;
} }
.right-panel .filters, .right-panel .filters,
.right-panel .order .right-panel .order {
{
display: none; display: none;
} }
.right-panel .realm-msg .right-panel .realm-msg {
{
margin-top: 1em; margin-top: 1em;
} }
.right-panel .realm-msg > h1 .right-panel .realm-msg > h5 {
{
font-weight: normal; font-weight: normal;
text-align: center; text-align: center;
padding: 2.5em 0; padding: 2.5em 0;
color: #777; color: #777;
} }
.right-panel h2 .right-panel h2 {
{
font-weight: normal; font-weight: normal;
padding: .4em 0;
color: #777; color: #777;
font-size: 1.1em; font-size: 1.1em;
} }
.right-panel .realms > div > div .right-panel .realms > div > div {
{
text-align: center; text-align: center;
} }
.right-panel .realms a .right-panel .realms a {
{
display: inline-block; display: inline-block;
width: 30%; width: 25%;
padding: .6em; padding: .6em;
box-sizing: border-box; box-sizing: border-box;
} }
.right-panel .realms a:hover .right-panel .realms a:hover {
{
background-color: rgba(1, 1, 1, .05); background-color: rgba(1, 1, 1, .05);
border-radius: .15em; border-radius: .15em;
} }
.right-panel .realms a > img .right-panel .realms a > img {
{
display: block; display: block;
padding: 0; padding: 0;
width: 100%; width: 100%;
} }
.right-panel .vn-filter, .right-panel .vn-filter,
.right-panel select .right-panel select {
{
margin: 0 auto; margin: 0 auto;
margin-bottom: .7em; margin-bottom: .7em;
width: 90%;
display: block; display: block;
} }
.vn-filter > ul .vn-filter > ul {
{
margin: 0; margin: 0;
list-style-type: none; list-style-type: none;
text-align: left; text-align: left;
color: #666; color: #666;
padding-left: .8em; padding-left: .8em;
} }
.vn-filter li .vn-filter li {
{
margin: 0; margin: 0;
margin-top: .3em; margin-top: .3em;
line-height: 2em; line-height: 2em;
@ -123,16 +112,17 @@
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
} }
.vn-filter li > button .vn-filter li > button {
{
vertical-align: middle; vertical-align: middle;
text-align: center; text-align: center;
padding: .2em; padding: .2em;
margin: 0; margin: 0;
margin-right: .2em; margin-right: .2em;
} }
.right-panel .filters > button .vn-filter li > button > span {
{ display: block;
}
.right-panel .filters > button {
display: block; display: block;
margin: 0 auto; margin: 0 auto;
margin-top: 1em; margin-top: 1em;
@ -140,41 +130,34 @@
/* Items */ /* Items */
.item-box .item-box {
{
transition: background-color 200ms ease-in; transition: background-color 200ms ease-in;
} }
.item-box:hover .item-box:hover {
{
cursor: pointer; cursor: pointer;
background-color: #eee; background-color: #eee;
} }
.item-info .item-info {
{
position: relative; position: relative;
} }
.item-info .second-category .item-info .second-category {
{
font-weight: bold; font-weight: bold;
color: orange; color: orange;
} }
.item-info .third-category .item-info .third-category {
{
font-weight: bold; font-weight: bold;
color: red; color: red;
} }
.item-info > h2 .item-info > h2 {
{
padding: 0; padding: 0;
margin-bottom: .15em; margin-bottom: .15em;
font-weight: normal; font-weight: normal;
font-size: 1em; font-size: 1em;
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; overflow: hidden;
max-height: 3.8em; max-height: 2.8em;
} }
.item-info > p .item-info > p {
{
margin: 0; margin: 0;
padding: 0; padding: 0;
color: #777; color: #777;
@ -183,24 +166,20 @@
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
} }
.item-info .sub-name .item-info .sub-name {
{
text-transform: uppercase; text-transform: uppercase;
padding: 0; padding: 0;
margin-bottom: .2em; margin-bottom: .2em;
font-size: .9em; font-size: .9em;
} }
.item-info > .htk-button .item-info > .htk-button {
{
margin: -0.3em; margin: -0.3em;
padding: .3em; padding: .3em;
} }
.item-info > .htk-button > img .item-info > .htk-button > img {
{
vertical-align: middle; vertical-align: middle;
} }
.item-info .available-price .item-info .available-price {
{
white-space: nowrap; white-space: nowrap;
font-size: .95em; font-size: .95em;
text-align: right; text-align: right;
@ -208,32 +187,27 @@
column-gap: .2em; column-gap: .2em;
display: flex; display: flex;
} }
.item-info .available-price > * .item-info .available-price > * {
{
border-radius: .2em; border-radius: .2em;
padding: .3em; padding: .1em .3em;
border: .1em transparent solid; border: .1em transparent solid;
background-color: white; background-color: white;
} }
.item-info .grouping .item-info .grouping {
{
width: 2em; width: 2em;
background-color: #ddd; background-color: #ddd;
} }
.item-info .available .item-info .available {
{
width: 3.3em; width: 3.3em;
border-color: #bbb; border-color: #bbb;
color: #777; color: #777;
} }
.item-info .price .item-info .price {
{
width: 4em; width: 4em;
border-color: #9cbc28; border-color: #9cbc28;
color: #748c1e; color: #748c1e;
} }
.tags .tags {
{
font-size: .8em; font-size: .8em;
display: table; display: table;
color: #333; color: #333;
@ -248,14 +222,12 @@
/* List view */ /* List view */
.list-view .list-view {
{ max-width: 420px;
max-width: 30em;
margin: 0 auto; margin: 0 auto;
padding: 1em; padding: 1em;
} }
.list-view .item-box .list-view .item-box {
{
display: block; display: block;
position: relative; position: relative;
width: 100%; width: 100%;
@ -264,20 +236,17 @@
overflow: visible; overflow: visible;
border-bottom: 1px solid #DDD; border-bottom: 1px solid #DDD;
} }
.list-view .item-box > .htk-image .list-view .item-box > .htk-image {
{
margin: 1em; margin: 1em;
width: 3.5em; width: 3.5em;
height: 3.5em; height: 3.5em;
float: left; float: left;
overflow: hidden; overflow: hidden;
} }
.list-view .item-box > .htk-image > img .list-view .item-box > .htk-image > img {
{
border-radius: 50%; border-radius: 50%;
} }
.list-view .item-info .list-view .item-info {
{
position: absolute; position: absolute;
left: 5.5em; left: 5.5em;
right: 0; right: 0;
@ -286,59 +255,49 @@
margin: .8em; margin: .8em;
margin-left: 0; margin-left: 0;
} }
.list-view .item-info > h2 .list-view .item-info > h2 {
{
font-size: 1em; font-size: 1em;
white-space: nowrap; white-space: nowrap;
} }
.list-view .item-info > .color .list-view .item-info > .color {
{
display: none; display: none;
} }
.list-view .item-info > .htk-button .list-view .item-info > .htk-button {
{
float: right; float: right;
} }
.list-view .item-info .available-price .list-view .item-info .available-price {
{
clear: both; clear: both;
float: right; float: right;
position:absolute; position:absolute;
bottom: 0; bottom: 0;
right: 0; right: 0;
} }
.list-view .item-info .tags .list-view .item-info .tags {
{
display: block; display: block;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
} }
.list-view .item-info .tags > tr .list-view .item-info .tags > tr {
{
display: inline-block; display: inline-block;
} }
.list-view .item-info .tags td .list-view .item-info .tags td {
{
display: inline-block; display: inline-block;
padding-right: .5em; padding-right: .5em;
} }
.list-view .item-info .tags td:first-child .list-view .item-info .tags td:first-child {
{
display: none; display: none;
} }
/* Grid view */ /* Grid view */
.grid-view .grid-view {
{
padding: 1em; padding: 1em;
padding-right: .2em; padding-right: .2em;
padding-bottom: .4em; padding-bottom: .4em;
text-align: center; text-align: center;
} }
.grid-view .item-box .grid-view .item-box {
{
text-align: left; text-align: left;
position: relative; position: relative;
display: inline-block; display: inline-block;
@ -349,14 +308,12 @@
height: 11em; height: 11em;
overflow: hidden; overflow: hidden;
} }
.grid-view .item-box > .htk-image .grid-view .item-box > .htk-image {
{
width: 11em; width: 11em;
height: 100%; height: 100%;
float: left; float: left;
} }
.grid-view .item-info .grid-view .item-info {
{
position: absolute; position: absolute;
left: 11.4em; left: 11.4em;
right: 0; right: 0;
@ -364,8 +321,7 @@
bottom: 0; bottom: 0;
margin: .6em; margin: .6em;
} }
.grid-view .item-info .available-price .grid-view .item-info .available-price {
{
position: absolute; position: absolute;
bottom: 0; bottom: 0;
right: 0; right: 0;
@ -381,107 +337,79 @@
/* Card */ /* Card */
.card-popup .card-popup {
{
overflow: auto; overflow: auto;
} }
.item-card .item-card {
{
font-size: .9em; font-size: .9em;
width: 20em; width: 20em;
} }
.item-card .top .item-card .top {
{
padding: 1em; padding: 1em;
} }
.item-card .item-info .item-card .item-info {
{
margin-left: 9em; margin-left: 9em;
height: 8em; height: 8em;
} }
.item-card .htk-image .item-card .htk-image {
{
height: 8em; height: 8em;
width: 8em; width: 8em;
float: left; float: left;
border-radius: .3em; border-radius: .3em;
} }
.item-card .desc .item-card .desc {
{
clear: both; clear: both;
margin-top: 1em 0; margin-top: 1em 0;
font-size: .9em; font-size: .9em;
} }
.item-card .lots-grid .item-card .lots-grid {
{
border-top: 1px solid #DDD; border-top: 1px solid #DDD;
} }
.item-card .lots-grid tr .item-card .lots-grid tr {
{
height: 3em; height: 3em;
} }
.item-card .lots-grid .cell-spin .item-card .lots-grid .cell-spin {
{
max-width: initial; max-width: initial;
width: 3em; width: 3em;
} }
.item-card .lots-grid .price-kg .item-card .lots-grid .price-kg {
{
font-size: .8em; font-size: .8em;
color: #999; color: #999;
width: 1px; width: 1px;
} }
.item-card .lots-grid .cell-text .item-card .lots-grid .cell-text {
{
max-width: initial; max-width: initial;
width: auto; width: auto;
} }
.item-card .lots-grid .cell-button .item-card .lots-grid .cell-button {
{
max-width: initial; max-width: initial;
width: 1em; width: 1em;
} }
.item-card .footer .item-card .footer {
{ display: flex;
text-align: center; align-items: center;
background-color: #009688; justify-content: space-between;
background-color: #1a1a1a;
color: white; color: white;
line-height: 2em; padding: 10px;
padding: .4em;
} }
.item-card .footer > button .item-card .footer > button:hover {
{ background-color: rgba(255, 255, 255, .1);
margin: 0;
} }
.item-card .erase .item-card .footer > button > .htk-icon {
{
float: left;
}
.item-card .confirm
{
float: right;
}
.item-card .erase > img,
.item-card .confirm > img
{
display: block; display: block;
height: 1em;
} }
/* Mobile */ /* Mobile */
.catalog-actions > button.menu .catalog-actions > button.menu {
{
display: none; display: none;
padding: 1.1em .5em;
} }
.catalog-actions > button.menu > img .catalog-actions > button.menu > .htk-icon {
{ display: block;
height: 1.8em;
} }
@media (max-width: 960px) @media (max-width: 960px) {
{
.catalog-actions > button.menu .catalog-actions > button.menu
{ {
display: block; display: block;
@ -489,15 +417,15 @@
.right-panel .right-panel
{ {
top: 0; top: 0;
right: -17em; right: -18em;
z-index: 20; z-index: 20;
transition: transform 200ms ease-out; transition: transform 200ms ease-out;
-webkit-transition: transform 200ms ease-out; -webkit-transition: transform 200ms ease-out;
} }
.right-panel.show .right-panel.show
{ {
transform: translateZ(0) translateX(-17em); transform: translateZ(0) translateX(-18em);
-webkit-transform: translateZ(0) translateX(-17em); -webkit-transform: translateZ(0) translateX(-18em);
} }
.catalog .catalog
{ {

View File

@ -94,19 +94,22 @@
<h1 id="title-text"><t>Catalog</t></h1> <h1 id="title-text"><t>Catalog</t></h1>
</div> </div>
<div id="actions" class="catalog-actions"> <div id="actions" class="catalog-actions">
<button class="menu" on-click="onShowMenuClick"> <htk-search-entry
<img src="image/icon/dark/menu.svg" alt="_Menu"/> param="search"/>
</button>
<htk-bar-button
icon="basket"
tip="_ShoppingBasket"
on-click="onBasketClick"/>
<htk-bar-button <htk-bar-button
id="view-button" id="view-button"
tip="_Switch view" tip="_Switch view"
on-click="onSwitchViewClick"/> icon="view_list"
<htk-search-entry on-click="this.onSwitchViewClick()"/>
param="search"/> <htk-bar-button
icon="shopping_cart_checkout"
tip="_ShoppingBasket"
on-click="this.onBasketClick()"/>
<button
class="menu"
on-click="onShowMenuClick">
<htk-icon name="menu" alt="_Menu"/>
</button>
</div> </div>
<div id="form" class="catalog"> <div id="form" class="catalog">
<div id="main" class="main"> <div id="main" class="main">
@ -120,7 +123,7 @@
<div <div
id="item-box" id="item-box"
class="box item-box" class="box item-box"
title="_AddToBasket"> title="{{_('AddToBasket')}}">
<htk-image <htk-image
directory="catalog" directory="catalog"
subdir="200x200" subdir="200x200"
@ -130,34 +133,34 @@
full-dir="1600x900"/> full-dir="1600x900"/>
<div class="item-info"> <div class="item-info">
<h2> <h2>
<htk-text form="item" column="item"/> {{item.item}}
</h2> </h2>
<p class="sub-name"> <p class="sub-name">
<htk-text form="item" column="subName"/> {{item.subName}}
</p> </p>
<table class="tags"> <table class="tags">
<tr> <tr>
<td><htk-text form="item" column="tag5"/></td> <td>{{item.tag5}}</td>
<td><htk-text form="item" column="value5"/></td> <td>{{item.value5}}</td>
</tr> </tr>
<tr> <tr>
<td><htk-text form="item" column="tag6"/></td> <td>{{item.tag6}}</td>
<td><htk-text form="item" column="value6"/></td> <td>{{item.value6}}</td>
</tr> </tr>
<tr> <tr>
<td><htk-text form="item" column="tag7"/></td> <td>{{item.tag7}}</td>
<td><htk-text form="item" column="value7"/></td> <td>{{item.value7}}</td>
</tr> </tr>
</table> </table>
<div class="available-price"> <div class="available-price">
<span class="grouping" title="_MinimalGrouping"> <span class="grouping" title="_MinimalGrouping">
<htk-text form="item" column="grouping" format="x%.0d"/> {{Vn.Value.format(item.grouping, 'x%.0d')}}
</span> </span>
<span class="available" title="_Available"> <span class="available" title="_Available">
<htk-text form="item" column="available"/> {{item.available}}
</span> </span>
<span class="price" title="_GroupingPrice"> <span class="price" title="_GroupingPrice">
<htk-text form="item" column="price" format="%.2d€"/> {{Vn.Value.format(item.price, 'x%.0d')}}
</span> </span>
</div> </div>
</div> </div>
@ -176,7 +179,7 @@
<htk-text form="basket" column="agency"/> <htk-text form="basket" column="agency"/>
</p> </p>
<button class="thin" on-click="onConfigureClick"> <button class="thin" on-click="onConfigureClick">
<t>Change</t> <t>Modify</t>
</button> </button>
</div> </div>
<div class="filter"> <div class="filter">
@ -184,13 +187,12 @@
<div class="realms"> <div class="realms">
<htk-repeater <htk-repeater
model="realms-model" model="realms-model"
form-id="realm-form" form-id="form"
renderer="realmRenderer" renderer="realmRenderer"
class="realms-box"> class="realms-box">
<db-model <db-model
id="realms-model" id="realms-model"
property="model" property="model">
on-status-changed="refreshTitleColor">
SELECT c.id, l.name, c.color, c.code SELECT c.id, l.name, c.color, c.code
FROM vn.itemCategory c FROM vn.itemCategory c
JOIN vn.itemCategoryL10n l ON l.id = c.id JOIN vn.itemCategoryL10n l ON l.id = c.id
@ -199,7 +201,11 @@
</db-model> </db-model>
<custom> <custom>
<a id="link"> <a id="link">
<img id="image"/> <img
id="image"
src="{{`image/family/black/${form.code}.svg`}}"
title="{{form.name}}"
alt="{{form.name}}"/>
</a> </a>
</custom> </custom>
</htk-repeater> </htk-repeater>
@ -207,7 +213,7 @@
</div> </div>
</div> </div>
<div id="realm-msg" class="realm-msg"> <div id="realm-msg" class="realm-msg">
<h1><t>Choose a realm</t></h1> <h5><t>Choose a realm</t></h5>
</div> </div>
<div id="filters" class="filters"> <div id="filters" class="filters">
<h2><t>Filter by</t></h2> <h2><t>Filter by</t></h2>
@ -461,20 +467,25 @@
on-clicked="onAddLotClick"/> on-clicked="onAddLotClick"/>
</htk-grid> </htk-grid>
<div class="footer"> <div class="footer">
<button on-click="onEraseClick" title="_Erase" class="erase"> <button
title="_Erase"
on-click="this.onEraseClick()"
class="erase">
<htk-icon <htk-icon
icon="delete" name="delete"
theme="dark" theme="dark"
alt="_Erase"/> alt="_Erase"/>
</button> </button>
<htk-text id="amount"/> <htk-text id="amount"/>
<button on-click="onConfirmClick" title="_Confirm" class="confirm"> <button
title="_Confirm"
on-click="this.onConfirmClick()"
class="confirm">
<htk-icon <htk-icon
icon="ok" name="done"
theme="dark" theme="dark"
alt="_Confirm"/> alt="_Confirm"/>
</button> </button>
<div class="clear"/>
</div> </div>
</div> </div>
</htk-popup> </htk-popup>

View File

@ -11,7 +11,7 @@ AddressQuestion: On vols rebre la comanda?
AddressQuestionPickup: A què direcció vols associar la comanda? (Opcional) AddressQuestionPickup: A què direcció vols associar la comanda? (Opcional)
AgencyQuestion: Com vols rebre la comanda? AgencyQuestion: Com vols rebre la comanda?
PickupWarehouseQuestion: En quin magatzem vols recollir la comanda? PickupWarehouseQuestion: En quin magatzem vols recollir la comanda?
ConfirmToAccessCatalog: Confirma les dades per accedir al catàleg ConfirmData: Confirma les dades
Arrival: Arribada Arrival: Arribada
Pickup: Recollida Pickup: Recollida
Agency: Agència Agency: Agència

View File

@ -11,7 +11,7 @@ AddressQuestion: Where do you want to receive the order?
AddressQuestionPickup: To which address do you want to associate the order? (Optional) AddressQuestionPickup: To which address do you want to associate the order? (Optional)
AgencyQuestion: How you want to receive the order? AgencyQuestion: How you want to receive the order?
PickupWarehouseQuestion: What store you want to pickup your order? PickupWarehouseQuestion: What store you want to pickup your order?
ConfirmToAccessCatalog: Confirm the data to access the catalog ConfirmData: Confirm the data
Arrival: Arrival Arrival: Arrival
Pickup: Pickup Pickup: Pickup
Agency: Agency Agency: Agency

View File

@ -11,7 +11,7 @@ AddressQuestion: ¿Dónde quieres recibir el pedido?
AddressQuestionPickup: ¿A qué dirección quieres asociar el pedido? (Opcional) AddressQuestionPickup: ¿A qué dirección quieres asociar el pedido? (Opcional)
AgencyQuestion: ¿Cómo quieres recibir el pedido? AgencyQuestion: ¿Cómo quieres recibir el pedido?
PickupWarehouseQuestion: ¿En qué almacén quieres recoger el pedido? PickupWarehouseQuestion: ¿En qué almacén quieres recoger el pedido?
ConfirmToAccessCatalog: Confirma los datos para acceder al catálogo ConfirmData: Confirma los datos
Arrival: Llegada Arrival: Llegada
Pickup: Recogida Pickup: Recogida
Agency: Agencia Agency: Agencia

View File

@ -11,7 +11,7 @@ AddressQuestion: Adresse livraison?
AddressQuestionPickup: À quelle adresse voulez-vous associer la commande? (Optionnel) AddressQuestionPickup: À quelle adresse voulez-vous associer la commande? (Optionnel)
AgencyQuestion: Agence de livraison AgencyQuestion: Agence de livraison
PickupWarehouseQuestion: Dans quel magasin vuoulez-vous retirer votre commande? PickupWarehouseQuestion: Dans quel magasin vuoulez-vous retirer votre commande?
ConfirmToAccessCatalog: Confirmez les coordonnées pour accéder au catalogue ConfirmData: Confirmez les coordonnées
Arrival: Arrivée Arrival: Arrivée
Pickup: Retrait Pickup: Retrait
Agency: Agence Agency: Agence

View File

@ -11,7 +11,7 @@ AddressQuestion: Onde queres receber a encomenda?
AddressQuestionPickup: Para qual endereço deseja associar o pedido? (Opcional) AddressQuestionPickup: Para qual endereço deseja associar o pedido? (Opcional)
AgencyQuestion: Como queres receber a encomenda? AgencyQuestion: Como queres receber a encomenda?
PickupWarehouseQuestion: Em qual armazém queres levantar a encomenda? PickupWarehouseQuestion: Em qual armazém queres levantar a encomenda?
ConfirmToAccessCatalog: Confirme os dados para entrar no catálogo ConfirmData: Confirme os dados
Arrival: Chegada Arrival: Chegada
Pickup: Recolhida Pickup: Recolhida
Agency: Agência Agency: Agência

View File

@ -1,89 +1,54 @@
.checkout
{ .checkout .bar {
padding: 1em; margin-bottom: 16px;
max-width: 40em;
margin: 0 auto;
}
.checkout .bar
{
margin-bottom: 1em;
}
.checkout .form
{
max-width: 40em;
padding: 4em 2em;
} }
/* Step */ /* Step */
.answers button, .answers button,
.answers p, .answers p,
.radio > div .radio > div {
{ font-size: 1.2em;
}
.answers .htk-select {
max-width: 15em;
margin: 0 auto;
font-size: 1.4em; font-size: 1.4em;
} }
.answers .htk-select .answers p {
{
max-width: 10em;
display: block;
margin: 0 auto;
font-size: 1.6em;
height: 1.8em;
}
.answers p
{
margin: 0.3em 0; margin: 0.3em 0;
} }
.target .target {
{
max-width: 28em; max-width: 28em;
margin: 0 auto; margin: 0 auto;
} }
.address .address {
{
border-radius: 0.1em; border-radius: 0.1em;
padding: 0.6em 1.4em; padding: 0.6em 1.4em;
} }
.address.selected .address.selected {
{
background-color: rgba(1, 1, 1, .1); background-color: rgba(1, 1, 1, .1);
} }
.address:hover .address:hover {
{
cursor: pointer; cursor: pointer;
background-color: rgba(1, 1, 1, .05); background-color: rgba(1, 1, 1, .05);
} }
.address p.consignee .address p.consignee {
{
font-weight: bold; font-weight: bold;
} }
.radio .radio {
{
max-width: 20em; max-width: 20em;
margin: 0 auto; margin: 0 auto;
} }
.radio > div .radio > div {
{
padding: 0.5em; padding: 0.5em;
border-top: 1px solid #AAA;
} }
.radio > div:first-child .thin-calendar {
{
border-top: none;
}
.thin-calendar
{
width: inherit;
max-width: 24em; max-width: 24em;
margin: 0 auto; margin: 0 auto;
box-shadow: 0 0.1em 0.3em #ccc; box-shadow: none;
} }
.thin-calendar tr > th .htk-assistant .thin {
{
color: white;
}
.htk-assistant .thin
{
float: right; float: right;
} }

View File

@ -68,12 +68,13 @@
on-click="onCancelClick"/> on-click="onCancelClick"/>
</div> </div>
<div id="form" class="checkout"> <div id="form" class="checkout">
<div class="vn-w-sm">
<div class="box bar"> <div class="box bar">
<htk-assistant-bar <htk-assistant-bar
id="assistant-bar" id="assistant-bar"
assistant="assistant"/> assistant="assistant"/>
</div> </div>
<div class="box"> <div class="box vn-px-lg vn-py-xl">
<div class="form"> <div class="form">
<htk-assistant id="assistant" <htk-assistant id="assistant"
endFunc="onConfirmClick"> endFunc="onConfirmClick">
@ -174,7 +175,7 @@
</htk-step> </htk-step>
<htk-step <htk-step
name="confirm-delivery"> name="confirm-delivery">
<h2><t>ConfirmToAccessCatalog</t></h2> <h2><t>ConfirmData</t></h2>
<div class="answers target"> <div class="answers target">
<p> <p>
<t>Arrival</t> <t>Arrival</t>
@ -192,7 +193,7 @@
</htk-step> </htk-step>
<htk-step <htk-step
name="confirm-pickup"> name="confirm-pickup">
<h2><t>ConfirmToAccessCatalog</t></h2> <h2><t>ConfirmData</t></h2>
<div class="answers target"> <div class="answers target">
<p> <p>
<t>Pickup</t> <t>Pickup</t>
@ -208,5 +209,6 @@
</htk-assistant> </htk-assistant>
</div> </div>
</div> </div>
</div>
</div> </div>
</vn> </vn>

View File

@ -1,24 +1,11 @@
.confirm
{ .confirm .summary {
padding: 1em; margin-bottom: 16px;
max-width: 30em;
margin: 0 auto;
color: #555;
} }
.confirm .box .confirm .address {
{
padding: 2.2em 2.5em;
}
.confirm .summary
{
margin-bottom: 1em;
}
.confirm .address
{
margin-top: .8em; margin-top: .8em;
} }
.confirm h2 .confirm h2 {
{
font-size: 1.1em; font-size: 1.1em;
font-weight: normal; font-weight: normal;
padding: 0; padding: 0;
@ -26,61 +13,48 @@
margin-bottom: .5em; margin-bottom: .5em;
color: #333; color: #333;
} }
.confirm button .confirm button {
{
font-size: 1.4em; font-size: 1.4em;
} }
.confirm p .confirm p {
{
margin: .2em 0; margin: .2em 0;
} }
.confirm .modify-order .confirm .modify-order {
{
float: left; float: left;
} }
.confirm .confirm-order .confirm .confirm-order {
{
float: right; float: right;
} }
.confirm .payment > div .confirm .payment > div {
{
margin-bottom: 1.4em; margin-bottom: 1.4em;
} }
.confirm .payment > .button-bar .confirm .payment > .button-bar {
{
margin: 0; margin: 0;
margin-top: 1.8em; margin-top: 1.8em;
} }
/* Table */ /* Table */
.confirm .debt-info .confirm .debt-info {
{
padding: 0; padding: 0;
} }
.confirm .debt-info > table .confirm .debt-info > table {
{
border-collapse: collapse; border-collapse: collapse;
} }
.confirm td .confirm td {
{
padding: .15em 0; padding: .15em 0;
} }
.confirm .sum-total > td .confirm .sum-total > td {
{
border-top: solid 1px #DDD; border-top: solid 1px #DDD;
font-weight: bold; font-weight: bold;
} }
.confirm .currency .confirm .currency {
{
text-align: right; text-align: right;
} }
.confirm .credit-info .confirm .credit-info {
{
display: none; display: none;
} }
.confirm .exceeded-info .confirm .exceeded-info {
{
display: none; display: none;
color: #E53935; color: #E53935;
} }
@ -88,34 +62,27 @@
/* Pay */ /* Pay */
.confirm .amount-selector, .confirm .amount-selector,
.confirm .pay-methods > div .confirm .pay-methods > div {
{
display: none; display: none;
} }
.confirm .pay-methods > div .confirm .pay-methods > div {
{
margin: .3em 0; margin: .3em 0;
} }
.confirm .pay-methods > div > label > input[type=radio] .confirm .pay-methods > div > label > input[type=radio] {
{
margin: 0; margin: 0;
margin-right: .5em; margin-right: .5em;
vertical-align: middle; vertical-align: middle;
} }
.confirm .pay-methods > div > div .confirm .pay-methods > div > div {
{
padding: .5em 1.5em; padding: .5em 1.5em;
display: none; display: none;
} }
.confirm .pay-methods > div.selected > div .confirm .pay-methods > div.selected > div {
{
display: block; display: block;
} }
.confirm .transfer-account .confirm .transfer-account {
{
margin-top: .5em; margin-top: .5em;
} }
.confirm .transfer-account > p .confirm .transfer-account > p {
{
margin: .1em 0; margin: .1em 0;
} }

View File

@ -30,7 +30,8 @@
<h1><t>Order summary</t></h1> <h1><t>Order summary</t></h1>
</div> </div>
<div id="form" class="confirm"> <div id="form" class="confirm">
<div class="box summary"> <div class="vn-w-sm">
<div class="box vn-pa-lg summary">
<div> <div>
<div class="delivery"> <div class="delivery">
<p> <p>
@ -56,7 +57,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="box payment"> <div class="box vn-pa-lg payment">
<div> <div>
<table class="debt-info"> <table class="debt-info">
<tbody> <tbody>
@ -207,6 +208,7 @@
<div class="clear"/> <div class="clear"/>
</div> </div>
</div> </div>
</div>
</div> </div>
<htk-dialog <htk-dialog
id="success-dialog" id="success-dialog"

View File

@ -1,14 +0,0 @@
.invoices
{
padding: 1em;
}
.invoices .box
{
max-width: 40em;
}
.invoices .box > .header,
.invoices .htk-grid > thead > tr
{
background-color: #3F51B6;
}

View File

@ -3,9 +3,9 @@
<h1><t>Invoices</t></h1> <h1><t>Invoices</t></h1>
</div> </div>
<div id="form" class="invoices"> <div id="form" class="invoices">
<div class="box"> <htk-grid
<div> class="box vn-w-sm"
<htk-grid show-header="false"> show-header="false">
<db-model property="model" id="tickets"> <db-model property="model" id="tickets">
SELECT id, ref, issued, amount, hasPdf SELECT id, ref, issued, amount, hasPdf
FROM myInvoice FROM myInvoice
@ -19,7 +19,5 @@
renderer="donwloadRenderer" renderer="donwloadRenderer"
target="_blank"/> target="_blank"/>
</htk-grid> </htk-grid>
</div>
</div>
</div> </div>
</vn> </vn>

View File

@ -1,73 +1,36 @@
.orders
{
padding: 1em;
}
.orders .box
{
max-width: 25em;
}
/* Balance */ .balance {
.balance
{
margin-top: 1.2em;
margin-right: .5em; margin-right: .5em;
} }
.balance > * .balance > * {
{
vertical-align: middle; vertical-align: middle;
} }
.balance > .amount .balance > .amount {
{
color: white; color: white;
padding: 0.3em; padding: 0.3em;
} }
.balance > .info .balance > .info {
{
display: inline; display: inline;
cursor: pointer; cursor: pointer;
height: 1.2em; height: 1.2em;
cursor: pointer; cursor: pointer;
} }
.balance > .negative .balance > .negative {
{
background-color: #EF5350; background-color: #EF5350;
border-radius: 0.1em; border-radius: 0.1em;
box-shadow: 0 0 0.4em #666; box-shadow: 0 0 0.4em #666;
} }
.balance-popup .balance-popup {
{
width: 25em; width: 25em;
} }
.balance-grid .balance-grid {
{
width: 100%; width: 100%;
margin: auto; margin: auto;
} }
/* List */ /* List */
.orders .item .orders .htk-list .total {
{
display: block;
padding: 1em;
border-bottom: 1px solid #DDD;
}
.orders .item:hover
{
background-color: rgba(1, 1, 1, 0.05);
}
.orders .item > p
{
margin: .1em 0;
}
.orders .item > p.important
{
font-size: 1.2em;
}
.orders .item > p.total
{
float: right; float: right;
} }

View File

@ -3,17 +3,6 @@
<h1><t>LastOrders</t></h1> <h1><t>LastOrders</t></h1>
</div> </div>
<div id="actions"> <div id="actions">
<htk-bar-button
icon="basket"
tip="_ShoppingBasket"
show-text="false"
on-click="onBasketClick"/>
<htk-bar-button
id="pay-button"
icon="pay"
tip="_MakePayment"
show-text="false"
on-click="onPayButtonClick"/>
<div class="balance"> <div class="balance">
<span class="label"> <span class="label">
<t>Balance:</t> <t>Balance:</t>
@ -38,37 +27,42 @@
class="info" class="info"
alt="Info"/> alt="Info"/>
</div> </div>
<htk-bar-button
id="pay-button"
icon="payments"
tip="_MakePayment"
on-click="onPayButtonClick"/>
<htk-bar-button
icon="shopping_cart"
tip="_ShoppingBasket"
on-click="onBasketClick"/>
</div> </div>
<div id="form" class="orders"> <div id="form" class="orders">
<div class="box confirmed"> <htk-repeater
<htk-repeater form-id="iter" renderer="repeaterFunc"> class="htk-list box confirmed vn-w-sm"
form-id="iter"
renderer="repeaterFunc">
<db-model property="model" id="tickets"> <db-model property="model" id="tickets">
<custom> <custom>
CALL myTicket_list (NULL, NULL); CALL myTicket_list (NULL, NULL);
</custom> </custom>
</db-model> </db-model>
<custom> <custom>
<a id="link" class="item" title="_SeeOrder"> <a id="link" class="item" title="{{_('SeeOrder')}}">
<div class="content">
<p class="important total"> <p class="important total">
<htk-text form="iter" column="total" format="%.2d€"/> {{Vn.Value.format(iter.total, '%.2d€')}}
</p> </p>
<p class="important"> <p class="important">
<htk-text form="iter" column="landed" format="%D"/> {{Vn.Value.format(iter.landed, '%D')}}
</p> </p>
<p> <p>#{{iter.id}}</p>
#<htk-text form="iter" column="id"/> <p>{{iter.nickname}}</p>
</p> <p>{{iter.agency}}</p>
<p> </div>
<htk-text form="iter" column="nickname"/>
</p>
<p>
<htk-text form="iter" column="agency"/>
</p>
<div class="clear"/>
</a> </a>
</custom> </custom>
</htk-repeater> </htk-repeater>
</div>
</div> </div>
<htk-dialog <htk-dialog
id="error-dialog" id="error-dialog"

View File

@ -1,4 +1,6 @@
OrderDetail: Detall de l'encarrec OrderDetail: Detall de l'encarrec
ShippingInformation: Dades d'enviament
DeliveryAddress: Adreça de lliurament
Print delivery note: Imprimir albarà Print delivery note: Imprimir albarà
Agency: Agència Agency: Agència
Warehouse: Magatzem Warehouse: Magatzem

View File

@ -1,4 +1,6 @@
OrderDetail: Order detail OrderDetail: Order detail
ShippingInformation: Shipping information
DeliveryAddress: Delivery address
Print delivery note: Print delivery note Print delivery note: Print delivery note
Agency: Agency Agency: Agency
Warehouse: Store Warehouse: Store

View File

@ -1,4 +1,6 @@
OrderDetail: Detalle del pedido OrderDetail: Detalle del pedido
ShippingInformation: Datos de envío
DeliveryAddress: Dirección de entrega
Print delivery note: Imprimir albarán Print delivery note: Imprimir albarán
Agency: Agencia Agency: Agencia
Warehouse: Almacén Warehouse: Almacén

View File

@ -1,4 +1,6 @@
OrderDetail: Détails de la commande OrderDetail: Détails de la commande
ShippingInformation: Informations sur la livraison
DeliveryAddress: Addresse de livraison
Print delivery note: Imprimer bulletin de livraison Print delivery note: Imprimer bulletin de livraison
Agency: Agence Agency: Agence
Warehouse: Entrepôt Warehouse: Entrepôt

View File

@ -1,4 +1,6 @@
OrderDetail: Detalhes da encomenda OrderDetail: Detalhes da encomenda
ShippingInformation: Dados de envio
DeliveryAddress: Endereço de entrega
Print delivery note: Imprimir nota de entrega Print delivery note: Imprimir nota de entrega
Agency: Agência Agency: Agência
Warehouse: Armazém Warehouse: Armazém

View File

@ -1,47 +1,29 @@
.ticket
{
padding: 1em;
}
.ticket .box
{
max-width: 30em;
margin: 0 auto;
padding: 2em;
color: #333;
}
/* Header */ /* Header */
.ticket .head .ticket .head {
{
padding: 0; padding: 0;
padding-bottom: .2em; padding-bottom: .2em;
border-bottom: 1px solid #DDD; border-bottom: 1px solid #DDD;
margin-bottom: 1em; margin-bottom: 1em;
} }
.ticket .address, .ticket .head > div > div {
.ticket .total margin: 15px 0;
{
margin-top: .8em;
} }
.ticket .head > div .ticket .head > div > div:first-child {
{ margin: 0;
padding-bottom: .8em;
} }
.ticket .head p .ticket .head p {
{ margin: .2em 0;
margin: .2em;
} }
.ticket .head p.important .ticket .head p.important {
{ font-size: 1.2rem;
font-size: 1.4em; font-weight: bold;
} }
.ticket .total .ticket .total {
{
text-align: right; text-align: right;
} }
.ticket .packages .ticket .packages {
{
margin-top: 1em; margin-top: 1em;
padding-top: 1em; padding-top: 1em;
border-top: 1px solid #DDD; border-top: 1px solid #DDD;
@ -50,47 +32,42 @@
/* Lines */ /* Lines */
.ticket .line .ticket .line {
{ display: flex;
padding: .5em 0; gap: 20px;
margin: 24px 0;
height: 65px;
} }
.ticket .line > .photo .ticket .line:last-child {
{ margin-bottom: 0;
margin-right: 1em; }
float: left; .ticket .line > .photo {
flex: none;
border-radius: 50%; border-radius: 50%;
height: 4.25em; width: 65px;
width: 4.25em;
} }
.ticket .line > .info .ticket .line > .info {
{ flex: 1;
margin-left: 5.25em;
} }
.ticket .line > .info > h2 .ticket .line > .info > h2 {
{
font-size: 1em; font-size: 1em;
font-weight: normal; font-weight: normal;
padding: 0; padding: 0;
padding-bottom: .1em; padding-bottom: .1em;
} }
.ticket .line > .info > p .ticket .line > .info > p {
{
margin: 0; margin: 0;
} }
.ticket .line > .info > .tags .ticket .line > .info > .tags {
{
color: #777; color: #777;
} }
.ticket .line > .info .discount .ticket .line > .info .discount {
{
color: green; color: green;
} }
.ticket .line > .info > .amount .ticket .line > .info > .amount {
{
float: left; float: left;
} }
.ticket .line > .info > .subtotal .ticket .line > .info > .subtotal {
{
float: right; float: right;
} }

View File

@ -23,12 +23,11 @@
on-click="onPrintClick"/> on-click="onPrintClick"/>
</div> </div>
<div id="form" class="ticket"> <div id="form" class="ticket">
<div class="box"> <div class="box vn-w-sm vn-pa-lg">
<htk-loader class="head" form="ticket"> <htk-loader class="head" form="ticket">
<h5>#<htk-text column="id" form="ticket"/></h5>
<div> <div>
<p class="important ticket-id"> <h6><t>ShippingInformation</t></h6>
#<htk-text column="id" form="ticket"/>
</p>
<p> <p>
<t>Preparation</t> <htk-text form="ticket" column="shipped" format="%D"/> <t>Preparation</t> <htk-text form="ticket" column="shipped" format="%D"/>
</p> </p>
@ -40,6 +39,7 @@
</p> </p>
</div> </div>
<div class="address"> <div class="address">
<h6><t>DeliveryAddress</t></h6>
<p> <p>
<htk-text form="ticket" column="nickname"/> <htk-text form="ticket" column="nickname"/>
</p> </p>
@ -101,7 +101,6 @@
<htk-text id="subtotal" format="%.2d€"/> <htk-text id="subtotal" format="%.2d€"/>
</p> </p>
</div> </div>
<div class="clear"/>
</div> </div>
</custom> </custom>
</htk-repeater> </htk-repeater>

View File

@ -54,9 +54,9 @@ Hedera.New = new Class({
this.editor.setContent(newHtml); this.editor.setContent(newHtml);
}, },
onStatusChange: function(form) { onStatusChange: function() {
if (this.$('new-id').value == 0) if (this.$('new-id').value == 0)
form.insertRow(); this.$('iter').insertRow();
}, },
onOperationsDone: function() { onOperationsDone: function() {

View File

@ -1,24 +1,4 @@
.new .new textarea {
{ min-height: 500px;
padding: 1em;
} }
.new .box
{
max-width: 38em;
padding: 2em;
}
/* Form */
.new textarea
{
min-height: 20em;
}
.new .foot
{
text-align: center;
margin-top: 1em;
}

View File

@ -2,12 +2,12 @@
<vn-group> <vn-group>
<vn-param id="new-id"/> <vn-param id="new-id"/>
<vn-hash-param key="new" param="new-id"/> <vn-hash-param key="new" param="new-id"/>
<db-form id="iter" on-status-changed="onStatusChange"> <db-form id="iter" on-status-changed="this.onStatusChange()">
<db-model <db-model
id="model" id="model"
property="model" property="model"
updatable="true" updatable="true"
on-operations-done="onOperationsDone"> on-operations-done="this.onOperationsDone()">
<custom> <custom>
SELECT id, title, text, tag, priority SELECT id, title, text, tag, priority
FROM news WHERE id = #new FROM news WHERE id = #new
@ -19,24 +19,23 @@
</sql-batch> </sql-batch>
</db-model> </db-model>
</db-form> </db-form>
<db-param form="iter" column="text" on-changed="onBodyChange"/> <db-param form="iter" column="text" on-changed="this.onBodyChange()"/>
</vn-group> </vn-group>
<div id="title"> <div id="title">
<h1><t>AddEditNew</t></h1> <h1><t>AddEditNew</t></h1>
</div> </div>
<div id="actions"> <div id="actions">
<htk-bar-button
icon="ok"
tip="_Accept"
on-click="onAcceptClick"/>
<htk-bar-button <htk-bar-button
icon="close" icon="close"
tip="_Return" tip="_Return"
on-click="onReturnClick"/> on-click="this.onReturnClick()"/>
<htk-bar-button
icon="check"
tip="_Accept"
on-click="this.onAcceptClick()"/>
</div> </div>
<div id="form" class="new"> <div id="form" class="new">
<div class="box"> <div class="box form vn-w-sm vn-pa-lg">
<div class="form">
<div class="form-group"> <div class="form-group">
<label><t>Title</t></label> <label><t>Title</t></label>
<htk-entry form="iter" column="title"/> <htk-entry form="iter" column="title"/>
@ -61,6 +60,5 @@
<textarea id="html-editor"/> <textarea id="html-editor"/>
</div> </div>
</div> </div>
</div>
</div> </div>
</vn> </vn>

View File

@ -1,30 +1,25 @@
Hedera.News = new Class Hedera.News = new Class({
({
Extends: Hedera.Form Extends: Hedera.Form
,editNew: function (newId) ,editNew: function(newId) {
{ this.hash.set({
this.hash.set ({ form: 'news/new',
'form': 'news/new' new: newId
,'new': newId
}); });
} }
,onEditClick: function (button, form) ,onEditClick: function(newId) {
{ this.editNew(newId);
this.editNew (button.value);
} }
,onDeleteClick: function (button, form) ,onDeleteClick: function(form) {
{ if (confirm(_('ReallyDelete')))
if (confirm (_('ReallyDelete'))) form.deleteRow();
form.deleteRow ();
} }
,onAddClick: function () ,onAddClick: function() {
{ this.editNew(0);
this.editNew (0);
} }
}); });

Some files were not shown because too many files have changed in this diff Show More