Errores solucionados
This commit is contained in:
parent
7e5a0bab06
commit
fe070a7e6b
|
@ -1,4 +1,4 @@
|
||||||
hedera-web (1.328-deb8) stable; urgency=low
|
hedera-web (1.337-deb8) stable; urgency=low
|
||||||
|
|
||||||
* Initial Release.
|
* Initial Release.
|
||||||
|
|
||||||
|
|
|
@ -52,6 +52,7 @@
|
||||||
float: left;
|
float: left;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
height: 3.2em;
|
height: 3.2em;
|
||||||
|
width: 3.2em;
|
||||||
}
|
}
|
||||||
.basket .line > p
|
.basket .line > p
|
||||||
{
|
{
|
||||||
|
|
|
@ -55,7 +55,6 @@
|
||||||
class="photo"
|
class="photo"
|
||||||
directory="catalog"
|
directory="catalog"
|
||||||
subdir="200x200"
|
subdir="200x200"
|
||||||
show-full="true"
|
|
||||||
full-dir="900x900"/>
|
full-dir="900x900"/>
|
||||||
<p class="concept">
|
<p class="concept">
|
||||||
<htk-text form="iter" column="Article"/>
|
<htk-text form="iter" column="Article"/>
|
||||||
|
|
|
@ -87,12 +87,6 @@ Vn.Catalog = new Class
|
||||||
Vn.Node.setText (this.$('method'), _('Warehouse'));
|
Vn.Node.setText (this.$('method'), _('Warehouse'));
|
||||||
}
|
}
|
||||||
|
|
||||||
,typeRenderer: function (builder, form)
|
|
||||||
{
|
|
||||||
var link = builder.$('link');
|
|
||||||
link.href = this.hash.make ({'type': form.get ('tipo_id')}, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
,onItemsChange: function (model, status)
|
,onItemsChange: function (model, status)
|
||||||
{
|
{
|
||||||
if (status !== Db.Model.Status.CLEAN)
|
if (status !== Db.Model.Status.CLEAN)
|
||||||
|
@ -241,98 +235,42 @@ Vn.Catalog = new Class
|
||||||
this.hideMenuCallback = null;
|
this.hideMenuCallback = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
,onBasketClick: function ()
|
,isGuest: function ()
|
||||||
{
|
|
||||||
if (!Vn.Cookie.check ('hedera_guest'))
|
|
||||||
this.hash.set ({'form': 'ecomerce/basket'});
|
|
||||||
else
|
|
||||||
Htk.Toast.showError (_('YouMustBeLoggedIn'));
|
|
||||||
}
|
|
||||||
|
|
||||||
,onConfigureClick: function ()
|
|
||||||
{
|
|
||||||
if (!Vn.Cookie.check ('hedera_guest'))
|
|
||||||
this.hash.set ({'form': 'ecomerce/checkout'});
|
|
||||||
else
|
|
||||||
Htk.Toast.showError (_('YouMustBeLoggedIn'));
|
|
||||||
}
|
|
||||||
|
|
||||||
,nameRenderer: function (renderer, form)
|
|
||||||
{
|
|
||||||
renderer.subtitle = form.get ('producer');
|
|
||||||
}
|
|
||||||
|
|
||||||
,amountRender: function (renderer, form)
|
|
||||||
{
|
|
||||||
var amount = form.get ('amount');
|
|
||||||
var grouping = form.get ('grouping');
|
|
||||||
|
|
||||||
if (amount && grouping)
|
|
||||||
renderer.value = amount / grouping;
|
|
||||||
else
|
|
||||||
renderer.value = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
,amountChanged: function (renderer, row, newValue)
|
|
||||||
{
|
|
||||||
var model = this.$('items-model');
|
|
||||||
model.set (row, 'amount', newValue * model.get (row, 'grouping'));
|
|
||||||
}
|
|
||||||
|
|
||||||
,catRenderer: function (column, form)
|
|
||||||
{
|
|
||||||
switch (form.get ('Categoria'))
|
|
||||||
{
|
|
||||||
case 'A2':
|
|
||||||
column.td.className = 'second-category';
|
|
||||||
break;
|
|
||||||
case 'B1':
|
|
||||||
column.td.className = 'third-category';
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
column.td.className = '';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
,onInfoClick: function (button, form)
|
|
||||||
{
|
|
||||||
var descNode = this.$('description');
|
|
||||||
Vn.Node.removeChilds (descNode);
|
|
||||||
|
|
||||||
var desc = form.get ('description');
|
|
||||||
|
|
||||||
if (!desc)
|
|
||||||
desc = _('No info available');
|
|
||||||
|
|
||||||
descNode.appendChild (document.createTextNode (desc));
|
|
||||||
|
|
||||||
this.$('desc-popup').show (button.getNode ());
|
|
||||||
}
|
|
||||||
|
|
||||||
,onGridAddItemClick: function (button, form)
|
|
||||||
{
|
|
||||||
this.showAmountPopup (button.getNode (), form.row);
|
|
||||||
}
|
|
||||||
|
|
||||||
,onAddItemClick: function (column, value, row, button)
|
|
||||||
{
|
|
||||||
this.showAmountPopup (button, row);
|
|
||||||
}
|
|
||||||
|
|
||||||
,showAmountPopup: function (button, row)
|
|
||||||
{
|
{
|
||||||
if (Vn.Cookie.check ('hedera_guest'))
|
if (Vn.Cookie.check ('hedera_guest'))
|
||||||
{
|
{
|
||||||
Htk.Toast.showError (_('YouMustBeLoggedIn'));
|
Htk.Toast.showError (_('YouMustBeLoggedIn'));
|
||||||
return;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
,onBasketClick: function ()
|
||||||
|
{
|
||||||
|
if (this.isGuest ())
|
||||||
|
return;
|
||||||
|
|
||||||
var itemId = this.$('items-model').get (row, 'item_id')
|
this.hash.set ({'form': 'ecomerce/basket'});
|
||||||
this.$('lots-batch').addValue ('item', itemId);
|
}
|
||||||
|
|
||||||
|
,onConfigureClick: function ()
|
||||||
|
{
|
||||||
|
if (this.isGuest ())
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.hash.set ({'form': 'ecomerce/checkout'});
|
||||||
|
}
|
||||||
|
|
||||||
|
,onAddItemClick: function (button, form)
|
||||||
|
{
|
||||||
|
if (this.isGuest ())
|
||||||
|
return;
|
||||||
|
|
||||||
this.itemRow = row;
|
|
||||||
this.onEraseClick ();
|
this.onEraseClick ();
|
||||||
this.$('lots-popup').show (button);
|
this.$('card').row = form.row;
|
||||||
|
this.$('card-item').value = form.get ('item_id');
|
||||||
|
this.$('card-popup').show (button.getNode ());
|
||||||
}
|
}
|
||||||
|
|
||||||
,onAddLotClick: function (column, value, row, button)
|
,onAddLotClick: function (column, value, row, button)
|
||||||
|
@ -361,16 +299,8 @@ Vn.Catalog = new Class
|
||||||
Htk.Toast.showError (_('NoMoreAmountAvailable'));
|
Htk.Toast.showError (_('NoMoreAmountAvailable'));
|
||||||
}
|
}
|
||||||
|
|
||||||
,onEraseClick: function ()
|
|
||||||
{
|
|
||||||
this.$('amount').value = 0;
|
|
||||||
this.items = {};
|
|
||||||
}
|
|
||||||
|
|
||||||
,onConfirmClick: function ()
|
,onConfirmClick: function ()
|
||||||
{
|
{
|
||||||
var model = this.$('items-model');
|
|
||||||
|
|
||||||
var sql = '';
|
var sql = '';
|
||||||
var batch = new Sql.Batch ();
|
var batch = new Sql.Batch ();
|
||||||
var query = new Sql.String ({query: 'CALL basket_item_add (#warehouse, #item, #amount);'});
|
var query = new Sql.String ({query: 'CALL basket_item_add (#warehouse, #item, #amount);'});
|
||||||
|
@ -382,7 +312,7 @@ Vn.Catalog = new Class
|
||||||
amountSum += amount;
|
amountSum += amount;
|
||||||
|
|
||||||
batch.addValue ('warehouse', warehouse);
|
batch.addValue ('warehouse', warehouse);
|
||||||
batch.addValue ('item', model.get (this.itemRow, 'item_id'));
|
batch.addValue ('item', this.$('card-item').value);
|
||||||
batch.addValue ('amount', amount);
|
batch.addValue ('amount', amount);
|
||||||
sql += query.render (batch);
|
sql += query.render (batch);
|
||||||
}
|
}
|
||||||
|
@ -391,26 +321,30 @@ Vn.Catalog = new Class
|
||||||
{
|
{
|
||||||
this.conn.execQuery (sql);
|
this.conn.execQuery (sql);
|
||||||
|
|
||||||
var itemName = model.get (this.itemRow, 'Article');
|
var itemName = this.$('card').get ('Article');
|
||||||
Htk.Toast.showMessage (
|
Htk.Toast.showMessage (
|
||||||
sprintf (_('Added%dOf%s'), amountSum, itemName));
|
sprintf (_('Added%dOf%s'), amountSum, itemName));
|
||||||
}
|
}
|
||||||
|
|
||||||
this.$('lots-popup').hide ();
|
this.$('card-popup').hide ();
|
||||||
|
}
|
||||||
|
|
||||||
|
,onEraseClick: function ()
|
||||||
|
{
|
||||||
|
this.$('amount').value = 0;
|
||||||
|
this.items = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
,onPopupClose: function ()
|
||||||
|
{
|
||||||
|
this.onEraseClick ();
|
||||||
|
this.$('card').row = -1;
|
||||||
|
this.$('card-item').value = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
,onStatusChange: function (model)
|
,onStatusChange: function (model)
|
||||||
{
|
{
|
||||||
this.$('lots-popup').reset ();
|
this.$('card-popup').reset ();
|
||||||
}
|
|
||||||
|
|
||||||
,gridRenderer: function (res, form)
|
|
||||||
{
|
|
||||||
if (!form.get ('description'))
|
|
||||||
{
|
|
||||||
var button = res.$('info-button').getNode ();
|
|
||||||
button.style.display = 'none';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -597,32 +531,5 @@ Vn.Filter = new Class
|
||||||
this._label.nodeValue = _('Loading...');
|
this._label.nodeValue = _('Loading...');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
|
|
||||||
Vn.ColumnItem = new Class
|
|
||||||
({
|
|
||||||
Extends: Htk.Column
|
|
||||||
,Tag: 'vn-column-item'
|
|
||||||
|
|
||||||
,render: function (tr)
|
|
||||||
{
|
|
||||||
var td = this.parent (tr);
|
|
||||||
td.style.textAlign = 'left';
|
|
||||||
|
|
||||||
if (this.value)
|
|
||||||
{
|
|
||||||
var node = document.createTextNode (
|
|
||||||
Vn.Value.format (this.value, this._format));
|
|
||||||
td.appendChild (node);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.subtitle)
|
|
||||||
{
|
|
||||||
td.appendChild (document.createElement ('br'));
|
|
||||||
td.appendChild (document.createTextNode (this.subtitle));
|
|
||||||
}
|
|
||||||
|
|
||||||
return td;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
.htk-toast
|
.htk-toast
|
||||||
{
|
{
|
||||||
margin-left: -11em;
|
margin-left: -10.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Topbar */
|
/* Topbar */
|
||||||
|
@ -150,71 +150,40 @@
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Item description */
|
|
||||||
|
|
||||||
.desc-popup
|
|
||||||
{
|
|
||||||
padding: 1em;
|
|
||||||
max-width: 15em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Lots popup*/
|
|
||||||
|
|
||||||
.lots-popup .footer
|
|
||||||
{
|
|
||||||
text-align: center;
|
|
||||||
background-color: #009688;
|
|
||||||
color: white;
|
|
||||||
line-height: 2em;
|
|
||||||
padding: .4em;
|
|
||||||
}
|
|
||||||
.lots-popup .footer > button
|
|
||||||
{
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
.lots-popup .erase
|
|
||||||
{
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
.lots-popup .confirm
|
|
||||||
{
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
.lots-popup .erase > img,
|
|
||||||
.lots-popup .confirm > img
|
|
||||||
{
|
|
||||||
display: block;
|
|
||||||
height: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Items */
|
/* Items */
|
||||||
|
|
||||||
.catalog .second-category
|
.item-info
|
||||||
|
{
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.item-info .second-category
|
||||||
{
|
{
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
color: orange;
|
color: orange;
|
||||||
}
|
}
|
||||||
.catalog .third-category
|
.item-info .third-category
|
||||||
{
|
{
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
color: red;
|
color: red;
|
||||||
}
|
}
|
||||||
.catalog .price
|
.item-info .from
|
||||||
|
{
|
||||||
|
font-size: .8em;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
.item-info .price
|
||||||
{
|
{
|
||||||
color: green;
|
color: green;
|
||||||
font-size: 1.1em;
|
font-size: 1.1em;
|
||||||
}
|
}
|
||||||
.catalog .footer-message
|
.item-info > h2
|
||||||
{
|
|
||||||
padding-bottom: 1em;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.catalog .item-info > h2
|
|
||||||
{
|
{
|
||||||
|
padding: 0;
|
||||||
|
padding-bottom: .1em;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-size: 1.1em;
|
font-size: 1.1em;
|
||||||
}
|
}
|
||||||
.catalog .item-info > p
|
.item-info > p
|
||||||
{
|
{
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
@ -224,11 +193,18 @@
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
.catalog .item-info > .producer
|
.item-info .producer
|
||||||
{
|
{
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
padding: .15em 0;
|
padding: 0;
|
||||||
|
padding-bottom: .2em;
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
.item-info > .aval-price
|
||||||
|
{
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
}
|
}
|
||||||
.catalog .item-info > .htk-button
|
.catalog .item-info > .htk-button
|
||||||
{
|
{
|
||||||
|
@ -239,10 +215,72 @@
|
||||||
{
|
{
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
.catalog .item-info .from
|
|
||||||
|
/* Card */
|
||||||
|
|
||||||
|
|
||||||
|
.card-popup
|
||||||
{
|
{
|
||||||
font-size: .8em;
|
overflow: auto;
|
||||||
font-style: italic;
|
}
|
||||||
|
.item-card
|
||||||
|
{
|
||||||
|
font-size: .9em;
|
||||||
|
width: 20em;
|
||||||
|
}
|
||||||
|
.item-card .top
|
||||||
|
{
|
||||||
|
padding: 1em;
|
||||||
|
border-bottom: 1px solid #DDD;
|
||||||
|
}
|
||||||
|
.item-card .item-info
|
||||||
|
{
|
||||||
|
margin-left: 9em;
|
||||||
|
height: 8em;
|
||||||
|
}
|
||||||
|
.item-card .htk-image
|
||||||
|
{
|
||||||
|
height: 8em;
|
||||||
|
width: 8em;
|
||||||
|
float: left;
|
||||||
|
border-radius: .3em;
|
||||||
|
}
|
||||||
|
.item-card .desc
|
||||||
|
{
|
||||||
|
clear: both;
|
||||||
|
margin: 0;
|
||||||
|
margin-top: 1em;
|
||||||
|
font-size: .9em;
|
||||||
|
}
|
||||||
|
.item-card .lots-grid tr
|
||||||
|
{
|
||||||
|
height: 3em;
|
||||||
|
}
|
||||||
|
.item-card .footer
|
||||||
|
{
|
||||||
|
text-align: center;
|
||||||
|
background-color: #009688;
|
||||||
|
color: white;
|
||||||
|
line-height: 2em;
|
||||||
|
padding: .4em;
|
||||||
|
}
|
||||||
|
.item-card .footer > button
|
||||||
|
{
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.item-card .erase
|
||||||
|
{
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.item-card .confirm
|
||||||
|
{
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.item-card .erase > img,
|
||||||
|
.item-card .confirm > img
|
||||||
|
{
|
||||||
|
display: block;
|
||||||
|
height: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* List view */
|
/* List view */
|
||||||
|
@ -288,7 +326,6 @@
|
||||||
.list-view .item-info > h2
|
.list-view .item-info > h2
|
||||||
{
|
{
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
padding: 0;
|
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
@ -299,8 +336,6 @@
|
||||||
}
|
}
|
||||||
.list-view .item-info > .aval-price
|
.list-view .item-info > .aval-price
|
||||||
{
|
{
|
||||||
position: absolute;
|
|
||||||
bottom: 0;
|
|
||||||
right: .3em;
|
right: .3em;
|
||||||
}
|
}
|
||||||
.list-view .item-info > .htk-button
|
.list-view .item-info > .htk-button
|
||||||
|
@ -348,14 +383,8 @@
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
margin: .6em;
|
margin: .6em;
|
||||||
}
|
}
|
||||||
.grid-view .item-info > h2
|
|
||||||
{
|
|
||||||
padding-top: 0;
|
|
||||||
}
|
|
||||||
.grid-view .item-info > .aval-price
|
.grid-view .item-info > .aval-price
|
||||||
{
|
{
|
||||||
position: absolute;
|
|
||||||
bottom: 0;
|
|
||||||
right: 2.8em;
|
right: 2.8em;
|
||||||
}
|
}
|
||||||
.grid-view .item-info .add-button
|
.grid-view .item-info .add-button
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
<vn>
|
<vn>
|
||||||
<vn-group>
|
<vn-group>
|
||||||
|
<vn-param id="card-item"/>
|
||||||
<vn-param id="realm" on-changed="onRealmChange"/>
|
<vn-param id="realm" on-changed="onRealmChange"/>
|
||||||
<vn-param id="type" on-changed="onTypeChange"/>
|
<vn-param id="type" on-changed="onTypeChange"/>
|
||||||
<vn-param id="search" on-changed="onFilterChange"/>
|
<vn-param id="search" on-changed="onFilterChange"/>
|
||||||
|
@ -39,6 +40,16 @@
|
||||||
<sql-value param="producer"/>
|
<sql-value param="producer"/>
|
||||||
</sql-filter-item>
|
</sql-filter-item>
|
||||||
</sql-filter>
|
</sql-filter>
|
||||||
|
<db-form id="basket" on-ready="onBasketReady">
|
||||||
|
<db-model property="model">
|
||||||
|
<custom>
|
||||||
|
SELECT o.id, o.date_send, ag.description agency, v.code method
|
||||||
|
FROM basket o
|
||||||
|
JOIN vn2008.Agencias ag ON ag.Id_Agencia = o.agency_id
|
||||||
|
JOIN vn2008.Vistas v ON v.vista_id = o.delivery_method_id
|
||||||
|
</custom>
|
||||||
|
</db-model>
|
||||||
|
</db-form>
|
||||||
<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
|
||||||
|
@ -46,7 +57,10 @@
|
||||||
GROUP BY warehouse_id
|
GROUP BY warehouse_id
|
||||||
</custom>
|
</custom>
|
||||||
</db-query>
|
</db-query>
|
||||||
<db-model result-index="2" id="items-model" on-status-changed="onItemsChange">
|
<db-model
|
||||||
|
id="items-model"
|
||||||
|
result-index="2"
|
||||||
|
on-status-changed="onItemsChange">
|
||||||
<custom>
|
<custom>
|
||||||
CREATE TEMPORARY TABLE tmp.bionic_calc
|
CREATE TEMPORARY TABLE tmp.bionic_calc
|
||||||
(INDEX (item_id))
|
(INDEX (item_id))
|
||||||
|
@ -56,8 +70,8 @@
|
||||||
WHERE #filter;
|
WHERE #filter;
|
||||||
CALL bionic_calc ();
|
CALL bionic_calc ();
|
||||||
SELECT a.Id_Article item_id, a.description, b.available, b.price,
|
SELECT a.Id_Article item_id, a.description, b.available, b.price,
|
||||||
p.name producer, a.Foto, a.Article, a.Categoria, a.Medida,
|
b.producer, a.Foto, a.Article, a.Categoria, a.Medida,
|
||||||
IF(a.Tallos > 1, a.Tallos, NULL) Tallos, c.str color, o.str origin
|
IF(a.Tallos > 1, a.Tallos, NULL) Tallos, c.str color
|
||||||
FROM tmp.bionic_item b
|
FROM tmp.bionic_item b
|
||||||
JOIN vn2008.Articles a ON a.Id_Article = b.item_id
|
JOIN vn2008.Articles a ON a.Id_Article = b.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
|
||||||
|
@ -73,7 +87,30 @@
|
||||||
</custom>
|
</custom>
|
||||||
</sql-batch>
|
</sql-batch>
|
||||||
</db-model>
|
</db-model>
|
||||||
<db-model id="item-lots" result-index="1" on-status-changed-after="onStatusChange">
|
<db-form id="card" model="items-model"/>
|
||||||
|
<sql-batch id="card-batch">
|
||||||
|
<custom>
|
||||||
|
<item name="item" param="card-item"/>
|
||||||
|
</custom>
|
||||||
|
</sql-batch>
|
||||||
|
<db-form id="card-extend">
|
||||||
|
<db-model
|
||||||
|
property="model"
|
||||||
|
batch="card-batch"
|
||||||
|
on-status-changed-after="onStatusChange">
|
||||||
|
<custom>
|
||||||
|
SELECT a.description, o.str origin
|
||||||
|
FROM vn2008.Articles a
|
||||||
|
LEFT JOIN vn_locale.origin_view o ON o.origin_id = a.id_origen
|
||||||
|
WHERE a.Id_Article = #item
|
||||||
|
</custom>
|
||||||
|
</db-model>
|
||||||
|
</db-form>
|
||||||
|
<db-model
|
||||||
|
id="item-lots"
|
||||||
|
result-index="1"
|
||||||
|
on-status-changed-after="onStatusChange"
|
||||||
|
batch="card-batch">
|
||||||
<custom>
|
<custom>
|
||||||
CALL bionic_from_item (#item);
|
CALL bionic_from_item (#item);
|
||||||
SELECT p.warehouse_id, w.name warehouse, p.grouping, p.price, p.rate, l.available
|
SELECT p.warehouse_id, w.name warehouse, p.grouping, p.price, p.rate, l.available
|
||||||
|
@ -82,18 +119,7 @@
|
||||||
JOIN vn2008.warehouse w ON w.id = p.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"/>
|
|
||||||
</db-model>
|
</db-model>
|
||||||
<db-form id="basket" on-ready="onBasketReady">
|
|
||||||
<db-model property="model">
|
|
||||||
<custom>
|
|
||||||
SELECT o.id, o.date_send, ag.description agency, v.code method
|
|
||||||
FROM basket o
|
|
||||||
JOIN vn2008.Agencias ag ON ag.Id_Agencia = o.agency_id
|
|
||||||
JOIN vn2008.Vistas v ON v.vista_id = o.delivery_method_id
|
|
||||||
</custom>
|
|
||||||
</db-model>
|
|
||||||
</db-form>
|
|
||||||
</vn-group>
|
</vn-group>
|
||||||
<div id="title">
|
<div id="title">
|
||||||
<h1 id="title-text"><t>Catalog</t></h1>
|
<h1 id="title-text"><t>Catalog</t></h1>
|
||||||
|
@ -122,7 +148,6 @@
|
||||||
id="grid-view"
|
id="grid-view"
|
||||||
empty-message="_Choose filter from right menu"
|
empty-message="_Choose filter from right menu"
|
||||||
form-id="item"
|
form-id="item"
|
||||||
renderer="gridRenderer"
|
|
||||||
model="items-model">
|
model="items-model">
|
||||||
<custom>
|
<custom>
|
||||||
<div class="box item-box">
|
<div class="box item-box">
|
||||||
|
@ -131,33 +156,15 @@
|
||||||
subdir="200x200"
|
subdir="200x200"
|
||||||
form="item"
|
form="item"
|
||||||
column="Foto"
|
column="Foto"
|
||||||
full-dir="900x900"
|
full-dir="900x900"/>
|
||||||
editable="true"/>
|
|
||||||
<div class="item-info">
|
<div class="item-info">
|
||||||
<htk-button
|
<htk-button
|
||||||
form="item"
|
form="item"
|
||||||
column="id"
|
column="id"
|
||||||
tip="_AddToBasket"
|
tip="_AddToBasket"
|
||||||
image="image/add.svg"
|
image="image/add.svg"
|
||||||
on-click="onGridAddItemClick"
|
on-click="onAddItemClick"
|
||||||
class="add-button"/>
|
class="add-button"/>
|
||||||
<htk-button
|
|
||||||
form="item"
|
|
||||||
column="id"
|
|
||||||
tip="_More info"
|
|
||||||
image="image/info.svg"
|
|
||||||
on-click="onInfoClick"
|
|
||||||
id="info-button"
|
|
||||||
class="info-button"/>
|
|
||||||
<div class="aval-price">
|
|
||||||
<htk-text form="item" column="available"/>
|
|
||||||
<span class="from">
|
|
||||||
<t>from</t>
|
|
||||||
</span>
|
|
||||||
<span class="price">
|
|
||||||
<htk-text form="item" column="price" format="%.2d€"/>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<h2>
|
<h2>
|
||||||
<htk-text form="item" column="Article"/>
|
<htk-text form="item" column="Article"/>
|
||||||
</h2>
|
</h2>
|
||||||
|
@ -172,6 +179,15 @@
|
||||||
<t>Color</t> <htk-text form="item" column="color"/>
|
<t>Color</t> <htk-text form="item" column="color"/>
|
||||||
<htk-text form="item" column="Tallos" format="_, %.0d Units"/>
|
<htk-text form="item" column="Tallos" format="_, %.0d Units"/>
|
||||||
</p>
|
</p>
|
||||||
|
<div class="aval-price">
|
||||||
|
<htk-text form="item" column="available"/>
|
||||||
|
<span class="from">
|
||||||
|
<t>from</t>
|
||||||
|
</span>
|
||||||
|
<span class="price">
|
||||||
|
<htk-text form="item" column="price" format="%.2d€"/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</custom>
|
</custom>
|
||||||
|
@ -393,8 +409,43 @@
|
||||||
class="desc-popup"
|
class="desc-popup"
|
||||||
id="description"/>
|
id="description"/>
|
||||||
</htk-popup>
|
</htk-popup>
|
||||||
<htk-popup id="lots-popup">
|
<htk-popup
|
||||||
<div property="child-node" class="lots-popup">
|
id="card-popup"
|
||||||
|
class="card-popup"
|
||||||
|
modal="true"
|
||||||
|
on-closed="onPopupClose">
|
||||||
|
<div property="child-node" class="item-card">
|
||||||
|
<div class="top">
|
||||||
|
<htk-image
|
||||||
|
directory="catalog"
|
||||||
|
subdir="200x200"
|
||||||
|
form="card"
|
||||||
|
column="Foto"
|
||||||
|
full-dir="900x900"
|
||||||
|
editable="true"/>
|
||||||
|
<div class="item-info">
|
||||||
|
<h2>
|
||||||
|
<htk-text form="card" column="Article"/>
|
||||||
|
</h2>
|
||||||
|
<p class="producer">
|
||||||
|
<htk-text form="card" column="producer"/>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<t>Size</t> <htk-text form="card" column="Medida"/>,
|
||||||
|
<t>Category</t> <htk-text form="card" column="Categoria"/>
|
||||||
|
</p>
|
||||||
|
<p class="color">
|
||||||
|
<t>Color</t> <htk-text form="card" column="color"/>
|
||||||
|
<htk-text form="card" column="Tallos" format="_, %.0d Units"/>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<t>Origin</t> <htk-text form="card-extend" column="origin"/>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<p class="desc">
|
||||||
|
<htk-text form="card-extend" column="description" id="desc"/>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
<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-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"/>
|
||||||
|
|
|
@ -93,7 +93,7 @@ Vn.Checkout = new Class
|
||||||
|
|
||||||
,agencySteps: ['method', 'date', 'address', 'agency', 'confirm-agency']
|
,agencySteps: ['method', 'date', 'address', 'agency', 'confirm-agency']
|
||||||
,deliverySteps: ['method', 'date', 'address', null, 'confirm-delivery']
|
,deliverySteps: ['method', 'date', 'address', null, 'confirm-delivery']
|
||||||
,pickupSteps: ['method', 'date', 'pickup', null, 'confirm-pickup']
|
,pickupSteps: ['method', 'date', 'address', 'pickup', 'confirm-pickup']
|
||||||
|
|
||||||
,stepFunc: function (stepIndex)
|
,stepFunc: function (stepIndex)
|
||||||
{
|
{
|
||||||
|
|
|
@ -96,6 +96,8 @@ Db.Form = new Class
|
||||||
|
|
||||||
if (ready)
|
if (ready)
|
||||||
this.signalEmit ('ready');
|
this.signalEmit ('ready');
|
||||||
|
|
||||||
|
this.iterChanged ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
/**
|
/**
|
||||||
* Class to display or edit an image. Also it allows to show it's full version.
|
* Class to display or edit an image. Also it allows to show it's full version.
|
||||||
**/
|
**/
|
||||||
var fullImage = null;
|
|
||||||
|
|
||||||
Htk.Image = new Class
|
Htk.Image = new Class
|
||||||
({
|
({
|
||||||
Extends: Htk.Field
|
Extends: Htk.Field
|
||||||
|
|
|
@ -66,6 +66,7 @@ Htk.Popup = new Class
|
||||||
var div = this.createElement ('div');
|
var div = this.createElement ('div');
|
||||||
div.className = 'htk-popup';
|
div.className = 'htk-popup';
|
||||||
|
|
||||||
|
this._bgMouseDownHandler = this._bgMouseDown.bind (this);
|
||||||
this.parent (props);
|
this.parent (props);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,32 +100,35 @@ Htk.Popup = new Class
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.node.addEventListener ('mousedown', this._stopEvent);
|
this.node.addEventListener ('mousedown', this._onMouseDown.bind (this));
|
||||||
|
|
||||||
this._hideHandler = this.hide.bind (this);
|
|
||||||
document.addEventListener ('mousedown', this._hideHandler);
|
|
||||||
|
|
||||||
if (this.isModal ())
|
if (this.isModal ())
|
||||||
{
|
{
|
||||||
this._background = document.createElement ('div');
|
var bg = this._bg = document.createElement ('div');
|
||||||
this._background.className = 'htk-background';
|
bg.className = 'htk-background';
|
||||||
document.body.appendChild (this._background);
|
bg.addEventListener ('mousedown', this._bgMouseDownHandler);
|
||||||
|
|
||||||
setTimeout (this._onOpacityTimeout.bind (this), 0);
|
|
||||||
|
|
||||||
Vn.Node.addClass (this.node, 'modal');
|
Vn.Node.addClass (this.node, 'modal');
|
||||||
|
bg.appendChild (this.node);
|
||||||
|
|
||||||
|
document.body.appendChild (bg);
|
||||||
|
setTimeout (this._onOpacityTimeout.bind (this), 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
document.addEventListener ('mousedown', this._bgMouseDownHandler);
|
||||||
|
document.body.appendChild (this.node);
|
||||||
}
|
}
|
||||||
|
|
||||||
this._isOpen = true;
|
this._isOpen = true;
|
||||||
document.body.appendChild (this.node);
|
|
||||||
this.reset ();
|
this.reset ();
|
||||||
setTimeout (this._onResetTimeout.bind (this), 0);
|
setTimeout (this._onResetTimeout.bind (this), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
,_onOpacityTimeout: function ()
|
,_onOpacityTimeout: function ()
|
||||||
{
|
{
|
||||||
if (this._background)
|
if (this._bg)
|
||||||
this._background.style.opacity = 1;
|
this._bg.style.opacity = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
,_onResetTimeout: function ()
|
,_onResetTimeout: function ()
|
||||||
|
@ -137,13 +141,16 @@ Htk.Popup = new Class
|
||||||
if (!this._isOpen)
|
if (!this._isOpen)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
var style = this.node.style;
|
||||||
|
style.height = '';
|
||||||
|
style.width = '';
|
||||||
|
|
||||||
var margin = 20;
|
var margin = 20;
|
||||||
var dblMargin = margin * 2;
|
var dblMargin = margin * 2;
|
||||||
var width = this.node.offsetWidth;
|
var width = this.node.offsetWidth;
|
||||||
var height = this.node.offsetHeight;
|
var height = this.node.offsetHeight;
|
||||||
var innerWidth = Vn.Browser.getInnerWidth ();
|
var innerWidth = Vn.Browser.getInnerWidth ();
|
||||||
var innerHeight = Vn.Browser.getInnerHeight ();
|
var innerHeight = Vn.Browser.getInnerHeight ();
|
||||||
var style = this.node.style;
|
|
||||||
|
|
||||||
if (width + dblMargin > innerWidth)
|
if (width + dblMargin > innerWidth)
|
||||||
{
|
{
|
||||||
|
@ -191,23 +198,32 @@ Htk.Popup = new Class
|
||||||
if (!this._isOpen)
|
if (!this._isOpen)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (this._background)
|
if (this._bg)
|
||||||
{
|
{
|
||||||
Vn.Node.remove (this._background);
|
Vn.Node.remove (this._bg);
|
||||||
Vn.Node.removeClass (this.node, 'modal');
|
Vn.Node.removeClass (this.node, 'modal');
|
||||||
|
this._bg = null;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
this.node.removeEventListener ('mousedown', this._stopEvent)
|
document.removeEventListener ('mousedown', this._bgMouseDownHandler);
|
||||||
document.removeEventListener ('mousedown', this._hideHandler);
|
|
||||||
Vn.Node.remove (this.node);
|
Vn.Node.remove (this.node);
|
||||||
this._parent = null;
|
this._parent = null;
|
||||||
this._isOpen = false;
|
this._isOpen = false;
|
||||||
this.signalEmit ('closed');
|
this.signalEmit ('closed');
|
||||||
}
|
}
|
||||||
|
|
||||||
,_stopEvent: function (e)
|
,_bgMouseDown: function (e)
|
||||||
{
|
{
|
||||||
e.stopPropagation ();
|
if (e !== this._lastEvent)
|
||||||
|
this.hide ();
|
||||||
|
|
||||||
|
this._lastEvent = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
,_onMouseDown: function (e)
|
||||||
|
{
|
||||||
|
this._lastEvent = e;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -386,19 +386,20 @@ td.cell-image .htk-image
|
||||||
text-align: center;
|
text-align: center;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
max-height: 40em;
|
max-height: 40em;
|
||||||
|
overflow: visible;
|
||||||
}
|
}
|
||||||
.htk-toast > div
|
.htk-toast > div
|
||||||
{
|
{
|
||||||
|
margin: .5em 0;
|
||||||
padding: .5em 2%;
|
padding: .5em 2%;
|
||||||
margin: .5em 2%;
|
|
||||||
border-radius: 0.1em;
|
border-radius: 0.1em;
|
||||||
box-shadow: 0 0 0.4em #666;
|
box-shadow: 0 0 0.4em rgba(1, 1, 1, 0.6);
|
||||||
width: 92%;
|
width: 96%;
|
||||||
}
|
}
|
||||||
.htk-toast > .message
|
.htk-toast > .message
|
||||||
{
|
{
|
||||||
background-color: #B3E5FC;
|
background-color: #BBFFBB;
|
||||||
color: #037;
|
color: #363;
|
||||||
}
|
}
|
||||||
.htk-toast > .warning
|
.htk-toast > .warning
|
||||||
{
|
{
|
||||||
|
@ -428,11 +429,6 @@ td.cell-image .htk-image
|
||||||
{
|
{
|
||||||
border-radius: 0.1em;
|
border-radius: 0.1em;
|
||||||
}
|
}
|
||||||
.htk-popup.modal
|
|
||||||
{
|
|
||||||
font-size: 1.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.htk-background
|
.htk-background
|
||||||
{
|
{
|
||||||
position: fixed;
|
position: fixed;
|
||||||
|
@ -445,6 +441,10 @@ td.cell-image .htk-image
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transition: opacity 200ms ease-in-out;
|
transition: opacity 200ms ease-in-out;
|
||||||
}
|
}
|
||||||
|
.htk-background > .htk-popup
|
||||||
|
{
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
|
||||||
/* Assistant */
|
/* Assistant */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue