xref: /OpenGrok/opengrok-web/src/main/webapp/js/repos-0.0.3.js (revision 7c0a1357931d754d4eed5bce3a80f71a2eb8dac2)
1*7c0a1357SAdam Hornacek/*
2*7c0a1357SAdam Hornacek * CDDL HEADER START
3*7c0a1357SAdam Hornacek *
4*7c0a1357SAdam Hornacek * The contents of this file are subject to the terms of the
5*7c0a1357SAdam Hornacek * Common Development and Distribution License (the "License").
6*7c0a1357SAdam Hornacek * You may not use this file except in compliance with the License.
7*7c0a1357SAdam Hornacek *
8*7c0a1357SAdam Hornacek * See LICENSE.txt included in this distribution for the specific
9*7c0a1357SAdam Hornacek * language governing permissions and limitations under the License.
10*7c0a1357SAdam Hornacek *
11*7c0a1357SAdam Hornacek * When distributing Covered Code, include this CDDL HEADER in each
12*7c0a1357SAdam Hornacek * file and include the License file at LICENSE.txt.
13*7c0a1357SAdam Hornacek * If applicable, add the following below this CDDL HEADER, with the
14*7c0a1357SAdam Hornacek * fields enclosed by brackets "[]" replaced with your own identifying
15*7c0a1357SAdam Hornacek * information: Portions Copyright [yyyy] [name of copyright owner]
16*7c0a1357SAdam Hornacek *
17*7c0a1357SAdam Hornacek * CDDL HEADER END
18*7c0a1357SAdam Hornacek */
19*7c0a1357SAdam Hornacek
20*7c0a1357SAdam Hornacek/*
21*7c0a1357SAdam Hornacek * Copyright (c) 2016, 2021 Oracle and/or its affiliates. All rights reserved.
22*7c0a1357SAdam Hornacek */
23*7c0a1357SAdam Hornacek
24*7c0a1357SAdam Hornacek/*
25*7c0a1357SAdam Hornacek * This file contains JavaScript code used by repos.jspf.
26*7c0a1357SAdam Hornacek */
27*7c0a1357SAdam Hornacek
28*7c0a1357SAdam Hornacek(function ($) {
29*7c0a1357SAdam Hornacek    const Accordion = function ($parent, options) {
30*7c0a1357SAdam Hornacek        const inner = {
31*7c0a1357SAdam Hornacek            initialized: false,
32*7c0a1357SAdam Hornacek            options: {},
33*7c0a1357SAdam Hornacek            defaults: {
34*7c0a1357SAdam Hornacek                "showAllSelector": ".accordion_show_all",
35*7c0a1357SAdam Hornacek                "hideAllSelector": ".accordion_hide_all"
36*7c0a1357SAdam Hornacek            },
37*7c0a1357SAdam Hornacek            $panels: [],
38*7c0a1357SAdam Hornacek            determineButtonsVisibility: function() {
39*7c0a1357SAdam Hornacek                const decision = inner.$panels.filter(":visible").length === inner.$panels.length;
40*7c0a1357SAdam Hornacek                return {
41*7c0a1357SAdam Hornacek                    hide: decision ? inner.options.showAllSelector : inner.options.hideAllSelector,
42*7c0a1357SAdam Hornacek                    show: decision ? inner.options.hideAllSelector : inner.options.showAllSelector
43*7c0a1357SAdam Hornacek                };
44*7c0a1357SAdam Hornacek            },
45*7c0a1357SAdam Hornacek            init: function () {
46*7c0a1357SAdam Hornacek                inner.$panels = inner.options.parent.find(".panel-body-accordion");
47*7c0a1357SAdam Hornacek
48*7c0a1357SAdam Hornacek                inner.options.parent.find(".panel-heading-accordion").click(function (e) {
49*7c0a1357SAdam Hornacek                    $(this).parent().find(".panel-body-accordion").each(function () {
50*7c0a1357SAdam Hornacek                        if ($(this).data("accordion-visible")) {
51*7c0a1357SAdam Hornacek                            $(this).hide().
52*7c0a1357SAdam Hornacek                                    data("accordion-visible", false).
53*7c0a1357SAdam Hornacek                                    parent().
54*7c0a1357SAdam Hornacek                                    find(".panel-heading-accordion .fold").
55*7c0a1357SAdam Hornacek                                        removeClass('fold-up').
56*7c0a1357SAdam Hornacek                                        addClass('fold-down');
57*7c0a1357SAdam Hornacek                        } else {
58*7c0a1357SAdam Hornacek                            $(this).show().
59*7c0a1357SAdam Hornacek                                    data("accordion-visible", true).
60*7c0a1357SAdam Hornacek                                    parent().
61*7c0a1357SAdam Hornacek                                    find(".panel-heading-accordion .fold").
62*7c0a1357SAdam Hornacek                                        removeClass('fold-down').
63*7c0a1357SAdam Hornacek                                        addClass('fold-up');
64*7c0a1357SAdam Hornacek                        }
65*7c0a1357SAdam Hornacek                    });
66*7c0a1357SAdam Hornacek
67*7c0a1357SAdam Hornacek                    const btn = inner.determineButtonsVisibility();
68*7c0a1357SAdam Hornacek                    inner.options.parent.find(btn.hide).hide();
69*7c0a1357SAdam Hornacek                    inner.options.parent.find(btn.show).show();
70*7c0a1357SAdam Hornacek                    return false;
71*7c0a1357SAdam Hornacek                });
72*7c0a1357SAdam Hornacek
73*7c0a1357SAdam Hornacek                inner.options.parent.find(inner.options.showAllSelector).click(function (e) {
74*7c0a1357SAdam Hornacek                    inner.$panels.
75*7c0a1357SAdam Hornacek                            data("accordion-visible", true).
76*7c0a1357SAdam Hornacek                            show().
77*7c0a1357SAdam Hornacek                            parent().
78*7c0a1357SAdam Hornacek                            find(".panel-heading-accordion .fold").
79*7c0a1357SAdam Hornacek                                removeClass('fold-down').
80*7c0a1357SAdam Hornacek                                addClass('fold-up');
81*7c0a1357SAdam Hornacek                    inner.options.parent.find(inner.options.hideAllSelector).show();
82*7c0a1357SAdam Hornacek                    inner.options.parent.find(inner.options.showAllSelector).hide();
83*7c0a1357SAdam Hornacek                    return false;
84*7c0a1357SAdam Hornacek                });
85*7c0a1357SAdam Hornacek
86*7c0a1357SAdam Hornacek                inner.options.parent.find(inner.options.hideAllSelector).click(function (e) {
87*7c0a1357SAdam Hornacek                    inner.$panels.
88*7c0a1357SAdam Hornacek                            data("accordion-visible", false).
89*7c0a1357SAdam Hornacek                            hide().
90*7c0a1357SAdam Hornacek                            parent().
91*7c0a1357SAdam Hornacek                            find(".panel-heading-accordion .fold").
92*7c0a1357SAdam Hornacek                                removeClass('fold-up').
93*7c0a1357SAdam Hornacek                                addClass('fold-down');
94*7c0a1357SAdam Hornacek                    inner.options.parent.find(inner.options.hideAllSelector).hide();
95*7c0a1357SAdam Hornacek                    inner.options.parent.find(inner.options.showAllSelector).show();
96*7c0a1357SAdam Hornacek                    return false;
97*7c0a1357SAdam Hornacek                });
98*7c0a1357SAdam Hornacek
99*7c0a1357SAdam Hornacek
100*7c0a1357SAdam Hornacek                const btn = inner.determineButtonsVisibility();
101*7c0a1357SAdam Hornacek                inner.options.parent.find(btn.hide).hide();
102*7c0a1357SAdam Hornacek                inner.options.parent.find(btn.show).show();
103*7c0a1357SAdam Hornacek
104*7c0a1357SAdam Hornacek                inner.initialized = true;
105*7c0a1357SAdam Hornacek            }
106*7c0a1357SAdam Hornacek        };
107*7c0a1357SAdam Hornacek
108*7c0a1357SAdam Hornacek        const init = (function ($parent, options) {
109*7c0a1357SAdam Hornacek            if (inner.initialized) {
110*7c0a1357SAdam Hornacek                return;
111*7c0a1357SAdam Hornacek            }
112*7c0a1357SAdam Hornacek            inner.options = $.extend({}, {parent: $parent}, inner.defaults, options);
113*7c0a1357SAdam Hornacek            inner.init();
114*7c0a1357SAdam Hornacek        })($parent, options);
115*7c0a1357SAdam Hornacek    };
116*7c0a1357SAdam Hornacek
117*7c0a1357SAdam Hornacek    $.fn.accordion = function (options) {
118*7c0a1357SAdam Hornacek        return this.each(function () {
119*7c0a1357SAdam Hornacek            options = options || {};
120*7c0a1357SAdam Hornacek            return new Accordion($(this), options);
121*7c0a1357SAdam Hornacek        });
122*7c0a1357SAdam Hornacek    };
123*7c0a1357SAdam Hornacek})(jQuery);
124*7c0a1357SAdam Hornacek
125*7c0a1357SAdam Hornacek$(document).ready(function () {
126*7c0a1357SAdam Hornacek    $("#footer").addClass("main_page");
127*7c0a1357SAdam Hornacek
128*7c0a1357SAdam Hornacek    $(".projects").accordion();
129*7c0a1357SAdam Hornacek
130*7c0a1357SAdam Hornacek    $(".projects_select_all").click(function (e) {
131*7c0a1357SAdam Hornacek        $("#project .name");
132*7c0a1357SAdam Hornacek
133*7c0a1357SAdam Hornacek        if (!e.ctrlKey) {
134*7c0a1357SAdam Hornacek            $("#project").searchableOptionList().deselectAll();
135*7c0a1357SAdam Hornacek        }
136*7c0a1357SAdam Hornacek        $(this).closest('.panel').find('.name').each(function(){
137*7c0a1357SAdam Hornacek          $("#project").searchableOptionList().selectAll($(this).text());
138*7c0a1357SAdam Hornacek        });
139*7c0a1357SAdam Hornacek
140*7c0a1357SAdam Hornacek        return false;
141*7c0a1357SAdam Hornacek    });
142*7c0a1357SAdam Hornacek    domReadyHistory();
143*7c0a1357SAdam Hornacek});
144