leaflet map - path not working
This commit is contained in:
199
static/suit/js/suit.js
Normal file
199
static/suit/js/suit.js
Normal file
@@ -0,0 +1,199 @@
|
||||
(function ($) {
|
||||
|
||||
// Register callbacks to perform after inline has been added
|
||||
Suit.after_inline = function () {
|
||||
var functions = {};
|
||||
var register = function (fn_name, fn_callback) {
|
||||
functions[fn_name] = fn_callback;
|
||||
};
|
||||
|
||||
var run = function (inline_prefix, row) {
|
||||
for (var fn_name in functions) {
|
||||
functions[fn_name](inline_prefix, row);
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
register: register,
|
||||
run: run
|
||||
};
|
||||
}();
|
||||
|
||||
// Backwards compatiblity
|
||||
SuitAfterInline = Suit.after_inline;
|
||||
|
||||
/**
|
||||
* Fixed submit buttons.
|
||||
*/
|
||||
$.fn.suit_fixed = function () {
|
||||
$(this).each(function () {
|
||||
// extra_offset: 70 (60 Footer height + 10 top offset)
|
||||
var $fixed_item = $(this), pos = $fixed_item.offset(), extra_offset = 70;
|
||||
$(window).bind('scroll.sl resize.sl load.sl', function (e) {
|
||||
var $win = $(this), scroll_top = $win.scrollTop();
|
||||
if ($fixed_item.height() < $win.height() &&
|
||||
scroll_top > (pos.top - 10) &&
|
||||
$fixed_item.height() < $win.height()) {
|
||||
!$fixed_item.hasClass('fixed') && $fixed_item.addClass('fixed');
|
||||
var max_top = Math.min(10, $(document).height() - $fixed_item.height() - scroll_top - extra_offset);
|
||||
$fixed_item.css('top', max_top + 'px');
|
||||
}
|
||||
else if (scroll_top <= (pos.top - 10) &&
|
||||
$fixed_item.hasClass('fixed')) {
|
||||
$fixed_item.removeClass('fixed');
|
||||
}
|
||||
});
|
||||
|
||||
$(window).trigger('scroll.sl');
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Search filters - submit only changed fields
|
||||
*/
|
||||
$.fn.suit_search_filters = function () {
|
||||
$(this).change(function () {
|
||||
var $field = $(this);
|
||||
var $option = $field.find('option:selected');
|
||||
var select_name = $option.data('name');
|
||||
if (select_name) {
|
||||
$field.attr('name', select_name);
|
||||
} else {
|
||||
$field.removeAttr('name');
|
||||
}
|
||||
// Handle additional values for date filters
|
||||
var additional = $option.data('additional');
|
||||
if (additional) {
|
||||
var hidden_id = $field.data('name') + '_add';
|
||||
var $hidden = $('#' + hidden_id);
|
||||
if (!$hidden.length) {
|
||||
$hidden = $('<input/>').attr('type', 'hidden').attr('id', hidden_id);
|
||||
$field.after($hidden);
|
||||
}
|
||||
additional = additional.split('=');
|
||||
$hidden.attr('name', additional[0]).val(additional[1])
|
||||
}
|
||||
});
|
||||
$(this).trigger('change');
|
||||
};
|
||||
|
||||
/**
|
||||
* Linked select - shows link to related item after Select
|
||||
*/
|
||||
$.fn.suit_linked_select = function () {
|
||||
|
||||
var get_link_name = function ($select) {
|
||||
var text = $select.find('option:selected').text();
|
||||
return text && $select.val() ? text + '' : '';
|
||||
};
|
||||
|
||||
var get_url = function ($add_link, $select) {
|
||||
var value = $select.val();
|
||||
return $add_link.attr('href').split('?')[0] + '../' + value + '/';
|
||||
};
|
||||
|
||||
var add_link = function ($select) {
|
||||
var $add_link = $select.next();
|
||||
if ($add_link.hasClass('add-another')) {
|
||||
var $link = $add_link.next('a');
|
||||
if (!$link.length) {
|
||||
$link = $('<a/>').addClass('linked-select-link');
|
||||
$add_link.after($link).after(' ');
|
||||
}
|
||||
$link.text(get_link_name($select));
|
||||
$link.attr('href', get_url($add_link, $select));
|
||||
}
|
||||
};
|
||||
|
||||
$(this).each(function () {
|
||||
add_link($(this));
|
||||
});
|
||||
|
||||
$(document).on('change', this.selector, function () {
|
||||
add_link($(this));
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Content tabs
|
||||
*/
|
||||
$.fn.suit_form_tabs = function () {
|
||||
|
||||
var $tabs = $(this);
|
||||
var tab_prefix = $tabs.data('tab-prefix');
|
||||
if (!tab_prefix)
|
||||
return;
|
||||
|
||||
var $tab_links = $tabs.find('a');
|
||||
|
||||
function tab_contents($link) {
|
||||
return $('.' + tab_prefix + '-' + $link.attr('href').replace('#', ''));
|
||||
}
|
||||
|
||||
function activate_tabs() {
|
||||
// Init tab by error, by url hash or init first tab
|
||||
if (window.location.hash) {
|
||||
var found_error;
|
||||
$tab_links.each(function () {
|
||||
var $link = $(this);
|
||||
if (tab_contents($link).find('.error').length != 0) {
|
||||
$link.addClass('error');
|
||||
$link.trigger('click');
|
||||
found_error = true;
|
||||
}
|
||||
});
|
||||
!found_error && $($tabs).find('a[href=\\' + window.location.hash + ']').click();
|
||||
} else {
|
||||
$tab_links.first().trigger('click');
|
||||
}
|
||||
}
|
||||
|
||||
$tab_links.click(function () {
|
||||
var $link = $(this);
|
||||
$link.parent().parent().find('.active').removeClass('active');
|
||||
$link.parent().addClass('active');
|
||||
$('.' + tab_prefix).removeClass('show').addClass('hide');
|
||||
tab_contents($link).removeClass('hide').addClass('show')
|
||||
});
|
||||
|
||||
activate_tabs();
|
||||
};
|
||||
|
||||
/**
|
||||
* Avoids double-submit issues in the change_form.
|
||||
*/
|
||||
$.fn.suit_form_debounce = function () {
|
||||
var $form = $(this),
|
||||
$saveButtons = $form.find('.submit-row button'),
|
||||
submitting = false;
|
||||
|
||||
$form.submit(function () {
|
||||
if (submitting) {
|
||||
return false;
|
||||
}
|
||||
|
||||
submitting = true;
|
||||
$saveButtons.addClass('disabled');
|
||||
|
||||
setTimeout(function () {
|
||||
$saveButtons.removeClass('disabled');
|
||||
submitting = false;
|
||||
}, 5000);
|
||||
});
|
||||
};
|
||||
|
||||
$(function () {
|
||||
|
||||
// Fixed submit buttons
|
||||
$('.inner-right-column').suit_fixed();
|
||||
|
||||
// Show link to related item after Select
|
||||
$('.linked-select').suit_linked_select();
|
||||
|
||||
// Handle change list filter null values
|
||||
$('.search-filter').suit_search_filters();
|
||||
|
||||
});
|
||||
|
||||
}(Suit.$));
|
||||
Reference in New Issue
Block a user