Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
164 changes: 159 additions & 5 deletions app/page/schedule/Add/Add.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,168 @@
define([
'page/Page/Page',
'can',
'stache!/app/page/schedule/Add/add.stache'
], function (Page, can, content) {
'stache!/app/page/schedule/Add/add.stache',
'model/Schedule/Schedule',
'model/Menu/Menu',
'validate'
], function (Page, can, content, Schedule, Menu, validate) {
return Page.extend(
{},
{
template : content,

},
{
template : content
init: function (element, options) {
var isLoading = can.compute(true);
var isSaving = can.compute(false);

var day = "";
var month = "";
var year = "";
var leapYear = "";

/**
* Dohvatanje liste menija
*/
var promise = Menu.findAll();

promise.always(
function () {
isLoading(false);
}
);

/**
* Popunjavanje parametara za datum koji ce se proslediti na view
*/
for (i = 1; i < 32; i++) {
day += "<option value='" + i + "'>" + i + "</option>";
}

for (i = 1; i < 13; i++) {
month += "<option value='" + i + "'>" + i + "</option>";
}

for (i = 2001; i < 2018; i++) {
year += "<option value='" + i + "'>" + i + "</option>";
}

this.modelView = new can.Map(
{
errors: null,
isLoading: true,
isSaving: false
}
);

element.html(
this.template({
day: day,
month: month,
year: year,
menus: new Menu.List(promise),
isLoading: isLoading,
isSaving: isSaving
})
);
},

saveChanges: function (form, event) {
var data, errors;

event.preventDefault();

if (this.isSaving()) {
return;
}
this.isSaving(true);

data = validate.collectFormValues(form);

/**
* Custom funkcija za proveru datuma
*/
validate.validators.validDate = function(value, options, key, att) {
var day = parseInt(att['day'], 10);
var month = parseInt(att['month'], 10);
var year = parseInt(att['year'], 10);

/**
* Koliko koji mesec ima dana
*/
var monthLength = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];

// Provera da li je prestupna godina
if(year % 400 == 0 || (year % 100 != 0 && year % 4 == 0))
monthLength[1] = 29;

/**
* Provera da li je validan dan u mesecu
*/
if(!(day > 0 && day <= monthLength[month - 1]))
return "Date is not valid";
};

errors = validate(data, {
day: {
validDate: "1",
presence: true
}
});

console.log("greske/errors: ");
console.log(errors);


if (errors) {
this.setErrors(errors).isSaving(false);
} else {
if(data['day'] < 10)
{
data['day'] = "0" + data['day'];
}
if(data['month'] < 10)
{
data['month'] = "0" + data['month'];
}

var dataToSave = {};
dataToSave.date = data['day'] + '/' + data['month'] + '/' + data['year'];
dataToSave.menu = data["menuId"];

new Schedule(dataToSave).save().then(
function () {
this.isSaving(false);
can.route.attr({route: 'schedule'}, true);
}.bind(this)
);
}
},

setErrors: function (errors) {
this.modelView.attr('errors', errors);

return this;
},

isSaving: function (flag) {
if (typeof flag === 'boolean') {
this.modelView.attr('isSaving', flag);
return this;
}

return this.modelView.attr('isSaving');
},

isLoading: function (flag) {
if (typeof flag === 'boolean') {
this.modelView.attr('isLoading', flag);
return this;
}

return this.modelView.attr('isLoading');
},

'[data-form="add-shedule"] submit': 'saveChanges'
}
);
});
126 changes: 43 additions & 83 deletions app/page/schedule/Add/add.stache
Original file line number Diff line number Diff line change
@@ -1,86 +1,46 @@
<div class="container v-align">
<div class="row">
<h5>Schedule Entry</h5>
</div>
<div class="row">
<label for="date-1" class="col-6">Date: </label>
<div id="date-1" class="date-picker col-6">
<select class="day">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
<option>11</option>
<option>12</option>
<option>13</option>
<option>14</option>
<option>15</option>
<option>16</option>
<option>17</option>
<option>18</option>
<option>19</option>
<option>20</option>
<option>21</option>
<option>22</option>
<option>23</option>
<option>24</option>
<option>25</option>
<option>26</option>
<option>27</option>
<option>28</option>
<option>29</option>
<option>30</option>
<option>31</option>
</select>
<select class="month">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
<option>11</option>
<option>12</option>
</select>
<select class="year">
<option>2001</option>
<option>2002</option>
<option>2003</option>
<option>2004</option>
<option>2005</option>
<option>2006</option>
<option>2007</option>
<option>2008</option>
<option>2009</option>
<option>2010</option>
<option>2011</option>
<option>2013</option>
<option>2014</option>
<option>2015</option>
<option>2016</option>
<option>2017</option>
{{#if isLoading}}
<div class="loader"><i class="fa fa-cutlery"></i></div>
{{else}}
<form data-form="add-shedule">
<div class="row">
<h5>Schedule Entry</h5>
</div>
<div class="row">
<label for="date-1" class="col-6">Date: </label>
<div id="date-1" class="date-picker col-6">
<select class="day" name="day">
{{{day}}}
</select>
<select class="month" name="month">
{{{month}}}
</select>
<select class="year" name="year">
{{{year}}}
</select>
</div>
</div>
{{#if errors.day}}
<div class="row">
<span class="col-6 off-6" style="color:red;">{{errors.day}}</span>
</div>
{{/if}}
<div class="row">
<label for="menu-1" class="col-6">Menu: </label>
<select id="menu-1" name="menuId" class="col-6">
{{#each menus}}
<option value="{{id}}">{{name}}</option>
{{/each}}
</select>
</div>
</div>
<div class="row">
<label for="menu-1" class="col-6">Menu: </label>
<select id="menu-1" class="col-6">
<option>HORS D’ŒUVRES</option>
<option>LE BALTHAZAR</option>
<option>SAUTÉED</option>
</select>
</div>
<div class="row">
<button class="button-primary off-8 col-4"><i class="fa fa-plus"></i> Add Entry</button>
</div>
</div>
{{#if errors.menuId}}
<div class="row">
<span class="col-6 off-6">{{errors.name}}</span>
</div>
{{/if}}
<div class="row">
<button class="button-primary off-8 col-4"><i class="fa {{#if isSaving}}fa-spinner fa-spin{{else}}fa-plus{{/if}}"></i> Add Entry</button>
</div>
</form>
{{/if}}
</div>