PluginProbe
Property Hive / 2.2.3
Property Hive v2.2.3
2.3.1 2.3.0 2.2.6 2.2.5 2.2.4 2.2.3 2.2.2 1.4.46 1.4.47 1.4.48 1.4.49 1.4.5 1.4.50 1.4.51 1.4.52 1.4.53 1.4.54 1.4.55 1.4.56 1.4.57 1.4.58 1.4.59 1.4.6 1.4.60 1.4.61 All 261 releases
propertyhive / assets / js / frontend / dynamic-population.js

dynamic-population.js in Property Hive 2.2.3, at assets/js/frontend/dynamic-population.js

94 lines 4.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 jQuery(document).ready(function()
2 {
3 ph_populate_subsequent_dropdowns(true);
4
5 jQuery('select[data-dynamic-population-level]').change(function()
6 {
7 ph_populate_subsequent_dropdowns(false);
8 });
9 });
10
11 function ph_populate_subsequent_dropdowns(init)
12 {
13 jQuery('form').each(function()
14 {
15 jQuery(this).find('input[type=\'hidden\'][name=\'other_' + propertyhive_dynamic_population_params.taxonomy + '[]\']').remove();
16 jQuery(this).find('select[data-dynamic-population-level]').attr('name', 'other_' + propertyhive_dynamic_population_params.taxonomy + '[]');
17
18 for ( var i = 1; i <= propertyhive_dynamic_population_params.levels_of_taxonomy; i = i + 1 )
19 {
20 if ( jQuery(this).find('select[data-dynamic-population-level=\'' + i + '\']').val() != '' && jQuery(this).find('select[data-dynamic-population-level=\'' + i + '\']').val() != null )
21 {
22 var value = parseInt(jQuery(this).find('select[data-dynamic-population-level=\'' + i + '\']').val());
23
24 if ( ( i + 1 ) <= propertyhive_dynamic_population_params.levels_of_taxonomy )
25 {
26 var previous_value = '';
27 if ( jQuery(this).find('select[data-dynamic-population-level=\'' + ( i + 1 ) + '\']').val() != '' && jQuery(this).find('select[data-dynamic-population-level=\'' + ( i + 1 ) + '\']').val() != null )
28 {
29 previous_value = jQuery(this).find('select[data-dynamic-population-level=\'' + ( i + 1 ) + '\']').val();
30 }
31 // fill options of next dropdown
32 jQuery(this).find('select[data-dynamic-population-level=\'' + ( i + 1 ) + '\']').html('');
33 jQuery(this).find('select[data-dynamic-population-level=\'' + ( i + 1 ) + '\']').append(jQuery('<option>', {
34 value: '',
35 text : 'Any'
36 }));
37
38 // Sort options by label
39 var sortedOptions = Object.entries(propertyhive_dynamic_population_params.options)
40 .filter(([key, option]) => parseInt(option.parent) === value)
41 .sort(([, a], [, b]) => a.label.localeCompare(b.label));
42
43 // Populate the dropdown with sorted options
44 sortedOptions.forEach(([key, option]) => {
45 jQuery(this).find('select[data-dynamic-population-level=\'' + (i + 1) + '\']').append(jQuery('<option>', {
46 value: key,
47 text: option.label
48 }));
49 });
50
51 if ( !init && previous_value != '' )
52 {
53 jQuery(this).find('select[data-dynamic-population-level=\'' + ( i + 1 ) + '\']').val(previous_value);
54 }
55
56 jQuery(this).find('select[data-dynamic-population-level=\'' + ( i + 1 ) + '\']').attr('disabled', false);
57 }
58
59 if (jQuery(this).find('select[data-dynamic-population-level=\'' + ( i + 1 ) + '\']').val() == '' || jQuery(this).find('select[data-dynamic-population-level=\'' + ( i + 1 ) + '\']').val() == null)
60 {
61 jQuery(this).find('select[data-dynamic-population-level=\'' + i + '\']').attr('name', propertyhive_dynamic_population_params.taxonomy);
62 }
63 }
64 else
65 {
66 jQuery(this).find('select[data-dynamic-population-level=\'' + ( i + 1 ) + '\']').attr('disabled', 'disabled');
67
68 jQuery(this).find('select[data-dynamic-population-level=\'' + ( i + 1 ) + '\']').html('');
69 jQuery(this).find('select[data-dynamic-population-level=\'' + ( i + 1 ) + '\']').append(jQuery('<option>', {
70 value: '',
71 text : ''
72 }));
73 }
74
75 if ( init )
76 {
77 for ( var j in propertyhive_dynamic_population_params.other_values )
78 {
79 if ( jQuery(this).find('select[data-dynamic-population-level=\'' + i + '\'] option[value=\'' + propertyhive_dynamic_population_params.other_values[j] + '\']').length > 0 )
80 {
81 jQuery(this).find('select[data-dynamic-population-level=\'' + i + '\']').val( propertyhive_dynamic_population_params.other_values[j] );
82 }
83 ph_populate_subsequent_dropdowns(false);
84 }
85 if ( jQuery(this).find('select[data-dynamic-population-level=\'' + i + '\'] option[value=\'' + propertyhive_dynamic_population_params.value + '\']').length > 0 )
86 {
87 jQuery(this).find('select[data-dynamic-population-level=\'' + i + '\']').val( propertyhive_dynamic_population_params.value);
88 ph_populate_subsequent_dropdowns(false);
89 }
90
91 }
92 }
93 });
94 }