forked from verdnatura/hedera-web
Traducciones actualizadas, más funcionalidad para informes, archivos obsoletos eliminados del proyecto
This commit is contained in:
parent
0cf90bb53e
commit
4b015714c0
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Vn.AddressList = new Class
|
Vn.AddressList = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
|
|
||||||
,activate: function ()
|
,activate: function ()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Vn.Address = new Class
|
Vn.Address = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
|
|
||||||
,activate: function ()
|
,activate: function ()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Vn.Conf = new Class
|
Vn.Conf = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
|
|
||||||
,activate: function ()
|
,activate: function ()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,19 +1,23 @@
|
||||||
<vn>
|
<vn>
|
||||||
<vn-group>
|
<vn-group>
|
||||||
<db-form id="user-form">
|
<db-form id="user-form">
|
||||||
<db-model id="user-model" updatable="true">
|
<db-model property="model" id="user-model" updatable="true">
|
||||||
SELECT id, u.name, email, mail, c.user_id, c.default_address
|
<custom>
|
||||||
FROM user_view u
|
SELECT id, u.name, email, mail, c.user_id, c.default_address
|
||||||
LEFT JOIN customer_view c
|
FROM user_view u
|
||||||
ON u.id = c.user_id
|
LEFT JOIN customer_view c
|
||||||
|
ON u.id = c.user_id
|
||||||
|
</custom>
|
||||||
</db-model>
|
</db-model>
|
||||||
</db-form>
|
</db-form>
|
||||||
<db-model id="addresses" updatable="true">
|
<db-model id="addresses" updatable="true">
|
||||||
SELECT a.id, a.consignee, p.name province, a.zip_code, a.city, a.name, a.active, c.Pais country
|
<custom>
|
||||||
FROM address_view a
|
SELECT a.id, a.consignee, p.name province, a.zip_code, a.city, a.name, a.active, c.Pais country
|
||||||
LEFT JOIN vn2008.province p ON a.province_id = p.province_id
|
FROM address_view a
|
||||||
JOIN vn2008.Paises c ON c.Id = p.Paises_Id
|
LEFT JOIN vn2008.province p ON a.province_id = p.province_id
|
||||||
WHERE active != FALSE
|
JOIN vn2008.Paises c ON c.Id = p.Paises_Id
|
||||||
|
WHERE active != FALSE
|
||||||
|
</custom>
|
||||||
</db-model>
|
</db-model>
|
||||||
</vn-group>
|
</vn-group>
|
||||||
<div id="title">
|
<div id="title">
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
Vn.AccessLog = new Class
|
Vn.AccessLog = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
|
||||||
|
Vn.Items = new Class
|
||||||
|
({
|
||||||
|
Extends: Vn.Form
|
||||||
|
|
||||||
|
,activate: function ()
|
||||||
|
{
|
||||||
|
this.$('warehouse').value = 7;
|
||||||
|
this.$('realm').value = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
,onPreviewClick: function ()
|
||||||
|
{
|
||||||
|
var batch = new Sql.Batch ();
|
||||||
|
batch.addValues ({
|
||||||
|
'warehouse': this.$('warehouse').value
|
||||||
|
,'realm': this.$('realm').value
|
||||||
|
,'rate': this.$('rate').value
|
||||||
|
});
|
||||||
|
this.gui.openReport ('items-report', batch);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
|
||||||
|
.items
|
||||||
|
{
|
||||||
|
padding: 1em;
|
||||||
|
}
|
||||||
|
.items .box
|
||||||
|
{
|
||||||
|
max-width: 40em;
|
||||||
|
padding: 2em;
|
||||||
|
}
|
||||||
|
.items .body
|
||||||
|
{
|
||||||
|
max-width: 20em;
|
||||||
|
margin: auto;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
.items .form-group
|
||||||
|
{
|
||||||
|
padding: 0.4em;
|
||||||
|
}
|
||||||
|
.items form label
|
||||||
|
{
|
||||||
|
display: block;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
.items input[type=text],
|
||||||
|
.items select
|
||||||
|
{
|
||||||
|
margin: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Footer */
|
||||||
|
|
||||||
|
.items .footer
|
||||||
|
{
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 1.5em;
|
||||||
|
}
|
||||||
|
.items .footer > button
|
||||||
|
{
|
||||||
|
margin: 0 .2em;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
<vn>
|
||||||
|
<div id="title">
|
||||||
|
<h1><t>Item list</t></h1>
|
||||||
|
</div>
|
||||||
|
<div id="form" class="items">
|
||||||
|
<div class="box">
|
||||||
|
<div class="body">
|
||||||
|
<div class="form-group">
|
||||||
|
<label><t>Store</t></label>
|
||||||
|
<htk-combo>
|
||||||
|
<vn-param property="param" id="warehouse"/>
|
||||||
|
<db-model property="model">
|
||||||
|
<custom>
|
||||||
|
SELECT id, name FROM vn2008.warehouse
|
||||||
|
WHERE reserve ORDER BY name
|
||||||
|
</custom>
|
||||||
|
</db-model>
|
||||||
|
</htk-combo>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label><t>Realm</t></label>
|
||||||
|
<htk-combo not-null="false">
|
||||||
|
<vn-param property="param" id="realm"/>
|
||||||
|
<db-model property="model">
|
||||||
|
<custom>
|
||||||
|
SELECT id, reino FROM vn2008.reinos
|
||||||
|
WHERE display != FALSE ORDER BY reino
|
||||||
|
</custom>
|
||||||
|
</db-model>
|
||||||
|
</htk-combo>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label><t>Rate</t></label>
|
||||||
|
<select id="rate">
|
||||||
|
<option>3</option>
|
||||||
|
<option>2</option>
|
||||||
|
<option>1</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
<button class="thin" on-click="onPreviewClick">
|
||||||
|
<t>Preview</t>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</vn>
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Vn.Links = new Class
|
Vn.Links = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
|
|
||||||
,activate: function ()
|
,activate: function ()
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,9 +5,11 @@
|
||||||
<div id="form" class="cpanel">
|
<div id="form" class="cpanel">
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<htk-grid show-header="false">
|
<htk-grid show-header="false">
|
||||||
<db-model>
|
<db-model property="model">
|
||||||
SELECT image, name, description, link FROM link
|
<custom>
|
||||||
ORDER BY name
|
SELECT image, name, description, link FROM link
|
||||||
|
ORDER BY name
|
||||||
|
</custom>
|
||||||
</db-model>
|
</db-model>
|
||||||
<htk-column-image directory="link" subdir="full" column="image"/>
|
<htk-column-image directory="link" subdir="full" column="image"/>
|
||||||
<htk-column-link column="name" target="\_blank" id="column-link"/>
|
<htk-column-link column="name" target="\_blank" id="column-link"/>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Vn.Photos = new Class
|
Vn.Photos = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
|
|
||||||
,activate: function ()
|
,activate: function ()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Vn.Shelves = new Class
|
Vn.Shelves = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
|
|
||||||
,activate: function ()
|
,activate: function ()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
<vn>
|
<vn>
|
||||||
<vn-group>
|
<vn-group>
|
||||||
<db-model property="model" id="configs-model">
|
<db-model property="model" id="configs-model">
|
||||||
SELECT c.id, c.name, c.name_prefix, c.warehouse_id, c.family_id,
|
<custom>
|
||||||
c.shelf_id, c.max_amount, c.show_packing, c.stack, t.reino_id
|
SELECT c.id, c.name, c.name_prefix, c.warehouse_id, c.family_id,
|
||||||
FROM shelf_config c
|
c.shelf_id, c.max_amount, c.show_packing, c.stack, t.reino_id
|
||||||
JOIN vn2008.Tipos t ON t.tipo_id = c.family_id
|
FROM shelf_config c
|
||||||
|
JOIN vn2008.Tipos t ON t.tipo_id = c.family_id
|
||||||
|
</custom>
|
||||||
</db-model>
|
</db-model>
|
||||||
</vn-group>
|
</vn-group>
|
||||||
<div id="title">
|
<div id="title">
|
||||||
|
@ -30,8 +32,10 @@
|
||||||
<label><t>Reign</t></label>
|
<label><t>Reign</t></label>
|
||||||
<htk-combo id="reign">
|
<htk-combo id="reign">
|
||||||
<db-model property="model" id="reigns">
|
<db-model property="model" id="reigns">
|
||||||
SELECT id, reino FROM vn2008.reinos
|
<custom>
|
||||||
WHERE display != FALSE ORDER BY reino
|
SELECT id, reino FROM vn2008.reinos
|
||||||
|
WHERE display != FALSE ORDER BY reino
|
||||||
|
</custom>
|
||||||
</db-model>
|
</db-model>
|
||||||
</htk-combo>
|
</htk-combo>
|
||||||
</div>
|
</div>
|
||||||
|
@ -39,10 +43,14 @@
|
||||||
<label><t>Family</t></label>
|
<label><t>Family</t></label>
|
||||||
<htk-combo id="family">
|
<htk-combo id="family">
|
||||||
<db-model property="model">
|
<db-model property="model">
|
||||||
SELECT tipo_id, Tipo FROM vn2008.Tipos
|
<custom>
|
||||||
WHERE reino_id = #reign ORDER BY Tipo
|
SELECT tipo_id, Tipo FROM vn2008.Tipos
|
||||||
|
WHERE reino_id = #reign ORDER BY Tipo
|
||||||
|
</custom>
|
||||||
<sql-batch property="batch">
|
<sql-batch property="batch">
|
||||||
<item name="reign" param="reign"/>
|
<custom>
|
||||||
|
<item name="reign" param="reign"/>
|
||||||
|
</custom>
|
||||||
</sql-batch>
|
</sql-batch>
|
||||||
</db-model>
|
</db-model>
|
||||||
</htk-combo>
|
</htk-combo>
|
||||||
|
@ -51,8 +59,10 @@
|
||||||
<label><t>Store</t></label>
|
<label><t>Store</t></label>
|
||||||
<htk-combo id="warehouse">
|
<htk-combo id="warehouse">
|
||||||
<db-model property="model" id="warehouses">
|
<db-model property="model" id="warehouses">
|
||||||
SELECT id, name FROM vn2008.warehouse
|
<custom>
|
||||||
WHERE reserve ORDER BY name
|
SELECT id, name FROM vn2008.warehouse
|
||||||
|
WHERE reserve ORDER BY name
|
||||||
|
</custom>
|
||||||
</db-model>
|
</db-model>
|
||||||
</htk-combo>
|
</htk-combo>
|
||||||
</div>
|
</div>
|
||||||
|
@ -60,7 +70,9 @@
|
||||||
<label><t>Shelf</t></label>
|
<label><t>Shelf</t></label>
|
||||||
<htk-combo id="shelf">
|
<htk-combo id="shelf">
|
||||||
<db-model property="model" id="shelves">
|
<db-model property="model" id="shelves">
|
||||||
SELECT id, name FROM shelf
|
<custom>
|
||||||
|
SELECT id, name FROM shelf
|
||||||
|
</custom>
|
||||||
</db-model>
|
</db-model>
|
||||||
</htk-combo>
|
</htk-combo>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Vn.Users = new Class
|
Vn.Users = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
|
|
||||||
,onChangeUserClick: function (column, value)
|
,onChangeUserClick: function (column, value)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Vn.Visits = new Class
|
Vn.Visits = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
|
|
||||||
,activate: function ()
|
,activate: function ()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Vn.Packages = new Class
|
Vn.Packages = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
|
|
||||||
,onShowClick: function (column, agencyId)
|
,onShowClick: function (column, agencyId)
|
||||||
{
|
{
|
||||||
|
|
|
@ -6,7 +6,9 @@
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<htk-grid>
|
<htk-grid>
|
||||||
<db-model property="model">
|
<db-model property="model">
|
||||||
CALL vn2008.agencia_volume ()
|
<custom>
|
||||||
|
CALL vn2008.agencia_volume ()
|
||||||
|
</custom>
|
||||||
</db-model>
|
</db-model>
|
||||||
<htk-column-button
|
<htk-column-button
|
||||||
column="agency_id"
|
column="agency_id"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
Vn.Provinces = new Class
|
Vn.Provinces = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
<vn>
|
<vn>
|
||||||
<vn-group>
|
<vn-group>
|
||||||
<vn-hash-param key="agency">
|
<vn-param id="agency"/>
|
||||||
<vn-param id="agency"/>
|
<vn-hash-param key="agency" param="agency"/>
|
||||||
</vn-hash-param>
|
|
||||||
</vn-group>
|
</vn-group>
|
||||||
<div id="title">
|
<div id="title">
|
||||||
<h1><t>ByProvince</t></h1>
|
<h1><t>ByProvince</t></h1>
|
||||||
|
@ -10,10 +9,14 @@
|
||||||
<div id="form" class="provinces">
|
<div id="form" class="provinces">
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<htk-grid>
|
<htk-grid>
|
||||||
<db-model>
|
<db-model property="model">
|
||||||
CALL vn2008.desglose_volume (#agency)
|
<custom>
|
||||||
|
CALL vn2008.desglose_volume (#agency)
|
||||||
|
</custom>
|
||||||
<sql-batch property="batch">
|
<sql-batch property="batch">
|
||||||
<item name="agency" param="agency"/>
|
<custom>
|
||||||
|
<item name="agency" param="agency"/>
|
||||||
|
</custom>
|
||||||
</sql-batch>
|
</sql-batch>
|
||||||
</db-model>
|
</db-model>
|
||||||
<htk-column-text title="_Province" column="Provincia"/>
|
<htk-column-text title="_Province" column="Provincia"/>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
Vn.About = new Class
|
Vn.About = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Vn.Contact = new Class
|
Vn.Contact = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
|
|
||||||
,activate: function ()
|
,activate: function ()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
Vn.Home = new Class
|
Vn.Home = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ var gmapsIsLoaded = false;
|
||||||
|
|
||||||
Vn.Location = new Class
|
Vn.Location = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
|
|
||||||
,locations: null
|
,locations: null
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
Vn.Training = new Class
|
Vn.Training = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
Vn.Why = new Class
|
Vn.Why = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Vn.Basket = new Class
|
Vn.Basket = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
|
|
||||||
,open: function ()
|
,open: function ()
|
||||||
{
|
{
|
||||||
|
|
|
@ -23,12 +23,14 @@
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<div>
|
<div>
|
||||||
<htk-grid show-header="false">
|
<htk-grid show-header="false">
|
||||||
<db-model id="items" updatable="true">
|
<db-model id="items" property="model" updatable="true">
|
||||||
SELECT i.id, i.amount, i.price, a.Article, a.Categoria,
|
<custom>
|
||||||
a.Medida, a.Tallos, a.Color, o.Abreviatura, a.Foto
|
SELECT i.id, i.amount, i.price, a.Article, a.Categoria,
|
||||||
FROM basket_item i
|
a.Medida, a.Tallos, a.Color, o.Abreviatura, a.Foto
|
||||||
JOIN vn2008.Articles a ON a.Id_Article = i.item_id
|
FROM basket_item i
|
||||||
LEFT JOIN vn2008.Origen o ON a.id_origen = o.id;
|
JOIN vn2008.Articles a ON a.Id_Article = i.item_id
|
||||||
|
LEFT JOIN vn2008.Origen o ON a.id_origen = o.id
|
||||||
|
</custom>
|
||||||
</db-model>
|
</db-model>
|
||||||
<htk-column-image
|
<htk-column-image
|
||||||
column="Foto"
|
column="Foto"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Vn.Catalog = new Class
|
Vn.Catalog = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
|
|
||||||
,_menuShown: false
|
,_menuShown: false
|
||||||
|
|
||||||
|
@ -161,7 +161,7 @@ Vn.Catalog = new Class
|
||||||
var searchTags = this.$('search-entry').value;
|
var searchTags = this.$('search-entry').value;
|
||||||
searchTags = searchTags != '' ? searchTags : undefined;
|
searchTags = searchTags != '' ? searchTags : undefined;
|
||||||
|
|
||||||
var batch = this.$('batch');
|
var batch = this.$('filter-batch');
|
||||||
batch.block ();
|
batch.block ();
|
||||||
|
|
||||||
this.$('search').value = searchTags;
|
this.$('search').value = searchTags;
|
||||||
|
@ -214,11 +214,6 @@ Vn.Catalog = new Class
|
||||||
{
|
{
|
||||||
renderer.subtitle = form.get ('producer');
|
renderer.subtitle = form.get ('producer');
|
||||||
}
|
}
|
||||||
|
|
||||||
,featuresRender: function (renderer, form)
|
|
||||||
{
|
|
||||||
renderer.value = form.get ('Medida') +' '+ form.get ('Categoria') +' '+ form.get ('Color');
|
|
||||||
}
|
|
||||||
|
|
||||||
,amountRender: function (renderer, form)
|
,amountRender: function (renderer, form)
|
||||||
{
|
{
|
||||||
|
@ -347,6 +342,31 @@ Vn.Catalog = new Class
|
||||||
if (this.popup)
|
if (this.popup)
|
||||||
this.popup.reset ();
|
this.popup.reset ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
,onOrderChange: function (e)
|
||||||
|
{
|
||||||
|
var sortField = e.target.value;
|
||||||
|
|
||||||
|
if (sortField)
|
||||||
|
this.$('items-model').sortByName (sortField);
|
||||||
|
}
|
||||||
|
|
||||||
|
,onRemoveFiltersClick: function ()
|
||||||
|
{
|
||||||
|
var batch = this.$('filter-batch');
|
||||||
|
batch.block ();
|
||||||
|
|
||||||
|
this.$('search').value = undefined;
|
||||||
|
this.$('realm').value = undefined;
|
||||||
|
this.$('type').value = undefined;
|
||||||
|
this.$('color').value = undefined;
|
||||||
|
this.$('origin').value = undefined;
|
||||||
|
this.$('category').value = undefined;
|
||||||
|
this.$('producer').value = undefined;
|
||||||
|
|
||||||
|
batch.unblock ();
|
||||||
|
batch.changed ();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Vn.Filter = new Class
|
Vn.Filter = new Class
|
||||||
|
@ -361,6 +381,7 @@ Vn.Filter = new Class
|
||||||
type: Db.Model
|
type: Db.Model
|
||||||
,set: function (x)
|
,set: function (x)
|
||||||
{
|
{
|
||||||
|
x.batch = this._batch;
|
||||||
this._select.model = x;
|
this._select.model = x;
|
||||||
this._model = x;
|
this._model = x;
|
||||||
}
|
}
|
||||||
|
@ -394,6 +415,31 @@ Vn.Filter = new Class
|
||||||
return this._column;
|
return this._column;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
filter:
|
||||||
|
{
|
||||||
|
type: Sql.Filter
|
||||||
|
,set: function (x)
|
||||||
|
{
|
||||||
|
this._filter = x;
|
||||||
|
this._batch.addObject ('filter', x);
|
||||||
|
}
|
||||||
|
,get: function ()
|
||||||
|
{
|
||||||
|
return this._filter;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
disableOperation:
|
||||||
|
{
|
||||||
|
type: Sql.FilterItem
|
||||||
|
,set: function (x)
|
||||||
|
{
|
||||||
|
this._disableFilter = x;
|
||||||
|
}
|
||||||
|
,get: function ()
|
||||||
|
{
|
||||||
|
return this._disableFilter;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
,_columnIndex: 1
|
,_columnIndex: 1
|
||||||
|
@ -410,20 +456,29 @@ Vn.Filter = new Class
|
||||||
|
|
||||||
this._ul = document.createElement ('ul');
|
this._ul = document.createElement ('ul');
|
||||||
this.node.appendChild (this._ul);
|
this.node.appendChild (this._ul);
|
||||||
|
|
||||||
|
this._batch = new Sql.Batch ();
|
||||||
this.parent (props);
|
this.parent (props);
|
||||||
}
|
}
|
||||||
|
|
||||||
,_onClick: function ()
|
,_onClick: function ()
|
||||||
{
|
{
|
||||||
if (this._model && this._model.status === Db.Model.Status.CLEAN)
|
if (this._model && this._model.status === Db.Model.Status.CLEAN)
|
||||||
this._model.refresh ();
|
{
|
||||||
|
this._filter.alwaysReady = true;
|
||||||
|
this._disableFilter.disabled = true;
|
||||||
|
|
||||||
|
this._model.refresh ();
|
||||||
|
|
||||||
|
this._disableFilter.disabled = false;
|
||||||
|
this._filter.alwaysReady = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
,_onCloseClick: function (li)
|
,_onCloseClick: function (li)
|
||||||
{
|
{
|
||||||
Vn.Node.remove (li);
|
Vn.Node.remove (li);
|
||||||
this.value = undefined;
|
this._changeValue (undefined);
|
||||||
}
|
}
|
||||||
|
|
||||||
,_onChange: function ()
|
,_onChange: function ()
|
||||||
|
@ -431,8 +486,11 @@ Vn.Filter = new Class
|
||||||
if (this._select.value === null
|
if (this._select.value === null
|
||||||
|| this._select.value === undefined)
|
|| this._select.value === undefined)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var li = document.createElement ('li');
|
if (this._lastLi)
|
||||||
|
Vn.Node.remove (this._lastLi);
|
||||||
|
|
||||||
|
var li = this._lastLi = document.createElement ('li');
|
||||||
this._ul.appendChild (li);
|
this._ul.appendChild (li);
|
||||||
|
|
||||||
var button = document.createElement ('button');
|
var button = document.createElement ('button');
|
||||||
|
@ -450,7 +508,14 @@ Vn.Filter = new Class
|
||||||
|
|
||||||
setTimeout (this._onTimeout.bind (this));
|
setTimeout (this._onTimeout.bind (this));
|
||||||
|
|
||||||
this.value = this._select.value;
|
this._changeValue (this._select.value);
|
||||||
|
}
|
||||||
|
|
||||||
|
,_changeValue: function (newValue)
|
||||||
|
{
|
||||||
|
this._batch.block ();
|
||||||
|
this.value = newValue;
|
||||||
|
this._batch.unblock ();
|
||||||
}
|
}
|
||||||
|
|
||||||
,_onTimeout: function ()
|
,_onTimeout: function ()
|
||||||
|
|
|
@ -99,6 +99,10 @@ option.placeholder
|
||||||
.vn-filter li
|
.vn-filter li
|
||||||
{
|
{
|
||||||
line-height: 2em;
|
line-height: 2em;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
max-width: 85%;
|
||||||
}
|
}
|
||||||
.vn-filter li > button
|
.vn-filter li > button
|
||||||
{
|
{
|
||||||
|
@ -107,6 +111,10 @@ option.placeholder
|
||||||
padding: .2em;
|
padding: .2em;
|
||||||
margin-right: .2em;
|
margin-right: .2em;
|
||||||
}
|
}
|
||||||
|
.right-panel .remove-filters
|
||||||
|
{
|
||||||
|
margin-top: 1.2em;
|
||||||
|
}
|
||||||
|
|
||||||
button.basket
|
button.basket
|
||||||
{
|
{
|
||||||
|
@ -287,6 +295,11 @@ td.third-category
|
||||||
padding: 0;
|
padding: 0;
|
||||||
font-size: .9em;
|
font-size: .9em;
|
||||||
}
|
}
|
||||||
|
.item-box > .producer
|
||||||
|
{
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
.item-box > h2
|
.item-box > h2
|
||||||
{
|
{
|
||||||
font-size: 1.1em;
|
font-size: 1.1em;
|
||||||
|
|
|
@ -1,34 +1,4 @@
|
||||||
<vn>
|
<vn>
|
||||||
<vn-group>
|
|
||||||
<sql-filter-item type="LIKE" id="op-name">
|
|
||||||
<sql-field name="Article"/>
|
|
||||||
<sql-search-tags param="search"/>
|
|
||||||
</sql-filter-item>
|
|
||||||
<sql-filter-item type="EQUAL" id="op-realm">
|
|
||||||
<sql-field name="reino_id" target="t"/>
|
|
||||||
<sql-value param="realm"/>
|
|
||||||
</sql-filter-item>
|
|
||||||
<sql-filter-item type="EQUAL" id="op-type">
|
|
||||||
<sql-field name="tipo_id"/>
|
|
||||||
<sql-value param="type"/>
|
|
||||||
</sql-filter-item>
|
|
||||||
<sql-filter-item type="EQUAL" id="op-color">
|
|
||||||
<sql-field name="Color"/>
|
|
||||||
<sql-value param="color"/>
|
|
||||||
</sql-filter-item>
|
|
||||||
<sql-filter-item type="EQUAL" id="op-origin">
|
|
||||||
<sql-field name="id_origen"/>
|
|
||||||
<sql-value param="origin"/>
|
|
||||||
</sql-filter-item>
|
|
||||||
<sql-filter-item type="EQUAL" id="op-category">
|
|
||||||
<sql-field name="Categoria"/>
|
|
||||||
<sql-value param="category"/>
|
|
||||||
</sql-filter-item>
|
|
||||||
<sql-filter-item type="EQUAL" id="op-producer">
|
|
||||||
<sql-field name="producer_id"/>
|
|
||||||
<sql-value param="producer"/>
|
|
||||||
</sql-filter-item>
|
|
||||||
</vn-group>
|
|
||||||
<vn-group>
|
<vn-group>
|
||||||
<vn-param id="search"/>
|
<vn-param id="search"/>
|
||||||
<vn-param id="realm" on-changed="onTypeChange"/>
|
<vn-param id="realm" on-changed="onTypeChange"/>
|
||||||
|
@ -38,18 +8,46 @@
|
||||||
<vn-param id="category"/>
|
<vn-param id="category"/>
|
||||||
<vn-param id="producer"/>
|
<vn-param id="producer"/>
|
||||||
</vn-group>
|
</vn-group>
|
||||||
|
<vn-group>
|
||||||
|
<sql-filter type="AND" id="filter">
|
||||||
|
<sql-filter-item type="LIKE" id="op-name">
|
||||||
|
<sql-field name="Article"/>
|
||||||
|
<sql-search-tags param="search"/>
|
||||||
|
</sql-filter-item>
|
||||||
|
<sql-filter-item type="EQUAL" id="op-realm">
|
||||||
|
<sql-field name="reino_id" target="t"/>
|
||||||
|
<sql-value param="realm"/>
|
||||||
|
</sql-filter-item>
|
||||||
|
<sql-filter-item type="EQUAL" id="op-type">
|
||||||
|
<sql-field name="tipo_id"/>
|
||||||
|
<sql-value param="type"/>
|
||||||
|
</sql-filter-item>
|
||||||
|
<sql-filter-item type="EQUAL" id="op-color">
|
||||||
|
<sql-field name="Color"/>
|
||||||
|
<sql-value param="color"/>
|
||||||
|
</sql-filter-item>
|
||||||
|
<sql-filter-item type="EQUAL" id="op-origin">
|
||||||
|
<sql-field name="id_origen"/>
|
||||||
|
<sql-value param="origin"/>
|
||||||
|
</sql-filter-item>
|
||||||
|
<sql-filter-item type="EQUAL" id="op-category">
|
||||||
|
<sql-field name="Categoria"/>
|
||||||
|
<sql-value param="category"/>
|
||||||
|
</sql-filter-item>
|
||||||
|
<sql-filter-item type="EQUAL" id="op-producer">
|
||||||
|
<sql-field name="producer_id"/>
|
||||||
|
<sql-value param="producer"/>
|
||||||
|
</sql-filter-item>
|
||||||
|
</sql-filter>
|
||||||
|
<sql-batch property="batch" id="filter-batch">
|
||||||
|
<custom>
|
||||||
|
<item name="filter" object="filter"/>
|
||||||
|
</custom>
|
||||||
|
</sql-batch>
|
||||||
|
</vn-group>
|
||||||
<vn-group>
|
<vn-group>
|
||||||
<vn-hash-param key="realm" param="realm"/>
|
<vn-hash-param key="realm" param="realm"/>
|
||||||
<vn-hash-param key="type" param="type"/>
|
<vn-hash-param key="type" param="type"/>
|
||||||
<sql-filter type="AND" id="filter">
|
|
||||||
<pointer object="op-name"/>
|
|
||||||
<pointer object="op-realm"/>
|
|
||||||
<pointer object="op-type"/>
|
|
||||||
<pointer object="op-color"/>
|
|
||||||
<pointer object="op-origin"/>
|
|
||||||
<pointer object="op-category"/>
|
|
||||||
<pointer object="op-producer"/>
|
|
||||||
</sql-filter>
|
|
||||||
<db-query id="basket-lines">
|
<db-query id="basket-lines">
|
||||||
<custom>
|
<custom>
|
||||||
SELECT item_id, warehouse_id, SUM(amount) amount
|
SELECT item_id, warehouse_id, SUM(amount) amount
|
||||||
|
@ -57,7 +55,7 @@
|
||||||
GROUP BY warehouse_id
|
GROUP BY warehouse_id
|
||||||
</custom>
|
</custom>
|
||||||
</db-query>
|
</db-query>
|
||||||
<db-model result-index="2" id="items-model">
|
<db-model result-index="2" id="items-model" batch="filter-batch">
|
||||||
<custom>
|
<custom>
|
||||||
CREATE TEMPORARY TABLE tmp.bionic_calc
|
CREATE TEMPORARY TABLE tmp.bionic_calc
|
||||||
(INDEX (item_id))
|
(INDEX (item_id))
|
||||||
|
@ -65,29 +63,26 @@
|
||||||
SELECT Id_Article item_id FROM vn2008.Articles
|
SELECT Id_Article item_id FROM vn2008.Articles
|
||||||
WHERE #filter;
|
WHERE #filter;
|
||||||
CALL bionic_calc ();
|
CALL bionic_calc ();
|
||||||
SELECT a.Id_Article item_id, t.available, t.price, p.name producer,
|
SELECT a.Id_Article item_id, a.description, t.available, t.price,
|
||||||
a.Foto, a.Article, a.Categoria, a.Medida, a.Tallos, a.Color, o.Abreviatura
|
p.name producer, a.Foto, a.Article, a.Categoria, a.Medida,
|
||||||
|
a.Tallos, i.name color, o.Abreviatura, o.Origen
|
||||||
FROM tmp.bionic_item t
|
FROM tmp.bionic_item t
|
||||||
JOIN vn2008.Articles a ON a.Id_Article = t.item_id
|
JOIN vn2008.Articles a ON a.Id_Article = t.item_id
|
||||||
LEFT JOIN vn2008.producer p ON p.producer_id = a.producer_id
|
LEFT JOIN vn2008.producer p ON p.producer_id = a.producer_id
|
||||||
|
LEFT JOIN vn2008.Tintas i ON i.Id_Tinta = a.Color
|
||||||
LEFT JOIN vn2008.Origen o ON a.id_origen = o.id
|
LEFT JOIN vn2008.Origen o ON a.id_origen = o.id
|
||||||
WHERE t.available > 0
|
WHERE t.available > 0
|
||||||
ORDER BY a.Article, a.Medida
|
ORDER BY a.Article, a.Medida
|
||||||
LIMIT 400;
|
LIMIT 400;
|
||||||
</custom>
|
</custom>
|
||||||
<sql-batch property="batch" id="batch">
|
|
||||||
<custom>
|
|
||||||
<item name="filter" object="filter"/>
|
|
||||||
</custom>
|
|
||||||
</sql-batch>
|
|
||||||
</db-model>
|
</db-model>
|
||||||
<db-model id="item-lots" result-index="1" on-status-changed-after="onStatusChange">
|
<db-model id="item-lots" result-index="1" on-status-changed-after="onStatusChange">
|
||||||
<custom>
|
<custom>
|
||||||
CALL bionic_from_item (#item);
|
CALL bionic_from_item (#item);
|
||||||
SELECT p.warehouse_id, p.grouping, p.price, p.rate, l.available
|
SELECT p.warehouse_id, w.name warehouse, p.grouping, p.price, p.rate, l.available
|
||||||
FROM tmp.bionic_lot l
|
FROM tmp.bionic_lot l
|
||||||
JOIN tmp.bionic_price p
|
JOIN tmp.bionic_price p ON p.warehouse_id = l.warehouse_id
|
||||||
ON p.warehouse_id = l.warehouse_id
|
JOIN vn2008.warehouse w ON w.id = p.warehouse_id
|
||||||
ORDER BY warehouse_id, grouping;
|
ORDER BY warehouse_id, grouping;
|
||||||
</custom>
|
</custom>
|
||||||
<sql-batch property="batch" id="lots-batch"/>
|
<sql-batch property="batch" id="lots-batch"/>
|
||||||
|
@ -137,9 +132,12 @@
|
||||||
title="_Name"
|
title="_Name"
|
||||||
column="Article"
|
column="Article"
|
||||||
renderer="nameRenderer"/>
|
renderer="nameRenderer"/>
|
||||||
|
<htk-column-text
|
||||||
|
title="_Siz"
|
||||||
|
column="Medida"/>
|
||||||
<htk-column-text
|
<htk-column-text
|
||||||
title="_Cat"
|
title="_Cat"
|
||||||
renderer="featuresRender"/>
|
column="Categoria"/>
|
||||||
<htk-column-spin
|
<htk-column-spin
|
||||||
title="_Aval"
|
title="_Aval"
|
||||||
column="available"/>
|
column="available"/>
|
||||||
|
@ -174,15 +172,17 @@
|
||||||
<h2>
|
<h2>
|
||||||
<htk-text form="item" column="Article"/>
|
<htk-text form="item" column="Article"/>
|
||||||
</h2>
|
</h2>
|
||||||
<p>
|
<p class="producer">
|
||||||
<htk-text form="item" column="producer"/>
|
<htk-text form="item" column="producer"/>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<htk-text form="item" column="Medida"/>
|
<htk-text form="item" column="Medida"/>
|
||||||
<htk-text form="item" column="Categoria"/>
|
<htk-text form="item" column="Categoria"/>
|
||||||
<htk-text form="item" column="Color"/>
|
<htk-text form="item" column="color"/>
|
||||||
<htk-text form="item" column="Tallos"/>
|
</p>
|
||||||
<htk-text form="item" column="Abreviatura"/>
|
<p>
|
||||||
|
<htk-text form="item" column="Origen"/>
|
||||||
|
<htk-text form="item" column="Tallos" format="%.0d Units"/>
|
||||||
</p>
|
</p>
|
||||||
<div class="aval-price">
|
<div class="aval-price">
|
||||||
<htk-text form="item" column="available"/>
|
<htk-text form="item" column="available"/>
|
||||||
|
@ -204,12 +204,12 @@
|
||||||
</htk-repeater>
|
</htk-repeater>
|
||||||
<div id="right-panel" class="right-panel" on-click="onRightPanelClick">
|
<div id="right-panel" class="right-panel" on-click="onRightPanelClick">
|
||||||
<div class="body">
|
<div class="body">
|
||||||
<select>
|
<select on-change="onOrderChange">
|
||||||
<option value="" disabled="true" selected="true">
|
<option value="" disabled="true" selected="true">
|
||||||
<t>Order by</t>
|
<t>Order by</t>
|
||||||
</option>
|
</option>
|
||||||
<option value="Article">
|
<option value="Article">
|
||||||
<t>Item</t>
|
<t>Name</t>
|
||||||
</option>
|
</option>
|
||||||
<option value="price">
|
<option value="price">
|
||||||
<t>Price</t>
|
<t>Price</t>
|
||||||
|
@ -217,23 +217,25 @@
|
||||||
<option value="available">
|
<option value="available">
|
||||||
<t>Available</t>
|
<t>Available</t>
|
||||||
</option>
|
</option>
|
||||||
<option value="Color">
|
<option value="Medida">
|
||||||
|
<t>Size</t>
|
||||||
|
</option>
|
||||||
|
<option value="color">
|
||||||
<t>Color</t>
|
<t>Color</t>
|
||||||
</option>
|
</option>
|
||||||
<option value="producer">
|
<option value="producer">
|
||||||
<t>Producer</t>
|
<t>Producer</t>
|
||||||
</option>
|
</option>
|
||||||
<option value="Medida">
|
<option value="Abreviatura">
|
||||||
<t>Size</t>
|
<t>Origin</t>
|
||||||
</option>
|
</option>
|
||||||
<option value="Categoria">
|
<option value="Categoria">
|
||||||
<t>Category</t>
|
<t>Category</t>
|
||||||
</option>
|
</option>
|
||||||
<option value="Abreviatura">
|
|
||||||
<t>Origin</t>
|
|
||||||
</option>
|
|
||||||
</select>
|
</select>
|
||||||
<vn-filter placeholder="_Realm">
|
<vn-filter
|
||||||
|
placeholder="_Realm"
|
||||||
|
param="realm">
|
||||||
<db-model
|
<db-model
|
||||||
id="realms-model"
|
id="realms-model"
|
||||||
property="model"
|
property="model"
|
||||||
|
@ -244,7 +246,11 @@
|
||||||
</custom>
|
</custom>
|
||||||
</db-model>
|
</db-model>
|
||||||
</vn-filter>
|
</vn-filter>
|
||||||
<vn-filter placeholder="_Subtype" param="type">
|
<vn-filter
|
||||||
|
placeholder="_Family"
|
||||||
|
param="type"
|
||||||
|
filter="filter"
|
||||||
|
disable-operation="op-type">
|
||||||
<db-model
|
<db-model
|
||||||
id="types-model"
|
id="types-model"
|
||||||
property="model"
|
property="model"
|
||||||
|
@ -253,16 +259,20 @@
|
||||||
on-status-changed="refreshTitle">
|
on-status-changed="refreshTitle">
|
||||||
<custom>
|
<custom>
|
||||||
CALL item_available ();
|
CALL item_available ();
|
||||||
SELECT DISTINCT t.tipo_id, LEFT(t.Tipo, 18) type
|
SELECT DISTINCT t.tipo_id, t.Tipo type
|
||||||
FROM vn2008.Tipos t
|
FROM vn2008.Tipos t
|
||||||
JOIN vn2008.Articles a ON a.tipo_id = t.tipo_id
|
JOIN vn2008.Articles a ON a.tipo_id = t.tipo_id
|
||||||
JOIN tmp.item_available i ON i.item_id = a.Id_Article
|
JOIN tmp.item_available i ON i.item_id = a.Id_Article
|
||||||
/*WHERE #filter*/
|
WHERE #filter
|
||||||
ORDER BY t.Tipo
|
ORDER BY t.Tipo
|
||||||
</custom>
|
</custom>
|
||||||
</db-model>
|
</db-model>
|
||||||
</vn-filter>
|
</vn-filter>
|
||||||
<vn-filter placeholder="_Color" param="color">
|
<vn-filter
|
||||||
|
placeholder="_Color"
|
||||||
|
param="color"
|
||||||
|
filter="filter"
|
||||||
|
disable-operation="op-color">
|
||||||
<db-model property="model" auto-load="false" result-index="1">
|
<db-model property="model" auto-load="false" result-index="1">
|
||||||
<custom>
|
<custom>
|
||||||
CALL item_available ();
|
CALL item_available ();
|
||||||
|
@ -270,37 +280,16 @@
|
||||||
FROM vn2008.Tintas c
|
FROM vn2008.Tintas c
|
||||||
JOIN vn2008.Articles a ON a.Color = c.Id_Tinta
|
JOIN vn2008.Articles a ON a.Color = c.Id_Tinta
|
||||||
JOIN tmp.item_available i ON i.item_id = a.Id_Article
|
JOIN tmp.item_available i ON i.item_id = a.Id_Article
|
||||||
/*WHERE #filter*/
|
WHERE #filter
|
||||||
ORDER BY c.name
|
ORDER BY c.name
|
||||||
</custom>
|
</custom>
|
||||||
</db-model>
|
</db-model>
|
||||||
</vn-filter>
|
</vn-filter>
|
||||||
<vn-filter placeholder="_Origin" param="origin">
|
<vn-filter
|
||||||
<db-model property="model" auto-load="false" result-index="1">
|
placeholder="_Producer"
|
||||||
<custom>
|
param="producer"
|
||||||
CALL item_available ();
|
filter="filter"
|
||||||
SELECT DISTINCT o.id, o.Origen, o.Abreviatura
|
disable-operation="op-producer">
|
||||||
FROM vn2008.Origen o
|
|
||||||
JOIN vn2008.Articles a ON a.id_origen = o.id
|
|
||||||
JOIN tmp.item_available i ON i.item_id = a.Id_Article
|
|
||||||
/*WHERE #filter*/
|
|
||||||
ORDER BY o.Origen
|
|
||||||
</custom>
|
|
||||||
</db-model>
|
|
||||||
</vn-filter>
|
|
||||||
<vn-filter placeholder="_Category" param="category">
|
|
||||||
<db-model property="model" auto-load="false" result-index="1">
|
|
||||||
<custom>
|
|
||||||
CALL item_available ();
|
|
||||||
SELECT DISTINCT a.Categoria, a.Categoria category
|
|
||||||
FROM vn2008.Articles a
|
|
||||||
JOIN tmp.item_available i ON i.item_id = a.Id_Article
|
|
||||||
/*WHERE #filter*/
|
|
||||||
ORDER BY a.Categoria
|
|
||||||
</custom>
|
|
||||||
</db-model>
|
|
||||||
</vn-filter>
|
|
||||||
<vn-filter placeholder="_Producer" param="producer">
|
|
||||||
<db-model property="model" auto-load="false" result-index="1">
|
<db-model property="model" auto-load="false" result-index="1">
|
||||||
<custom>
|
<custom>
|
||||||
CALL item_available ();
|
CALL item_available ();
|
||||||
|
@ -308,11 +297,47 @@
|
||||||
FROM vn2008.producer p
|
FROM vn2008.producer p
|
||||||
JOIN vn2008.Articles a ON a.producer_id = p.producer_id
|
JOIN vn2008.Articles a ON a.producer_id = p.producer_id
|
||||||
JOIN tmp.item_available i ON i.item_id = a.Id_Article
|
JOIN tmp.item_available i ON i.item_id = a.Id_Article
|
||||||
/*WHERE #filter*/
|
WHERE #filter
|
||||||
ORDER BY p.name
|
ORDER BY p.name
|
||||||
</custom>
|
</custom>
|
||||||
</db-model>
|
</db-model>
|
||||||
</vn-filter>
|
</vn-filter>
|
||||||
|
<vn-filter
|
||||||
|
placeholder="_Origin"
|
||||||
|
param="origin"
|
||||||
|
filter="filter"
|
||||||
|
disable-operation="op-origin">
|
||||||
|
<db-model property="model" auto-load="false" result-index="1">
|
||||||
|
<custom>
|
||||||
|
CALL item_available ();
|
||||||
|
SELECT DISTINCT o.id, o.Origen, o.Abreviatura
|
||||||
|
FROM vn2008.Origen o
|
||||||
|
JOIN vn2008.Articles a ON a.id_origen = o.id
|
||||||
|
JOIN tmp.item_available i ON i.item_id = a.Id_Article
|
||||||
|
WHERE #filter
|
||||||
|
ORDER BY o.Origen
|
||||||
|
</custom>
|
||||||
|
</db-model>
|
||||||
|
</vn-filter>
|
||||||
|
<vn-filter
|
||||||
|
placeholder="_Category"
|
||||||
|
param="category"
|
||||||
|
filter="filter"
|
||||||
|
disable-operation="op-category">
|
||||||
|
<db-model property="model" auto-load="false" result-index="1">
|
||||||
|
<custom>
|
||||||
|
CALL item_available ();
|
||||||
|
SELECT DISTINCT a.Categoria, a.Categoria category
|
||||||
|
FROM vn2008.Articles a
|
||||||
|
JOIN tmp.item_available i ON i.item_id = a.Id_Article
|
||||||
|
WHERE #filter
|
||||||
|
ORDER BY a.Categoria
|
||||||
|
</custom>
|
||||||
|
</db-model>
|
||||||
|
</vn-filter>
|
||||||
|
<button class="remove-filters thin" on-click="onRemoveFiltersClick">
|
||||||
|
<t>Remove filters</t>
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<!--
|
<!--
|
||||||
<htk-repeater
|
<htk-repeater
|
||||||
|
@ -352,6 +377,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="lots-popup" class="lots-popup">
|
<div id="lots-popup" class="lots-popup">
|
||||||
<htk-grid class="lots-grid" model="item-lots" show-header="false">
|
<htk-grid class="lots-grid" model="item-lots" show-header="false">
|
||||||
|
<htk-column-text title="_Store" column="warehouse"/>
|
||||||
<htk-column-spin title="_Price" column="price" unit="€" digits="2"/>
|
<htk-column-spin title="_Price" column="price" unit="€" digits="2"/>
|
||||||
<htk-column-text title="_Pack" column="grouping" format="x%.0d"/>
|
<htk-column-text title="_Pack" column="grouping" format="x%.0d"/>
|
||||||
<htk-column-button
|
<htk-column-button
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Vn.Checkout = new Class
|
Vn.Checkout = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
|
|
||||||
,activate: function ()
|
,activate: function ()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Vn.Confirm = new Class
|
Vn.Confirm = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
|
|
||||||
,onOrderReady: function (form)
|
,onOrderReady: function (form)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,30 +1,36 @@
|
||||||
<vn>
|
<vn>
|
||||||
<vn-group>
|
<vn-group>
|
||||||
<db-form id="order-form" on-ready="onOrderReady">
|
<db-form id="order-form" on-ready="onOrderReady">
|
||||||
<db-model>
|
<db-model property="model">
|
||||||
SELECT o.id, o.date_send, o.note, o.company_id,
|
<custom>
|
||||||
ag.description agency, v.code method, c.credit,
|
SELECT o.id, o.date_send, o.note, o.company_id,
|
||||||
ad.consignee, ad.zip_code, ad.city, ad.name address
|
ag.description agency, v.code method, c.credit,
|
||||||
FROM basket o
|
ad.consignee, ad.zip_code, ad.city, ad.name address
|
||||||
JOIN vn2008.Agencias ag ON ag.Id_Agencia = o.agency_id
|
FROM basket o
|
||||||
LEFT JOIN address_view ad ON ad.id = o.address_id
|
JOIN vn2008.Agencias ag ON ag.Id_Agencia = o.agency_id
|
||||||
JOIN vn2008.Vistas v ON v.vista_id = o.delivery_method_id
|
LEFT JOIN address_view ad ON ad.id = o.address_id
|
||||||
JOIN customer_view c
|
JOIN vn2008.Vistas v ON v.vista_id = o.delivery_method_id
|
||||||
|
JOIN customer_view c
|
||||||
|
</custom>
|
||||||
</db-model>
|
</db-model>
|
||||||
</db-form>
|
</db-form>
|
||||||
<db-form id="total-form" on-ready="onImportReady">
|
<db-form id="total-form" on-ready="onImportReady">
|
||||||
<db-model result-index="1">
|
<db-model property="model" result-index="1">
|
||||||
CALL basket_get_vat ();
|
<custom>
|
||||||
SELECT
|
CALL basket_get_vat ();
|
||||||
IFNULL(SUM(tax_base), 0) tax_base,
|
SELECT
|
||||||
IFNULL(SUM(vat + surcharge), 0) vat
|
IFNULL(SUM(tax_base), 0) tax_base,
|
||||||
FROM t_order_vat;
|
IFNULL(SUM(vat + surcharge), 0) vat
|
||||||
DROP TEMPORARY TABLE t_order_vat;
|
FROM t_order_vat;
|
||||||
|
DROP TEMPORARY TABLE t_order_vat;
|
||||||
|
</custom>
|
||||||
</db-model>
|
</db-model>
|
||||||
</db-form>
|
</db-form>
|
||||||
<db-query id="confirm-query" on-ready="onConfirm">
|
<db-query id="confirm-query" on-ready="onConfirm">
|
||||||
CALL basket_confirm ();
|
<custom>
|
||||||
SELECT customer_get_debt();
|
CALL basket_confirm ();
|
||||||
|
SELECT customer_get_debt();
|
||||||
|
</custom>
|
||||||
</db-query>
|
</db-query>
|
||||||
</vn-group>
|
</vn-group>
|
||||||
<div id="title">
|
<div id="title">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Vn.Invoices = new Class
|
Vn.Invoices = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
|
|
||||||
,activate: function () {}
|
,activate: function () {}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Vn.Orders = new Class
|
Vn.Orders = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
|
|
||||||
,activate: function ()
|
,activate: function ()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Vn.Ticket = new Class
|
Vn.Ticket = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
|
|
||||||
,activate: function ()
|
,activate: function ()
|
||||||
{
|
{
|
||||||
|
|
|
@ -4,16 +4,20 @@
|
||||||
<vn-param id="ticket-id"/>
|
<vn-param id="ticket-id"/>
|
||||||
</vn-hash-param>
|
</vn-hash-param>
|
||||||
<db-form id="ticket">
|
<db-form id="ticket">
|
||||||
<db-model id="ticket-data">
|
<db-model property="model" id="ticket-data">
|
||||||
SELECT t.id, date, a.Agencia, note, p.name province,
|
<custom>
|
||||||
zip_code, city, c.name, consignee, invoice
|
SELECT t.id, date, a.Agencia, note, p.name province,
|
||||||
FROM ticket_view t
|
zip_code, city, c.name, consignee, invoice
|
||||||
JOIN address_view c ON t.address_id = c.id
|
FROM ticket_view t
|
||||||
JOIN vn2008.Agencias a ON t.agency_id = a.Id_Agencia
|
JOIN address_view c ON t.address_id = c.id
|
||||||
JOIN vn2008.province p ON c.province_id = p.province_id
|
JOIN vn2008.Agencias a ON t.agency_id = a.Id_Agencia
|
||||||
WHERE t.id = #ticket
|
JOIN vn2008.province p ON c.province_id = p.province_id
|
||||||
|
WHERE t.id = #ticket
|
||||||
|
</custom>
|
||||||
<sql-batch property="batch">
|
<sql-batch property="batch">
|
||||||
<item name="ticket" param="ticket-id"/>
|
<custom>
|
||||||
|
<item name="ticket" param="ticket-id"/>
|
||||||
|
</custom>
|
||||||
</sql-batch>
|
</sql-batch>
|
||||||
</db-model>
|
</db-model>
|
||||||
</db-form>
|
</db-form>
|
||||||
|
@ -84,17 +88,21 @@
|
||||||
<htk-column-text title="_Consignee" column="consignee"/>
|
<htk-column-text title="_Consignee" column="consignee"/>
|
||||||
</htk-grid>
|
</htk-grid>
|
||||||
<htk-grid>
|
<htk-grid>
|
||||||
<db-model id="movements">
|
<db-model property="model" id="movements">
|
||||||
SELECT m.item_id, amount, concept, Categoria, Medida, Tallos, Color,
|
<custom>
|
||||||
Abreviatura, IF(fixed != FALSE, price, NULL) price, fixed, discount
|
SELECT m.item_id, amount, concept, Categoria, Medida, Tallos, Color,
|
||||||
FROM ticket_row_view m
|
Abreviatura, IF(fixed != FALSE, price, NULL) price, fixed, discount
|
||||||
INNER JOIN vn2008.Articles a
|
FROM ticket_row_view m
|
||||||
ON m.item_id = a.Id_Article AND ticket_id = #ticket
|
INNER JOIN vn2008.Articles a
|
||||||
LEFT JOIN vn2008.Origen o
|
ON m.item_id = a.Id_Article AND ticket_id = #ticket
|
||||||
ON a.id_origen = o.id
|
LEFT JOIN vn2008.Origen o
|
||||||
ORDER BY concept
|
ON a.id_origen = o.id
|
||||||
|
ORDER BY concept
|
||||||
|
</custom>
|
||||||
<sql-batch property="batch">
|
<sql-batch property="batch">
|
||||||
<item name="ticket" param="ticket-id"/>
|
<custom>
|
||||||
|
<item name="ticket" param="ticket-id"/>
|
||||||
|
</custom>
|
||||||
</sql-batch>
|
</sql-batch>
|
||||||
</db-model>
|
</db-model>
|
||||||
<htk-column-spin title="_ItemNumber" column="item_id"/>
|
<htk-column-spin title="_ItemNumber" column="item_id"/>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Vn.New = new Class
|
Vn.New = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
|
|
||||||
,activate: function ()
|
,activate: function ()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Vn.News = new Class
|
Vn.News = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Module
|
Extends: Vn.Form
|
||||||
|
|
||||||
,editNew: function (newId)
|
,editNew: function (newId)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Vn\Hedera\Web;
|
|
||||||
|
|
||||||
if ($result = Web::$sysConn->query ('SELECT name, content FROM metatag'))
|
|
||||||
{
|
|
||||||
echo '<meta name="content-language" content="'.$_SESSION['lang'].'"/>'."\n\t\t";
|
|
||||||
|
|
||||||
while ($row = $result->fetch_assoc ())
|
|
||||||
echo '<meta name="'.$row['name'].'" content="'.$row['content'].'"/>'."\n\t\t";
|
|
||||||
|
|
||||||
$result->free ();
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
|
|
@ -1,124 +0,0 @@
|
||||||
|
|
||||||
/* Generic */
|
|
||||||
@media screen and (orientation: landscape)
|
|
||||||
{
|
|
||||||
* { font-size: 13pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (orientation: portrait)
|
|
||||||
{
|
|
||||||
* { font-size: 26pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Smartphones (portrait and landscape) */
|
|
||||||
@media only screen and (min-device-width : 320px) and (max-device-width : 480px){
|
|
||||||
* { font-size: 26pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Smartphones (landscape) */
|
|
||||||
@media only screen and (min-width : 321px){
|
|
||||||
* { font-size: 13pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Smartphones (portrait) */
|
|
||||||
@media only screen and (max-width : 320px){
|
|
||||||
* { font-size: 26pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* iPads (portrait and landscape) */
|
|
||||||
@media only screen and (min-device-width : 768px) and (max-device-width : 1024px){
|
|
||||||
* { font-size: 13pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* iPads (landscape) */
|
|
||||||
@media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : landscape){
|
|
||||||
* { font-size: 10pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* iPads (portrait) */
|
|
||||||
@media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : portrait){
|
|
||||||
* { font-size: 13pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* iPad 3 */
|
|
||||||
@media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : landscape) and (-webkit-min-device-pixel-ratio : 2){
|
|
||||||
* { font-size: 10pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
@media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : portrait) and (-webkit-min-device-pixel-ratio : 2){
|
|
||||||
* { font-size: 13pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Desktops and laptops */
|
|
||||||
@media only screen and (min-width : 1224px){
|
|
||||||
* { font-size: 13pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Large screens */
|
|
||||||
@media only screen and (min-width : 1824px){
|
|
||||||
* { font-size: 13pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* iPhone 4 */
|
|
||||||
@media only screen and (min-device-width : 320px) and (max-device-width : 480px) and (orientation : landscape) and (-webkit-min-device-pixel-ratio : 2){
|
|
||||||
* { font-size: 13pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
@media only screen and (min-device-width : 320px) and (max-device-width : 480px) and (orientation : portrait) and (-webkit-min-device-pixel-ratio : 2){
|
|
||||||
* { font-size: 26pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* iPhone 5 */
|
|
||||||
@media only screen and (min-device-width: 320px) and (max-device-height: 568px) and (orientation : landscape) and (-webkit-device-pixel-ratio: 2){
|
|
||||||
* { font-size: 13pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
@media only screen and (min-device-width: 320px) and (max-device-height: 568px) and (orientation : portrait) and (-webkit-device-pixel-ratio: 2){
|
|
||||||
* { font-size: 26pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* iPhone 6 */
|
|
||||||
@media only screen and (min-device-width: 375px) and (max-device-height: 667px) and (orientation : landscape) and (-webkit-device-pixel-ratio: 2){
|
|
||||||
* { font-size: 13pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
@media only screen and (min-device-width: 375px) and (max-device-height: 667px) and (orientation : portrait) and (-webkit-device-pixel-ratio: 2){
|
|
||||||
* { font-size: 26pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* iPhone 6+ */
|
|
||||||
@media only screen and (min-device-width: 414px) and (max-device-height: 736px) and (orientation : landscape) and (-webkit-device-pixel-ratio: 2){
|
|
||||||
* { font-size: 13pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
@media only screen and (min-device-width: 414px) and (max-device-height: 736px) and (orientation : portrait) and (-webkit-device-pixel-ratio: 2){
|
|
||||||
* { font-size: 26pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Samsung Galaxy S3 */
|
|
||||||
@media only screen and (min-device-width: 320px) and (max-device-height: 640px) and (orientation : landscape) and (-webkit-device-pixel-ratio: 2){
|
|
||||||
* { font-size: 13pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
@media only screen and (min-device-width: 320px) and (max-device-height: 640px) and (orientation : portrait) and (-webkit-device-pixel-ratio: 2){
|
|
||||||
* { font-size: 26pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Samsung Galaxy S4 */
|
|
||||||
@media only screen and (min-device-width: 320px) and (max-device-height: 640px) and (orientation : landscape) and (-webkit-device-pixel-ratio: 3){
|
|
||||||
* { font-size: 13pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
@media only screen and (min-device-width: 320px) and (max-device-height: 640px) and (orientation : portrait) and (-webkit-device-pixel-ratio: 3){
|
|
||||||
* { font-size: 26pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Samsung Galaxy S5 */
|
|
||||||
@media only screen and (min-device-width: 360px) and (max-device-height: 640px) and (orientation : landscape) and (-webkit-device-pixel-ratio: 3){
|
|
||||||
* { font-size: 13pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
@media only screen and (min-device-width: 360px) and (max-device-height: 640px) and (orientation : portrait) and (-webkit-device-pixel-ratio: 3){
|
|
||||||
* { font-size: 26pt; }
|
|
||||||
}
|
|
||||||
|
|
Binary file not shown.
|
@ -1,12 +0,0 @@
|
||||||
|
|
||||||
/* Global */
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'Open Sans';
|
|
||||||
src: url(opensans.ttf) format('truetype');
|
|
||||||
}
|
|
||||||
*
|
|
||||||
{
|
|
||||||
font-size: 13px;
|
|
||||||
font-family: 'Open Sans', 'Verdana', 'Sans';
|
|
||||||
}
|
|
|
@ -1,822 +0,0 @@
|
||||||
|
|
||||||
/* Responsive */
|
|
||||||
|
|
||||||
@media screen
|
|
||||||
{
|
|
||||||
* { font-size: 8pt; }
|
|
||||||
}
|
|
||||||
@media screen and (min-device-width: 1150px)
|
|
||||||
{
|
|
||||||
* { font-size: 10pt; }
|
|
||||||
}
|
|
||||||
@media screen and (min-device-width: 1850px)
|
|
||||||
{
|
|
||||||
* { font-size: 12pt; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Global */
|
|
||||||
|
|
||||||
@font-face
|
|
||||||
{
|
|
||||||
font-family: 'Open Sans';
|
|
||||||
src: url(opensans.ttf) format('truetype');
|
|
||||||
}
|
|
||||||
body
|
|
||||||
{
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
body,
|
|
||||||
label,
|
|
||||||
button,
|
|
||||||
input,
|
|
||||||
textarea
|
|
||||||
{
|
|
||||||
font-size: 1em;
|
|
||||||
font-family: 'Open Sans', 'Verdana', 'Sans';
|
|
||||||
}
|
|
||||||
iframe
|
|
||||||
{
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
fieldset,
|
|
||||||
div
|
|
||||||
{
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
form
|
|
||||||
{
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
table
|
|
||||||
{
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
a:link,
|
|
||||||
a:visited,
|
|
||||||
a:active
|
|
||||||
{
|
|
||||||
color: #000;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
a:hover
|
|
||||||
{
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
a img
|
|
||||||
{
|
|
||||||
padding: 1px;
|
|
||||||
border: 1px solid #EEE;
|
|
||||||
border-color: transparent;
|
|
||||||
}
|
|
||||||
a img:hover
|
|
||||||
{
|
|
||||||
border-color: #999;
|
|
||||||
}
|
|
||||||
h1, h2, h3, h4, h5, h6
|
|
||||||
{
|
|
||||||
margin: 0;
|
|
||||||
padding: 0.2em;
|
|
||||||
}
|
|
||||||
h1
|
|
||||||
{
|
|
||||||
font-size: 1.5em;
|
|
||||||
}
|
|
||||||
h2
|
|
||||||
{
|
|
||||||
font-size: 1.3em;
|
|
||||||
}
|
|
||||||
p
|
|
||||||
{
|
|
||||||
margin: 0.8em 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Inputs */
|
|
||||||
|
|
||||||
input[type=text],
|
|
||||||
input[type=password],
|
|
||||||
input[type=file],
|
|
||||||
input[type=number],
|
|
||||||
textarea,
|
|
||||||
select
|
|
||||||
{
|
|
||||||
border: 1px solid #CCD;
|
|
||||||
margin: 0.2em;
|
|
||||||
border-radius: 0.1em;
|
|
||||||
box-shadow: 0 0.1em 0.1em #CCC;
|
|
||||||
}
|
|
||||||
|
|
||||||
input[type=text],
|
|
||||||
input[type=password],
|
|
||||||
input[type=file],
|
|
||||||
input[type=number],
|
|
||||||
textarea
|
|
||||||
{
|
|
||||||
padding: 0.3em;
|
|
||||||
}
|
|
||||||
select
|
|
||||||
{
|
|
||||||
background-color: white;
|
|
||||||
font-size: 1.1em;
|
|
||||||
height: 1.8em;
|
|
||||||
}
|
|
||||||
option
|
|
||||||
{
|
|
||||||
padding: 0.3em;
|
|
||||||
border-width: 0;
|
|
||||||
font-weight: normal;
|
|
||||||
font-size: 1em;
|
|
||||||
}
|
|
||||||
select,
|
|
||||||
option
|
|
||||||
{
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
input[type=text],
|
|
||||||
input[type=password]
|
|
||||||
{
|
|
||||||
height: 1.6em;
|
|
||||||
}
|
|
||||||
textarea
|
|
||||||
{
|
|
||||||
height: 3.5em;
|
|
||||||
width: 20em;
|
|
||||||
}
|
|
||||||
input[type=text]:focus,
|
|
||||||
input[type=password]:focus,
|
|
||||||
textarea:focus
|
|
||||||
{
|
|
||||||
background-color: #EEF;
|
|
||||||
border-color: #BBC;
|
|
||||||
}
|
|
||||||
input[type=checkbox],
|
|
||||||
input[type=radio]
|
|
||||||
{
|
|
||||||
cursor: pointer;
|
|
||||||
margin: 0.2em;
|
|
||||||
padding: 0.3em;
|
|
||||||
width: 0.8em;
|
|
||||||
height: 0.8em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Buttons */
|
|
||||||
|
|
||||||
button,
|
|
||||||
input[type=submit],
|
|
||||||
input[type=button]
|
|
||||||
{
|
|
||||||
border: none;
|
|
||||||
background-color: transparent;
|
|
||||||
color: white;
|
|
||||||
padding: 0.5em;
|
|
||||||
cursor: pointer;
|
|
||||||
border-radius: 0.1em;
|
|
||||||
}
|
|
||||||
button:hover,
|
|
||||||
input[type=submit]:hover,
|
|
||||||
input[type=button]:hover
|
|
||||||
{
|
|
||||||
background-color: rgba(1, 1, 1, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Flat button */
|
|
||||||
|
|
||||||
button.flat,
|
|
||||||
input.button
|
|
||||||
{
|
|
||||||
border: none;
|
|
||||||
border-radius: 0.1em;
|
|
||||||
box-shadow: 0 0.2em 0.2em #DDD;
|
|
||||||
background-color: #AD4;
|
|
||||||
color: black;
|
|
||||||
}
|
|
||||||
button.flat:hover,
|
|
||||||
input.button:hover
|
|
||||||
{
|
|
||||||
background-color: #9C3;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
button.flat:disabled,
|
|
||||||
input.button:disabled
|
|
||||||
{
|
|
||||||
color: gray;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Thin button */
|
|
||||||
|
|
||||||
button.thin
|
|
||||||
{
|
|
||||||
background-color: transparent;
|
|
||||||
border: none;
|
|
||||||
color: #008D77;
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
button.thin:hover
|
|
||||||
{
|
|
||||||
background-color: rgba(1,1,1,0.1);
|
|
||||||
}
|
|
||||||
button.thin:disabled
|
|
||||||
{
|
|
||||||
color: gray;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Image */
|
|
||||||
|
|
||||||
img.editable
|
|
||||||
{
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Button */
|
|
||||||
|
|
||||||
.htk-button img
|
|
||||||
{
|
|
||||||
height: 1.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Float */
|
|
||||||
|
|
||||||
.clear
|
|
||||||
{
|
|
||||||
clear: both;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Box */
|
|
||||||
|
|
||||||
.box
|
|
||||||
{
|
|
||||||
background-color: white;
|
|
||||||
margin: 0 auto;
|
|
||||||
border-radius: 0.1em;
|
|
||||||
box-shadow: 0 0.2em 0.2em #CCC;
|
|
||||||
}
|
|
||||||
.box .header
|
|
||||||
{
|
|
||||||
padding: 0.6em 0.8em;
|
|
||||||
margin: 0;
|
|
||||||
background-color: #009688;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
.box .header > h1
|
|
||||||
{
|
|
||||||
color: white;
|
|
||||||
text-align: left;
|
|
||||||
font-size: 1.6em;
|
|
||||||
line-height: 2em;
|
|
||||||
font-weight: normal;
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
.box .body
|
|
||||||
{
|
|
||||||
padding: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Form */
|
|
||||||
|
|
||||||
.form
|
|
||||||
{
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-group
|
|
||||||
{
|
|
||||||
padding: 0.4em;
|
|
||||||
}
|
|
||||||
.form-group > label
|
|
||||||
{
|
|
||||||
display: block;
|
|
||||||
margin-bottom: 0.5em;
|
|
||||||
}
|
|
||||||
.form-group > input[type=text],
|
|
||||||
.form-group > input[type=password],
|
|
||||||
.form-group > select,
|
|
||||||
.form-group > textarea
|
|
||||||
{
|
|
||||||
margin: 0;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Action bar */
|
|
||||||
|
|
||||||
.action-bar
|
|
||||||
{
|
|
||||||
float: right;
|
|
||||||
padding: 0;
|
|
||||||
margin-top: 0.3em;
|
|
||||||
}
|
|
||||||
.action-bar > *
|
|
||||||
{
|
|
||||||
float: left;
|
|
||||||
padding: 0.4em;
|
|
||||||
}
|
|
||||||
.action-bar > button
|
|
||||||
{
|
|
||||||
border-left: 1px solid white;
|
|
||||||
}
|
|
||||||
.action-bar > button:first-child
|
|
||||||
{
|
|
||||||
border-left: none;
|
|
||||||
}
|
|
||||||
.action-bar > button:hover
|
|
||||||
{
|
|
||||||
background-color: rgba(1, 1, 1, 0.2);
|
|
||||||
}
|
|
||||||
.action-bar > button > img
|
|
||||||
{
|
|
||||||
vertical-align: middle;
|
|
||||||
margin-right: 0.4em;
|
|
||||||
height: 1.4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Form */
|
|
||||||
|
|
||||||
table.form
|
|
||||||
{
|
|
||||||
padding: 1em;
|
|
||||||
border-collapse: separate;
|
|
||||||
border-spacing: 0.3em;
|
|
||||||
}
|
|
||||||
table.form td.label
|
|
||||||
{
|
|
||||||
width: 45%;
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
table.form tr
|
|
||||||
{
|
|
||||||
height: 2.8em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Icon */
|
|
||||||
|
|
||||||
img.icon
|
|
||||||
{
|
|
||||||
height: 1.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Masonry */
|
|
||||||
|
|
||||||
.masonry
|
|
||||||
{
|
|
||||||
margin: 0 auto;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
.masonry-box
|
|
||||||
{
|
|
||||||
width: 100%;
|
|
||||||
display: inline-block;
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
@media screen and (min-width: 1000px) and (max-width: 1399px)
|
|
||||||
{
|
|
||||||
.masonry-box
|
|
||||||
{
|
|
||||||
width: 50%;
|
|
||||||
display: block;
|
|
||||||
float: left;
|
|
||||||
clear: left;
|
|
||||||
}
|
|
||||||
.masonry-box:nth-child(2n+0)
|
|
||||||
{
|
|
||||||
float: right;
|
|
||||||
clear: right;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@media screen and (min-width: 1400px)
|
|
||||||
{
|
|
||||||
.masonry-box { width: 33.3%; }
|
|
||||||
}
|
|
||||||
@media screen and (min-width: 2000px)
|
|
||||||
{
|
|
||||||
.masonry-box { width: 25%; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Grid */
|
|
||||||
|
|
||||||
.htk-grid
|
|
||||||
{
|
|
||||||
margin: auto;
|
|
||||||
border-collapse: collapse;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.htk-grid > thead > tr,
|
|
||||||
.htk-grid > tfoot > tr
|
|
||||||
{
|
|
||||||
background-color: #009688;
|
|
||||||
vertical-align: middle;
|
|
||||||
text-align: center;
|
|
||||||
height: 3em;
|
|
||||||
}
|
|
||||||
.htk-grid > thead th
|
|
||||||
{
|
|
||||||
color: white;
|
|
||||||
cursor: pointer;
|
|
||||||
font-weight: normal;
|
|
||||||
padding: 0 0.4em;
|
|
||||||
}
|
|
||||||
.htk-grid > thead th:hover
|
|
||||||
{
|
|
||||||
background-color: rgba(1, 1, 1, 0.2);
|
|
||||||
}
|
|
||||||
.htk-grid tr
|
|
||||||
{
|
|
||||||
height: 3.5em;
|
|
||||||
}
|
|
||||||
.htk-grid > tfoot a,
|
|
||||||
.htk-grid > thead a
|
|
||||||
{
|
|
||||||
color: black;
|
|
||||||
}
|
|
||||||
.htk-grid tr.pair-row
|
|
||||||
{
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
.htk-grid .message
|
|
||||||
{
|
|
||||||
height: 5em;
|
|
||||||
}
|
|
||||||
.htk-grid .message img
|
|
||||||
{
|
|
||||||
vertical-align: middle;
|
|
||||||
padding: 0.8em;
|
|
||||||
height: 1.8em;
|
|
||||||
}
|
|
||||||
.htk-grid > tbody tr
|
|
||||||
{
|
|
||||||
border-top: 1px solid #DDD;
|
|
||||||
}
|
|
||||||
.htk-grid > tbody tr:first-child
|
|
||||||
{
|
|
||||||
border-top: none;
|
|
||||||
}
|
|
||||||
.htk-grid > tbody td
|
|
||||||
{
|
|
||||||
margin: 0;
|
|
||||||
padding: 0 0.5em;
|
|
||||||
}
|
|
||||||
.htk-grid > tbody td:first-child,
|
|
||||||
.htk-grid > thead th:first-child
|
|
||||||
{
|
|
||||||
padding-left: 1em;
|
|
||||||
}
|
|
||||||
.htk-grid > tbody td:last-child,
|
|
||||||
.htk-grid > thead th:last-child
|
|
||||||
{
|
|
||||||
padding-right: 1em;
|
|
||||||
}
|
|
||||||
.cell-spin
|
|
||||||
{
|
|
||||||
width: 2.5em;
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
.cell-button
|
|
||||||
{
|
|
||||||
margin: 0;
|
|
||||||
padding: 0.5em;
|
|
||||||
border: none;
|
|
||||||
background-color: transparent;
|
|
||||||
border-radius: 0.1em;
|
|
||||||
}
|
|
||||||
.cell-button:hover
|
|
||||||
{
|
|
||||||
background-color: rgba(1, 1, 1, 0.1);
|
|
||||||
}
|
|
||||||
.cell-button img
|
|
||||||
{
|
|
||||||
height: 1.5em;
|
|
||||||
display: block;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
.cell-image > img
|
|
||||||
{
|
|
||||||
max-width: 2.5em;
|
|
||||||
max-height: 2.5em;
|
|
||||||
display: block;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Repater */
|
|
||||||
|
|
||||||
.htk-repeater > .message
|
|
||||||
{
|
|
||||||
padding: 1em 0;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.htk-repeater > .message > *
|
|
||||||
{
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.htk-repeater > .message > img
|
|
||||||
{
|
|
||||||
padding: 0.8em;
|
|
||||||
padding-left: 0;
|
|
||||||
height: 1.8em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Calendar */
|
|
||||||
|
|
||||||
.htk-calendar
|
|
||||||
{
|
|
||||||
width: 20em;
|
|
||||||
background-color: white;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
.htk-calendar table
|
|
||||||
{
|
|
||||||
border-collapse: collapse;
|
|
||||||
}
|
|
||||||
.htk-calendar thead tr,
|
|
||||||
.htk-calendar tfoot tr
|
|
||||||
{
|
|
||||||
background-color: #009688;
|
|
||||||
color: white;
|
|
||||||
font-weight: normal;
|
|
||||||
vertical-align: middle;
|
|
||||||
text-align: center;
|
|
||||||
height: 3em;
|
|
||||||
}
|
|
||||||
.htk-calendar thead span
|
|
||||||
{
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
.htk-calendar thead tr
|
|
||||||
{
|
|
||||||
border-bottom: none;
|
|
||||||
}
|
|
||||||
.htk-calendar tfoot tr
|
|
||||||
{
|
|
||||||
border-top: none;
|
|
||||||
}
|
|
||||||
.htk-calendar th.button:hover
|
|
||||||
{
|
|
||||||
cursor: pointer;
|
|
||||||
background-color: rgba(1, 1, 1, 0.2);
|
|
||||||
}
|
|
||||||
.htk-calendar col
|
|
||||||
{
|
|
||||||
width: 14.2%;
|
|
||||||
}
|
|
||||||
.htk-calendar tr
|
|
||||||
{
|
|
||||||
height: 2em;
|
|
||||||
}
|
|
||||||
.htk-calendar tbody td
|
|
||||||
{
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
.htk-calendar tbody td > div
|
|
||||||
{
|
|
||||||
height: 2em;
|
|
||||||
width: 2em;
|
|
||||||
line-height: 2em;
|
|
||||||
text-align: center;
|
|
||||||
border-radius: 2em;
|
|
||||||
padding: 0.3em;
|
|
||||||
margin: 0 auto;
|
|
||||||
color: #555;
|
|
||||||
}
|
|
||||||
.htk-calendar div.disabled
|
|
||||||
{
|
|
||||||
color: #999;
|
|
||||||
}
|
|
||||||
.htk-calendar div.today
|
|
||||||
{
|
|
||||||
font-weight: bold;
|
|
||||||
color: black;
|
|
||||||
}
|
|
||||||
.htk-calendar div.selected
|
|
||||||
{
|
|
||||||
color: white;
|
|
||||||
background-color: #009688;
|
|
||||||
}
|
|
||||||
.htk-calendar div.enabled:hover
|
|
||||||
{
|
|
||||||
cursor: pointer;
|
|
||||||
background-color: #008678;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Date chooser */
|
|
||||||
|
|
||||||
.htk-date-chooser > button
|
|
||||||
{
|
|
||||||
margin: 0.2em;
|
|
||||||
padding: 0.3em;
|
|
||||||
background-color: white;
|
|
||||||
color: black;
|
|
||||||
text-align: left;
|
|
||||||
min-width: 9em;
|
|
||||||
min-height: 2.3em;
|
|
||||||
border: 1px solid #CCD;
|
|
||||||
border-radius: 0.1em;
|
|
||||||
box-shadow: 0 0.1em 0.1em #CCC;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Full image */
|
|
||||||
|
|
||||||
.htk-full-image
|
|
||||||
{
|
|
||||||
z-index: 100;
|
|
||||||
position: fixed;
|
|
||||||
background-color: #FFF;
|
|
||||||
text-align: center;
|
|
||||||
border: 1px solid #999;
|
|
||||||
border-radius: 2px;
|
|
||||||
}
|
|
||||||
.htk-full-image-loader
|
|
||||||
{
|
|
||||||
z-index: 110;
|
|
||||||
position: fixed;
|
|
||||||
background-color: #FFF;
|
|
||||||
border: 1px solid #999;
|
|
||||||
border-radius: 0.1em;
|
|
||||||
}
|
|
||||||
.htk-full-image-loader img
|
|
||||||
{
|
|
||||||
padding: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Toast */
|
|
||||||
|
|
||||||
.htk-toast
|
|
||||||
{
|
|
||||||
z-index: 210;
|
|
||||||
display: block;
|
|
||||||
position: fixed;
|
|
||||||
left: 50%;
|
|
||||||
top: 4em;
|
|
||||||
width: 21em;
|
|
||||||
margin-left: -11em;
|
|
||||||
text-align: center;
|
|
||||||
overflow: auto;
|
|
||||||
max-height: 40em;
|
|
||||||
}
|
|
||||||
.htk-toast > div
|
|
||||||
{
|
|
||||||
padding: .5em 2%;
|
|
||||||
margin: .5em 2%;
|
|
||||||
border-radius: 0.1em;
|
|
||||||
box-shadow: 0 0 0.4em #666;
|
|
||||||
width: 92%;
|
|
||||||
}
|
|
||||||
.htk-toast > .message
|
|
||||||
{
|
|
||||||
background-color: #BFB;
|
|
||||||
}
|
|
||||||
.htk-toast > .warning
|
|
||||||
{
|
|
||||||
background-color: #FFB;
|
|
||||||
}
|
|
||||||
.htk-toast > .error
|
|
||||||
{
|
|
||||||
background-color: #FBB;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Popup */
|
|
||||||
|
|
||||||
.htk-popup
|
|
||||||
{
|
|
||||||
z-index: 200;
|
|
||||||
display: block;
|
|
||||||
position: fixed;
|
|
||||||
background-color: white;
|
|
||||||
border-radius: 0.1em;
|
|
||||||
box-shadow: 0 0 0.4em #666;
|
|
||||||
}
|
|
||||||
.htk-background
|
|
||||||
{
|
|
||||||
position: fixed;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
top: 0;
|
|
||||||
bottom: 0;
|
|
||||||
z-index: 190;
|
|
||||||
background-color: rgba(1, 1, 1, 0.7);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Image editor */
|
|
||||||
|
|
||||||
.htk-image-editor
|
|
||||||
{
|
|
||||||
width: 20em;
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
.htk-image-editor h2
|
|
||||||
{
|
|
||||||
color: white;
|
|
||||||
background-color: #009688;
|
|
||||||
text-align: left;
|
|
||||||
font-size: 1.3em;
|
|
||||||
line-height: 1.7em;
|
|
||||||
font-weight: normal;
|
|
||||||
padding: 0.6em 0.8em;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
.htk-image-editor iframe
|
|
||||||
{
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.htk-image-editor form
|
|
||||||
{
|
|
||||||
padding: 1.5em;
|
|
||||||
}
|
|
||||||
.htk-image-editor .form-group
|
|
||||||
{
|
|
||||||
margin-bottom: 0.5em;
|
|
||||||
}
|
|
||||||
.htk-image-editor .form-group label
|
|
||||||
{
|
|
||||||
display: block;
|
|
||||||
margin-bottom: 0.3em;
|
|
||||||
}
|
|
||||||
.htk-image-editor .form-group input
|
|
||||||
{
|
|
||||||
width: 95%;
|
|
||||||
height: 1.8em;
|
|
||||||
}
|
|
||||||
.htk-image-editor .footer
|
|
||||||
{
|
|
||||||
margin-top: 1em;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.htk-image-editor .footer img
|
|
||||||
{
|
|
||||||
visibility: hidden;
|
|
||||||
vertical-align: middle;
|
|
||||||
padding-right: 1em;
|
|
||||||
}
|
|
||||||
.htk-image-editor .footer input
|
|
||||||
{
|
|
||||||
display: inline;
|
|
||||||
margin-left: 0.5em;
|
|
||||||
margin-right: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Assistant */
|
|
||||||
|
|
||||||
.htk-assistant > div
|
|
||||||
{
|
|
||||||
display: none;
|
|
||||||
margin-top: 1em;
|
|
||||||
margin-bottom: 4em;
|
|
||||||
}
|
|
||||||
.htk-assistant > div > h2
|
|
||||||
{
|
|
||||||
text-align: center;
|
|
||||||
font-style: italic;
|
|
||||||
font-weight: normal;
|
|
||||||
font-size: 1.5em;
|
|
||||||
margin: 0.5em;
|
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
|
||||||
.htk-assistant *
|
|
||||||
{
|
|
||||||
color: #555;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Assistant bar */
|
|
||||||
|
|
||||||
.htk-assistant-bar
|
|
||||||
{
|
|
||||||
margin: 0.5em auto;
|
|
||||||
max-width: 30em;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.htk-assistant-bar img
|
|
||||||
{
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.htk-assistant-bar > img
|
|
||||||
{
|
|
||||||
position: absolute;
|
|
||||||
width: 1.8em;
|
|
||||||
top: 0;
|
|
||||||
padding: 0.3em;
|
|
||||||
border-radius: 0.1em;
|
|
||||||
}
|
|
||||||
.htk-assistant-bar > img:hover
|
|
||||||
{
|
|
||||||
background-color: rgba(1,1,1,0.1);
|
|
||||||
}
|
|
||||||
.htk-assistant-bar > img.previous
|
|
||||||
{
|
|
||||||
left: 0;
|
|
||||||
}
|
|
||||||
.htk-assistant-bar > img.next
|
|
||||||
{
|
|
||||||
right: 0;
|
|
||||||
}
|
|
||||||
.htk-assistant-bar > div
|
|
||||||
{
|
|
||||||
margin: 0 auto;
|
|
||||||
padding-top: 0.2em;
|
|
||||||
}
|
|
||||||
.htk-assistant-bar > div > img
|
|
||||||
{
|
|
||||||
padding: 0.3em 0.2em;
|
|
||||||
width: 1.3em;
|
|
||||||
}
|
|
||||||
.htk-assistant-bar > div > img:hover
|
|
||||||
{
|
|
||||||
opacity: .7;
|
|
||||||
}
|
|
||||||
|
|
|
@ -111,11 +111,14 @@ Db.Model.implement
|
||||||
type: String
|
type: String
|
||||||
,set: function (x)
|
,set: function (x)
|
||||||
{
|
{
|
||||||
this._stmt = new Sql.String ({query: x});
|
this.stmt = new Sql.String ({query: x});
|
||||||
}
|
}
|
||||||
,get: function ()
|
,get: function ()
|
||||||
{
|
{
|
||||||
return this._stmt.render (null);
|
if (this._stmt)
|
||||||
|
return this._stmt.render (null);
|
||||||
|
else
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
|
@ -249,6 +252,8 @@ Db.Model.implement
|
||||||
{
|
{
|
||||||
if (this.autoLoad)
|
if (this.autoLoad)
|
||||||
this.refresh ();
|
this.refresh ();
|
||||||
|
else
|
||||||
|
this.clean ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -933,6 +938,22 @@ Db.Model.implement
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Orders the model by the specified column name.
|
||||||
|
*
|
||||||
|
* @param {integer} column The column name
|
||||||
|
* @param {Db.Model.SortWay} way The sort way
|
||||||
|
**/
|
||||||
|
,sortByName: function (columnName, way)
|
||||||
|
{
|
||||||
|
var index = this.getColumnIndex (columnName);
|
||||||
|
|
||||||
|
if (index != -1)
|
||||||
|
this.sort (index, way);
|
||||||
|
else
|
||||||
|
console.warn ('Db.Model: Column %s doesn\'t exist', columnName);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Orders the model by the specified column.
|
* Orders the model by the specified column.
|
||||||
|
|
|
@ -0,0 +1,93 @@
|
||||||
|
|
||||||
|
Vn.Form = new Class
|
||||||
|
({
|
||||||
|
Extends: Vn.Object
|
||||||
|
|
||||||
|
,initialize: function (gui, formInfo)
|
||||||
|
{
|
||||||
|
this.gui = gui;
|
||||||
|
this.conn = gui.conn;
|
||||||
|
this.hash = gui.hash;
|
||||||
|
this.formInfo = formInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets an object from the builder associated to this form.
|
||||||
|
*
|
||||||
|
* @param {string} objectId The object identifier
|
||||||
|
* @return {Object} The object, or %null if not found
|
||||||
|
**/
|
||||||
|
,$: function (objectId)
|
||||||
|
{
|
||||||
|
if (this.builder)
|
||||||
|
return this.builder.getById (objectId);
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the form is opened.
|
||||||
|
**/
|
||||||
|
,open: function ()
|
||||||
|
{
|
||||||
|
this.close ();
|
||||||
|
|
||||||
|
var builder = new Vn.Builder ();
|
||||||
|
builder.signalData = this;
|
||||||
|
builder.loadXml ('forms/'+ this.formInfo.path +'/ui.xml');
|
||||||
|
|
||||||
|
var res = this.builder = builder.load ();
|
||||||
|
this.node = res.$('form');
|
||||||
|
res.link ();
|
||||||
|
|
||||||
|
var models = res.getByTagName ('db-model');
|
||||||
|
|
||||||
|
for (var i = 0; i < models.length; i++)
|
||||||
|
models[i].conn = this.conn;
|
||||||
|
|
||||||
|
var queries = res.getByTagName ('db-query');
|
||||||
|
|
||||||
|
for (var i = 0; i < queries.length; i++)
|
||||||
|
queries[i].conn = this.conn;
|
||||||
|
|
||||||
|
this.gui.formHolder.appendChild (this.node);
|
||||||
|
this.gui.setTitle (res.$('title'));
|
||||||
|
this.gui.setActions (res.$('actions'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the form is activated.
|
||||||
|
**/
|
||||||
|
,activate: function () {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the form is deactivated.
|
||||||
|
**/
|
||||||
|
,deactivate: function () {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the form is closed.
|
||||||
|
**/
|
||||||
|
,close: function ()
|
||||||
|
{
|
||||||
|
if (this.node)
|
||||||
|
{
|
||||||
|
this.gui.setTitle (null);
|
||||||
|
this.gui.setActions (null);
|
||||||
|
Vn.Node.remove (this.node);
|
||||||
|
this.node = null;
|
||||||
|
}
|
||||||
|
if (this.builder)
|
||||||
|
{
|
||||||
|
this.builder.unref ();
|
||||||
|
this.builder = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
,_destroy: function ()
|
||||||
|
{
|
||||||
|
this.close ();
|
||||||
|
this.parent ();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
|
@ -49,7 +49,7 @@ Vn.Gui = new Class
|
||||||
|
|
||||||
this.hash = Vn.Hash;
|
this.hash = Vn.Hash;
|
||||||
this.hashParam = new Vn.HashParam ({key: 'form'});
|
this.hashParam = new Vn.HashParam ({key: 'form'});
|
||||||
this.hashParam.on ('changed', this.onFormChange, this);
|
this.hashParam.on ('changed', this._onFormChange, this);
|
||||||
|
|
||||||
this.$('background').onclick = function () {};
|
this.$('background').onclick = function () {};
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ Vn.Gui = new Class
|
||||||
if (!Vn.Cookie.check ('hedera_cookies'))
|
if (!Vn.Cookie.check ('hedera_cookies'))
|
||||||
{
|
{
|
||||||
Vn.Cookie.set ('hedera_cookies', true);
|
Vn.Cookie.set ('hedera_cookies', true);
|
||||||
Htk.Toast.showWarning (_('CookiesNotification'));
|
Htk.Toast.showWarning (_('By using this site you accept cookies'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,7 +189,7 @@ Vn.Gui = new Class
|
||||||
|
|
||||||
// Loading the default form
|
// Loading the default form
|
||||||
|
|
||||||
this.onFormChange ();
|
this._onFormChange ();
|
||||||
}
|
}
|
||||||
|
|
||||||
,notifyError: function (error)
|
,notifyError: function (error)
|
||||||
|
@ -214,7 +214,7 @@ Vn.Gui = new Class
|
||||||
switch (error.domain)
|
switch (error.domain)
|
||||||
{
|
{
|
||||||
case 'Auth':
|
case 'Auth':
|
||||||
Htk.Toast.showError (_('SessionExpired'));
|
Htk.Toast.showError (_('You\'ve been too idle'));
|
||||||
this.signalEmit ('logout');
|
this.signalEmit ('logout');
|
||||||
break;
|
break;
|
||||||
case 'Version':
|
case 'Version':
|
||||||
|
@ -225,12 +225,12 @@ Vn.Gui = new Class
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
console.error (error.message);
|
console.error (error.message);
|
||||||
Htk.Toast.showError (_('InternalError'));
|
Htk.Toast.showError (_('There was an internal error'));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
console.error (error);
|
console.error (error);
|
||||||
Htk.Toast.showError (_('InternalError'));
|
Htk.Toast.showError (_('There was an internal error'));
|
||||||
this.notifyError (error);
|
this.notifyError (error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -275,7 +275,7 @@ Vn.Gui = new Class
|
||||||
this.newVersionBlock = true;
|
this.newVersionBlock = true;
|
||||||
|
|
||||||
var reload;
|
var reload;
|
||||||
var message = _('NewVersionAvailable') +"\n\n"+ error.message;
|
var message = _('New version available') +"\n\n"+ error.message;
|
||||||
|
|
||||||
if (error.code == 'criticalVersion')
|
if (error.code == 'criticalVersion')
|
||||||
{
|
{
|
||||||
|
@ -365,10 +365,15 @@ Vn.Gui = new Class
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
,onFormChange: function ()
|
,_onFormChange: function ()
|
||||||
{
|
{
|
||||||
var formPath = this.hashParam.value;
|
var formPath = this.hashParam.value;
|
||||||
this.openForm (formPath ? formPath : Vn.Config['default_form'], null);
|
|
||||||
|
if (!formPath)
|
||||||
|
formPath = Vn.Config['default_form'];
|
||||||
|
|
||||||
|
this.openForm (formPath,
|
||||||
|
this._onFormLoad.bind (this));
|
||||||
}
|
}
|
||||||
|
|
||||||
,openForm: function (formPath, callback)
|
,openForm: function (formPath, callback)
|
||||||
|
@ -377,116 +382,43 @@ Vn.Gui = new Class
|
||||||
this.loaderPush ();
|
this.loaderPush ();
|
||||||
|
|
||||||
this.closeForm ();
|
this.closeForm ();
|
||||||
|
|
||||||
this.requestedForm = formPath;
|
this.requestedForm = formPath;
|
||||||
|
|
||||||
var formInfo = this.forms[formPath];
|
var newChoosedOption = this.menuOptions[formPath];
|
||||||
var path = 'forms/'+ formPath;
|
|
||||||
|
|
||||||
this.activeCss = path;
|
|
||||||
|
|
||||||
Vn.includeCss (this.activeCss +'/style.css');
|
|
||||||
|
|
||||||
if (!formInfo)
|
|
||||||
{
|
|
||||||
var aux = formPath.split ('/');
|
|
||||||
var formName = aux[aux.length - 1];
|
|
||||||
|
|
||||||
var klass = 'Vn.'+ formName.charAt (0).toUpperCase ();
|
|
||||||
klass += formName.substr (1).replace (/\w\-\w/g, function (token)
|
|
||||||
{
|
|
||||||
return token.charAt (0) + token.charAt (2).toUpperCase ();
|
|
||||||
});
|
|
||||||
|
|
||||||
formInfo = {
|
|
||||||
path: formPath
|
|
||||||
,klass: klass
|
|
||||||
,localeReady: false
|
|
||||||
,jsReady: false
|
|
||||||
,uiReady: false
|
|
||||||
,error: false
|
|
||||||
,ready: false
|
|
||||||
,callbacks: []
|
|
||||||
};
|
|
||||||
|
|
||||||
Vn.Locale.load (path,
|
|
||||||
this.onFormLocaleReady.bind (this, formInfo));
|
|
||||||
Vn.includeJs (path +'/'+ formName +'.js',
|
|
||||||
this.onFormJsReady.bind (this, formInfo));
|
|
||||||
Vn.loadXml ('forms/'+ formPath +'/ui.xml',
|
|
||||||
this.onFormUiReady.bind (this, formInfo));
|
|
||||||
|
|
||||||
this.forms[formPath] = formInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
var newChoosedOption = this.menuOptions[formInfo.path];
|
|
||||||
|
|
||||||
if (newChoosedOption)
|
if (newChoosedOption)
|
||||||
{
|
{
|
||||||
if (this.choosedOption)
|
Vn.Node.addClass (newChoosedOption, 'selected');
|
||||||
this.choosedOption.className = null;
|
|
||||||
|
|
||||||
newChoosedOption.className = 'selected';
|
|
||||||
this.choosedOption = newChoosedOption;
|
this.choosedOption = newChoosedOption;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (callback)
|
this.activeCss = 'forms/'+ formPath +'/style.css';
|
||||||
formInfo.callbacks.push (callback);
|
Vn.includeCss (this.activeCss);
|
||||||
if (formInfo.ready)
|
|
||||||
this.onFormReady (formInfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
,onFormLocaleReady: function (formInfo, success)
|
var formInfo = this.forms[formPath];
|
||||||
{
|
|
||||||
formInfo.localeReady = true;
|
|
||||||
this.onFormReady (formInfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
,onFormJsReady: function (formInfo, success)
|
if (!formInfo)
|
||||||
{
|
|
||||||
formInfo.jsReady = true;
|
|
||||||
formInfo.error = !success;
|
|
||||||
this.onFormReady (formInfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
,onFormUiReady: function (formInfo, success)
|
|
||||||
{
|
|
||||||
formInfo.uiReady = true;
|
|
||||||
formInfo.error = !success;
|
|
||||||
this.onFormReady (formInfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
,onFormReady: function (formInfo)
|
|
||||||
{
|
|
||||||
if (!(formInfo.localeReady && formInfo.jsReady && formInfo.uiReady))
|
|
||||||
return;
|
|
||||||
|
|
||||||
formInfo.ready = true;
|
|
||||||
|
|
||||||
if (!formInfo.error)
|
|
||||||
{
|
{
|
||||||
if (formInfo.path == this.requestedForm)
|
formInfo = new Vn.Module ('forms', formPath);
|
||||||
try {
|
this.forms[formPath] = formInfo;
|
||||||
var klass = eval (formInfo.klass);
|
|
||||||
this.activeForm = new klass (this, formInfo);
|
|
||||||
this.activeForm.open ();
|
|
||||||
this.activeForm.activate ();
|
|
||||||
}
|
|
||||||
catch (e) {
|
|
||||||
formInfo.error = true;
|
|
||||||
this.errorHandler (e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
Htk.Toast.showError (_('ErrorLoadingForm'));
|
formInfo.addCallback (callback);
|
||||||
|
}
|
||||||
var callbacks = formInfo.callbacks;
|
|
||||||
formInfo.callbacks = [];
|
|
||||||
|
|
||||||
for (var i = 0; i < callbacks.length; i++)
|
|
||||||
callbacks[i] (this.activeForm);
|
|
||||||
|
|
||||||
|
,_onFormLoad: function (formInfo)
|
||||||
|
{
|
||||||
this.loaderPop ();
|
this.loaderPop ();
|
||||||
|
|
||||||
|
if (formInfo.error)
|
||||||
|
{
|
||||||
|
Htk.Toast.showError (_('Error loading form'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.activeForm = new formInfo.klass (this, formInfo);
|
||||||
|
this.activeForm.open ();
|
||||||
|
this.activeForm.activate ();
|
||||||
}
|
}
|
||||||
|
|
||||||
,setTitle: function (title)
|
,setTitle: function (title)
|
||||||
|
@ -517,9 +449,37 @@ Vn.Gui = new Class
|
||||||
|
|
||||||
if (this.activeCss)
|
if (this.activeCss)
|
||||||
{
|
{
|
||||||
Vn.excludeCss (this.activeCss +'/style.css');
|
Vn.excludeCss (this.activeCss);
|
||||||
this.activeCss = null;
|
this.activeCss = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.choosedOption)
|
||||||
|
{
|
||||||
|
Vn.Node.removeClass (this.choosedOption, 'selected');
|
||||||
|
this.choosedOption = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
,openReport: function (reportName, batch)
|
||||||
|
{
|
||||||
|
this.loaderPush ();
|
||||||
|
|
||||||
|
var module = new Vn.Module ('reports', reportName);
|
||||||
|
module.addCallback (this._onReportLoad.bind (this, batch));
|
||||||
|
}
|
||||||
|
|
||||||
|
,_onReportLoad: function (batch, module)
|
||||||
|
{
|
||||||
|
this.loaderPop ();
|
||||||
|
|
||||||
|
if (module.error)
|
||||||
|
{
|
||||||
|
Htk.Toast.showError (_('Error loading report'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var report = new module.klass (module, this);
|
||||||
|
report.open (batch);
|
||||||
}
|
}
|
||||||
|
|
||||||
,_destroy: function ()
|
,_destroy: function ()
|
||||||
|
|
|
@ -66,7 +66,7 @@ Vn.Login = new Class
|
||||||
|
|
||||||
if (!success)
|
if (!success)
|
||||||
{
|
{
|
||||||
Htk.Toast.showError (_('InvalidLogin'));
|
Htk.Toast.showError (_('Invalid login'));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
this.signalEmit ('login');
|
this.signalEmit ('login');
|
||||||
|
|
|
@ -2,7 +2,9 @@
|
||||||
<div id="main" class="vn-login">
|
<div id="main" class="vn-login">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<div>
|
<div>
|
||||||
<a href="#!page=web&guest=true&form=cms/about"><t>IWantToKnowMore</t></a>
|
<a href="#!page=web&guest=true&form=cms/about">
|
||||||
|
<t>I want to know more</t>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="body">
|
<div class="body">
|
||||||
|
@ -25,14 +27,14 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
<input type="checkbox" id="remember" name="remember"/>
|
<input type="checkbox" id="remember" name="remember"/>
|
||||||
<label for="remember"><t>NotCloseSession</t></label>
|
<label for="remember"><t>Do not sign out</t></label>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<input id="submit" type="submit" value="_Enter"/>
|
<input id="submit" type="submit" value="_Enter"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<p><t>LoginMail</t></p>
|
<p><t>Login mail</t></p>
|
||||||
<p><t>LoginPhone</t></p>
|
<p><t>Login phone</t></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="links">
|
<div class="links">
|
||||||
<a target="_blank" href="http://verdnaturacomunicacion.blogspot.com.es/">
|
<a target="_blank" href="http://verdnaturacomunicacion.blogspot.com.es/">
|
||||||
|
|
|
@ -7,6 +7,7 @@ Vn.includeLib ('hedera',
|
||||||
,'login'
|
,'login'
|
||||||
,'gui'
|
,'gui'
|
||||||
,'module'
|
,'module'
|
||||||
|
,'form'
|
||||||
,'report'
|
,'report'
|
||||||
,'app'
|
,'app'
|
||||||
,'tpv'
|
,'tpv'
|
||||||
|
|
|
@ -1,92 +1,96 @@
|
||||||
|
|
||||||
Vn.Module = new Class
|
Vn.Module = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Object
|
basePath: null
|
||||||
|
,path: null
|
||||||
|
,moduleName: null
|
||||||
|
,callbacks: []
|
||||||
|
,localeReady: false
|
||||||
|
,jsReady: false
|
||||||
|
,uiReady: false
|
||||||
|
,error: false
|
||||||
|
,ready: false
|
||||||
|
|
||||||
,initialize: function (gui, formInfo)
|
,initialize: function (basePath, path)
|
||||||
{
|
{
|
||||||
this.gui = gui;
|
var absPath = basePath +'/'+ path;
|
||||||
this.conn = gui.conn;
|
|
||||||
this.hash = gui.hash;
|
|
||||||
this.formInfo = formInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
var aux = path.split ('/');
|
||||||
* Gets an object from the builder associated to this form.
|
var moduleName = aux[aux.length - 1];
|
||||||
*
|
|
||||||
* @param {string} objectId The object identifier
|
|
||||||
* @return {Object} The object, or %null if not found
|
|
||||||
**/
|
|
||||||
,$: function (objectId)
|
|
||||||
{
|
|
||||||
if (this.builder)
|
|
||||||
return this.builder.getById (objectId);
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
Vn.Locale.load (absPath,
|
||||||
* Called when the form is opened.
|
this.onLocaleReady.bind (this));
|
||||||
**/
|
Vn.includeJs (absPath +'/'+ moduleName +'.js',
|
||||||
,open: function ()
|
this.onJsReady.bind (this));
|
||||||
{
|
Vn.loadXml (absPath +'/ui.xml',
|
||||||
this.close ();
|
this.onUiReady.bind (this));
|
||||||
|
|
||||||
var builder = new Vn.Builder ();
|
|
||||||
builder.signalData = this;
|
|
||||||
builder.loadXml ('forms/'+ this.formInfo.path +'/ui.xml');
|
|
||||||
|
|
||||||
var res = this.builder = builder.load ();
|
this.basePath = basePath;
|
||||||
this.node = res.$('form');
|
this.path = path;
|
||||||
|
this.moduleName = moduleName;
|
||||||
var models = res.getByTagName ('db-model');
|
|
||||||
|
|
||||||
for (var i = 0; i < models.length; i++)
|
|
||||||
models[i].conn = this.conn;
|
|
||||||
|
|
||||||
var queries = res.getByTagName ('db-query');
|
|
||||||
|
|
||||||
for (var i = 0; i < queries.length; i++)
|
|
||||||
queries[i].conn = this.conn;
|
|
||||||
|
|
||||||
this.gui.formHolder.appendChild (this.node);
|
|
||||||
this.gui.setTitle (res.$('title'));
|
|
||||||
this.gui.setActions (res.$('actions'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
,addCallback: function (callback)
|
||||||
* Called when the form is activated.
|
|
||||||
**/
|
|
||||||
,activate: function () {}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called when the form is deactivated.
|
|
||||||
**/
|
|
||||||
,deactivate: function () {}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called when the form is closed.
|
|
||||||
**/
|
|
||||||
,close: function ()
|
|
||||||
{
|
{
|
||||||
if (this.node)
|
if (!this.ready)
|
||||||
{
|
this.callbacks.push (callback);
|
||||||
this.gui.setTitle (null);
|
else
|
||||||
this.gui.setActions (null);
|
callback (this);
|
||||||
Vn.Node.remove (this.node);
|
}
|
||||||
this.node = null;
|
|
||||||
|
,onLocaleReady: function (success)
|
||||||
|
{
|
||||||
|
this.localeReady = true;
|
||||||
|
this.onReady ();
|
||||||
|
}
|
||||||
|
|
||||||
|
,onJsReady: function (success)
|
||||||
|
{
|
||||||
|
this.jsReady = true;
|
||||||
|
this.error = !success;
|
||||||
|
this.onReady ();
|
||||||
|
}
|
||||||
|
|
||||||
|
,onUiReady: function (success)
|
||||||
|
{
|
||||||
|
this.uiReady = true;
|
||||||
|
this.error = !success;
|
||||||
|
this.onReady ();
|
||||||
|
}
|
||||||
|
|
||||||
|
,onReady: function ()
|
||||||
|
{
|
||||||
|
if (!(this.localeReady && this.jsReady && this.uiReady))
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.ready = true;
|
||||||
|
|
||||||
|
var klassName = this.toCamelCase (this.moduleName);
|
||||||
|
|
||||||
|
try {
|
||||||
|
this.klass = eval (klassName);
|
||||||
}
|
}
|
||||||
if (this.builder)
|
catch (e)
|
||||||
{
|
{
|
||||||
this.builder.unref ();
|
this.error = true;
|
||||||
this.builder = null;
|
console.error (e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
,_destroy: function ()
|
var callbacks = this.callbacks;
|
||||||
|
this.callbacks = null;
|
||||||
|
|
||||||
|
for (var i = 0; i < callbacks.length; i++)
|
||||||
|
callbacks[i] (this);
|
||||||
|
}
|
||||||
|
|
||||||
|
,toCamelCase: function (dashedName)
|
||||||
{
|
{
|
||||||
this.close ();
|
var camelCase = 'Vn.'+ dashedName.charAt (0).toUpperCase ();
|
||||||
this.parent ();
|
camelCase += dashedName.substr (1).replace (/\w\-\w/g, function (token)
|
||||||
|
{
|
||||||
|
return token.charAt (0) + token.charAt (2).toUpperCase ();
|
||||||
|
});
|
||||||
|
return camelCase;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,59 @@ Vn.Report = new Class
|
||||||
({
|
({
|
||||||
Extends: Vn.Object
|
Extends: Vn.Object
|
||||||
|
|
||||||
,open: function () {}
|
,initialize: function (moduleInfo, gui)
|
||||||
|
{
|
||||||
|
this.info = moduleInfo;
|
||||||
|
this.gui = gui;
|
||||||
|
this.conn = gui.conn;
|
||||||
|
this.parent (null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets an object from the builder associated to this report.
|
||||||
|
*
|
||||||
|
* @param {string} objectId The object identifier
|
||||||
|
* @return {Object} The object, or %null if not found
|
||||||
|
**/
|
||||||
|
,$: function (objectId)
|
||||||
|
{
|
||||||
|
if (this.builderResult)
|
||||||
|
return this.builderResult.getById (objectId);
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
,open: function (batch)
|
||||||
|
{
|
||||||
|
this.batch = batch;
|
||||||
|
this.createWindow (this._onWindowLoad.bind (this));
|
||||||
|
}
|
||||||
|
|
||||||
|
,_onWindowLoad: function ()
|
||||||
|
{
|
||||||
|
this.doc = this.window.document
|
||||||
|
|
||||||
|
var path = this.info.path;
|
||||||
|
|
||||||
|
this.includeCss ('reports/'+ path +'/style.css');
|
||||||
|
|
||||||
|
var printButton = this.doc.createElement ('button');
|
||||||
|
printButton.className = 'print-button';
|
||||||
|
printButton.appendChild (this.doc.createTextNode (_('Print')));
|
||||||
|
printButton.addEventListener ('click', this.print.bind (this));
|
||||||
|
this.doc.body.appendChild (printButton);
|
||||||
|
|
||||||
|
var builder = new Vn.Builder ();
|
||||||
|
builder.signalData = this;
|
||||||
|
builder.add ('batch', this.batch);
|
||||||
|
builder.add ('conn', this.conn);
|
||||||
|
builder.loadXml ('reports/'+ path +'/ui.xml');
|
||||||
|
|
||||||
|
var res = this.builderResult = builder.load ();
|
||||||
|
res.link ();
|
||||||
|
|
||||||
|
this.doc.body.appendChild (res.$('report'));
|
||||||
|
}
|
||||||
|
|
||||||
,print: function ()
|
,print: function ()
|
||||||
{
|
{
|
||||||
|
@ -26,9 +78,9 @@ Vn.Report = new Class
|
||||||
head.appendChild (link);
|
head.appendChild (link);
|
||||||
}
|
}
|
||||||
|
|
||||||
,createWindow: function (reportPath)
|
,createWindow: function (callback)
|
||||||
{
|
{
|
||||||
var reportWindow = window.open (''/*'js/hedera/report.html'*/, '_blank'/*reportPath*/,
|
var reportWindow = window.open ('js/hedera/report.html', '_blank'/*this.info.path*/,
|
||||||
'resizable=yes,height=900,width=900,scrollbars=yes,menubar=false');
|
'resizable=yes,height=900,width=900,scrollbars=yes,menubar=false');
|
||||||
|
|
||||||
if (!reportWindow)
|
if (!reportWindow)
|
||||||
|
@ -38,18 +90,8 @@ Vn.Report = new Class
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reportWindow.addEventListener ('load', callback);
|
||||||
this.window = reportWindow;
|
this.window = reportWindow;
|
||||||
this.doc = reportWindow.document
|
|
||||||
|
|
||||||
this.includeCss ('js/hedera/report.css');
|
|
||||||
this.includeCss ('reports/'+ reportPath +'/style.css');
|
|
||||||
|
|
||||||
var printButton = this.doc.createElement ('button');
|
|
||||||
printButton.className = 'print-button';
|
|
||||||
printButton.appendChild (this.doc.createTextNode (_('Print')));
|
|
||||||
printButton.addEventListener ('click', this.print.bind (this));
|
|
||||||
this.doc.body.appendChild (printButton);
|
|
||||||
|
|
||||||
return reportWindow;
|
return reportWindow;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -8,7 +8,7 @@ Htk.RadioGroup = new Class
|
||||||
,initialize: function (props)
|
,initialize: function (props)
|
||||||
{
|
{
|
||||||
this.clear ();
|
this.clear ();
|
||||||
this.on ('changed', this.onRadioGroupChange, this);
|
this.on ('changed', this._onRadioGroupChange, this);
|
||||||
this.parent (props);
|
this.parent (props);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,14 +18,14 @@ Htk.RadioGroup = new Class
|
||||||
this.buttons = [];
|
this.buttons = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
,onRadioGroupChange: function ()
|
,_onRadioGroupChange: function ()
|
||||||
{
|
{
|
||||||
for (var i = 0; i < this.buttons.length; i++)
|
for (var i = 0; i < this.buttons.length; i++)
|
||||||
if (this.buttons[i].value == this._value)
|
if (this.buttons[i].value == this._value)
|
||||||
this.buttons[i].checked = true;
|
this.buttons[i].checked = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
,onRadioChange: function (value)
|
,_onRadioChange: function (value)
|
||||||
{
|
{
|
||||||
if (this.radioLock)
|
if (this.radioLock)
|
||||||
return;
|
return;
|
||||||
|
@ -40,7 +40,7 @@ Htk.RadioGroup = new Class
|
||||||
var radio = Vn.Browser.createRadio (this.name);
|
var radio = Vn.Browser.createRadio (this.name);
|
||||||
radio.value = value;
|
radio.value = value;
|
||||||
radio.checked = value == this.value;
|
radio.checked = value == this.value;
|
||||||
radio.addEventListener ('change', this.onRadioChange.bind (this, value));
|
radio.addEventListener ('change', this._onRadioChange.bind (this, value));
|
||||||
this.buttons.push (radio);
|
this.buttons.push (radio);
|
||||||
|
|
||||||
return radio;
|
return radio;
|
||||||
|
|
|
@ -18,9 +18,9 @@ Htk.Radio = new Class
|
||||||
type: Htk.RadioGroup
|
type: Htk.RadioGroup
|
||||||
,set: function (x)
|
,set: function (x)
|
||||||
{
|
{
|
||||||
this.link ({_radioGroup: x}, {'changed': this.onRadioGroupChange});
|
this.link ({_radioGroup: x}, {'changed': this._onRadioGroupChange});
|
||||||
this.node.name = x.name
|
this.node.name = x.name
|
||||||
this.onRadioGroupChange ();
|
this._onRadioGroupChange ();
|
||||||
}
|
}
|
||||||
,get: function ()
|
,get: function ()
|
||||||
{
|
{
|
||||||
|
@ -35,19 +35,19 @@ Htk.Radio = new Class
|
||||||
{
|
{
|
||||||
var radio = Vn.Browser.createRadio ('');
|
var radio = Vn.Browser.createRadio ('');
|
||||||
radio.checked = false;
|
radio.checked = false;
|
||||||
radio.addEventListener ('change', this.onChange.bind (this));
|
radio.addEventListener ('change', this._onChange.bind (this));
|
||||||
this.node = radio;
|
this.node = radio;
|
||||||
|
|
||||||
this.parent (props);
|
this.parent (props);
|
||||||
}
|
}
|
||||||
|
|
||||||
,onChange: function ()
|
,_onChange: function ()
|
||||||
{
|
{
|
||||||
if (this.node.checked && this._radioGroup)
|
if (this.node.checked && this._radioGroup)
|
||||||
this._radioGroup.value = this.value;
|
this._radioGroup.value = this.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
,onRadioGroupChange: function ()
|
,_onRadioGroupChange: function ()
|
||||||
{
|
{
|
||||||
if (this._radioGroup.value && this._radioGroup.value == this.value)
|
if (this._radioGroup.value && this._radioGroup.value == this.value)
|
||||||
this.node.checked = true;
|
this.node.checked = true;
|
||||||
|
|
|
@ -84,6 +84,21 @@ Htk.Select = new Class
|
||||||
{
|
{
|
||||||
return this._placeholder;
|
return this._placeholder;
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* Wether to allow null values.
|
||||||
|
**/
|
||||||
|
notNull:
|
||||||
|
{
|
||||||
|
type: Boolean
|
||||||
|
,set: function (x)
|
||||||
|
{
|
||||||
|
this._notNull = x;
|
||||||
|
}
|
||||||
|
,get: function ()
|
||||||
|
{
|
||||||
|
return this._notNull;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,6 +108,7 @@ Htk.Select = new Class
|
||||||
,valueColumnName: null
|
,valueColumnName: null
|
||||||
,showColumnIndex: 1
|
,showColumnIndex: 1
|
||||||
,showColumnName: null
|
,showColumnName: null
|
||||||
|
,_notNull: true
|
||||||
|
|
||||||
,initialize: function (props)
|
,initialize: function (props)
|
||||||
{
|
{
|
||||||
|
@ -151,6 +167,8 @@ Htk.Select = new Class
|
||||||
|
|
||||||
if (this._placeholder)
|
if (this._placeholder)
|
||||||
inc++;
|
inc++;
|
||||||
|
if (!this._notNull)
|
||||||
|
inc++;
|
||||||
|
|
||||||
return inc;
|
return inc;
|
||||||
}
|
}
|
||||||
|
@ -205,6 +223,9 @@ Htk.Select = new Class
|
||||||
{
|
{
|
||||||
var data = model.data;
|
var data = model.data;
|
||||||
|
|
||||||
|
if (!this.notNull)
|
||||||
|
this.addOption (null, null);
|
||||||
|
|
||||||
for (var i = 0; i < data.length; i++)
|
for (var i = 0; i < data.length; i++)
|
||||||
this.addOption (data[i][this.showColumnIndex], data[i][1]);
|
this.addOption (data[i][this.showColumnIndex], data[i][1]);
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
|
||||||
Htk.Grid = new Class
|
Htk.Grid = new Class
|
||||||
({
|
({
|
||||||
Extends: Htk.Widget
|
Extends: Htk.Widget
|
||||||
|
@ -383,3 +384,4 @@ Htk.Grid = new Class
|
||||||
this.onModelChange ();
|
this.onModelChange ();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -105,6 +105,7 @@ Htk.Repeater = new Class
|
||||||
|
|
||||||
this._builder.add (this._formId, form);
|
this._builder.add (this._formId, form);
|
||||||
var res = this._builder.load ();
|
var res = this._builder.load ();
|
||||||
|
res.link ();
|
||||||
|
|
||||||
this._childsData.push ({
|
this._childsData.push ({
|
||||||
builder: res,
|
builder: res,
|
||||||
|
@ -156,7 +157,7 @@ Htk.Repeater = new Class
|
||||||
,_showNoRecordsFound: function (count)
|
,_showNoRecordsFound: function (count)
|
||||||
{
|
{
|
||||||
if (this._model.numRows === 0)
|
if (this._model.numRows === 0)
|
||||||
this.showMessage (_('EmptyList'), 'clean.svg');
|
this._showMessage (_('EmptyList'), 'clean.svg');
|
||||||
}
|
}
|
||||||
|
|
||||||
,_showMessage: function (message, src)
|
,_showMessage: function (message, src)
|
||||||
|
|
|
@ -29,6 +29,7 @@ Htk.Widget = new Class
|
||||||
|
|
||||||
var res = this.builder = builder.load ();
|
var res = this.builder = builder.load ();
|
||||||
this.node = res.$('main');
|
this.node = res.$('main');
|
||||||
|
res.link ();
|
||||||
}
|
}
|
||||||
|
|
||||||
,createElement: function (tagName)
|
,createElement: function (tagName)
|
||||||
|
|
|
@ -5,12 +5,27 @@ Sql.FilterItem = new Class
|
||||||
({
|
({
|
||||||
Extends: Sql.Operation
|
Extends: Sql.Operation
|
||||||
,Tag: 'sql-filter-item'
|
,Tag: 'sql-filter-item'
|
||||||
|
,Properties:
|
||||||
,render: function (batch)
|
|
||||||
{
|
{
|
||||||
if (!this.isReady ())
|
disabled:
|
||||||
return 'TRUE';
|
{
|
||||||
|
type: Boolean
|
||||||
|
,set: function (x)
|
||||||
|
{
|
||||||
|
this._disabled = x;
|
||||||
|
}
|
||||||
|
,get: function ()
|
||||||
|
{
|
||||||
|
return this._disabled;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
,isReady: function ()
|
||||||
|
{
|
||||||
|
if (this._disabled)
|
||||||
|
return false;
|
||||||
|
|
||||||
return this.parent (batch);
|
return this.parent ();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -5,15 +5,43 @@ Sql.Filter = new Class
|
||||||
({
|
({
|
||||||
Extends: Sql.Operation
|
Extends: Sql.Operation
|
||||||
,Tag: 'sql-filter'
|
,Tag: 'sql-filter'
|
||||||
|
,Properties:
|
||||||
|
{
|
||||||
|
alwaysReady:
|
||||||
|
{
|
||||||
|
type: Boolean
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
,isReady: function ()
|
,isReady: function ()
|
||||||
{
|
{
|
||||||
var e = this.exprs.getArray ();
|
if (this.alwaysReady)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
var e = this.exprs.getArray ();
|
||||||
for (var i = 0; i < e.length; i++)
|
for (var i = 0; i < e.length; i++)
|
||||||
if (e[i].isReady ())
|
if (e[i].isReady ())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
,render: function (batch)
|
||||||
|
{
|
||||||
|
var isReady = false;
|
||||||
|
var newOp = new Sql.Operation ({type: this.type});
|
||||||
|
|
||||||
|
var e = this.exprs.getArray ();
|
||||||
|
for (var i = 0; i < e.length; i++)
|
||||||
|
if (e[i].isReady ())
|
||||||
|
{
|
||||||
|
newOp.exprs.add (e[i]);
|
||||||
|
isReady = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isReady)
|
||||||
|
return 'TRUE';
|
||||||
|
|
||||||
|
return newOp.render (batch);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -25,7 +25,7 @@ Vn.Builder = new Class
|
||||||
return result.objects[this._mainContext];
|
return result.objects[this._mainContext];
|
||||||
}
|
}
|
||||||
|
|
||||||
,getById: function (objectId, result)
|
,getById: function (result, objectId)
|
||||||
{
|
{
|
||||||
var index = this._contextMap[objectId];
|
var index = this._contextMap[objectId];
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ Vn.Builder = new Class
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
,getByTagName: function (tagName, result)
|
,getByTagName: function (result, tagName)
|
||||||
{
|
{
|
||||||
var tags = this._tags[tagName];
|
var tags = this._tags[tagName];
|
||||||
|
|
||||||
|
@ -54,6 +54,13 @@ Vn.Builder = new Class
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compiles an XML file.
|
||||||
|
*
|
||||||
|
* @path String The XML path
|
||||||
|
* @dstDocument Document The document used to create the nodes
|
||||||
|
* @return %true on success, %false othersise
|
||||||
|
**/
|
||||||
,loadXml: function (path, dstDocument)
|
,loadXml: function (path, dstDocument)
|
||||||
{
|
{
|
||||||
var xmlDoc = Vn.getXml (path);
|
var xmlDoc = Vn.getXml (path);
|
||||||
|
@ -83,11 +90,19 @@ Vn.Builder = new Class
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compiles a single DOM node.
|
||||||
|
*
|
||||||
|
* @path Node The DOM node
|
||||||
|
* @dstDocument Document The document used to create the nodes
|
||||||
|
* @return %true on success, %false othersise
|
||||||
|
**/
|
||||||
,loadXmlFromNode: function (node, dstDocument)
|
,loadXmlFromNode: function (node, dstDocument)
|
||||||
{
|
{
|
||||||
this._compileInit (dstDocument);
|
this._compileInit (dstDocument);
|
||||||
this._mainContext = this._compileNode (node).id;
|
this._mainContext = this._compileNode (node).id;
|
||||||
this._compileEnd ();
|
this._compileEnd ();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
,load: function ()
|
,load: function ()
|
||||||
|
@ -111,7 +126,12 @@ Vn.Builder = new Class
|
||||||
objects[i] = this.textInstantiate (context);
|
objects[i] = this.textInstantiate (context);
|
||||||
}
|
}
|
||||||
|
|
||||||
var res = new BuilderResult (this, objects);
|
return new BuilderResult (this, objects);
|
||||||
|
}
|
||||||
|
|
||||||
|
,link: function (result)
|
||||||
|
{
|
||||||
|
var objects = result.objects;
|
||||||
|
|
||||||
for (var i = this._links.length - 1; i >= 0; i--)
|
for (var i = this._links.length - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
|
@ -128,18 +148,17 @@ Vn.Builder = new Class
|
||||||
l.objectId);
|
l.objectId);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < len; i++)
|
var contexts = this._contexts;
|
||||||
|
for (var i = 0; i < contexts.length; i++)
|
||||||
{
|
{
|
||||||
var context = contexts[i];
|
var context = contexts[i];
|
||||||
var object = objects[i];
|
var object = objects[i];
|
||||||
|
|
||||||
if (context.tagName)
|
if (context.tagName)
|
||||||
this.elementLink (context, object, objects, res);
|
this.elementLink (context, object, objects, result);
|
||||||
else if (context.klass)
|
else if (context.klass)
|
||||||
this.objectLink (context, object, objects, res);
|
this.objectLink (context, object, objects, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
,_compileInit: function (dstDocument)
|
,_compileInit: function (dstDocument)
|
||||||
|
@ -160,7 +179,7 @@ Vn.Builder = new Class
|
||||||
var l = this._links[i];
|
var l = this._links[i];
|
||||||
var contextId = this._contextMap[l.objectId]
|
var contextId = this._contextMap[l.objectId]
|
||||||
|
|
||||||
if (contextId)
|
if (contextId != undefined)
|
||||||
{
|
{
|
||||||
if (l.prop)
|
if (l.prop)
|
||||||
l.context.objectProps[l.prop] = contextId;
|
l.context.objectProps[l.prop] = contextId;
|
||||||
|
@ -169,12 +188,18 @@ Vn.Builder = new Class
|
||||||
|
|
||||||
this._links.splice (i, 1);
|
this._links.splice (i, 1);
|
||||||
}
|
}
|
||||||
else if (this._parentResult)
|
else
|
||||||
{
|
{
|
||||||
var object = this._parentResult.getById (l.objectId);
|
var object = this._addedMap[l.objectId];
|
||||||
|
|
||||||
|
if (!object && this._parentResult)
|
||||||
|
object = this._parentResult.getById (l.objectId);
|
||||||
|
|
||||||
if (object)
|
if (object)
|
||||||
pl.context.props[pl.prop] = object;
|
{
|
||||||
|
l.context.props[l.prop] = object;
|
||||||
|
this._links.splice (i, 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -305,7 +330,10 @@ Vn.Builder = new Class
|
||||||
var prop = child.getAttribute ('property');
|
var prop = child.getAttribute ('property');
|
||||||
|
|
||||||
if (prop)
|
if (prop)
|
||||||
|
{
|
||||||
|
prop = prop.replace (/-./g, this._replaceFunc);
|
||||||
objectProps[prop] = childContext.id;
|
objectProps[prop] = childContext.id;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
childs.push (childContext.id);
|
childs.push (childContext.id);
|
||||||
}
|
}
|
||||||
|
@ -345,7 +373,7 @@ Vn.Builder = new Class
|
||||||
newValue = this._translateValue (value);
|
newValue = this._translateValue (value);
|
||||||
break;
|
break;
|
||||||
case Function:
|
case Function:
|
||||||
newValue = this._getMethod (value);
|
newValue = this._getMethod (value).bind (this.signalData);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (propInfo.enumType)
|
if (propInfo.enumType)
|
||||||
|
@ -356,7 +384,7 @@ Vn.Builder = new Class
|
||||||
if (newValue !== null && newValue !== undefined)
|
if (newValue !== null && newValue !== undefined)
|
||||||
props[propName] = newValue;
|
props[propName] = newValue;
|
||||||
else if (propInfo.type instanceof Function)
|
else if (propInfo.type instanceof Function)
|
||||||
this._addLink (context, attribute, value);
|
this._addLink (context, propName, value);
|
||||||
else
|
else
|
||||||
this._showError ('Attribute \'%s\' invalid for tag \'%s\'',
|
this._showError ('Attribute \'%s\' invalid for tag \'%s\'',
|
||||||
attribute, node.tagName);
|
attribute, node.tagName);
|
||||||
|
@ -364,11 +392,13 @@ Vn.Builder = new Class
|
||||||
|
|
||||||
,objectInstantiate: function (context)
|
,objectInstantiate: function (context)
|
||||||
{
|
{
|
||||||
return new context.klass (context.props);
|
return new context.klass ();
|
||||||
}
|
}
|
||||||
|
|
||||||
,objectLink: function (context, object, objects, res)
|
,objectLink: function (context, object, objects, res)
|
||||||
{
|
{
|
||||||
|
object.setProperties (context.props);
|
||||||
|
|
||||||
var objectProps = context.objectProps;
|
var objectProps = context.objectProps;
|
||||||
for (var prop in objectProps)
|
for (var prop in objectProps)
|
||||||
object[prop] = objects[objectProps[prop]];
|
object[prop] = objects[objectProps[prop]];
|
||||||
|
@ -379,8 +409,7 @@ Vn.Builder = new Class
|
||||||
|
|
||||||
var events = context.events;
|
var events = context.events;
|
||||||
for (var event in events)
|
for (var event in events)
|
||||||
object.on (event,
|
object.on (event, events[event], this.signalData);
|
||||||
events[event].bind (this.signalData));
|
|
||||||
|
|
||||||
if (context.custom)
|
if (context.custom)
|
||||||
object.loadXml (res, context.custom);
|
object.loadXml (res, context.custom);
|
||||||
|
@ -442,8 +471,8 @@ Vn.Builder = new Class
|
||||||
var child = objects[childs[i]];
|
var child = objects[childs[i]];
|
||||||
|
|
||||||
if (child instanceof Htk.Widget)
|
if (child instanceof Htk.Widget)
|
||||||
object.appendChild (child.getNode ());
|
child = child.getNode ();
|
||||||
else if (child instanceof Node)
|
if (child instanceof Node)
|
||||||
object.appendChild (child);
|
object.appendChild (child);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -539,17 +568,22 @@ var BuilderResult = new Class
|
||||||
|
|
||||||
,$: function (objectId)
|
,$: function (objectId)
|
||||||
{
|
{
|
||||||
return this.builder.getById (objectId, this);
|
return this.builder.getById (this, objectId);
|
||||||
}
|
}
|
||||||
|
|
||||||
,getById: function (objectId)
|
,getById: function (objectId)
|
||||||
{
|
{
|
||||||
return this.builder.getById (objectId, this);
|
return this.builder.getById (this, objectId);
|
||||||
}
|
}
|
||||||
|
|
||||||
,getByTagName: function (tagName)
|
,getByTagName: function (tagName)
|
||||||
{
|
{
|
||||||
return this.builder.getByTagName (tagName, this);
|
return this.builder.getByTagName (this, tagName);
|
||||||
|
}
|
||||||
|
|
||||||
|
,link: function ()
|
||||||
|
{
|
||||||
|
this.builder.link (this);
|
||||||
}
|
}
|
||||||
|
|
||||||
,_destroy: function ()
|
,_destroy: function ()
|
||||||
|
|
|
@ -12,6 +12,11 @@ Vn.Object = new Class
|
||||||
,_signalData: null
|
,_signalData: null
|
||||||
|
|
||||||
,initialize: function (props)
|
,initialize: function (props)
|
||||||
|
{
|
||||||
|
this.setProperties (props);
|
||||||
|
}
|
||||||
|
|
||||||
|
,setProperties: function (props)
|
||||||
{
|
{
|
||||||
for (var prop in props)
|
for (var prop in props)
|
||||||
this[prop] = props[prop];
|
this[prop] = props[prop];
|
||||||
|
|
|
@ -119,7 +119,6 @@ var Vn =
|
||||||
delete includeData.callbacks;
|
delete includeData.callbacks;
|
||||||
delete includeData.dependants;
|
delete includeData.dependants;
|
||||||
delete includeData.depCount;
|
delete includeData.depCount;
|
||||||
delete includeData.loaded;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
Vn.Locale.add
|
Vn.Locale.add
|
||||||
({
|
({
|
||||||
"ConnError": "Error en la conexió"
|
"ConnError": "Error en la conexió"
|
||||||
,"InternalError": "S'ha produït un error intern"
|
|
||||||
,"BadServerReply": "Resposta del servidor incorrecta"
|
,"BadServerReply": "Resposta del servidor incorrecta"
|
||||||
,"ModelNotUpdatable": "Aquest model no és actualitzable"
|
,"ModelNotUpdatable": "Aquest model no és actualitzable"
|
||||||
,"RowNotExists": "El registre no existeix o ha sigut esborrat"
|
,"RowNotExists": "El registre no existeix o ha sigut esborrat"
|
||||||
|
|
|
@ -3,25 +3,30 @@ Vn.Locale.add
|
||||||
"User": "Usuari"
|
"User": "Usuari"
|
||||||
,"Password": "Contrasenya"
|
,"Password": "Contrasenya"
|
||||||
,"Beta": "Beta"
|
,"Beta": "Beta"
|
||||||
,"NotCloseSession": "No tancar sessió"
|
,"Do not sign out": "No tancar sessió"
|
||||||
,"IWantToKnowMore": "Vull saber-ne més!"
|
,"I want to know more": "Vull saber-ne més!"
|
||||||
,"Enter": "Entrar"
|
,"Enter": "Entrar"
|
||||||
,"LoginMail": "clientes@verdnatura.es"
|
,"Login mail": "clientes@verdnatura.es"
|
||||||
,"LoginPhone": "+34 607 562 391"
|
,"Login phone": "+34 607 562 391"
|
||||||
|
|
||||||
,"SessionExpired": "Has estat massa temps inactiu i la sessió ha expirat."
|
,"You've been too idle": "Has estat massa temps inactiu i la sessió ha expirat."
|
||||||
,"InvalidLogin": "Usuari o contrasenya incorrectes. Recorda que s'hi distingeix entre majúscula i minúscula."
|
,"Invalid login": "Usuari o contrasenya incorrectes. Recorda que s'hi distingeix entre majúscula i minúscula."
|
||||||
|
,"There was an internal error": "S'ha produït un error intern"
|
||||||
|
|
||||||
,"Menu": "Menú"
|
,"Menu": "Menú"
|
||||||
,"Exit": "Sortir"
|
,"Exit": "Sortir"
|
||||||
,"TestTheNewWebsite": "Prova la nova web!"
|
,"Test the new website": "Prova la nova web!"
|
||||||
,"ReturnToOldWebsite": "Web antiga"
|
,"Old website": "Web antiga"
|
||||||
,"ChangeLog": "Canvis recents"
|
,"Recent changes": "Canvis recents"
|
||||||
,"Print": "Imprimir"
|
|
||||||
|
|
||||||
,"ErrorLoadingForm": "Error al carregar formulari"
|
,"Print": "Imprimir"
|
||||||
,"CookiesNotification": "En utilitzar aquest lloc web acceptes l'ús de cookies per a la personalització de continguts i anàlisi."
|
,"Please unlock popups and try again":
|
||||||
,"NewVersionAvailable": "Hi ha una nova actualització, la pàgina recargargará automàticament per descarregar-la"
|
"Si us plau, desbloqueja els popups i torna-ho a intentar"
|
||||||
|
|
||||||
|
,"Error loading form": "Error al carregar formulari"
|
||||||
|
,"Error loading report": "Error en carregar l'informe"
|
||||||
|
,"By using this site you accept cookies": "En utilitzar aquest lloc web acceptes l'ús de cookies per a la personalització de continguts i anàlisi."
|
||||||
|
,"New version available": "Hi ha una nova actualització, la pàgina recarregarà automàticament per descarregar-la"
|
||||||
|
|
||||||
,"AppName": "Verdnatura"
|
,"AppName": "Verdnatura"
|
||||||
|
|
||||||
|
@ -42,6 +47,7 @@ Vn.Locale.add
|
||||||
,"News": "Noticies"
|
,"News": "Noticies"
|
||||||
,"Photos": "Fotos"
|
,"Photos": "Fotos"
|
||||||
,"Shelves": "Estanterías"
|
,"Shelves": "Estanterías"
|
||||||
|
,"Items list": "Llistat articles"
|
||||||
,"Contact": "Vull ser client"
|
,"Contact": "Vull ser client"
|
||||||
,"Training": "Formació"
|
,"Training": "Formació"
|
||||||
,"Agencies": "Agències"
|
,"Agencies": "Agències"
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"Addresses": "Addresses"
|
||||||
|
|
||||||
|
,"Return": "Return"
|
||||||
|
,"AddAddress": "Add address"
|
||||||
|
|
||||||
|
,"SetAsDefault": "Set as default"
|
||||||
|
,"RemoveAddress": "Remove address"
|
||||||
|
,"EditAddress": "Edit address"
|
||||||
|
,"AreYouSureDeleteAddress": "Are you sure you want to delete the address?"
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"AddEditAddress": "Add or edit address"
|
||||||
|
|
||||||
|
,"Name": "Consignee"
|
||||||
|
,"Address": "Address"
|
||||||
|
,"City": "City"
|
||||||
|
,"ZipCode": "Zip code"
|
||||||
|
,"Country": "Country"
|
||||||
|
,"Province": "Province"
|
||||||
|
|
||||||
|
,"Return": "Return"
|
||||||
|
,"Accept": "Accept"
|
||||||
|
|
||||||
|
,"AddressChangedSuccessfully": "Address changed successfully"
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
"Configuration": "Configuration"
|
||||||
|
|
||||||
|
,"UserNumber": "User number"
|
||||||
|
,"UserName": "Username"
|
||||||
|
,"Password": "Password"
|
||||||
|
,"Email": "Email"
|
||||||
|
,"Billing": "Billing"
|
||||||
|
,"ReceiveInvoicesByEmail": "Receive invoices by email"
|
||||||
|
|
||||||
|
,"NewPassword": "New password"
|
||||||
|
,"RepeatPassword": "Repeat password"
|
||||||
|
|
||||||
|
,"MustReloginIfChange": "To change your username you must login again"
|
||||||
|
,"PasswordsChanged": "Password changed!"
|
||||||
|
,"PasswordsDoesntMatch": "Passwords do not match!"
|
||||||
|
|
||||||
|
,"Addresses": "Addresses"
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"AccessLog": "Access log"
|
||||||
|
|
||||||
|
,"UserNumber:": "User Number:"
|
||||||
|
,"User:": "User:"
|
||||||
|
,"Phone:": "Phone:"
|
||||||
|
,"Mobile:": "Mobile:"
|
||||||
|
|
||||||
|
,"Access": "Access"
|
||||||
|
,"OS": "OS"
|
||||||
|
,"Browser": "Browser"
|
||||||
|
,"Version": "Version"
|
||||||
|
,"Javascript": "Javascript"
|
||||||
|
,"Cookies": "Cookies"
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"Item list": "Item list"
|
||||||
|
|
||||||
|
,"Store": "Store"
|
||||||
|
,"Realm": "Realm"
|
||||||
|
,"Rate": "Rate"
|
||||||
|
|
||||||
|
,"Preview": "Preview"
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"ControlPanel": "Control panel"
|
||||||
|
|
||||||
|
,"Module": "Module"
|
||||||
|
,"Description": "Description"
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"Photos": "Photos"
|
||||||
|
|
||||||
|
,"Schema": "Schema"
|
||||||
|
,"ImageName": "Image name"
|
||||||
|
,"Id": "Id"
|
||||||
|
,"ImageFile": "Image file"
|
||||||
|
|
||||||
|
,"Upload": "Upload"
|
||||||
|
|
||||||
|
,"ImageUploaded": "Image uploaded successfully"
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"Configuration": "Configuration"
|
||||||
|
,"Select config": "Select config"
|
||||||
|
,"Reign": "Reign"
|
||||||
|
,"Family": "Family"
|
||||||
|
,"Store": "Store"
|
||||||
|
,"Date": "Date"
|
||||||
|
,"Shelf": "Shelf"
|
||||||
|
,"Name prefix": "Name prefix"
|
||||||
|
,"Limit amount per item": "Limit amount per item"
|
||||||
|
,"Title": "Title"
|
||||||
|
,"Show packing": "Show packing"
|
||||||
|
,"Stack different items": "Stack different items"
|
||||||
|
|
||||||
|
,"Preview": "Preview"
|
||||||
|
|
||||||
|
,"Pallets": "Pallets"
|
||||||
|
|
||||||
|
,"No items found, check that all fields are correct":
|
||||||
|
"No items found, check that all fields are correct"
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"UserManagement": "User management"
|
||||||
|
|
||||||
|
,"UserName:": "Username:"
|
||||||
|
|
||||||
|
,"UserNumber": "User number"
|
||||||
|
,"UserName": "Username"
|
||||||
|
,"Alias": "Alias"
|
||||||
|
|
||||||
|
,"AccessAsUser": "Impersonate user"
|
||||||
|
,"AccessLog": "Access log"
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
{
|
||||||
|
"Visits": "Visits"
|
||||||
|
,"VisitsManagement": "Visits management"
|
||||||
|
|
||||||
|
,"ActiveSessions": "Active sessions"
|
||||||
|
,"VisitsQuery": "Visits query"
|
||||||
|
,"Refresh": "Refresh"
|
||||||
|
|
||||||
|
,"ActiveSessions:": "Active sessions:"
|
||||||
|
,"NewVisitsTotal:": "New visits:"
|
||||||
|
|
||||||
|
,"SessionNumber": "Session number"
|
||||||
|
,"User": "User"
|
||||||
|
,"Login": "Login"
|
||||||
|
,"LastActivity": "Last activity"
|
||||||
|
,"SO": "OS"
|
||||||
|
,"Version": "Version"
|
||||||
|
,"NewVisit": "New visit"
|
||||||
|
|
||||||
|
,"SelectDateInterval": "Select date interval"
|
||||||
|
,"FromDate:": "From date:"
|
||||||
|
,"ToDate:": "To date:"
|
||||||
|
,"VisitsTotal:": "Visits total:"
|
||||||
|
|
||||||
|
,"Browser": "Browser"
|
||||||
|
,"MinVersion": "Minimal version"
|
||||||
|
,"MaxVersion": "Maximum version"
|
||||||
|
,"LastVisit": "Last visit"
|
||||||
|
,"NewVisits": "New visits"
|
||||||
|
,"%a, %e %b %Y at %T": "%a, %e %b %Y at %T"
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"ListByAgency": "Bundles by agency"
|
||||||
|
|
||||||
|
,"ShowByProvince": "Show breakdown by province"
|
||||||
|
,"Agency": "Agency"
|
||||||
|
,"Exps": "Exps."
|
||||||
|
,"Bundles": "Bundles"
|
||||||
|
,"Prevision": "Prev."
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"ByProvince": "Breakdown by province"
|
||||||
|
|
||||||
|
,"Return": "Return"
|
||||||
|
|
||||||
|
,"SelectAgency": "Select an agency"
|
||||||
|
,"Province": "Province"
|
||||||
|
,"Expeditions": "Exps."
|
||||||
|
,"Left": "Left"
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
{
|
||||||
|
"QualityAndVariety": "Quality, variety and service"
|
||||||
|
|
||||||
|
,"MaximumFreshness": "Verdnatura offers a product guarantee maximum freshness thanks to their daily flowers and plants from Holland, South America, or from the same producer receptions."
|
||||||
|
,"SquareMeters": "Over facilities 13,000m"
|
||||||
|
,"AboutRealms": "With cut flowers, green, artificial and accessories"
|
||||||
|
,"AboutLocation": "Settled in Valencia, Madrid, Barcelona, Holland and France, we offer direct sales in our facilities and distribution throughout Spain by own service or agency."
|
||||||
|
,"PurchaseThroughWeb": "Purchase through our website and receive your order comfortably in your florist.In less than 24 hours!"
|
||||||
|
|
||||||
|
,"WhatMakeUsDifferent": "What makes us different?"
|
||||||
|
|
||||||
|
,"DesignVariety": "The variety in design, quality of materials used and our service delivery, will provide a showcase of dynamic genre, always fresh and appealing."
|
||||||
|
,"AdaptToYourNeeds": "Verdnatura adapts to the needs of each customer by offering a wide range of products, always guaranteed."
|
||||||
|
,"TheBestQuality": "The best quality at the best price. Without forgetting the design."
|
||||||
|
|
||||||
|
,"AtYourService": "We are at your service"
|
||||||
|
|
||||||
|
,"BuyersAndTraders": "9 specialized trade buyers and our 20 advise you on everything you need."
|
||||||
|
|
||||||
|
,"Training": "Verdnatura training"
|
||||||
|
|
||||||
|
,"GoodTraining": "In Verdnatura we know that a good education is essential for the optimal development of any activity, and of course, also the florist."
|
||||||
|
,"SpecialTrainingPrices": "For the school budget does not affect the quality of your training, we work with special pricing policy for all schools that request it take courses in our facilities Verdnatura chair."
|
||||||
|
,"YoutubeChannel": "And do not miss Verdnatura videos on Youtube Channel. Where you'll find plenty of interesting tips on handling of the flower."
|
||||||
|
|
||||||
|
,"HowWeWork": "How we work?"
|
||||||
|
|
||||||
|
,"FirstQualityControl": "First quality control"
|
||||||
|
,"SecondQualityControl": "Second quality control"
|
||||||
|
,"ThirdQualityControl": "Third quality control"
|
||||||
|
,"FourthQualityControl": "Fourth quality control"
|
||||||
|
|
||||||
|
,"AalsmeerAuction": "At 5: 00h, our purchasing managers acquire, in the auction of Aalsmeer and Noaldwijk, gender, the producer has reaped the previous day."
|
||||||
|
,"BeforeAuction": "After purchase, the genre quickly enters Verdnatura Holland BV, our company Flora Holland in Aalsmeer."
|
||||||
|
,"DirectlyFromProviders": "Besides buying through the Dutch auction, we buy directly from producers Colombia, Ecuador, Thailand, Malaysia, Africa and Australia. These products are directly supervised by our delegates Purchase located in each area. This merchandise will travel to Amsterdam, subjected to a process Vaacum and in less than two hours after landing, you will be at our facility in Aalsmeer."
|
||||||
|
,"GoodsDischarge": "At 7: 00h our fellow Aalsmeer start receiving the purchased goods, having a first quality control, and creating it in stock. Now available for our customers on the web."
|
||||||
|
,"GoodsTravel": "The goods travel for a day and a half trucks watertight compartments at different temperatures, so that the cold chain is not broken trip in the best conditions."
|
||||||
|
,"GoodsReception": "Upon receipt of the merchandise responsible for the purchase reviewed state that arrives, accepting or rejecting it as appropriate, it discharged cold and quickly enters our camera."
|
||||||
|
,"CustomerOrders": "Our customers can place their orders via the web, by phone or coming directly to our facilities. We have a team of specialized commercial advise you on your purchase and inform you the latest news and articles that may be of interest, so that your purchase meets your needs and stay totally satisfied."
|
||||||
|
,"AfterOrder": "Once placed the order, turn to the production department. During the preparation of this new quality control (third) in which the poor will be discarded merchandise it is made."
|
||||||
|
,"BuyerControl": "As the preparation is completed, a new control (fourth) where a specialist account is made and check the status of products. If they do not meet the quality standards required rejects and replaces the right."
|
||||||
|
,"EmbeddedSection": "Then takes embedded section, where the order is suitable for proper delivery. Each type of delivery requires a method suitable for embedded gender protected books and reaches the customer in perfect condition."
|
||||||
|
,"AfterEmbedAgency": "Once the product has been fitted it is stored again in the chamber until they leave by agency or own deal, receiving the customer within 24 hours in the case of the agency or the same day for the cast, comfortably at home ."
|
||||||
|
,"FreshnessGuaranteed": "This way of working ensures freshness by rapid processes and maintaining the cold chain from purchase to receipt by our customer."
|
||||||
|
|
||||||
|
,"AboutSummary": "75 people spread over almost everybody so that our client has the broadest portfolio in the industry, coolest flower, plant newest, latest accessories, and fastest service possible."
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"IWantCustomer": "I want to be a customer!"
|
||||||
|
|
||||||
|
,"FillFormData": "Fill the form with your details and we will contact you soon."
|
||||||
|
,"OrCallUs": "Or if you prefer, call us at 963 242 100."
|
||||||
|
,"AllFieldsMandatory": "* All fields are mandatory."
|
||||||
|
|
||||||
|
,"Name": "Name"
|
||||||
|
,"Surname": "Surname"
|
||||||
|
,"EMail": "Email"
|
||||||
|
,"Message": "Message"
|
||||||
|
,"Address": "Address"
|
||||||
|
,"PC": "Zip code"
|
||||||
|
,"City": "City"
|
||||||
|
,"Phone": "Phone"
|
||||||
|
,"Send": "Send"
|
||||||
|
|
||||||
|
,"DataSentSuccess": "Your details have been sent successfully. Shortly we will contact you."
|
||||||
|
,"ErrorSendingData": "Failed to send the data. Please check that you have filled in all the fields and you entered the anti-spam code correctly."
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"Sent": "Sent"
|
||||||
|
,"Author": "Author"
|
||||||
|
,"votes": "votes"
|
||||||
|
,"NoAnswerSelected": "No answer selected"
|
||||||
|
,"ThanksForVote": "Thanks for your vote!"
|
||||||
|
,"Vote": "Vote"
|
||||||
|
,"Total": "Total"
|
||||||
|
,"BrownserRecommend":
|
||||||
|
"Verdnatura recommend using the Mozilla Firefox web browser for full functionality of our website."
|
||||||
|
,"PressHere": "Click here to download Firefox"
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"ShowMap": "Show map"
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
{}
|
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
"AboutCompany": "Why Verdnatura?"
|
||||||
|
,"StorePhoto": "Store photo"
|
||||||
|
|
||||||
|
,"BecauseOurBigCatalog": "Because we have the largest catalog in the sector, renewed daily."
|
||||||
|
,"BecauseThisWeb": "Because this website, with real time stock always at your disposal."
|
||||||
|
,"BecauseOurShoppingDep": "For our purchasing department with 9 specialized buyers."
|
||||||
|
,"BecauseOrderIsEasy": "Because it is very easy to place your order by web, phone or coming."
|
||||||
|
,"BecauseOurPlant": "Because our premises, come and visit us. You'll love."
|
||||||
|
,"BecauseOurSalesDep": "For our commercial department, with professionals who will always find a solution to your needs."
|
||||||
|
,"BecauseOurWorkShop": "Because we have a sewing shop to help you."
|
||||||
|
,"BecauseWeHaveWhatYouNeed": "Because we have what you need when you need it ..."
|
||||||
|
|
||||||
|
,"AboutDesc":
|
||||||
|
"We are a company engaged in the wholesale and distribution of a wide range of accessories, greens and flowers to florists or other wholesalers."
|
||||||
|
|
||||||
|
,"AboutService":
|
||||||
|
"We have home delivery service with our vehicles throughout the province of Valencia and limited areas of Castellón, Alicante, Murcia, Albacete and Madrid send the rest of the peninsula by transportation agencies with 24/48 hours service (Zeleris, via express) . We also do direct sales to florists in any of our facilities."
|
||||||
|
|
||||||
|
,"AboutDisp":
|
||||||
|
"Our company has over 50 employees and several branches. The main is located in Valencia and has more than 8000 m2. We also have a warehouse located in Mercaflor - Mercavalencia (Valencia) that perform direct sales only."
|
||||||
|
|
||||||
|
,"AboutOrder":
|
||||||
|
"You can make your orders and reservations by telephone at 96 324 21 00, online through our website or directly in our facilities."
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
{
|
||||||
|
"ShoppingBasket": "Shopping basket"
|
||||||
|
|
||||||
|
,"Delete": "Delete order"
|
||||||
|
,"GoToCatalog": "Go to catalog"
|
||||||
|
,"ConfigureOrder": "Configure order"
|
||||||
|
,"Checkout": "Checkout"
|
||||||
|
|
||||||
|
,"OrderNumber": "Order number"
|
||||||
|
,"DateExit": "Shipping date"
|
||||||
|
,"Warehouse": "Store"
|
||||||
|
,"OrderTotal": "Total"
|
||||||
|
|
||||||
|
,"Amount": "Amount"
|
||||||
|
,"Pack": "Pack"
|
||||||
|
,"Stems": "Stems"
|
||||||
|
,"Avail": "Avail"
|
||||||
|
,"Item": "Item"
|
||||||
|
,"Cat": "Cat"
|
||||||
|
,"S1": "Siz"
|
||||||
|
,"Color": "Color"
|
||||||
|
,"Origin": "Origin"
|
||||||
|
,"Price": "Price"
|
||||||
|
,"Disc": "Desc"
|
||||||
|
,"Subtotal": "Subtotal"
|
||||||
|
|
||||||
|
,"OrderItemsUpdated": "Your order takes too long and has been updated, prices or quantities of your items may have changed"
|
||||||
|
,"RememberReconfiguringImpact": "Remember that if you reconfigure your order prices or quantities of your items may change"
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
{
|
||||||
|
"Catalog": "Catalog"
|
||||||
|
,"SearchResults": "Search results"
|
||||||
|
|
||||||
|
,"SelectFamily": "Select family"
|
||||||
|
,"SelectSubtype": "Select a filter from the right menu"
|
||||||
|
,"ArticleNotFound": "Item not found"
|
||||||
|
,"ArticleNotAvailable": "Item not available"
|
||||||
|
|
||||||
|
,"Switch view": "Switch view"
|
||||||
|
,"StartOrder": "Start order"
|
||||||
|
,"ShoppingBasket": "Shopping basket"
|
||||||
|
|
||||||
|
,"Search": "Search"
|
||||||
|
,"Order by": "Order by"
|
||||||
|
,"Available": "Available"
|
||||||
|
,"Size": "Size"
|
||||||
|
,"Realm": "Realm"
|
||||||
|
,"Family": "Family"
|
||||||
|
,"Color": "Color"
|
||||||
|
,"Producer": "Producer"
|
||||||
|
,"Origin": "Origin"
|
||||||
|
,"Category": "Category"
|
||||||
|
,"Remove filters": "Remove filters"
|
||||||
|
|
||||||
|
,"Amount": "Amount"
|
||||||
|
,"Aval": "Aval"
|
||||||
|
,"Name": "Name"
|
||||||
|
,"S1": "Siz"
|
||||||
|
,"S2": "S2"
|
||||||
|
,"Stems": "Stems"
|
||||||
|
,"Cat": "Cat"
|
||||||
|
,"Pack": "Pack"
|
||||||
|
,"Origin": "Origin"
|
||||||
|
,"Price": "Price"
|
||||||
|
,"%.0d Units": "%.0d Units "
|
||||||
|
|
||||||
|
,"from": "from"
|
||||||
|
,"from %.2d€": "from %.2d€"
|
||||||
|
,"AddToBasket": "Add to basket"
|
||||||
|
,"Add": "Add"
|
||||||
|
,"Erase": "Remove"
|
||||||
|
,"Confirm": "Confirm"
|
||||||
|
|
||||||
|
,"IndicativePhotos": "* Photos are indicative"
|
||||||
|
|
||||||
|
,"Added%dOf%s": "Added %d of %s"
|
||||||
|
,"NoMoreAmountAvailable": "No more amount available"
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
{
|
||||||
|
"ConfigureOrder": "Configure order"
|
||||||
|
|
||||||
|
,"Cancel": "Cancel"
|
||||||
|
,"Next": "Next"
|
||||||
|
|
||||||
|
,"DeliveryOrPickupQuestion": "Do you want to receive or pickup the order?"
|
||||||
|
,"ReceiveThroughtAgency": "Receive by agency"
|
||||||
|
,"ReceiveThroughtRoute": "Verdnatura delivery"
|
||||||
|
,"PickupInStore": "Store pickup"
|
||||||
|
|
||||||
|
,"OrderDateDeliveryQuestion": "What day you want to receive the order?"
|
||||||
|
,"OrderDatePickupQuestion": "What day you want to pickup your order?"
|
||||||
|
,"AddressQuestion": "Where do you want to receive the order?"
|
||||||
|
,"AgencyQuestion": "By wich agency you want to receive the order?"
|
||||||
|
,"PickupWarehouseQuestion": "What store you want to pickup your order?"
|
||||||
|
|
||||||
|
,"ConfirmToAccessCatalog": "Confirm the data to access the catalog"
|
||||||
|
,"Arrival": "Arrival"
|
||||||
|
,"Pickup": "Pickup"
|
||||||
|
,"%A, %e of %B": "%A, %e of %B"
|
||||||
|
,"Agency": "Agency"
|
||||||
|
,"Warehouse": "Store"
|
||||||
|
,"Confirm": "Confirm"
|
||||||
|
|
||||||
|
,"OrderStarted": "Order started"
|
||||||
|
,"OrderUpdated": "Order updated"
|
||||||
|
|
||||||
|
,"NoAgeciesAvailableForDate": "No agencies available for the selected date and consignee, change the shipping date of your order"
|
||||||
|
,"NoWarehousesAvailableForDate": "No stores available for the selected date, change the pickup date of you order"
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
"Checkout": "Checkout"
|
||||||
|
|
||||||
|
,"OrderSummary": "Order summary"
|
||||||
|
,"Arrival": "Arrival"
|
||||||
|
,"%A, %e of %B": "%A, %e of %B"
|
||||||
|
,"Agency": "Agency"
|
||||||
|
,"Warehouse": "Store"
|
||||||
|
|
||||||
|
,"DeliveryAddress": "Delivery address"
|
||||||
|
|
||||||
|
,"Import": "Import"
|
||||||
|
,"TaxBase": "Tax base"
|
||||||
|
,"VAT": "VAT"
|
||||||
|
,"Total": "Total"
|
||||||
|
|
||||||
|
,"Cancel": "Cancel"
|
||||||
|
,"Modify": "Modify"
|
||||||
|
,"Confirm": "Confirm"
|
||||||
|
|
||||||
|
,"OrderPlacedSuccessfully": "Your order has been successfully completed"
|
||||||
|
,"OrderReserved": "We've booked your order but it seems that there have been problems with payment. Contact your sales."
|
||||||
|
,"Accept": "Accept"
|
||||||
|
,"PayNow": "Pay now"
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"Invoices": "Invoices"
|
||||||
|
|
||||||
|
,"Serial": "Serial"
|
||||||
|
,"Date": "Date"
|
||||||
|
,"Import": "Import"
|
||||||
|
,"Download PDF": "Download PDF"
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
"OpenOrders": "Open orders"
|
||||||
|
|
||||||
|
,"StartOrder": "Start order"
|
||||||
|
,"ContinueOrder": "Continue order"
|
||||||
|
,"OrderNumber": "Order number"
|
||||||
|
,"DateMake": "Creation date"
|
||||||
|
,"DateExit": "Shipping date"
|
||||||
|
,"SendMethod": "Delivery method"
|
||||||
|
|
||||||
|
,"LastOrders": "Last orders"
|
||||||
|
|
||||||
|
,"PendingBalance:": "Pending balance:"
|
||||||
|
,"PaymentInfo": "To make a down payment click the right button and make the payment on the relevant company. The amount shown is the outstanding balance today, it does not take into account future orders. You can make a down payment on the amount you want."
|
||||||
|
,"MakePayment": "Make payment"
|
||||||
|
,"Company": "Company"
|
||||||
|
,"Pending": "Pending"
|
||||||
|
,"Pay": "Pay"
|
||||||
|
,"Basket": "Basket"
|
||||||
|
,"ShoppingBasket": "Shopping basket"
|
||||||
|
|
||||||
|
,"SeeOrder": "Show details of the order"
|
||||||
|
,"TicketNumber": "Ticket number"
|
||||||
|
,"SentAddress": "Delivery address"
|
||||||
|
,"Consignee": "Consignee"
|
||||||
|
,"Boxes": "Bundles"
|
||||||
|
,"TotalWithVAT": "Total with VAT"
|
||||||
|
,"Pending": "Pending"
|
||||||
|
,"PayOrder": "Pay order"
|
||||||
|
|
||||||
|
,"AmountToPay:": "Amount to pay (€):"
|
||||||
|
,"AmountError": "The amount must be a positive number less than or equal to the outstanding amount"
|
||||||
|
,"PayError": "Failed to make the payment"
|
||||||
|
|
||||||
|
,"%A, %e of %B": "%A, %e of %B"
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"OrderDetail": "Order detail"
|
||||||
|
|
||||||
|
,"Print": "Print delivery note"
|
||||||
|
|
||||||
|
,"TicketNumber:": "Ticket number:"
|
||||||
|
,"DateExit:": "Delivery date:"
|
||||||
|
,"SendMethod:": "Delivery method:"
|
||||||
|
,"Notes:": "Notes:"
|
||||||
|
,"TicketTotal:": "Order total:"
|
||||||
|
,"(VATIncluded)": "(VAT included)"
|
||||||
|
|
||||||
|
,"PC": "Postal code"
|
||||||
|
,"City": "City"
|
||||||
|
,"Province": "Province"
|
||||||
|
,"Address": "Address"
|
||||||
|
,"Consignee": "Consignee"
|
||||||
|
|
||||||
|
,"ItemNumber": "Item number"
|
||||||
|
,"Amount": "Amount"
|
||||||
|
,"Item": "Item"
|
||||||
|
,"Category": "Category"
|
||||||
|
,"S1": "Siz"
|
||||||
|
,"Stems": "Stems"
|
||||||
|
,"Color": "Color"
|
||||||
|
,"Origin": "Origin"
|
||||||
|
,"Price": "Price"
|
||||||
|
,"Disc": "Disc"
|
||||||
|
,"Subtotal": "Subtotal"
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"AddEditNew": "Add or edit new"
|
||||||
|
|
||||||
|
,"Title": "Title"
|
||||||
|
,"NewBody": "New body"
|
||||||
|
,"Tag": "Tag"
|
||||||
|
|
||||||
|
,"Return": "Return"
|
||||||
|
,"Accept": "Accept"
|
||||||
|
|
||||||
|
,"NewChangedSuccessfully": "New changed successfully"
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"NewsManagement": "News management"
|
||||||
|
|
||||||
|
,"AddNew": "Add new"
|
||||||
|
,"EditNew": "Edit new"
|
||||||
|
|
||||||
|
,"NewNum": "New number"
|
||||||
|
,"Date": "Date"
|
||||||
|
,"Author": "Author"
|
||||||
|
,"Title": "Title"
|
||||||
|
,"Priority": "Priority"
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
Vn.Locale.add
|
||||||
|
({
|
||||||
|
"ConnError": "Connection failed"
|
||||||
|
,"BadServerReply": "Bad server reply"
|
||||||
|
,"ModelNotUpdatable": "Model not updatable"
|
||||||
|
,"RowNotExists": "The record does not exist or has been deleted"
|
||||||
|
,"ColNotExists": "The column does not exist"
|
||||||
|
});
|
|
@ -0,0 +1,57 @@
|
||||||
|
Vn.Locale.add
|
||||||
|
({
|
||||||
|
"User": "User"
|
||||||
|
,"Password": "Password"
|
||||||
|
,"Beta": "Beta"
|
||||||
|
,"Do not sign out": "Do not sign out"
|
||||||
|
,"I want to know more": "I want to know more"
|
||||||
|
,"Enter": "Enter"
|
||||||
|
,"Login mail": "clientes@verdnatura.es"
|
||||||
|
,"Login phone": "+34 607 562 391"
|
||||||
|
|
||||||
|
,"You've been too idle": "You've been too idle and session time has expired."
|
||||||
|
,"Invalid login": "Username or password incorrect. Remember that case-sensitive."
|
||||||
|
,"There was an internal error": "There was an internal error"
|
||||||
|
|
||||||
|
,"Menu": "Menu"
|
||||||
|
,"Exit": "Exit"
|
||||||
|
,"Test the new website": "Test the new website!"
|
||||||
|
,"Old website": "Old website"
|
||||||
|
,"Recent changes": "Recent changes"
|
||||||
|
|
||||||
|
,"Print": "Print"
|
||||||
|
,"Please unlock popups and try again":
|
||||||
|
"Please unlock popups and try again"
|
||||||
|
|
||||||
|
,"Error loading form": "Error while loading form"
|
||||||
|
,"Error loading report": "Error loading report"
|
||||||
|
,"By using this site you accept cookies": "By using this website you accept the use of cookies for customization of content and analysis."
|
||||||
|
,"New version available": "There is a new update, the page will automatically recharge to download it"
|
||||||
|
|
||||||
|
,"AppName": "Verdnatura"
|
||||||
|
|
||||||
|
,"Home": "Home"
|
||||||
|
,"Orders": "Orders"
|
||||||
|
,"Basket": "Basket"
|
||||||
|
,"Last orders": "Last orders"
|
||||||
|
,"Invoices": "Invoices"
|
||||||
|
,"Catalog": "Catalog"
|
||||||
|
,"About": "About"
|
||||||
|
,"About us": "About us"
|
||||||
|
,"Why": "Why"
|
||||||
|
,"Location": "Location"
|
||||||
|
,"Administration": "Administration"
|
||||||
|
,"Control panel": "Control panel"
|
||||||
|
,"Users": "Users"
|
||||||
|
,"Visits": "Visits"
|
||||||
|
,"News": "News"
|
||||||
|
,"Photos": "Photos"
|
||||||
|
,"Shelves": "Shelves"
|
||||||
|
,"Items list": "Items list"
|
||||||
|
,"Contact": "Contact"
|
||||||
|
,"Training": "Training"
|
||||||
|
,"Agencies": "Agencies"
|
||||||
|
,"Configuration": "Configuration"
|
||||||
|
,"Account": "Account"
|
||||||
|
,"Addresses": "Addresses"
|
||||||
|
});
|
|
@ -0,0 +1,29 @@
|
||||||
|
Vn.Locale.add
|
||||||
|
({
|
||||||
|
"True": "True"
|
||||||
|
,"False": "False"
|
||||||
|
,"Null": "Null"
|
||||||
|
,"ChangeDate": "Change date"
|
||||||
|
,"Sort": "Sort"
|
||||||
|
,"At": "at"
|
||||||
|
,"Of": "of"
|
||||||
|
,"OfThe": "of the"
|
||||||
|
,"Remove": "Remove"
|
||||||
|
,"Loading": "Loading"
|
||||||
|
,"Loading...": "Loading..."
|
||||||
|
,"ReallyDelete": "Are you sure you want to delete the line?"
|
||||||
|
,"YouMustBeLoggedIn": "You must be a registered user"
|
||||||
|
,"EmptyList": "Empty list"
|
||||||
|
,"NoData": "No data"
|
||||||
|
,"ErrorLoadingData": "Error"
|
||||||
|
,"Error": "Error"
|
||||||
|
,"Image": "Image"
|
||||||
|
,"File": "File"
|
||||||
|
,"FileName": "File name"
|
||||||
|
,"UpdateImage": "Add or update an image"
|
||||||
|
,"UploadFile": "Upload file"
|
||||||
|
,"ImageAdded": "Image added successfully"
|
||||||
|
,"Close": "Close"
|
||||||
|
,"Previous": "Previous"
|
||||||
|
,"Next": "Next"
|
||||||
|
});
|
|
@ -0,0 +1,44 @@
|
||||||
|
Vn.Locale.add
|
||||||
|
({
|
||||||
|
"Sunday": "Sunday"
|
||||||
|
,"Monday": "Monday"
|
||||||
|
,"Tuesday": "Tuesday"
|
||||||
|
,"Wednesday": "Wednesday"
|
||||||
|
,"Thursday": "Thursday"
|
||||||
|
,"Friday": "Friday"
|
||||||
|
,"Saturday": "Saturday"
|
||||||
|
|
||||||
|
,"Su": "Su"
|
||||||
|
,"Mo": "Mo"
|
||||||
|
,"Tu": "Tu"
|
||||||
|
,"We": "We"
|
||||||
|
,"Th": "Th"
|
||||||
|
,"Fr": "Fr"
|
||||||
|
,"Sa": "Sa"
|
||||||
|
|
||||||
|
,"January": "January"
|
||||||
|
,"February": "February"
|
||||||
|
,"March": "March"
|
||||||
|
,"April": "April"
|
||||||
|
,"May": "May"
|
||||||
|
,"June": "June"
|
||||||
|
,"July": "June"
|
||||||
|
,"August": "August"
|
||||||
|
,"September": "September"
|
||||||
|
,"October": "October"
|
||||||
|
,"November": "November"
|
||||||
|
,"December": "December"
|
||||||
|
|
||||||
|
,"Jan": "Jan"
|
||||||
|
,"Feb": "Feb"
|
||||||
|
,"Mar": "Mar"
|
||||||
|
,"Apr": "Apr"
|
||||||
|
,"May": "May"
|
||||||
|
,"Jun": "Jun"
|
||||||
|
,"Jul": "Jul"
|
||||||
|
,"Ago": "Ago"
|
||||||
|
,"Sep": "Sep"
|
||||||
|
,"Oct": "Oct"
|
||||||
|
,"Nov": "Nov"
|
||||||
|
,"Dec": "Dic"
|
||||||
|
});
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"PaymentComplete": "Payment completed, you can return to our website."
|
||||||
|
,"ReturnToWeb": "Back to Verdnatura"
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"UpdateYourBrowser": "Upgrade your browser"
|
||||||
|
,"ContinueAnyway": "Continue anyway"
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"Welcome to Verdnatura, where are you going?": "Welcome to Verdnatura, where are you going?"
|
||||||
|
|
||||||
|
,"New website": "New website"
|
||||||
|
,"(Fantastic)": "(Fantastic)"
|
||||||
|
,"Old website": "Old website"
|
||||||
|
,"(Best choose new)": "(Best choose new)"
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"InvalidAction": "Invalid action"
|
||||||
|
|
||||||
|
,"EmptyQuery": "Empty query"
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue