Facebook
From Dood, 1 Month ago, written in JavaScript.
Embed
Download Paste or View Raw
Hits: 243
  1. jQuery(document).ready(function ($) {
  2.  
  3.     if (typeof acf !== 'undefined') {
  4.         const currentPostId = acf.get('post_id');
  5.  
  6.         // console.log('ACF is defined', acf);
  7.         // console.log('Post ID', currentPostId);
  8.  
  9.         const select_multiple = [
  10.             'job_application_practice_areas',
  11.             'lawjob_job_alert_practice_areas',
  12.             'lawjob_job_alert_vacancy_type',
  13.             'lawjob_job_alert_job_types'
  14.         ];
  15.  
  16.         $.each(select_multiple, function (_, field_slug) {
  17.             //const $container = $('#' + field_slug + '.select2-optgroups');
  18.             const $container = $('div[data-name="' + field_slug + '"]');
  19.             const $selectElement = $container.find('select');
  20.             var nextField = false;
  21.             // console.log(field_slug);
  22.             // console.log($container);
  23.             // console.log($selectElement);
  24.             // console.log($('div[name="' + field_slug + '"].select2-optgroups'));
  25.             // console.log('div[name="' + field_slug + '"].select2-optgroups select');
  26.  
  27.             if (typeof $selectElement.length !== 'undefined' && $selectElement.length > 0) {
  28.                 get_ACF_Values($selectElement, field_slug, currentPostId);
  29.             }
  30.         });
  31.     }
  32.  
  33.     function get_ACF_Values($selectElement, field_slug, currentPostId) {
  34.         $.ajax({
  35.             type: 'post',
  36.             url: myAjaxSelect2.ajaxurl,
  37.             data: {
  38.                 action: 'lawjob_get_acf_value',
  39.                 field_slug: field_slug,
  40.                 curr_post_id: currentPostId
  41.             },
  42.             success: function (result) {
  43.                 var saved_options = result.options;
  44.  
  45.                 console.log('Result getACFValues : ', field_slug, saved_options);    
  46.                    
  47.                 get_select_options($selectElement, saved_options, field_slug);
  48.  
  49.             },
  50.         });
  51.     }
  52.  
  53.     function get_select_options($selectElement, saved_options, field_slug) {
  54.         console.log("------------");
  55.         console.log("1 - get_select_options : ");
  56.         console.log($selectElement);
  57.         console.log(saved_options);
  58.         console.log("------------");
  59.  
  60.         $.ajax({
  61.             type: 'post',
  62.             url: myAjaxSelect2.ajaxurl,
  63.             data: {
  64.                 action: 'lawjob_get_select_options',
  65.                 field_slug: field_slug
  66.             },
  67.             success: function (result) {
  68.                 console.log('Result for get_select_options : ', result, field_slug);
  69.  
  70.                 update_select2_Options($selectElement, result, saved_options);
  71.                 get_saved_options($selectElement, saved_options);
  72.             },
  73.         });
  74.     }
  75.  
  76.     function update_select2_Options($select, result, saved_options) {
  77.         console.log("------------");
  78.         console.log("2 - updateSelect2Options : ");
  79.         console.log($select);
  80.         console.log(result);
  81.         console.log(saved_options);
  82.         console.log("------------");
  83.  
  84.         $select.select2({ closeOnSelect: false });
  85.         console.log("------------");
  86.         console.log('Options : ', result);
  87.         console.log("------------");
  88.  
  89.         $.each(result, function (_, option) {
  90.             if (option.children && option.children.length > 0) {
  91.                 const $optgroup = $('<optgroup>').attr('label', option.text);
  92.                 update_select2_Options($optgroup, option.children);
  93.                 $select.append($optgroup).trigger('change');
  94.             } else {
  95.                 // console.log('saved_options : ', saved_options);
  96.                 $select.append(new Option(option.text, option.id, false, false)).trigger('change');
  97.             }
  98.         });
  99.  
  100.     }
  101.  
  102.     function get_saved_options($selectElement, saved_options) {
  103.         const isCreatedJob = (saved_options === null || typeof saved_options === "undefined");
  104.         console.log("------------");
  105.         console.log("3 - getSavedOptions : ");
  106.         console.log(isCreatedJob);
  107.         console.log($selectElement);
  108.         console.log(saved_options);
  109.         console.log("------------");
  110.  
  111.         if (isCreatedJob) {
  112.             $selectElement.val('Any');
  113.             $selectElement.trigger('change');
  114.         } else {
  115.             $selectElement.val(saved_options);
  116.             $selectElement.trigger('change');
  117.         }
  118.     }
  119.  
  120. });