1
|
$(function() {
|
2
|
// init invoices
|
3
|
altair_invoices.init();
|
4
|
});
|
5
|
|
6
|
// variables
|
7
|
var $invoice_card = $('#invoice'),
|
8
|
$invoice_preview = $('#invoice_preview'),
|
9
|
$invoice_form = $('#invoice_form'),
|
10
|
$invoices_list_main = $('#invoices_list'),
|
11
|
invoice_list_class = '.invoices_list', // main/sidebar list
|
12
|
$invoice_add_btn = $('#invoice_add');
|
13
|
|
14
|
altair_invoices = {
|
15
|
init: function() {
|
16
|
// copy list to sidebar
|
17
|
altair_invoices.copy_list_sidebar();
|
18
|
// add new invoice
|
19
|
altair_invoices.add_new();
|
20
|
// open invoice
|
21
|
altair_invoices.open_invoice();
|
22
|
// print invoice btn
|
23
|
altair_invoices.print_invoice();
|
24
|
// search invoices
|
25
|
altair_invoices.search_invoices();
|
26
|
},
|
27
|
add_new: function() {
|
28
|
if($invoice_add_btn) {
|
29
|
|
30
|
var insert_form = function() {
|
31
|
|
32
|
var $invoice_form_template = $('#invoice_form_template'),
|
33
|
card_height = $invoice_card.height(),
|
34
|
content_height = $invoice_card.find('.md-card-content').innerHeight(),
|
35
|
invoice_form_template_content = $invoice_form_template.html();
|
36
|
|
37
|
// remove "uk-active" class form invoices list
|
38
|
$(invoice_list_class).find('.md-list-item-active').removeClass('md-list-item-active');
|
39
|
// set height for card-single
|
40
|
$invoice_card.height(card_height);
|
41
|
|
42
|
$invoice_form
|
43
|
.hide()
|
44
|
// add form to card
|
45
|
.html(invoice_form_template_content)
|
46
|
// set height for card content
|
47
|
.find('.md-card-content').innerHeight(content_height);
|
48
|
|
49
|
// append services to invoice form
|
50
|
var append_service = function() {
|
51
|
|
52
|
var $invoice_form_template_services = $('#invoice_form_template_services'),
|
53
|
$invoice_services = $invoice_form.find('#form_invoice_services');
|
54
|
|
55
|
var template = $invoice_form_template_services.html(),
|
56
|
template_compiled = Handlebars.compile(template);
|
57
|
|
58
|
var service_id = (!$invoice_services.children().length) ? 1 : parseInt($invoice_services.children('.uk-grid:last').attr('data-service-number')) + 1,
|
59
|
context = {
|
60
|
"invoice_service_id": service_id
|
61
|
},
|
62
|
theCompiledHtml = template_compiled(context);
|
63
|
|
64
|
$invoice_services.append(theCompiledHtml);
|
65
|
|
66
|
// invoice md inputs
|
67
|
altair_md.inputs();
|
68
|
// invoice textarea autosize
|
69
|
altair_forms.textarea_autosize();
|
70
|
|
71
|
// reinitialize uikit margin
|
72
|
altair_uikit.reinitialize_grid_margin();
|
73
|
|
74
|
};
|
75
|
|
76
|
// append first service to invoice form on init
|
77
|
append_service();
|
78
|
|
79
|
$('#invoice_form_append_service_btn').on('click', function (e) {
|
80
|
e.preventDefault();
|
81
|
// append service to invoice form
|
82
|
append_service();
|
83
|
});
|
84
|
|
85
|
// invoice due-date radio boxes
|
86
|
altair_md.checkbox_radio();
|
87
|
|
88
|
};
|
89
|
|
90
|
// show invoice form on animation complete
|
91
|
var show_form = function() {
|
92
|
$invoice_card.css({
|
93
|
'height': ''
|
94
|
});
|
95
|
$invoice_form.show();
|
96
|
$invoice_preview.html('');
|
97
|
setTimeout(function() {
|
98
|
// reinitialize uikit margin
|
99
|
altair_uikit.reinitialize_grid_margin();
|
100
|
},560); //2 x animation duration
|
101
|
};
|
102
|
|
103
|
// show invoice form on fab click event
|
104
|
$invoice_add_btn.on('click', function (e) {
|
105
|
e.preventDefault();
|
106
|
altair_md.card_show_hide($invoice_card,insert_form,show_form,undefined);
|
107
|
})
|
108
|
|
109
|
}
|
110
|
},
|
111
|
open_invoice: function() {
|
112
|
|
113
|
var show_invoice = function(element) {
|
114
|
var $this = element,
|
115
|
$invoice_template = $('#invoice_template');
|
116
|
|
117
|
var template = $invoice_template.html(),
|
118
|
template_compiled = Handlebars.compile(template);
|
119
|
|
120
|
var invoice_id = parseInt($this.attr('data-invoice-id')),
|
121
|
context = {
|
122
|
invoice: {
|
123
|
id: invoice_id,
|
124
|
invoice_number: Math.floor((Math.random() * 200) + 1) + '/2015',
|
125
|
invoice_date: moment().format('DD.MM.YYYY'),
|
126
|
invoice_due_date: moment().add(14,'days').format('DD.MM.YYYY'),
|
127
|
invoice_from_company: 'Bailey-Lynch',
|
128
|
invoice_from_address_1: '2808 Robson St',
|
129
|
invoice_from_address_2: 'Vancouver, BC V6B 3K9',
|
130
|
invoice_to_company: 'Price Ltd',
|
131
|
invoice_to_address_1: '2894 Bond Street',
|
132
|
invoice_to_address_2: 'Providence, RI 02908',
|
133
|
invoice_total_value: '$3,751.50',
|
134
|
invoice_vat_value: '$862.85',
|
135
|
invoice_services: [
|
136
|
{
|
137
|
service_name: "Website design & development",
|
138
|
service_description: "Lorem ipsum dolor sit amet, consectetur adipisicing elit.",
|
139
|
service_rate: "$25.00",
|
140
|
service_hours: "32",
|
141
|
service_vat: "23%",
|
142
|
service_total: "$984.00"
|
143
|
},
|
144
|
{
|
145
|
service_name: "Search engine optimization",
|
146
|
service_description: "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ab blanditiis cupiditate delectus deserunt.",
|
147
|
service_rate: "$50.00",
|
148
|
service_hours: "20",
|
149
|
service_vat: "23%",
|
150
|
service_total: "$1,230.00"
|
151
|
},
|
152
|
{
|
153
|
service_name: "Consulting service",
|
154
|
service_description: "Lorem ipsum dolor sit amet, consectetur.",
|
155
|
service_rate: "$100.00",
|
156
|
service_hours: "12.5",
|
157
|
service_vat: "23%",
|
158
|
service_total: "$1,537.50"
|
159
|
}
|
160
|
],
|
161
|
invoice_payment_info: 'BANK XYZ<br/>IBAN 123 123 123 123',
|
162
|
invoice_payment_due: '14',
|
163
|
header: (invoice_id == 3 || invoice_id == 7),
|
164
|
footer: (invoice_id == 3 || invoice_id == 7)
|
165
|
}
|
166
|
},
|
167
|
theCompiledHtml = template_compiled(context);
|
168
|
|
169
|
$invoice_preview.html(theCompiledHtml);
|
170
|
$invoice_form.html('');
|
171
|
|
172
|
$window.resize();
|
173
|
|
174
|
setTimeout(function() {
|
175
|
// reinitialize uikit margin
|
176
|
altair_uikit.reinitialize_grid_margin();
|
177
|
},290);
|
178
|
|
179
|
$('html').css({
|
180
|
'overflow': ''
|
181
|
})
|
182
|
|
183
|
// ajax function to get invoices
|
184
|
/*var invoice_id = parseInt($this.attr('data-invoice-id'));
|
185
|
$.ajax({
|
186
|
type: 'post',
|
187
|
url: './data/get_invoice.php',
|
188
|
data: { invoice_id: invoice_id },
|
189
|
dataType: 'json',
|
190
|
success: function(response) {
|
191
|
var theCompiledHtml = template_compiled(response);
|
192
|
$invoice_preview.html(theCompiledHtml);
|
193
|
$invoice_form.html('');
|
194
|
$window.resize();
|
195
|
setTimeout(function() {
|
196
|
// reinitialize uikit margin
|
197
|
altair_uikit.reinitialize_grid_margin();
|
198
|
},290);
|
199
|
}
|
200
|
})*/
|
201
|
|
202
|
};
|
203
|
|
204
|
var before_show = function() {
|
205
|
$('html').css({
|
206
|
'overflow': 'hidden'
|
207
|
})
|
208
|
};
|
209
|
|
210
|
$(invoice_list_class)
|
211
|
.on('click','a', function(e) {
|
212
|
e.preventDefault();
|
213
|
e.stopPropagation();
|
214
|
// toggle card and show invoice
|
215
|
altair_md.card_show_hide($invoice_card,before_show,show_invoice,$(this));
|
216
|
// set active class
|
217
|
$(this).closest('li').siblings('li').removeClass('md-list-item-active').end().addClass('md-list-item-active');
|
218
|
});
|
219
|
|
220
|
if($(invoice_list_class).find('a').length) {
|
221
|
// open first invoice
|
222
|
$(invoice_list_class).find('a').eq(0).click();
|
223
|
} else {
|
224
|
// open form
|
225
|
$invoice_add_btn.trigger('click');
|
226
|
}
|
227
|
|
228
|
},
|
229
|
print_invoice: function() {
|
230
|
$body.on('click','#invoice_print',function(e) {
|
231
|
e.preventDefault();
|
232
|
UIkit.modal.confirm('Do you want to print this invoice?', function () {
|
233
|
// hide sidebar
|
234
|
altair_main_sidebar.hide_sidebar();
|
235
|
// wait for dialog to fully hide
|
236
|
setTimeout(function () {
|
237
|
window.print();
|
238
|
}, 300)
|
239
|
}, {
|
240
|
labels: {
|
241
|
'Ok': 'print'
|
242
|
}
|
243
|
});
|
244
|
})
|
245
|
},
|
246
|
copy_list_sidebar: function() {
|
247
|
// hide secondary sidebar toggle btn for large screens
|
248
|
$sidebar_secondary_toggle.addClass('uk-hidden-large');
|
249
|
|
250
|
var invoices_list_sidebar = $invoices_list_main.clone();
|
251
|
|
252
|
invoices_list_sidebar.attr('id','invoices_list_sidebar');
|
253
|
|
254
|
$sidebar_secondary
|
255
|
.find('.sidebar_secondary_wrapper').html(invoices_list_sidebar)
|
256
|
.end();
|
257
|
|
258
|
},
|
259
|
search_invoices: function() {
|
260
|
$('#invoice-filtering').instaFilta({
|
261
|
targets: '#invoices_list > li:not(.heading_list)'
|
262
|
});
|
263
|
}
|
264
|
};
|