andru26
3/31/2017 - 12:30 AM

Ajax Article autosuggest

Ajax Article autosuggest

// =====================================================
// Email / Chat / Question  - Related Article Suggestion
// =====================================================
  if (currentPage == 'email_new' || currentPage == 'question_new' || currentPage == 'email_pre_create' || currentPage == 'chat_new') {
    //MODAL/POPUP
    
    //SKIP PRECREATE SITE WIDE?
    if (SkipPreCreate == 'true') {
      $('#new_email').attr('action','/customer/portal/emails');
      $('#new_chat').attr('action','/customer/portal/chats');
      $('#new_question').attr('action','/customer/portal/questions');
    };
    $(function() {
      $('#email_subject, #email_body, #chat_subject, #qna_subject, #qna_body, #qna_kb_topic_id').on('keyup change paste',function() {
          if ($('#email_subject, #email_body, #chat_subject, #qna_subject, #qna_body, #qna_kb_topic_id').val().length > 3 && $('#email_subject, #email_body, #chat_subject, #qna_subject, #qna_body, #qna_kb_topic_id ').val().length <= 250) {
            clearTimeout(window.timer);
            window.timer=setTimeout(function(){ // setting the delay for each keypress
              if (MBArticleSuggest == 'true') {
                articleSuggestMultiBrand();
              } else {
                articleSuggest();
              }
            }, 500);
          }
        });
    });
    //-- MULTIBRAND ARTICLE SUGGEST
    articleSuggestMultiBrand = function() {
      $('#site-brands > div').each( function(i,e) {
        systemLanguageDesk = $('#system_language').html();
        resultsFound = $('#results_mobile').html();
        brandID = e.id;
        brandName = e.textContent;
        as_count = 0;
        if (currentPage == 'email_new') {
          search_query = $('#email_subject').val() + ' ' + $('#email_body').val();
        }
        if (currentPage == 'question_new') {
          search_query = $('#qna_subject').val() + ' ' + $('#qna_body').val() + ' ' + $("#qna_kb_topic_id option:selected").text();
        }
        if (currentPage == 'chat_new') {
          search_query = $('#chat_subject').val();
        }
        $.ajax({
          url: '//' + document.domain.toString() + '/customer/' + systemLanguageDesk + '/portal/articles/autocomplete?b_id=' + brandID + '&term=' + search_query,
          brandID: brandID,
          brandName: brandName,
          dataType: 'json',
          success: function(data) {
            apiSuccess(data, this.brandID, this.brandName);
            function apiSuccess(data, brandID, brandName) {
                $('.autosuggest.multi-brand div#brand-' + brandID).remove();
                auto_suggest_content = "";
                auto_suggest = "";
                system_snippet_do_these_help = $('#system-snippets-do_these_help').text() || 'Do these help?';
                $('#common h2').html(system_snippet_do_these_help);
                $('#common h4').hide();
                as_count = 0;
                $.each(data, function() {
                  var html = $(this.label);
                  article_title = html.find(".article-autocomplete-subject").html();
                  if(as_count == 3 ) {
                    auto_suggest += '<div class="collapse" id="collapse-' + brandID + '"><li class="hidden"></li>';
                  }
                  if (this.id.indexOf("questions") !== -1) {
                      auto_suggest += '<li><a target="_blank" href="' + this.id + '" class="discussion"><i class="fa fa-question"></i><span>' + article_title + '</span></a></li>';
                  } else {
                      auto_suggest += '<li><a target="_blank" href="' + this.id + '" class="article"><i class="fa fa-file-text-o"></i><span>' + article_title + '</span></a></li>';
                  }
                  as_count++;
                });
                if (as_count > 0) {
                  if (as_count > 9) {
                    $('.autosuggest.multi-brand').append('<div id="brand-' + brandID + '"><h4 class="muted"><span>' + as_count + ' + </span>' + resultsFound + ' in ' + brandName + '</h4><ul class="unstyled"></ul>');
                  } else {
                    $('.autosuggest.multi-brand').append('<div id="brand-' + brandID + '"><h4 class="muted"><span>' + as_count + ' </span>' + resultsFound + ' in ' + brandName + '</h4><ul class="unstyled"></ul>');
                  }
                  if (as_count > 0) {
                    $('.autosuggest.multi-brand div#brand-' + brandID + ' ul').append(auto_suggest);
                    if (as_count > 9) {
                      $('.autosuggest.multi-brand div#brand-' + brandID + ' ul div').append('<a class="btn btn-submit" target="_blank" href="//' + document.domain.toString() + '/customer/' + systemLanguageDesk + '/portal/articles/search?b_id=' + brandID + '&q=' + search_query + '&displayMode=BrandOnly">View All</a>');
                    }
                    $('.autosuggest.multi-brand div#brand-' + brandID + ' ul div').append('</div>');
                    if(as_count > 3) {
                      $('.autosuggest.multi-brand div#brand-' + brandID + ' ul').append('<button class="btn btn-submit coltrig">More</button>');
                    }
                  } // IF SUGGESTIONS
                  as_count = 0;
                }
            } // FUNCTION API SUCCESS
          } // SUCCESS
        }); // AJAX REQUEST
      });// FOR EACH BRAND
    } // ARTICLE SUGGESTION MULTIBRAND
    //-- REGULAR ARTICLE SUGGEST
    articleSuggest = function() {
      as_count = 0;
      if (currentPage == 'email_new') {
        search_query = $('#email_subject').val() + ' ' + $('#email_body').val();
      }
      if (currentPage == 'question_new') {
        search_query = $('#qna_subject').val() + ' ' + $('#qna_body').val() + ' ' + $("#qna_kb_topic_id option:selected").text();
      }
      if (currentPage == 'chat_new') {
        search_query = $('#chat_subject').val();
      }
      var systemLanguageDesk = $('#system_language').html();
      var brandID = $('#brand_id').text();
      if (brandID == "/" || brandID == "") {
        $.ajax({
          url: '//' + document.domain.toString() + '/customer/' + systemLanguageDesk + '/portal/articles/autocomplete?term=' + search_query,
          dataType: 'json'
        }).done(apiSuccess).fail(apiFail);
      } else {
        $.ajax({
          url: '//' + document.domain.toString() + '/customer/' + systemLanguageDesk + '/portal/articles/autocomplete?term=' + search_query + '&b_id=' + brandID,
          dataType: 'json'
        }).done(apiSuccess).fail(apiFail);
      }
    }
    //RESULTS
    apiSuccess = function(data) {
      auto_suggest_content = "";
      auto_suggest_articles = "";
      auto_suggest_questions = "";
      var system_snippet_do_these_help = $('#system-snippets-do_these_help').text() || 'Do these help?';
      $('.autosuggest').html('<h2 class="muted">' + system_snippet_do_these_help + '</h4><ul class="unstyled"></ul>');
      $.each(data, function() {
        var html = $(this.label);
        article_title = html.find(".article-autocomplete-subject").html();
        if (this.id.indexOf("questions") !== -1) {
            auto_suggest_questions += '<li><a target="_blank" href="' + this.id + '" class="discussion"><span>' + article_title + '</span><i class="fa fa-angle-right"></i></a></li>';
        } else {
            auto_suggest_articles += '<li><a target="_blank" href="' + this.id + '" class="article"><span>' + article_title + '</span><i class="fa fa-angle-right"></i></a></li>';
        }
        as_count++;
      });
      if (as_count > 0) {
        $('.autosuggest ul').append(auto_suggest_articles + auto_suggest_questions);
        $("#common").hide();
        $(".autosuggest").removeClass('hide');
      } else {
        $(".autosuggest").addClass('hide');
        $("#common").show();
      }
    };
    //NO RESULTS
    apiFail = function(data) {}

    //AJAX COMPLETE?
    $(document).ajaxComplete(function() {
      $('.coltrig').click(function() {
        $(this).prevAll('div.collapse').collapse();
        $(this).hide();
      });
    });
  }