From c7b98c831361d8ae736e202d1233d3d8f0905e96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Thu, 6 Dec 2018 15:16:00 +0100 Subject: [PATCH] Castecne funkcni rozpocet --- src/app.js | 133 +++++++- src/assets/js/program.js | 2 +- src/assets/scss/editor/app.scss | 2 +- src/views/backend/budget.ejs | 308 ++++++++---------- src/views/partials/backend/budgetDetail.ejs | 75 +++++ .../partials/backend/modals/addGroup.ejs | 50 +-- src/views/partials/backend/modals/addItem.ejs | 49 ++- .../partials/backend/modals/budgetGroup.ejs | 72 +--- 8 files changed, 397 insertions(+), 294 deletions(-) create mode 100644 src/views/partials/backend/budgetDetail.ejs diff --git a/src/app.js b/src/app.js index eada60d..4383a21 100644 --- a/src/app.js +++ b/src/app.js @@ -83,6 +83,33 @@ var templateData = { } ], albumsCount: 0, + budget: [ + { + name: "Rozlucka se svobodou", + items: [ + { + name: "Polozka 1", + bought: false, + price: 1200 + }, + { + name: "Polozka 2", + bought: false, + price: 1200 + }, + { + name: "Polozka 3", + bought: true, + price: 1200 + }, + { + name: "Polozka 4", + bought: false, + price: 1200 + }, + ] + } + ] }; /** @@ -140,31 +167,127 @@ app.post ('/:page?', function (req, res) { var redirectUrl = '/' + (typeof req.params.page === 'undefined' ? 'index' : req.params.page); if (typeof req.body.redirectParams !== 'undefined') { - redirectUrl += '?'+req.body.redirectParams; + redirectUrl += '?' + req.body.redirectParams; } res.redirect (redirectUrl) }); -app.post('/editor/album', function (req, res) { - templateData.albumsCount ++; +app.post ('/editor/album', function (req, res) { + templateData.albumsCount++; var redirectUrl = '/editor/gallery_detail'; if (typeof req.body.redirectParams !== 'undefined') { - redirectUrl += '?'+req.body.redirectParams; + redirectUrl += '?' + req.body.redirectParams; } res.redirect (redirectUrl) }); +app.post ('/budget/groups', function (req, res) { + + var groups = req.body.group; + + for (var i in groups) { + if (typeof templateData.budget[i] == 'undefined') { + templateData.budget[i] = { + name: groups[i], + items: [] + } + } else { + templateData.budget[i].name = groups[i]; + } + } + + var redirectUrl = '/budget'; + + if (typeof req.body.redirectParams !== 'undefined') { + redirectUrl += '?' + req.body.redirectParams; + } + + res.redirect (redirectUrl) + +}); + +app.post ('/budget/add_item', function (req, res) { + + var items = req.body.name.length; + + var newGroupsMap = {}; + + for (var i = 0; i < items; i++) { + var group = req.body.group[i]; + var itemName = req.body.name[i]; + var price = req.body.price[i]; + + if (group == 'new') { + var newGroupName = req.body.group_name[i]; + + if (typeof newGroupsMap[newGroupName] == 'undefined') { + templateData.budget.push ({name: newGroupName, items: []}); + + newGroupsMap[newGroupName] = templateData.budget.length; + + group = templateData.budget.length - 1; + } else { + group = newGroupsMap[newGroupName]; + } + } + + templateData.budget[group].items.push ({ + name: itemName, + price: price, + bought: false + }); + + } + + var redirectUrl = '/budget'; + + if (typeof req.body.redirectParams !== 'undefined') { + redirectUrl += '?' + req.body.redirectParams; + } + + res.redirect (redirectUrl) + +}); + + +app.get('/budget/detail/:id', function (req, res) { + + var detail = templateData.budget[req.params.id]; + + app.set ('layout', false); + + app.set ('views', viewsRootBase); + + + res.render ('partials/backend/budgetDetail.ejs', detail); + + +}); + +app.post ('/budget/bought/:group/:item', function (req, res) { + + var group = req.params.group; + var item = req.params.item; + + templateData.budget[group].items[item].bought = (req.body.bought == 'true' ? true : false); + + console.log (templateData.budget[group]); + + res.end (); + +}); + app.post ('/editor/:page?', function (req, res) { savePost (req, res); var redirectUrl = '/editor/' + (typeof req.params.page === 'undefined' ? 'index' : req.params.page); if (typeof req.body.redirectParams !== 'undefined') { - redirectUrl += '?'+req.body.redirectParams; + redirectUrl += '?' + req.body.redirectParams; } res.redirect (redirectUrl) diff --git a/src/assets/js/program.js b/src/assets/js/program.js index ae1f786..fab3e3f 100644 --- a/src/assets/js/program.js +++ b/src/assets/js/program.js @@ -17,7 +17,7 @@ function renameInputs() { var i = 0; items.each (function () { - var $rows = $ (this).find ('input'); + var $rows = $ (this).find ('input,select'); $rows.each (function () { var name = $ (this).attr ('name'); $ (this).attr ('name', name.replace (/\[[0-9]+\]/g, '[' + i + ']')); diff --git a/src/assets/scss/editor/app.scss b/src/assets/scss/editor/app.scss index 266710e..89de474 100644 --- a/src/assets/scss/editor/app.scss +++ b/src/assets/scss/editor/app.scss @@ -3,7 +3,7 @@ @import "timeline"; @import "gallery"; -.program-template:first-child, .template:first-child { +.item-template:first-child, .program-template:first-child, .template:first-child { .js-remove-program { display: none; } diff --git a/src/views/backend/budget.ejs b/src/views/backend/budget.ejs index c2c7726..c53a8e5 100644 --- a/src/views/backend/budget.ejs +++ b/src/views/backend/budget.ejs @@ -1,185 +1,165 @@

Správa rozpočtu

- - Přidat položky - - - Upravit skupiny - + + Přidat položky + + + Upravit skupiny +
-<%- include('../partials/notification.ejs', {parameter: "newGroup", notifiactionText: "Skupina úspěšně vytvořena."})%> -<%- include('../partials/notification.ejs', {parameter: "newItems", notificationText: "Položky úspěšně vloženy."})%> -<%- include('../partials/notification.ejs', {parameter: "groupSaved", notificationText: "Položky ve skupině úspěšně upraveny."})%> +<%- include('../partials/notification.ejs', {parameter: "newGroup", notifiactionText: "Skupina úspěšně vytvořena."}) %> +<%- include('../partials/notification.ejs', {parameter: "newItems", notificationText: "Položky úspěšně vloženy."}) %> +<%- include('../partials/notification.ejs', {parameter: "groupSaved", notificationText: "Položky ve skupině úspěšně upraveny."}) %>
-
-
-
-

- Rozlučka se svobodou

-
-
+ <% if (budget.length == 0) { %> +
+ Zatím tu nejsou žádná data. + Přidat +
+ <% } else { %> + <% for (var i in budget) { %> + +
+
+

<%= budget[i].name %>

+
+
- - + <% if (budget[i].items.length > 0) { %> +
+ - - - - - + <% for (var j in budget[i].items) { %> + <% var item = budget[i].items[j]; %> + = 4 ? 'hidden' : '') %>> + + + + + <% } %> - - - - - + +
-
- -
-
Položka 11300 Kč
+ > + <%= item.name %><%= item.price %> Kč
-
- -
-
Položka 24500 Kč
- - -
- -
- - Položka 3 - 340 Kč - + <% if (budget[i].items.length > 4) { %> +

+ + Dalších <%= budget[i].items.length - 4 %> položek

+ <% } %> - - + + Detail + - - Detail - + <% } else { %> +
+ Zatím tu nejsou žádná data. + Přidat +
+ <% } %> -
- -
-
-
-
-

- Svatební hostina

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
-
Položka 11300 Kč
-
- -
-
Položka 24500 Kč
-
- -
-
Položka 33100 Kč
-
- -
-
Položka 43400 Kč
-
- -
-
Položka 52000 Kč
- - - Detail - -
- -
-
- - <% if (typeof queryString.ok !== 'undefined' && queryString.ok == "newGroup") { %> -
-
-
-

- Svatební cesta

-
-
- -
- Zatím tu nejsou žádná data. Přidat -
- -
- -
-
+ + <% } %> <% } %> -
-<% include ../partials/backend/modals/addItem.ejs %> -<% include ../partials/backend/modals/addGroup.ejs %> -<% include ../partials/backend/modals/budgetGroup.ejs %> \ No newline at end of file + <% include ../partials/backend/modals/addItem.ejs %> + <% include ../partials/backend/modals/addGroup.ejs %> + <% include ../partials/backend/modals/budgetGroup.ejs %> + + +
diff --git a/src/views/partials/backend/budgetDetail.ejs b/src/views/partials/backend/budgetDetail.ejs new file mode 100644 index 0000000..1ca0d9c --- /dev/null +++ b/src/views/partials/backend/budgetDetail.ejs @@ -0,0 +1,75 @@ + + + + + + + + + + + + <% for (var i in items) { %> + + + + + + + <% } %> + + + + + + + +
KoupenoJménoCena
+ + + + + + + +
+ +
+ Kč +
+
+
+ + + +
+ + Přidat položku +
+ +
+
Limit pro skupinu: 25 000 Kč +
+
+ Zbývá 870 Kč +
+
+
+ + +
+
+ +
+

Aktuální náklady

+

12 500 Kč

+
+ +
+
+
+

Celkové náklady

+

23 500 Kč

+
+
+
\ No newline at end of file diff --git a/src/views/partials/backend/modals/addGroup.ejs b/src/views/partials/backend/modals/addGroup.ejs index 1f9dd6d..dd33399 100644 --- a/src/views/partials/backend/modals/addGroup.ejs +++ b/src/views/partials/backend/modals/addGroup.ejs @@ -7,7 +7,7 @@
-
+