summaryrefslogtreecommitdiffstats
path: root/gui-editors/gui-editor-apex/src/main/resources/webapp/js/showhideTextarea.js
blob: 8c98d3f9e7b44e4391cc84c326e973bc405e577c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/*
 * ============LICENSE_START=======================================================
 *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
 *  Modifications Copyright (C) 2020-2021 Nordix Foundation.
 *  Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
 * ================================================================================
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * SPDX-License-Identifier: Apache-2.0
 * ============LICENSE_END=========================================================
 */

function showHideTextarea_display_hide(showHideDivprefix) {
    var ta = document.getElementById(showHideDivprefix + "_textarea");
    var sh = document.getElementById(showHideDivprefix + "_showhide");
    _showHideTextarea_display_hide(ta, sh)
    if (sh["_clickable"]) {
        sh.onclick = function(event) {
            showHideTextarea_display_show(showHideDivprefix);
        };
    }
}
function showHideTextarea_display_show(showHideDivprefix) {
    var ta = document.getElementById(showHideDivprefix + "_textarea");
    var sh = document.getElementById(showHideDivprefix + "_showhide");
    _showHideTextarea_display_show(ta, sh)
    if (sh["_clickable"]) {
        sh.onclick = function(event) {
            showHideTextarea_display_hide(showHideDivprefix);
        };
    }
}

function _showHideTextarea_display_hide(txtarea, showhide) {
    txtarea.classList.remove("showHideTextarea_displayed");
    txtarea.classList.add("showHideTextarea_hidden");
    showhide.classList.remove("showHideTextarea_show");
    showhide.classList.add("showHideTextarea_hide");
    showhide.innerHTML = showhide["showText"];
}
function _showHideTextarea_display_show(txtarea, showhide) {
    txtarea.classList.add("showHideTextarea_displayed");
    txtarea.classList.remove("showHideTextarea_hidden");
    showhide.classList.add("showHideTextarea_show");
    showhide.classList.remove("showHideTextarea_hide");
    showhide.innerHTML = showhide["hideText"];
}

/*
 * Create a hideable textarea, inside a div, with some text displayed in a
 * clickable area to show the text area, and some other text displayed in the
 * clickable area to hide the text area
 *
 * Each showHideTextarea must have a unique "id_prefix" vale as an identifier
 * "content" is the text to be put into the text area "initialshow" is a
 * boolean, if true the textarea will be shown initially, otherwise hidden
 * "editable" is a boolean, if true the textarea will be editable, otherwise
 * hidden "disabled" is a boolean, if true the textarea can be shown, otherwise
 * it canot be shown "showText" is the text that is shown to be clicked to show
 * the text area "hideText" is the text that is shown to be clicked to show the
 * text area
 *
 * Returns a div representing the hideable textarea, with id 'id_prefix'. The
 * returned div will a textarea called "id_prefix+'_textarea'", that can be
 * queried to get the value of the textarea
 */

function showHideTextarea(id_prefix, content, _initialshow, _editable, _disabled, _showText, _hideText) {

    var editable = (_editable != null ? _editable : true);

    var retdiv = document.createElement("div");
    var divname = id_prefix;
    retdiv.setAttribute("id", divname);
    retdiv.setAttribute("class", "showHideTextarea");
    var showhide = document.createElement("div");
    retdiv.appendChild(showhide);
    showhide.setAttribute("id", divname + "_showhide");
    showhide.innerHTML = '<label class="ebSwitcher"><input type="checkbox" class="ebSwitcher-checkbox" /><div class="ebSwitcher-body"><div class="ebSwitcher-onLabel">Show</div><div class="ebSwitcher-switch"></div><div class="ebSwitcher-offLabel">Hide</div></div></label>';
    var parent = document.createElement("div");
    var textArea = document.createElement("textarea");
    parent.appendChild(textArea);
    retdiv.appendChild(parent);
    textArea.setAttribute("id", divname + "_textarea");
    textArea.setAttribute("name", divname + "_textarea");
    textArea.style.width = "100%";
    textArea.style.height = "400px";
    textArea.style.display = "none";
    if (content != null) {
        textArea.value = content;
    }

    if (!editable) {
        textArea.readOnly = true;
        textArea.style.cursor = "text";
        textArea.style["border-color"] = "#E3E3E3";
        textArea.style["background-color"] = "#F0F0F0";
        textArea.style.color = "#B2B2B2";
    }

    var shown = false;
    var checkbox = $(showhide).find('input:checkbox:first');
    checkbox.change(function(event) {
        if (!shown) {
            createEditArea(textArea.getAttribute("id"), {
                is_editable : editable
            });
            shown = true;
        } else {
            $(parent).toggle("fast");
        }
    });

    return retdiv;
}

export {
    showHideTextarea,
    showHideTextarea_display_hide,
    showHideTextarea_display_show,
    _showHideTextarea_display_hide,
    _showHideTextarea_display_show
}