/**
* BusinessAdmin: administrative software for small companies
* Copyright (C) 2015 Camil Staps (ViviSoft)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
$(document).ready(function(){
// Use the plugin bootstrapValidator (a form validator) for all forms with class bootstrapValidator
// The input elements should have data attributes containing all necessary information
$('.bootstrapValidator').bootstrapValidator({
feedbackIcons: {
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'
}
});
// Use the plugin form (to ajax-ify forms) for all forms with class ajaxify
$('.ajaxify').each(function(){
var options = jQuery.extend(
{dataType: 'json'},
$(this).data('ajaxify-options')
);
if (options.success != undefined)
options.success = window[options.success];
if (options.error != undefined)
options.error = window[options.error];
if (options.beforeSubmit != undefined)
options.beforeSubmit = window[options.beforeSubmit];
$(this).ajaxForm(options);
});
// Use the plugin X-editable for .editable elements
// Editables are disabled by default
$('.editable').editable().editable('disable');
// Open the editable on double click
$('.editable').dblclick(function(){
if ($(this).hasClass('editable-disabled')) {
$(this).editable('enable').editable('show').editable('activate');
}
// Disable the editable again when it's hidden
}).on('hidden', function(e, reason){
$(this).editable('disable');
}).click(function(e){
e.preventDefault();
});
// Use the bootstrap-select plugin on all selects
$('select').selectpicker();
// Use the MixItUp plugin for sorting tables
$('.mixitup').mixItUp({
animation: {
duration: 200,
effects: 'fade'
},
layout: {
display: 'table-row'
}
});
$('.mixitup .mixitup-sort').click(function(){
var mapping = {
desc: 'asc',
asc: 'desc'
}
$(this).data('sort', $(this).data('sort').replace(/asc|desc/gi, function(m){ return mapping[m]; }));
$(this).closest('.mixitup').mixItUp('sort', $(this).data('sort'));
var sorting = $(this).data('sort').substring($(this).data('sort').indexOf(':') + 1);
$(this).parent().find('.mixitup-sort').removeClass('active sorting_asc sorting_desc').addClass('sorting');
$(this).addClass('active sorting_' + sorting).removeClass('sorting');
});
// Collapse menu
var collapsed = false;
$('#collapse-menu').click(function(e, p){
var animation = 200;
if (typeof p != 'undefined' && p.load)
animation = 0;
if (!collapsed)
$('.nav-title').finish().hide();
$('.sidebar').animate({
width: collapsed ? 250 : 50
}, animation);
$('#page-wrapper').animate({
marginLeft: collapsed ? 250 : 50
}, animation);
if (collapsed)
$('.nav-title').finish().delay(animation).queue(function(){$(this).show()});
$(this).find('i.fa').removeClass('fa-caret-square-o-left fa-caret-square-o-right').addClass('fa-caret-square-o-' + (collapsed ? 'left' : 'right'));
collapsed = !collapsed;
$.ajax({
url: const_url_external + 'ajax/collapse',
method: 'GET',
crossDomain: true,
cache: false,
data: {
setting: collapsed
}
});
return true;
});
});
// Email modal
function sendMail() {
var modal = $('#modal-email');
var modalBody = modal.find('.modal-body');
var sendIcon = modal.find('.modal-footer .btn-send .fa');
var values = modalBody.find('form').serialize();
modalBody.find(':input').prop('disabled', true);
sendIcon.removeClass('fa-envelope').addClass('fa-spin fa-refresh');
$.ajax({
url: const_url_external + 'ajax/email/offer',
method: 'POST',
data: values,
success: function(data) {
modal.modal('hide');
modalBody.html('');
},
error: function(jqxhr, stat, err) {
modalBody.find('.alert').remove();
modalBody.html('
' + stat + ': ' + err + '
' + modalBody.html());
},
complete: function() {
modalBody.find(':input').prop('disabled', false);
sendIcon.addClass('fa-envelope').removeClass('fa-spin fa-refresh');
}
});
}
function offerEmail(offerId) {
var modal = $('#modal-email');
var modalBody = modal.find('.modal-body');
modal.modal('show');
modalBody.html('');
$.ajax({
url: const_url_external + 'ajax/email/offer',
method: 'GET',
data: {
id: offerId
},
success: function(data) {
modalBody.html(data);
},
error: function(jqxhr, stat, err) {
modalBody.html('' + stat + ': ' + err + '
' + jqxhr.responseText + '
');
}
});
}