Unverified Commit 6f570e33 authored by Alan Hamlett's avatar Alan Hamlett Committed by GitHub

Merge pull request #1521 from alanhamlett/master

remove need for some inline javascripts
parents c9aeb1ba b94874f2
...@@ -48,3 +48,6 @@ var AdminModelActions = function(actionErrorMessage, actionConfirmations) { ...@@ -48,3 +48,6 @@ var AdminModelActions = function(actionErrorMessage, actionConfirmations) {
}); });
}); });
}; };
if ($('#actions_confirmation').length == 1) {
var modelActions = new AdminModelActions(JSON.parse($('#message-data').text()), JSON.parse($('#actions-confirmation-data').text()));
}
...@@ -2,3 +2,8 @@ ...@@ -2,3 +2,8 @@
$('.modal').on('hidden', function() { $('.modal').on('hidden', function() {
$(this).removeData('modal'); $(this).removeData('modal');
}); });
$(function() {
// Apply flask-admin form styles after the modal is loaded
window.faForm.applyGlobalStyles(document);
});
...@@ -2,3 +2,8 @@ ...@@ -2,3 +2,8 @@
$('body').on('hidden.bs.modal', '.modal', function () { $('body').on('hidden.bs.modal', '.modal', function () {
$(this).removeData('bs.modal').find(".modal-content").empty(); $(this).removeData('bs.modal').find(".modal-content").empty();
}); });
$(function() {
// Apply flask-admin form styles after the modal is loaded
window.faForm.applyGlobalStyles(document);
});
...@@ -2,23 +2,23 @@ var AdminFilters = function(element, filtersElement, filterGroups, activeFilters ...@@ -2,23 +2,23 @@ var AdminFilters = function(element, filtersElement, filterGroups, activeFilters
var $root = $(element); var $root = $(element);
var $container = $('.filters', $root); var $container = $('.filters', $root);
var lastCount = 0; var lastCount = 0;
function getCount(name) { function getCount(name) {
var idx = name.indexOf('_'); var idx = name.indexOf('_');
if (idx === -1) { if (idx === -1) {
return 0; return 0;
} }
return parseInt(name.substr(3, idx - 3), 10); return parseInt(name.substr(3, idx - 3), 10);
} }
function makeName(name) { function makeName(name) {
var result = 'flt' + lastCount + '_' + name; var result = 'flt' + lastCount + '_' + name;
lastCount += 1; lastCount += 1;
return result; return result;
} }
function removeFilter() { function removeFilter() {
$(this).closest('tr').remove(); $(this).closest('tr').remove();
if($('.filters tr').length == 0) { if($('.filters tr').length == 0) {
...@@ -28,23 +28,23 @@ var AdminFilters = function(element, filtersElement, filterGroups, activeFilters ...@@ -28,23 +28,23 @@ var AdminFilters = function(element, filtersElement, filterGroups, activeFilters
} else { } else {
$('button', $root).show(); $('button', $root).show();
} }
return false; return false;
} }
// triggered when the filter operation (equals, not equals, etc) is changed // triggered when the filter operation (equals, not equals, etc) is changed
function changeOperation(subfilters, $el, filter, $select) { function changeOperation(subfilters, $el, filter, $select) {
// get the filter_group subfilter based on the index of the selected option // get the filter_group subfilter based on the index of the selected option
var selectedFilter = subfilters[$select.select2('data').element[0].index]; var selectedFilter = subfilters[$select.select2('data').element[0].index];
var $inputContainer = $el.find('td').last(); var $inputContainer = $el.find('td').last();
// recreate and style the input field (turn into date range or select2 if necessary) // recreate and style the input field (turn into date range or select2 if necessary)
var $field = createFilterInput($inputContainer, null, selectedFilter); var $field = createFilterInput($inputContainer, null, selectedFilter);
styleFilterInput(selectedFilter, $field); styleFilterInput(selectedFilter, $field);
$('button', $root).show(); $('button', $root).show();
} }
// generate HTML for filter input - allows changing filter input type to one with options or tags // generate HTML for filter input - allows changing filter input type to one with options or tags
function createFilterInput(inputContainer, filterValue, filter) { function createFilterInput(inputContainer, filterValue, filter) {
if (filter.type == "select2-tags") { if (filter.type == "select2-tags") {
...@@ -52,7 +52,7 @@ var AdminFilters = function(element, filtersElement, filterGroups, activeFilters ...@@ -52,7 +52,7 @@ var AdminFilters = function(element, filtersElement, filterGroups, activeFilters
$field.val(filterValue); $field.val(filterValue);
} else if (filter.options) { } else if (filter.options) {
var $field = $('<select class="filter-val" />').attr('name', makeName(filter.arg)); var $field = $('<select class="filter-val" />').attr('name', makeName(filter.arg));
$(filter.options).each(function() { $(filter.options).each(function() {
// for active filter inputs with options, add "selected" if there is a matching active filter // for active filter inputs with options, add "selected" if there is a matching active filter
if (filterValue && (filterValue == this[0])) { if (filterValue && (filterValue == this[0])) {
...@@ -68,10 +68,10 @@ var AdminFilters = function(element, filtersElement, filterGroups, activeFilters ...@@ -68,10 +68,10 @@ var AdminFilters = function(element, filtersElement, filterGroups, activeFilters
$field.val(filterValue); $field.val(filterValue);
} }
inputContainer.replaceWith($('<td/>').append($field)); inputContainer.replaceWith($('<td/>').append($field));
return $field; return $field;
} }
// add styling to input field, accommodates filters that change the input field's HTML // add styling to input field, accommodates filters that change the input field's HTML
function styleFilterInput(filter, field) { function styleFilterInput(filter, field) {
if (filter.type) { if (filter.type) {
...@@ -90,19 +90,19 @@ var AdminFilters = function(element, filtersElement, filterGroups, activeFilters ...@@ -90,19 +90,19 @@ var AdminFilters = function(element, filtersElement, filterGroups, activeFilters
// save tag options as json on data attribute // save tag options as json on data attribute
field.attr('data-tags', JSON.stringify(options)); field.attr('data-tags', JSON.stringify(options));
} }
} }
faForm.applyStyle(field, filter.type); faForm.applyStyle(field, filter.type);
} else if (filter.options) { } else if (filter.options) {
filter.type = "select2"; filter.type = "select2";
faForm.applyStyle(field, filter.type); faForm.applyStyle(field, filter.type);
} }
return field; return field;
} }
function addFilter(name, subfilters, selectedIndex, filterValue) { function addFilter(name, subfilters, selectedIndex, filterValue) {
var $el = $('<tr class="form-horizontal" />').appendTo($container); var $el = $('<tr class="form-horizontal" />').appendTo($container);
// Filter list // Filter list
$el.append( $el.append(
$('<td/>').append( $('<td/>').append(
...@@ -113,10 +113,10 @@ var AdminFilters = function(element, filtersElement, filterGroups, activeFilters ...@@ -113,10 +113,10 @@ var AdminFilters = function(element, filtersElement, filterGroups, activeFilters
.click(removeFilter) .click(removeFilter)
) )
); );
// Filter operation <select> (equal, not equal, etc) // Filter operation <select> (equal, not equal, etc)
var $select = $('<select class="filter-op" />'); var $select = $('<select class="filter-op" />');
// if one of the subfilters are selected, use that subfilter to create the input field // if one of the subfilters are selected, use that subfilter to create the input field
var filterSelection = 0; var filterSelection = 0;
$.each(subfilters, function( subfilterIndex, subfilter ) { $.each(subfilters, function( subfilterIndex, subfilter ) {
...@@ -127,55 +127,69 @@ var AdminFilters = function(element, filtersElement, filterGroups, activeFilters ...@@ -127,55 +127,69 @@ var AdminFilters = function(element, filtersElement, filterGroups, activeFilters
$select.append($('<option/>').attr('value', subfilter.arg).text(subfilter.operation)); $select.append($('<option/>').attr('value', subfilter.arg).text(subfilter.operation));
} }
}); });
$el.append( $el.append(
$('<td/>').append($select) $('<td/>').append($select)
); );
// select2 for filter-op (equal, not equal, etc) // select2 for filter-op (equal, not equal, etc)
$select.select2({width: 'resolve'}).on("change", function(e) { $select.select2({width: 'resolve'}).on("change", function(e) {
changeOperation(subfilters, $el, filter, $select); changeOperation(subfilters, $el, filter, $select);
}); });
// get filter option from filter_group, only for new filter creation // get filter option from filter_group, only for new filter creation
var filter = subfilters[filterSelection]; var filter = subfilters[filterSelection];
var $inputContainer = $('<td/>').appendTo($el); var $inputContainer = $('<td/>').appendTo($el);
var $newFilterField = createFilterInput($inputContainer, filterValue, filter).focus(); var $newFilterField = createFilterInput($inputContainer, filterValue, filter).focus();
var $styledFilterField = styleFilterInput(filter, $newFilterField); var $styledFilterField = styleFilterInput(filter, $newFilterField);
return $styledFilterField; return $styledFilterField;
} }
// Add Filter Button, new filter // Add Filter Button, new filter
$('a.filter', filtersElement).click(function() { $('a.filter', filtersElement).click(function() {
var name = ($(this).text().trim !== undefined ? $(this).text().trim() : $(this).text().replace(/^\s+|\s+$/g,'')); var name = ($(this).text().trim !== undefined ? $(this).text().trim() : $(this).text().replace(/^\s+|\s+$/g,''));
addFilter(name, filterGroups[name], false, null); addFilter(name, filterGroups[name], false, null);
$('button', $root).show(); $('button', $root).show();
}); });
// on page load - add active filters // on page load - add active filters
$.each(activeFilters, function( activeIndex, activeFilter ) { $.each(activeFilters, function( activeIndex, activeFilter ) {
var idx = activeFilter[0], var idx = activeFilter[0],
name = activeFilter[1], name = activeFilter[1],
filterValue = activeFilter[2]; filterValue = activeFilter[2];
var $activeField = addFilter(name, filterGroups[name], idx, filterValue); var $activeField = addFilter(name, filterGroups[name], idx, filterValue);
}); });
// show "Apply Filter" button when filter input is changed // show "Apply Filter" button when filter input is changed
$('.filter-val', $root).on('input change', function() { $('.filter-val', $root).on('input change', function() {
$('button', $root).show(); $('button', $root).show();
}); });
$('.remove-filter', $root).click(removeFilter); $('.remove-filter', $root).click(removeFilter);
$('.filter-val', $root).not('.select2-container').each(function() { $('.filter-val', $root).not('.select2-container').each(function() {
var count = getCount($(this).attr('name')); var count = getCount($(this).attr('name'));
if (count > lastCount) if (count > lastCount)
lastCount = count; lastCount = count;
}); });
lastCount += 1; lastCount += 1;
}; };
(function($) {
$('[data-role=tooltip]').tooltip({
html: true,
placement: 'bottom'
});
if ($('#filter-groups-data').length == 1) {
var filter = new AdminFilters(
'#filter_form', '.field-filters',
JSON.parse($('#filter-groups-data').text()),
JSON.parse($('#active-filters-data').text())
);
}
})(jQuery);
...@@ -115,3 +115,7 @@ var RedisCli = function(postUrl) { ...@@ -115,3 +115,7 @@ var RedisCli = function(postUrl) {
sendCommand('ping'); sendCommand('ping');
}; };
$(function() {
var redisCli = new RedisCli(JSON.parse($('#execute-view-data').text()));
});
...@@ -27,9 +27,8 @@ ...@@ -27,9 +27,8 @@
{% macro script(message, actions, actions_confirmation) %} {% macro script(message, actions, actions_confirmation) %}
{% if actions %} {% if actions %}
<script src="{{ admin_static.url(filename='admin/js/actions.js', v='1.0.0') }}"></script> <div id="actions-confirmation-data" style="display:none;">{{ actions_confirmation|tojson|safe }}</div>
<script language="javascript"> <div id="message-data" style="display:none;">{{ message|tojson|safe }}</div>
var modelActions = new AdminModelActions({{ message|tojson|safe }}, {{ actions_confirmation|tojson|safe }}); <script src="{{ admin_static.url(filename='admin/js/actions.js', v='1.0.0') }}"></script>
</script>
{% endif %} {% endif %}
{% endmacro %} {% endmacro %}
...@@ -179,26 +179,16 @@ ...@@ -179,26 +179,16 @@
{% block tail %} {% block tail %}
{{ super() }} {{ super() }}
{{ lib.form_js() }}
{% if filter_groups %}
<div id="filter-groups-data" style="display:none;">{{ filter_groups|tojson|safe }}</div>
<div id="active-filters-data" style="display:none;">{{ active_filters|tojson|safe }}</div>
{% endif %}
<script src="{{ admin_static.url(filename='admin/js/filters.js', v='1.0.0') }}"></script> <script src="{{ admin_static.url(filename='admin/js/filters.js', v='1.0.0') }}"></script>
{{ lib.form_js() }}
{{ actionlib.script(_gettext('Please select at least one record.'), {{ actionlib.script(_gettext('Please select at least one record.'),
actions, actions,
actions_confirmation) }} actions_confirmation) }}
<script language="javascript">
(function($) {
$('[data-role=tooltip]').tooltip({
html: true,
placement: 'bottom'
});
{% if filter_groups %}
var filter = new AdminFilters(
'#filter_form', '.field-filters',
{{ filter_groups|tojson|safe }},
{{ active_filters|tojson|safe }}
);
{% endif %}
})(jQuery);
</script>
{% endblock %} {% endblock %}
...@@ -21,10 +21,5 @@ ...@@ -21,10 +21,5 @@
$('.modal-header h3').html('{% block header_text -%} $('.modal-header h3').html('{% block header_text -%}
<h3>{{ _gettext('Create New Record') }}</h3> <h3>{{ _gettext('Create New Record') }}</h3>
{%- endblock %}'); {%- endblock %}');
$(function() {
// Apply flask-admin form styles after the modal is loaded
window.faForm.applyGlobalStyles(document);
});
</script> </script>
{% endblock %} {% endblock %}
...@@ -21,10 +21,5 @@ ...@@ -21,10 +21,5 @@
$('.modal-header h3').html('{% block header_text -%} $('.modal-header h3').html('{% block header_text -%}
{{ _gettext('Edit Record') + ' #' + request.args.get('id') }} {{ _gettext('Edit Record') + ' #' + request.args.get('id') }}
{%- endblock %}'); {%- endblock %}');
$(function() {
// Apply flask-admin form styles after the modal is loaded
window.faForm.applyGlobalStyles(document);
});
</script> </script>
{% endblock %} {% endblock %}
...@@ -21,10 +21,7 @@ ...@@ -21,10 +21,7 @@
{% block tail %} {% block tail %}
{{ super() }} {{ super() }}
<div id="execute-view-data" style="display:none;">{{ admin_view.get_url('.execute_view')|tojson|safe }}</div>
<script src="{{ admin_static.url(filename='admin/js/rediscli.js', v='1.0.0') }}"></script> <script src="{{ admin_static.url(filename='admin/js/rediscli.js', v='1.0.0') }}"></script>
<script language="javascript">
$(function() {
var redisCli = new RedisCli({{ get_url('.execute_view')|tojson }});
});
</script>
{% endblock %} {% endblock %}
...@@ -27,9 +27,8 @@ ...@@ -27,9 +27,8 @@
{% macro script(message, actions, actions_confirmation) %} {% macro script(message, actions, actions_confirmation) %}
{% if actions %} {% if actions %}
<script src="{{ admin_static.url(filename='admin/js/actions.js', v='1.0.0') }}"></script> <div id="actions-confirmation-data" style="display:none;">{{ actions_confirmation|tojson|safe }}</div>
<script language="javascript"> <div id="message-data" style="display:none;">{{ message|tojson|safe }}</div>
var modelActions = new AdminModelActions({{ message|tojson|safe }}, {{ actions_confirmation|tojson|safe }}); <script src="{{ admin_static.url(filename='admin/js/actions.js', v='1.0.0') }}"></script>
</script>
{% endif %} {% endif %}
{% endmacro %} {% endmacro %}
...@@ -180,43 +180,16 @@ ...@@ -180,43 +180,16 @@
{% block tail %} {% block tail %}
{{ super() }} {{ super() }}
{% if filter_groups %}
<div id="filter-groups-data" style="display:none;">{{ filter_groups|tojson|safe }}</div>
<div id="active-filters-data" style="display:none;">{{ active_filters|tojson|safe }}</div>
{% endif %}
<script src="{{ admin_static.url(filename='admin/js/filters.js', v='1.0.0') }}"></script> <script src="{{ admin_static.url(filename='admin/js/filters.js', v='1.0.0') }}"></script>
{{ lib.form_js() }} {{ lib.form_js() }}
{{ actionlib.script(_gettext('Please select at least one record.'), {{ actionlib.script(_gettext('Please select at least one record.'),
actions, actions,
actions_confirmation) }} actions_confirmation) }}
<script language="javascript">
(function($) {
$('[data-role=tooltip]').tooltip({
html: true,
placement: 'bottom'
});
{% if filter_groups %}
var filter = new AdminFilters(
'#filter_form', '.field-filters',
{{ filter_groups|tojson|safe }},
{{ active_filters|tojson|safe }}
);
{% endif %}
})(jQuery);
// Catch exception when closing dialog with <esc> key
// and prevent accidental deletions.
function safeConfirm(msg) {
try {
var isconfirmed = confirm(msg);
if (isconfirmed == true) {
return true;
}
else {
return false;
}
}
catch(err) {
return false;
}
}
</script>
{% endblock %} {% endblock %}
...@@ -21,11 +21,4 @@ ...@@ -21,11 +21,4 @@
{% block tail %} {% block tail %}
<script src="{{ admin_static.url(filename='admin/js/bs3_modal.js', v='1.0.0') }}"></script> <script src="{{ admin_static.url(filename='admin/js/bs3_modal.js', v='1.0.0') }}"></script>
<script>
$(function() {
// Apply flask-admin form styles after the modal is loaded
window.faForm.applyGlobalStyles(document);
});
</script>
{% endblock %} {% endblock %}
...@@ -23,11 +23,4 @@ ...@@ -23,11 +23,4 @@
{% block tail %} {% block tail %}
<script src="{{ admin_static.url(filename='admin/js/bs3_modal.js', v='1.0.0') }}"></script> <script src="{{ admin_static.url(filename='admin/js/bs3_modal.js', v='1.0.0') }}"></script>
<script>
$(function() {
// Apply flask-admin form styles after the modal is loaded
window.faForm.applyGlobalStyles(document);
});
</script>
{% endblock %} {% endblock %}
...@@ -21,10 +21,7 @@ ...@@ -21,10 +21,7 @@
{% block tail %} {% block tail %}
{{ super() }} {{ super() }}
<div id="execute-view-data" style="display:none;">{{ admin_view.get_url('.execute_view')|tojson|safe }}</div>
<script src="{{ admin_static.url(filename='admin/js/rediscli.js', v='1.0.0') }}"></script> <script src="{{ admin_static.url(filename='admin/js/rediscli.js', v='1.0.0') }}"></script>
<script language="javascript">
$(function() {
var redisCli = new RedisCli({{ admin_view.get_url('.execute_view')|tojson }});
});
</script>
{% endblock %} {% endblock %}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment