Bug 34323: Enhance header search icon for more options
[koha.git] / koha-tmpl / intranet-tmpl / prog / js / marc_subfields_structure.js
1 /* global dataTablesDefaults tagsubfield selectBsTabByHash */
2 $(document).ready(function() {
3     if( tagsubfield && tagsubfield == "@"){
4         $("#subfieldtabs a[href='#subATfield']").tab("show");
5     } else if ( tagsubfield && tagsubfield != "@"){
6         $("#subfieldtabs a[href='#sub" + tagsubfield + "field'").tab("show");
7     } else {
8         $("#subfieldtabs a:first").tab("show");
9     }
10
11     var current_index;
12     $("#subfieldtabs > ul").sortable({
13         axis: "x",
14         start: function (e, ui) {
15             current_index = $(ui.item[0]).index();
16         },
17         stop: function (e, ui) {
18             var new_index = $(ui.item[0]).index();
19             if (current_index < new_index) new_index++;
20             var subfield_code = $(ui.item[0]).attr('id').replace( /^tab_subfield_/, '');
21             var content = $('#sub' + subfield_code + 'field');
22             var panels = $("#subfieldtabs .tab-pane");
23             if ( new_index < $(panels).size() ){
24                 $(content).insertBefore( panels[new_index]);
25             } else {
26                 $(content).insertAfter( panels[new_index-1]);
27             }
28         }
29     });
30
31     $("input[id^='hidden_']").click(setHiddenValue);
32     $("input[id^='hidden-']").each(function() {
33         populateHiddenCheckboxes($(this).attr('id').split('-')[1]);
34     });
35     $("#table_marcsubfieldstructure").dataTable($.extend(true, {}, dataTablesDefaults, {
36         "columnDefs": [
37             { 'sortable': false, 'targets': [ 'NoSort' ] }
38         ],
39         aaSorting: [],
40         paginate: false
41     }));
42
43     selectBsTabByHash("subfieldtabs");
44
45 });
46
47 /* Function to enable/disable hidden values checkboxes when Flag is (de)selected */
48 function enable_cb(tab) {
49     if ($("#hidden_flagged_" + tab).is(':checked')) {
50         $('.inclusive_' + tab).prop('disabled', true).prop('checked', false);
51     }
52     else {
53         $('.inclusive_' + tab).prop('disabled', false);
54     }
55 }
56
57 /* Function to serialize and set the 'hidden' field */
58 function setHiddenValue() {
59
60     var tab = $(this).attr('id').split('_')[2];
61     var flagged_checked = $("#hidden_flagged_" + tab).is(':checked');
62     var opac_checked = $("#hidden_opac_" + tab).is(':checked');
63     var intranet_checked = $("#hidden_intranet_" + tab).is(':checked');
64     var editor_checked = $("#hidden_editor_" + tab).is(':checked');
65     var collapsed_checked = $("#hidden_collapsed_" + tab).is(':checked');
66     var hidden_value = "";
67
68     if ( flagged_checked ) {
69         hidden_value='-8';
70     } else if ( opac_checked && ! intranet_checked && ! editor_checked && collapsed_checked ) {
71         hidden_value='-7';
72     } else if ( opac_checked && intranet_checked && ! editor_checked && ! collapsed_checked) {
73         hidden_value='-6';
74     } else if ( opac_checked && intranet_checked && ! editor_checked && collapsed_checked) {
75         hidden_value='-5';
76     } else if ( opac_checked && ! intranet_checked && ! editor_checked && ! collapsed_checked) {
77         hidden_value='-4';
78     } else if ( opac_checked && ! intranet_checked && editor_checked && collapsed_checked) {
79         hidden_value='-3';
80     } else if ( opac_checked && ! intranet_checked && editor_checked && ! collapsed_checked) {
81         hidden_value='-2';
82     } else if ( opac_checked && intranet_checked && editor_checked && collapsed_checked) {
83         hidden_value='-1';
84     } else if ( opac_checked && intranet_checked && editor_checked && ! collapsed_checked) {
85         hidden_value='0';
86     } else if ( ! opac_checked && intranet_checked && editor_checked && collapsed_checked) {
87         hidden_value='1';
88     } else if ( ! opac_checked && ! intranet_checked && editor_checked && ! collapsed_checked) {
89         hidden_value='2';
90     } else if ( ! opac_checked && ! intranet_checked && editor_checked && collapsed_checked) {
91         hidden_value='3';
92     } else if ( ! opac_checked && intranet_checked && editor_checked && ! collapsed_checked) {
93         hidden_value='4';
94     } else if ( ! opac_checked && ! intranet_checked && ! editor_checked && collapsed_checked) {
95         hidden_value='5';
96     } else if ( ! opac_checked && intranet_checked && ! editor_checked && ! collapsed_checked) {
97         hidden_value='6';
98     } else if ( ! opac_checked && intranet_checked && ! editor_checked && collapsed_checked) {
99         hidden_value='7';
100     } else if ( ! opac_checked && ! intranet_checked && ! editor_checked && ! collapsed_checked) {
101         hidden_value='8';
102     }
103
104     var hidden_protected = $('#hidden-'+ tab).attr('data-koha-protected');
105     if ( hidden_protected != 1 ) {
106         enable_cb(tab);
107     }
108
109     $('#hidden-' + tab).val(hidden_value);
110
111 }
112
113 function populateHiddenCheckboxes(tab) {
114     // read the serialized value
115     var hidden_value = $('#hidden-' + tab).val();
116     var hidden_protected = $('#hidden-'+ tab).attr('data-koha-protected');
117     // deafult to false
118     var opac_checked = false;
119     var intranet_checked = false;
120     var editor_checked = false;
121     var collapsed_checked = false;
122     var flagged_checked = false;
123
124     if ( hidden_value == '-8' ) {
125         flagged_checked = true;
126     } else if ( hidden_value == '-7') {
127         opac_checked = true;
128         collapsed_checked = true;
129     } else if ( hidden_value == '-6' ) {
130         opac_checked = true;
131         intranet_checked = true;
132     } else if ( hidden_value == '-5') {
133         opac_checked = true;
134         intranet_checked = true;
135         collapsed_checked = true;
136     } else if ( hidden_value == '-4' ) {
137         opac_checked = true;
138     } else if ( hidden_value == '-3') {
139         opac_checked = true;
140         editor_checked = true;
141         collapsed_checked = true;
142     } else if ( hidden_value == '-2' ) {
143         opac_checked = true;
144         editor_checked = true;
145     } else if ( hidden_value == '-1' ) {
146         opac_checked = true;
147         intranet_checked = true;
148         editor_checked = true;
149         collapsed_checked = true;
150     } else if ( hidden_value == '0' ) {
151         opac_checked = true;
152         intranet_checked = true;
153         editor_checked = true;
154     } else if ( hidden_value == '1' ) {
155         intranet_checked = true;
156         editor_checked = true;
157         collapsed_checked = true;
158     } else if ( hidden_value == '2' ) {
159         editor_checked = true;
160     } else if ( hidden_value == '3' ) {
161         editor_checked = true;
162         collapsed_checked = true;
163     } else if ( hidden_value == '4' ) {
164         intranet_checked = true;
165         editor_checked = true;
166     } else if ( hidden_value == '5' ) {
167         collapsed_checked = true;
168     } else if ( hidden_value == '6' ) {
169         intranet_checked = true;
170     } else if ( hidden_value == '7' ) {
171         intranet_checked = true;
172         collapsed_checked = true;
173     } // else if ( hidden_value == '8') { skip }
174
175     $("#hidden_opac_" + tab).prop('checked',opac_checked);
176     $("#hidden_intranet_" + tab).prop('checked',intranet_checked);
177     $("#hidden_editor_" + tab).prop('checked',editor_checked);
178     $("#hidden_collapsed_" + tab).prop('checked',collapsed_checked);
179     $("#hidden_flagged_" + tab).prop('checked',flagged_checked);
180
181     if ( hidden_protected == 1 ) {
182         $("#hidden_opac_" + tab).prop('disabled','disabled');
183         $("#hidden_intranet_" + tab).prop('disabled','disabled');
184         $("#hidden_editor_" + tab).prop('disabled','disabled');
185         $("#hidden_collapsed_" + tab).prop('disabled','disabled');
186         $("#hidden_flagged_" + tab).prop('disabled','disabled');
187     }
188     else {
189         enable_cb(tab);
190     }
191 }