Chris@1494: /* Redmine - project management software
Chris@1494: Copyright (C) 2006-2014 Jean-Philippe Lang */
Chris@1494:
Chris@1494: function checkAll(id, checked) {
Chris@1494: $('#'+id).find('input[type=checkbox]:enabled').attr('checked', checked);
Chris@1494: }
Chris@1494:
Chris@1494: function toggleCheckboxesBySelector(selector) {
Chris@1494: var all_checked = true;
Chris@1494: $(selector).each(function(index) {
Chris@1494: if (!$(this).is(':checked')) { all_checked = false; }
Chris@1494: });
Chris@1494: $(selector).attr('checked', !all_checked);
Chris@1494: }
Chris@1494:
Chris@1494: function showAndScrollTo(id, focus) {
Chris@1494: $('#'+id).show();
Chris@1494: if (focus !== null) {
Chris@1494: $('#'+focus).focus();
Chris@1494: }
Chris@1494: $('html, body').animate({scrollTop: $('#'+id).offset().top}, 100);
Chris@1494: }
Chris@1494:
Chris@1494: function toggleRowGroup(el) {
Chris@1494: var tr = $(el).parents('tr').first();
Chris@1494: var n = tr.next();
Chris@1494: tr.toggleClass('open');
Chris@1494: while (n.length && !n.hasClass('group')) {
Chris@1494: n.toggle();
Chris@1494: n = n.next('tr');
Chris@1494: }
Chris@1494: }
Chris@1494:
Chris@1494: function collapseAllRowGroups(el) {
Chris@1494: var tbody = $(el).parents('tbody').first();
Chris@1494: tbody.children('tr').each(function(index) {
Chris@1494: if ($(this).hasClass('group')) {
Chris@1494: $(this).removeClass('open');
Chris@1494: } else {
Chris@1494: $(this).hide();
Chris@1494: }
Chris@1494: });
Chris@1494: }
Chris@1494:
Chris@1494: function expandAllRowGroups(el) {
Chris@1494: var tbody = $(el).parents('tbody').first();
Chris@1494: tbody.children('tr').each(function(index) {
Chris@1494: if ($(this).hasClass('group')) {
Chris@1494: $(this).addClass('open');
Chris@1494: } else {
Chris@1494: $(this).show();
Chris@1494: }
Chris@1494: });
Chris@1494: }
Chris@1494:
Chris@1494: function toggleAllRowGroups(el) {
Chris@1494: var tr = $(el).parents('tr').first();
Chris@1494: if (tr.hasClass('open')) {
Chris@1494: collapseAllRowGroups(el);
Chris@1494: } else {
Chris@1494: expandAllRowGroups(el);
Chris@1494: }
Chris@1494: }
Chris@1494:
Chris@1494: function toggleFieldset(el) {
Chris@1494: var fieldset = $(el).parents('fieldset').first();
Chris@1494: fieldset.toggleClass('collapsed');
Chris@1494: fieldset.children('div').toggle();
Chris@1494: }
Chris@1494:
Chris@1494: function hideFieldset(el) {
Chris@1494: var fieldset = $(el).parents('fieldset').first();
Chris@1494: fieldset.toggleClass('collapsed');
Chris@1494: fieldset.children('div').hide();
Chris@1494: }
Chris@1494:
Chris@1494: function initFilters() {
Chris@1494: $('#add_filter_select').change(function() {
Chris@1494: addFilter($(this).val(), '', []);
Chris@1494: });
Chris@1494: $('#filters-table td.field input[type=checkbox]').each(function() {
Chris@1494: toggleFilter($(this).val());
Chris@1494: });
Chris@1494: $('#filters-table td.field input[type=checkbox]').live('click', function() {
Chris@1494: toggleFilter($(this).val());
Chris@1494: });
Chris@1494: $('#filters-table .toggle-multiselect').live('click', function() {
Chris@1494: toggleMultiSelect($(this).siblings('select'));
Chris@1494: });
Chris@1494: $('#filters-table input[type=text]').live('keypress', function(e) {
Chris@1494: if (e.keyCode == 13) submit_query_form("query_form");
Chris@1494: });
Chris@1494: }
Chris@1494:
Chris@1494: function addFilter(field, operator, values) {
Chris@1494: var fieldId = field.replace('.', '_');
Chris@1494: var tr = $('#tr_'+fieldId);
Chris@1494: if (tr.length > 0) {
Chris@1494: tr.show();
Chris@1494: } else {
Chris@1494: buildFilterRow(field, operator, values);
Chris@1494: }
Chris@1494: $('#cb_'+fieldId).attr('checked', true);
Chris@1494: toggleFilter(field);
Chris@1494: $('#add_filter_select').val('').children('option').each(function() {
Chris@1494: if ($(this).attr('value') == field) {
Chris@1494: $(this).attr('disabled', true);
Chris@1494: }
Chris@1494: });
Chris@1494: }
Chris@1494:
Chris@1494: function buildFilterRow(field, operator, values) {
Chris@1494: var fieldId = field.replace('.', '_');
Chris@1494: var filterTable = $("#filters-table");
Chris@1494: var filterOptions = availableFilters[field];
Chris@1494: if (!filterOptions) return;
Chris@1494: var operators = operatorByType[filterOptions['type']];
Chris@1494: var filterValues = filterOptions['values'];
Chris@1494: var i, select;
Chris@1494:
Chris@1494: var tr = $('
').attr('id', 'tr_'+fieldId).html(
Chris@1494: ' | ' +
Chris@1494: ' | ' +
Chris@1494: ' | '
Chris@1494: );
Chris@1494: filterTable.append(tr);
Chris@1494:
Chris@1494: select = tr.find('td.operator select');
Chris@1494: for (i = 0; i < operators.length; i++) {
Chris@1494: var option = $('