From 9b4b7e86a69885ec32a95b62ccf8336743912a4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Mon, 10 Dec 2018 23:23:43 +0100 Subject: [PATCH] Upravy v programu a rozpoctu --- index.js | 1 - src/app.js | 79 +++++++++- src/assets/js/deleteButton.js | 33 +++++ src/assets/js/program.js | 82 +++-------- src/assets/scss/editor/app.scss | 6 - src/views/backend/budget.ejs | 97 ++++++++----- src/views/partials/backend/budgetDetail.ejs | 137 ++++++++++-------- .../partials/backend/modals/addGroup.ejs | 18 ++- .../partials/backend/modals/budgetGroup.ejs | 2 +- src/views/partials/program.ejs | 8 +- 10 files changed, 285 insertions(+), 178 deletions(-) diff --git a/index.js b/index.js index 0a46646..f8af65f 100644 --- a/index.js +++ b/index.js @@ -29,4 +29,3 @@ function requireAll(r) { } requireAll (require.context ('./src/assets/js', true, /\.js$/)); - diff --git a/src/app.js b/src/app.js index 4383a21..c8659ce 100644 --- a/src/app.js +++ b/src/app.js @@ -86,6 +86,7 @@ var templateData = { budget: [ { name: "Rozlucka se svobodou", + limit: 20000, items: [ { name: "Polozka 1", @@ -123,6 +124,21 @@ function renderTemplate(req, res) { var urlSegment = url.replace (/[^a-z0-9_]/, ''); var viewsRoot = app.get ('views'); + for (var budget in templateData.budget) { + console.log(typeof templateData.budget[budget]); + + if (typeof templateData.budget[budget] == 'undefined') { + templateData.budget.splice (budget, 1); + continue; + } + + for (var item in templateData.budget[budget].items) { + if (typeof templateData.budget[budget].items[item] == 'undefined') { + templateData.budget[budget].items.splice (item, 1); + } + } + } + templateData.queryString = req.query; templateData.page = urlSegment; @@ -188,15 +204,18 @@ app.post ('/editor/album', function (req, res) { app.post ('/budget/groups', function (req, res) { var groups = req.body.group; + var limits = req.body.limit; for (var i in groups) { if (typeof templateData.budget[i] == 'undefined') { templateData.budget[i] = { name: groups[i], + limit: limits[i], items: [] } } else { templateData.budget[i].name = groups[i]; + templateData.budget[i].limit = limits[i]; } } @@ -211,7 +230,7 @@ app.post ('/budget/groups', function (req, res) { }); app.post ('/budget/add_item', function (req, res) { - + console.log (req.body); var items = req.body.name.length; var newGroupsMap = {}; @@ -225,7 +244,7 @@ app.post ('/budget/add_item', function (req, res) { var newGroupName = req.body.group_name[i]; if (typeof newGroupsMap[newGroupName] == 'undefined') { - templateData.budget.push ({name: newGroupName, items: []}); + templateData.budget.push ({name: newGroupName, limit: 10000, items: []}); newGroupsMap[newGroupName] = templateData.budget.length; @@ -253,19 +272,49 @@ app.post ('/budget/add_item', function (req, res) { }); +app.post ('/budget/add_item_in_group', function (req, res) { + console.log (req.body); + var items = req.body.name.length; -app.get('/budget/detail/:id', function (req, res) { + var group = req.body.group; + + templateData.budget[group].limit = req.body.limit; + + templateData.budget[group].items = []; + for (var i = 0; i < items; i++) { + var itemName = req.body.name[i]; + var price = req.body.price[i]; + var bought = typeof req.body["bought_" + i] == 'undefined' ? false : true; + + templateData.budget[group].items.push ({ + name: itemName, + price: price, + bought: bought + }); + + } + + 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]; + detail.id = 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) { @@ -281,6 +330,26 @@ app.post ('/budget/bought/:group/:item', function (req, res) { }); +app.get ('/budget/group/:group/delete', function (req, res) { + + var group = req.params.group; + + delete templateData.budget[group]; + + res.end (); + +}); + +app.get ('/budget/group/:group/:item/delete', function (req, res) { + + var group = req.params.group; + var item = req.params.item; + + delete templateData.budget[group].items[item]; + res.end (); + +}); + app.post ('/editor/:page?', function (req, res) { savePost (req, res); diff --git a/src/assets/js/deleteButton.js b/src/assets/js/deleteButton.js index 5579572..160fa52 100644 --- a/src/assets/js/deleteButton.js +++ b/src/assets/js/deleteButton.js @@ -21,4 +21,37 @@ $ (document).on ('click', '.js-delete-button', function () { var target = $ (this).data ('target'); $ (this).closest (target).remove (); + + var url = $ (this).data ('href'); + if (typeof url != 'undefined') { + $.get (url); + } + +}); + +$ (document).ready (function () { + + + setInterval (function () { + $ ('.template-container').each (function () { + var $items = $ (this).find ('.template-container__item:not(.existing)'); + + + if ($items.length > 1) { + $items.find ('.js-delete-button').show (); + } else { + $items.find ('.js-delete-button').hide (); + } + + $items = $ (this).find ('.template-container__item.existing'); + + if ($items.length > 1) { + $items.find ('.js-delete-button').show (); + } else { + $items.find ('.js-delete-button').hide (); + } + + }); + }, 500); + }); \ No newline at end of file diff --git a/src/assets/js/program.js b/src/assets/js/program.js index fab3e3f..0c1ef05 100644 --- a/src/assets/js/program.js +++ b/src/assets/js/program.js @@ -1,9 +1,17 @@ $ (document).on ('click', '.js-add-program', function () { var $template= $($(this).data('template')); - $template.clone().appendTo($template.parent()); + var $clone = $template.clone(); - renameInputs(); + $clone.find('input[type=text]').val(""); + $clone.find('input[type=number]').val(""); + $clone.find('input[type=checkbox]').attr("checked", false); + $clone.removeClass('existing'); + + + $clone.appendTo($template.parent()); + + renameInputs($template.parent()); $ ('.select-time').datetimepicker ({ format: 'LT', @@ -12,80 +20,24 @@ $ (document).on ('click', '.js-add-program', function () { }); }); -function renameInputs() { - var items = $ ('.template-container__item'); +function renameInputs($container) { + var items = $container.find ('.template-container__item'); var i = 0; items.each (function () { var $rows = $ (this).find ('input,select'); $rows.each (function () { - var name = $ (this).attr ('name'); - $ (this).attr ('name', name.replace (/\[[0-9]+\]/g, '[' + i + ']')); + + $ (this).attr ('name', $ (this).attr ('name').replace (/\[[0-9]+\]/g, '[' + i + ']')); + $ (this).attr ('name', $ (this).attr ('name').replace (/_[0-9]+/g, '_' + i)); + + // console.log($ (this).attr ('name')); }); i++; }); } -$ (document).on ('click', '.js-sort-events', function () { - var $templateContainer = $ ($ (this).data ('template-container')); - var $templates = $ ($ (this).data ('template')); - - sortEvents ($templateContainer, $templates); - - $ (this).fadeOut (); -}); - -function sortEvents($container, $templates) { - - var elements = $templates.get (); - - $container.children().remove(); - - elements.sort (function (a, b) { - // console.log (a); - - var timeA = $ (a).find ('.select-time').val (); - var timeB = $ (b).find ('.select-time').val (); - - return timeA > timeB ? 1 : -1; - }); - - $container.append (elements); - - renameInputs (); -} - -function checkEvents($container, $templates) { - var lastTime = null; - var orderCorrect = true; - $templates.each (function () { - var time = $ (this).find ('.select-time').val (); - - if (time < lastTime) { - // console.log ($(this).find('.select-time').attr('name')+": "+time + " < " + lastTime); - orderCorrect = false; - } - lastTime = time; - }); - - if (!orderCorrect) { - $ ('.js-sort-events').fadeIn (); - } else { - $ ('.js-sort-events').fadeOut (); - } -} - -$ (document).ready (function () { - - setInterval (function () { - var $templateContainer = $ ('.template-container'); - var $templates = $ ('.program-template'); - - checkEvents ($templateContainer, $templates); - }, 1000); - -}); $ (document).on ('click', '.js-remove-program', function () { diff --git a/src/assets/scss/editor/app.scss b/src/assets/scss/editor/app.scss index 89de474..a19e30e 100644 --- a/src/assets/scss/editor/app.scss +++ b/src/assets/scss/editor/app.scss @@ -3,12 +3,6 @@ @import "timeline"; @import "gallery"; -.item-template:first-child, .program-template:first-child, .template:first-child { - .js-remove-program { - display: none; - } -} - .sort-handle:hover { cursor: move; } \ No newline at end of file diff --git a/src/views/backend/budget.ejs b/src/views/backend/budget.ejs index c53a8e5..0b238e0 100644 --- a/src/views/backend/budget.ejs +++ b/src/views/backend/budget.ejs @@ -22,6 +22,7 @@ Přidat <% } else { %> + <% console.log(budget) %> <% for (var i in budget) { %>
@@ -29,12 +30,13 @@

<%= budget[i].name %>

- + <% if (budget[i].items.length > 0) { %> <% for (var j in budget[i].items) { %> + <% var item = budget[i].items[j]; %> = 4 ? 'hidden' : '') %>> - - - - - -
@@ -66,7 +68,7 @@
- - Přidat položku -
- -
-
Limit pro skupinu: 25 000 Kč -
-
- Zbývá 870 Kč +
+
+
+
Limit pro skupinu +
+ +
+ Kč +
-
-
- - -
-
- -
-

Aktuální náklady

-

12 500 Kč

-
-
-
-

Celkové náklady

-

23 500 Kč

+ +
+
+
+
+
+
+
+ +
+
+ +

Aktuální náklady

+

+
+ +
+
+
+

Celkové náklady

+

+
\ 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 dd33399..c88cc86 100644 --- a/src/views/partials/backend/modals/addGroup.ejs +++ b/src/views/partials/backend/modals/addGroup.ejs @@ -17,15 +17,31 @@ Název skupiny + Limit <% for (var i in budget) { %> - + + + + +
+ +
+ Kč +
+
+ + + + + + <% } %> diff --git a/src/views/partials/backend/modals/budgetGroup.ejs b/src/views/partials/backend/modals/budgetGroup.ejs index a9a79d1..377539d 100644 --- a/src/views/partials/backend/modals/budgetGroup.ejs +++ b/src/views/partials/backend/modals/budgetGroup.ejs @@ -8,7 +8,7 @@
-
+ diff --git a/src/views/partials/program.ejs b/src/views/partials/program.ejs index ebb7b30..d5de415 100644 --- a/src/views/partials/program.ejs +++ b/src/views/partials/program.ejs @@ -7,10 +7,10 @@ - + <% for(var i in program) { %> - + @@ -26,7 +26,7 @@ - + @@ -37,8 +37,6 @@ Přidat akci - -