diff --git a/web/forms/admin/users/style.css b/web/forms/admin/users/style.css index d4dd41d4..25ec92c8 100755 --- a/web/forms/admin/users/style.css +++ b/web/forms/admin/users/style.css @@ -1,15 +1,34 @@ .users { padding: 1em; - min-width: 35em; } .users .box { - max-width: 50em; + max-width: 30em; margin: 0 auto; } -.users tbody tr +.users-box { - height: 3.4em; + padding: 1em; + border-bottom: 1px solid #DDD; +} +.users-box > button +{ + float: right; +} +.users-box > p +{ + margin: .2em 0; +} +.users-box > p.important +{ + font-size: 1.2em; +} + +/* Topbar */ + +.action-bar .htk-search-entry +{ + margin: .8em .6em; } diff --git a/web/forms/admin/users/ui.xml b/web/forms/admin/users/ui.xml index b74743b1..17c75a60 100755 --- a/web/forms/admin/users/ui.xml +++ b/web/forms/admin/users/ui.xml @@ -1,26 +1,20 @@ + + + +

UserManagement

+
+ +
- - - - - - - -
- - - - - -
-
- - + + + SELECT u.id, u.name, c.Cliente FROM account.user u INNER JOIN vn2008.Clientes c ON u.id = c.Id_Cliente @@ -28,25 +22,38 @@ OR c.Cliente LIKE CONCAT('%', #user, '%') OR u.id = #user ORDER BY u.name LIMIT 200 - + + + - - - - - - - - -
+ + + + +
+ + +

+ +

+

+ - + +

+
+
+ +
diff --git a/web/forms/admin/users/users.js b/web/forms/admin/users/users.js index 88c535f1..42996354 100755 --- a/web/forms/admin/users/users.js +++ b/web/forms/admin/users/users.js @@ -3,15 +3,6 @@ Vn.Users = new Class ({ Extends: Vn.Form - ,onChangeUserClick: function (column, value) - { - var batch = new Sql.Batch (); - batch.addValue ('user', value); - - var query = 'UPDATE user_session_view SET user_id = #user'; - this.conn.execQuery (query, this.userChanged.bind (this), batch); - } - ,onAccessLogClick: function (column, value) { this.hash.set ({ @@ -19,8 +10,14 @@ Vn.Users = new Class ,'user': value }); } + + ,onChangeUserClick: function (button, form) + { + this.gui.supplantUser (form.get ('id'), + this.onUserSupplant.bind (this)); + } - ,userChanged: function () + ,onUserSupplant: function (userName) { this.hash.set ({'form': 'ecomerce/orders'}); } diff --git a/web/forms/ecomerce/basket/basket.js b/web/forms/ecomerce/basket/basket.js index 7171d5f5..bf99b7e2 100755 --- a/web/forms/ecomerce/basket/basket.js +++ b/web/forms/ecomerce/basket/basket.js @@ -40,55 +40,21 @@ Vn.Basket = new Class this.hash.set ({'form': 'ecomerce/confirm'}); } - ,amountRender: function (renderer, form) + ,repeaterFunc: function (res, form) { - var amount = form.get ('amount'); - var grouping = form.get ('grouping'); - - if (amount && grouping) - renderer.value = amount / grouping; - else - renderer.value = null; + res.$('subtotal').value = this.subtotal (form); } - ,onAmountChange: function (renderer, row, newValue) + ,onDeleteClick: function (button, form) { - var model = this.$('items'); - model.set (row, 'amount', newValue * model.get (row, 'grouping')); - } - - ,featuresRender: function (renderer, form) - { - renderer.value = form.get ('Medida') +' '+ form.get ('Categoria') +' '+ form.get ('Color'); - } - - ,stemsRender: function (renderer, form) - { - renderer.value = Vn.Value.format (form.get ('price'), '%.2d€') +' x '+ form.get ('amount'); - - if (form.get ('amount') > form.get ('available')) - renderer.td.className = 'available-exceeded'; - else - renderer.td.className = ''; - } - - ,subtotalRender: function (renderer, form) - { - renderer.value = this.subtotal (form); + if (confirm (_('ReallyDelete'))) + form.deleteRow (); } ,subtotal: function (form) { return form.get ('amount') * form.get ('price'); } - - ,availableRender: function (renderer, form) - { - if (form.get ('amount') > form.get ('avail')) - renderer.value = 'unavailable'; - else - renderer.value = 'invisible'; - } }); diff --git a/web/forms/ecomerce/basket/style.css b/web/forms/ecomerce/basket/style.css index b78411a2..f563b956 100755 --- a/web/forms/ecomerce/basket/style.css +++ b/web/forms/ecomerce/basket/style.css @@ -1,11 +1,10 @@ .basket { padding: 1em; - min-width: 25em; } .basket .box { - max-width: 45em; + max-width: 30em; margin: 0 auto; } .basket .form @@ -37,3 +36,32 @@ border-radius: 50%; } +/* Lines */ + +.basket-line +{ + padding: 1em; + border-bottom: 1px solid #DDD; +} +.basket-line > .delete +{ + margin-top: .3em; + margin-right: .5em; + float: left; +} +.basket-line > .photo +{ + margin-right: 1em; + float: left; + border-radius: 50%; +} +.basket-line > p +{ + margin: .1em 0; + margin-left: 7.5em; +} +.basket-line .subtotal +{ + float: right; +} + diff --git a/web/forms/ecomerce/basket/ui.xml b/web/forms/ecomerce/basket/ui.xml index 5f0e4c26..d1fa0d76 100755 --- a/web/forms/ecomerce/basket/ui.xml +++ b/web/forms/ecomerce/basket/ui.xml @@ -22,7 +22,7 @@
- + SELECT i.id, i.amount, i.price, a.Article, a.Categoria, @@ -32,18 +32,39 @@ LEFT JOIN vn2008.Origen o ON a.id_origen = o.id - - - - - - + +
+ + +

+ + + +

+

+ x + + + + +

+
+
+ +

OrderTotal diff --git a/web/forms/ecomerce/orders/orders.js b/web/forms/ecomerce/orders/orders.js index fc181f98..c5630a75 100755 --- a/web/forms/ecomerce/orders/orders.js +++ b/web/forms/ecomerce/orders/orders.js @@ -13,11 +13,11 @@ Vn.Orders = new Class this.hash.set ({'form': 'ecomerce/basket'}); } - ,onShowClick: function (column, ticketId) + ,onShowClick: function (button, form) { this.hash.set ({ 'form': 'ecomerce/ticket', - 'ticket': ticketId + 'ticket': form.get ('ticket_id') }); } @@ -25,7 +25,7 @@ Vn.Orders = new Class ,balanceConditionalFunc: function (field, value) { - if (value > 0) + if (value >= 0) Vn.Node.removeClass (this.$('balance'), 'negative'); else Vn.Node.addClass (this.$('balance'), 'negative'); diff --git a/web/forms/ecomerce/orders/style.css b/web/forms/ecomerce/orders/style.css index 5b4038f2..ba771a9a 100755 --- a/web/forms/ecomerce/orders/style.css +++ b/web/forms/ecomerce/orders/style.css @@ -4,38 +4,7 @@ } .orders .box { - max-width: 45em; -} -.orders .box .header, -.balance-grid > thead > tr -{ - background-color: #3F51B6; -} -.orders .htk-grid tbody tr -{ - height: 5em; -} - -/* Info box */ - -.orders .info -{ - padding: 0.4em; - background-color: #FFC; - border-radius: 0.1em; -} -.orders .info > img -{ - vertical-align: middle; - margin: 0.7em; - height: 1.5em; -} - -/* Buttons */ - -.orders td.hide -{ - display: none; + max-width: 30em; } /* Balance */ @@ -77,3 +46,24 @@ margin: auto; } +/* List */ + +.order-box +{ + padding: 1em; + border-bottom: 1px solid #DDD; +} +.order-box > p +{ + margin: .1em 0; +} +.order-box > p.important +{ + font-size: 1.2em; +} +.order-box > .show-order +{ + margin: 1.6em .5em; + float: right; +} + diff --git a/web/forms/ecomerce/orders/ui.xml b/web/forms/ecomerce/orders/ui.xml index d5c6b0f1..93ba8ca4 100755 --- a/web/forms/ecomerce/orders/ui.xml +++ b/web/forms/ecomerce/orders/ui.xml @@ -45,23 +45,37 @@

-
- - - - CALL ticket_list (); - - - - - - - -
+ + + + CALL ticket_list (); + + + +
+ +

+ +

+

+ Delivery +

+

+ +

+

+ +

+
+
+ +
diff --git a/web/forms/ecomerce/ticket/ui.xml b/web/forms/ecomerce/ticket/ui.xml index 24327ea8..11b8a6eb 100755 --- a/web/forms/ecomerce/ticket/ui.xml +++ b/web/forms/ecomerce/ticket/ui.xml @@ -64,16 +64,7 @@

- + SELECT m.item_id, amount, concept, Categoria, Medida, Tallos, Color, diff --git a/web/image/gnome.svg b/web/image/gnome.svg new file mode 100644 index 00000000..0f0c6b6a --- /dev/null +++ b/web/image/gnome.svg @@ -0,0 +1,88 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/web/js/hedera/gui.css b/web/js/hedera/gui.css index 6dcf9e1d..73c462a0 100755 --- a/web/js/hedera/gui.css +++ b/web/js/hedera/gui.css @@ -148,21 +148,33 @@ .vn-gui .menu-header { - height: 5.5em; background-color: #333; + color: white; + padding: 1em; } .vn-gui .logo { + display: block; width: 12em; - float: left; - margin: 1em; - margin-bottom: .2em; + margin-bottom: .6em; } .vn-gui .welcome { - float: left; - color: white; - margin: .5em 1em; + display: block; +} +.vn-gui .supplant +{ + margin-top: .2em; + display: none; +} +.vn-gui .supplant > span +{ + font-size: 1.1em; +} +.vn-gui .supplant > button +{ + float: right; + padding: .2em; } .vn-gui .background { diff --git a/web/js/hedera/gui.js b/web/js/hedera/gui.js index dbc0a588..f609cd02 100755 --- a/web/js/hedera/gui.js +++ b/web/js/hedera/gui.js @@ -20,7 +20,7 @@ Vn.Gui = new Class var sql = 'SELECT default_form, image_dir, image_host FROM config;' +'SELECT production_domain, test_domain FROM config;' - +'SELECT name FROM customer_view;' + +'SELECT name FROM customer_account;' +'CALL form_list ();'; this.conn.execQuery (sql, this.onMainQueryDone.bind (this)); }, @@ -481,6 +481,53 @@ Vn.Gui = new Class var report = new module.klass (module, this); report.open (batch); } + + ,supplantUser: function (userId, callback) + { + var batch = new Sql.Batch (); + batch.addValue ('user', userId); + + var query = 'UPDATE user_session_view SET user_id = #user;'+ + 'SELECT Cliente FROM vn2008.Clientes WHERE Id_cliente = #user'; + this.conn.execQuery (query, + this._onUserSupplant.bind (this, userId, callback), batch); + } + + ,_onUserSupplant: function (userId, callback, resultSet) + { + this._supplantClear (); + this._supplanted = userId; + + resultSet.fetchResult (); + var userName = resultSet.fetchValue (); + + Vn.Node.setText (this.$('supplanted'), userName); + Vn.Node.show (this.$('supplant')); + + if (callback) + callback (); + } + + ,_supplantClear: function () + { + if (this._supplanted) + { + Vn.Node.hide (this.$('supplant')); + this._supplanted = null; + } + } + + ,onSupplantExitClick: function () + { + var query = 'UPDATE user_session_view SET user_id = account.user_get_id ()' + this.conn.execQuery (query, this.supplantExit.bind (this)); + } + + ,supplantExit: function () + { + this._supplantClear (); + this._onFormChange (); + } ,_destroy: function () { diff --git a/web/js/hedera/gui.xml b/web/js/hedera/gui.xml index 630171f8..c7536824 100755 --- a/web/js/hedera/gui.xml +++ b/web/js/hedera/gui.xml @@ -2,10 +2,14 @@