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