358 lines
12 KiB
JavaScript
Vendored
358 lines
12 KiB
JavaScript
Vendored
$(document).ready(function () {
|
|
// Live Search
|
|
$.fn.liveSearch = function (option) {
|
|
return this.each(function () {
|
|
this.timer = null;
|
|
this.items = new Array();
|
|
|
|
$.extend(this, option);
|
|
|
|
$(this).attr('autocomplete', 'off');
|
|
|
|
// Blur
|
|
$(this).on('blur', function () {
|
|
setTimeout(function (object) {
|
|
object.hide();
|
|
}, 200, this);
|
|
});
|
|
|
|
// Keydown
|
|
$(this).on('input', function (event) {
|
|
this.request();
|
|
});
|
|
|
|
// Show
|
|
this.show = function () {
|
|
var pos = $('#live-search').position();
|
|
|
|
$(this).parent().parent().siblings('ul.dropdown-menu').css({
|
|
top : pos.top + $('#live-search').height(),
|
|
width: $('#live-search').width(),
|
|
left: pos.left
|
|
});
|
|
|
|
$(this).parent().parent().siblings('ul.dropdown-menu').show();
|
|
};
|
|
|
|
// Hide
|
|
this.hide = function () {
|
|
$(this).parent().parent().siblings('ul.dropdown-menu').hide();
|
|
};
|
|
|
|
// Request
|
|
this.request = function () {
|
|
clearTimeout(this.timer);
|
|
|
|
this.timer = setTimeout(function (object) {
|
|
object.source($(object).val(), $.proxy(object.response, object));
|
|
}, 200, this);
|
|
};
|
|
|
|
// Response
|
|
this.response = function (json) {
|
|
html = '';
|
|
|
|
if (json.length) {
|
|
for (i = 0; i < json.length; i++) {
|
|
this.items[json[i]['id']] = json[i];
|
|
}
|
|
|
|
var count = json.length;
|
|
|
|
for (i = 0; i < count; i++) {
|
|
html += '<li data-value="' + json[i]['type'] + '-' + json[i]['id'] + '">';
|
|
html += ' <a href="' + json[i]['href'] + '">';
|
|
html += ' <div class="live-search">';
|
|
html += ' <div class="row">';
|
|
html += ' <div class="name" style="color: ' + json[i]['color'] + ';">' + json[i]['name'] + '</div>';
|
|
html += ' <span class="type">' + json[i]['type'] + '</span>';
|
|
html += ' </div>';
|
|
html += ' </div>';
|
|
html += ' </a>';
|
|
html += '</li>';
|
|
}
|
|
}
|
|
|
|
if (html) {
|
|
this.show();
|
|
} else {
|
|
this.hide();
|
|
}
|
|
|
|
$(this).parent().parent().siblings('ul.dropdown-menu').html(html);
|
|
};
|
|
|
|
$(this).parent().parent().after('<ul class="dropdown-menu" id="result-search" style="padding:2px 2px 2px 2px;"></ul>');
|
|
$(this).parent().parent().siblings('ul.dropdown-menu').delegate('a', 'click', $.proxy(this.click, this));
|
|
});
|
|
};
|
|
|
|
$('#live-search input[name=\'live-search\']').liveSearch({
|
|
'source': function (request, response) {
|
|
if (request != '' && request.length > 2) {
|
|
$.ajax({
|
|
url : url_search,
|
|
type : 'GET',
|
|
dataType: 'JSON',
|
|
data : 'keyword=' + $(this).val(),
|
|
success : function (json) {
|
|
response($.map(json, function (item) {
|
|
return {
|
|
id : item.id,
|
|
name : item.name,
|
|
type : item.type,
|
|
color: item.color,
|
|
href : item.href
|
|
}
|
|
}));
|
|
}
|
|
});
|
|
} else {
|
|
$('#live-search > .dropdown-menu').hide();
|
|
}
|
|
}
|
|
});
|
|
|
|
last_radio = '';
|
|
|
|
$('input:radio').each(function () {
|
|
if ($(this).parent().parent().hasClass('radio-inline')) {
|
|
input_name = $(this).attr("name");
|
|
input_value = $(this).attr("value");
|
|
input_text = $(this).text();
|
|
input_checked = $(this).is(':checked');
|
|
|
|
enable_class = 'btn-default';
|
|
disable_class = 'btn-default';
|
|
|
|
if (last_radio == input_name) {
|
|
return;
|
|
}
|
|
|
|
last_radio = input_name;
|
|
|
|
if ($(':radio[name="' + input_name + '"]').length != 2) {
|
|
return;
|
|
}
|
|
|
|
if ((input_value != 0) && (input_value != 1)) {
|
|
return;
|
|
}
|
|
|
|
if ((input_text.localeCompare(text_yes) == 1) && (input_text.localeCompare(text_no) == 1)) {
|
|
return;
|
|
}
|
|
|
|
if (input_value == 1 && input_checked == true) {
|
|
enable_class = 'btn-success active';
|
|
} else {
|
|
disable_class = 'btn-danger active';
|
|
}
|
|
|
|
$('#' + input_name + '_1').removeClass('btn-default').addClass(enable_class);
|
|
$('#' + input_name + '_0').removeClass('btn-default').addClass(disable_class);
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '.btn-group label:not(.active)', function (e) {
|
|
disable_label = $(this);
|
|
disable_input = $('#' + disable_label.attr('id') + ' :input');
|
|
|
|
if (disable_input.attr('type') != 'radio') {
|
|
return;
|
|
}
|
|
|
|
if (!disable_input.is(':checked')) {
|
|
enable_input = $('input[name="' + disable_input.attr('name') + '"]:checked');
|
|
enable_label = enable_input.parent();
|
|
|
|
enable_label.removeClass('btn-success active');
|
|
enable_label.removeClass('btn-danger active');
|
|
|
|
enable_input.removeAttr('checked');
|
|
enable_label.addClass('btn btn-default');
|
|
|
|
disable_label.removeClass('btn-default');
|
|
|
|
if (disable_input.val() == 0) {
|
|
disable_label.addClass('btn-danger active');
|
|
} else {
|
|
disable_label.addClass('btn-success active');
|
|
}
|
|
|
|
disable_input.attr('checked', 'checked');
|
|
|
|
enable_input.trigger('change');
|
|
disable_input.trigger('change');
|
|
}
|
|
});
|
|
|
|
if (document.getElementById('recurring_frequency')) {
|
|
$('.input-group-recurring #recurring_frequency').select2();
|
|
$('.input-group-recurring #recurring_frequency').trigger('change');
|
|
}
|
|
|
|
$('.form-loading-button').submit(function( event ) {
|
|
$('.button-submit').button('loading');
|
|
|
|
return true;
|
|
});
|
|
|
|
if (document.getElementsByClassName('input-group-invoice-text').length) {
|
|
$('.input-group-invoice-text select').select2();
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '.popup', function(e) {
|
|
e.preventDefault();
|
|
|
|
$('#modal-popup').remove();
|
|
|
|
var element = this;
|
|
|
|
$.ajax({
|
|
url: $(element).attr('href'),
|
|
type: 'get',
|
|
dataType: 'html',
|
|
success: function(data) {
|
|
html = '<div class="modal" id="modal-popup">';
|
|
html += ' <div class="modal-dialog">';
|
|
html += ' <div class="modal-content">';
|
|
html += ' <div class="modal-header">';
|
|
html += ' <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>';
|
|
html += ' <h4 class="modal-title">' + $(element).text() + '</h4>';
|
|
html += ' </div>';
|
|
html += ' <div class="modal-body">' + data + '</div>';
|
|
html += ' </div';
|
|
html += ' </div>';
|
|
html += '</div>';
|
|
|
|
$('body').append(html);
|
|
|
|
$('#modal-popup').modal('show');
|
|
}
|
|
});
|
|
});
|
|
|
|
$(document).on('change', '.input-group-recurring #recurring_frequency', function (e) {
|
|
var value = $(this).val();
|
|
|
|
var recurring_frequency = $('#recurring_frequency').parent().parent();
|
|
var recurring_interval = $('#recurring_interval').parent();
|
|
var recurring_custom_frequency = $('#recurring_custom_frequency').parent();
|
|
var recurring_count = $('#recurring_count').parent();
|
|
|
|
if (value == 'custom') {
|
|
recurring_frequency.removeClass('col-md-12').removeClass('col-md-12').addClass('col-md-4');
|
|
|
|
recurring_interval.removeClass('hidden');
|
|
recurring_custom_frequency.removeClass('hidden');
|
|
recurring_count.removeClass('hidden');
|
|
|
|
$('#recurring_custom_frequency').select2();
|
|
} else if (value == 'no' || value == '') {
|
|
recurring_frequency.removeClass('col-md-10').removeClass('col-md-4').addClass('col-md-12');
|
|
|
|
recurring_interval.addClass('hidden');
|
|
recurring_custom_frequency.addClass('hidden');
|
|
recurring_count.addClass('hidden');
|
|
} else {
|
|
recurring_frequency.removeClass('col-md-12').removeClass('col-md-4').addClass('col-md-10');
|
|
|
|
recurring_interval.addClass('hidden');
|
|
recurring_custom_frequency.addClass('hidden');
|
|
recurring_count.removeClass('hidden');
|
|
}
|
|
});
|
|
|
|
$(document).on('change', '.input-group-invoice-text select', function () {
|
|
var invoice_text_custom = $(this).parent().parent().parent().find('input');
|
|
|
|
if ($(this).val() == 'custom') {
|
|
$(this).parent().parent().removeClass('col-md-12').addClass('col-md-6');
|
|
|
|
invoice_text_custom.parent().removeClass('hidden');
|
|
|
|
$(this).select2();
|
|
} else {
|
|
$(this).parent().parent().removeClass('col-md-6').addClass('col-md-12');
|
|
|
|
invoice_text_custom.parent().addClass('hidden');
|
|
}
|
|
});
|
|
|
|
function confirmDelete(form_id, title, message, button_cancel, button_delete) {
|
|
$('#confirm-modal').remove();
|
|
|
|
var html = '';
|
|
|
|
html += '<div class="modal fade" id="confirm-modal" tabindex="-1" role="dialog" aria-labelledby="confirmModalLabel" aria-hidden="true">';
|
|
html += ' <div class="modal-dialog">';
|
|
html += ' <div class="modal-content">';
|
|
html += ' <div class="modal-header">';
|
|
html += ' <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>';
|
|
html += ' <h4 class="modal-title" id="confirmModalLabel">' + title + '</h4>';
|
|
html += ' </div>';
|
|
html += ' <div class="modal-body">';
|
|
html += ' <p>' + message + '</p>';
|
|
html += ' <p></p>';
|
|
html += ' </div>';
|
|
html += ' <div class="modal-footer">';
|
|
html += ' <div class="pull-left">';
|
|
html += ' <button type="button" class="btn btn-danger" onclick="$(\'' + form_id + '\').submit();">' + button_delete + '</button>';
|
|
html += ' <button type="button" class="btn btn-default" data-dismiss="modal">' + button_cancel + '</button>';
|
|
html += ' </div>';
|
|
html += ' </div>';
|
|
html += ' </div>';
|
|
html += ' </div>';
|
|
html += '</div>';
|
|
|
|
$('body').append(html);
|
|
|
|
$('#confirm-modal').modal('show');
|
|
}
|
|
|
|
function convertDateFormat(date, split_character) {
|
|
var result = [];
|
|
var formats = {
|
|
'd': 'DD',
|
|
'M': 'MMM',
|
|
'Y': 'YYYY',
|
|
'F': 'MMMM',
|
|
'm': 'MM'
|
|
};
|
|
|
|
dates = date.split(split_character);
|
|
|
|
dates.forEach(function(value) {
|
|
result.push(formats[value]);
|
|
});
|
|
|
|
return result.join(split_character);
|
|
}
|
|
|
|
function itemTableResize() {
|
|
colspan = $('#items.table.table-bordered thead tr th').length - 1;
|
|
|
|
$('#items.table.table-bordered tbody #addItem .text-right').attr('colspan', colspan);
|
|
$('#items.table.table-bordered tbody #tr-subtotal .text-right:first').attr('colspan', colspan);
|
|
$('#items.table.table-bordered tbody #tr-discount .text-right:first').attr('colspan', colspan);
|
|
$('#items.table.table-bordered tbody #tr-tax .text-right:first').attr('colspan', colspan);
|
|
$('#items.table.table-bordered tbody #tr-total .text-right:first').attr('colspan', colspan);
|
|
}
|
|
|
|
function notificationHide(path, id, token) {
|
|
$.ajax({
|
|
url: app_url + '/common/notifications/disable',
|
|
type: 'POST',
|
|
dataType: 'JSON',
|
|
data: {path: path, id: id},
|
|
headers: { 'X-CSRF-TOKEN': token },
|
|
success: function(json) {
|
|
if (json['success']) {
|
|
$('#notification-' + id).remove();
|
|
}
|
|
}
|
|
});
|
|
}
|