| 1 |
(()=>{"use strict";const e=window.wp.i18n;jQuery(document).ready((function(t){function s(e){return e>=80?"green":e>=50?"yellow":e>=30?"orange":"red"}function o(o,r){const i=t(o),n=i.find(".quality-results");i.find(".quality-empty").hide(),n.show();const a=r.data||r,c=a.overall_score||0,d=a.scores||{},l=a.feedback||{},u=l.strengths||[],f=l.improvements||[],p=l.suggestions||[];let y="";y+='<div class="quality-results-header">',y+="<h4>"+(0,e.__)("Docs quality analysis results","betterdocs")+"</h4>",y+='<button type="button" class="betterdocs-regenerate-quality" id="betterdocs-regenerate-quality">',y+='<svg width="16" height="22" viewBox="0 0 16 22" fill="none" xmlns="http://www.w3.org/2000/svg">',y+='<path d="M1.1 15.05C0.733333 14.4167 0.458333 13.7667 0.275 13.1C0.0916667 12.4333 0 11.75 0 11.05C0 8.81667 0.775 6.91667 2.325 5.35C3.875 3.78333 5.76667 3 8 3H8.175L6.575 1.4L7.975 0L11.975 4L7.975 8L6.575 6.6L8.175 5H8C6.33333 5 4.91667 5.5875 3.75 6.7625C2.58333 7.9375 2 9.36667 2 11.05C2 11.4833 2.05 11.9083 2.15 12.325C2.25 12.7417 2.4 13.15 2.6 13.55L1.1 15.05ZM8.025 22L4.025 18L8.025 14L9.425 15.4L7.825 17H8C9.66667 17 11.0833 16.4125 12.25 15.2375C13.4167 14.0625 14 12.6333 14 10.95C14 10.5167 13.95 10.0917 13.85 9.675C13.75 9.25833 13.6 8.85 13.4 8.45L14.9 6.95C15.2667 7.58333 15.5417 8.23333 15.725 8.9C15.9083 9.56667 16 10.25 16 10.95C16 13.1833 15.225 15.0833 13.675 16.65C12.125 18.2167 10.2333 19 8 19H7.825L9.425 20.6L8.025 22Z" fill="#475467"/>',y+="</svg>",y+="</button>",y+="</div>";const g=s(c),h=2*Math.PI*54,v=h-c/100*h;y+='<div class="quality-results-body">',y+='<div class="score-column">',y+='<h3 class="score-column-title">'+(0,e.__)("Overall Score","betterdocs")+"</h3>",y+='<div class="progress-ring-wrapper">',y+='<svg class="progress-ring" viewBox="0 0 120 120">',y+='<circle class="progress-ring-bg" cx="60" cy="60" r="54" fill="none" stroke-width="12"></circle>',y+='<circle class="progress-ring-circle '+g+'" cx="60" cy="60" r="54" fill="none" stroke-width="12" stroke-linecap="round" style="stroke-dasharray: '+h+"; stroke-dashoffset: "+v+'; transform: rotate(-90deg); transform-origin: 50% 50%; transition: stroke-dashoffset 0.5s ease-in-out;"></circle>',y+="</svg>",y+='<div class="score-text-wrapper">',y+='<span class="score-value '+g+'">'+c+"</span>",y+='<span class="score-label">'+(0,e.__)("out of 100","betterdocs")+"</span>",y+="</div>",y+="</div>",y+='<div class="score-feedback '+g+'">'+function(t){return t>=80?(0,e.__)("Excellent","betterdocs"):t>=60?(0,e.__)("Good","betterdocs"):t>=40?(0,e.__)("Needs Improvement","betterdocs"):(0,e.__)("Poor","betterdocs")}(c)+"</div>",y+='<p class="score-description">'+(0,e.__)("This score is a weighted average of clarity, relevance, structure, and other quality factors.","betterdocs")+"</p>",y+="</div>",y+='<div class="details-column">',Object.keys(d).length>0&&(y+='<div class="section">',y+='<h3 class="section-title">'+(0,e.__)("Score Breakdown","betterdocs")+"</h3>",y+='<div class="score-breakdown-list">',Object.keys(d).forEach((function(e){const t=d[e];y+='<div class="score-item">',y+='<div class="score-name-group">',y+='<span class="score-name">'+e.charAt(0).toUpperCase()+e.slice(1)+"</span>",y+='<span class="score-percentage">'+t+"%</span>",y+="</div>",y+='<div class="score-bar-group">',y+='<div class="score-bar-wrapper">',y+='<div class="score-bar-fill '+s(t)+'" style="width: '+t+'%"></div>',y+="</div>",y+="</div>",y+="</div>"})),y+="</div>",y+="</div>"),y+="</div>",y+="</div>";const b=[];u.length>0&&b.push(...u),f.length>0&&b.push(...f),p.length>0&&b.push(...p),b.length>0&&(y+='<div class="improvement-section section">',y+='<h3 class="section-title">'+(0,e.__)("Actionable Insights","betterdocs")+"</h3>",y+='<div class="improvements-list">',b.forEach((function(e){y+='<div class="improvement-item">',y+='<div class="improvement-icon">',y+='<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">',y+='<rect width="16" height="16" rx="8" fill="#D0D5DD"></rect>',y+='<path d="M5 8.88L6.67619 10.8L10.8667 6" stroke="white" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"></path>',y+="</svg>",y+="</div>",y+='<span class="improvement-text">'+e+"</span>",y+="</div>"})),y+="</div>",y+="</div>"),n.html(y)}function r(e){const s=t(e);s.find(".quality-empty").hide(),s.find(".quality-results").hide(),s.find(".quality-error").hide(),s.find(".quality-loading").show()}function i(e){t(e).find(".quality-loading").hide()}function n(s,o){const r=t(s);i(s);let n="",a=!1;n="string"==typeof o?o:o&&"object"==typeof o?o.message?o.message:o.data&&o.data.message?o.data.message:(0,e.__)("An unexpected error occurred. Please try again.","betterdocs"):(0,e.__)("Analysis failed. Please try again.","betterdocs"),n.toLowerCase().includes("api key")||n.toLowerCase().includes("not configured")?(!0,n=(0,e.__)("OpenAI API key is not configured. Please configure your API key in the settings to use this feature.","betterdocs"),r.find(".betterdocs-analyze-btn").hide(),r.find(".quality-empty").show(),r.find(".quality-error").find(".error-icon").show(),r.find(".quality-error").find("strong").show(),r.find(".quality-error").find(".error-action-button").show(),r.find(".quality-error").removeClass("error-content-validation").addClass("error-config")):(r.find(".quality-error").find(".error-icon").hide(),r.find(".quality-error").find("strong").hide(),r.find(".quality-error").find(".error-action-button").hide(),r.find(".betterdocs-analyze-btn").show(),r.find(".quality-empty").show(),r.find(".quality-error").removeClass("error-config").addClass("error-content-validation")),r.find(".quality-error").find(".error-message").text(n),r.find(".quality-error").show()}t(document).on("click","#betterdocs-analyze-quality",(function(s){s.preventDefault();const a=t(this),c=a.closest(".betterdocs-quality-analysis-content"),d=c.data("post-id");if(!d)return void alert((0,e.__)("Please save the post first.","betterdocs"));let l="",u="";if("undefined"!=typeof wp&&wp.data&&wp.data.select("core/editor")){const e=wp.data.select("core/editor");l=e.getEditedPostContent(),u=e.getEditedPostAttribute("title")}else"undefined"!=typeof tinymce&&tinymce.get("content")?(l=tinymce.get("content").getContent(),u=t("#title").val()||""):t("#content").length&&(l=t("#content").val(),u=t("#title").val()||"");a.prop("disabled",!0),r(c);const f={action:"betterdocs_analyze_quality",post_id:d,nonce:betterdocsQualityScore.nonce};l&&(f.current_content=l,f.current_title=u),t.ajax({url:betterdocsQualityScore.ajax_url,type:"POST",data:f,success:function(e){e.success?(i(c),o(c,e.data)):n(c,e.data||e)},error:function(){n(c,(0,e.__)("Network error. Please try again.","betterdocs"))},complete:function(){a.prop("disabled",!1)}})})),t(document).on("click","#betterdocs-regenerate-quality",(function(s){s.preventDefault();const a=t(this),c=a.closest(".betterdocs-quality-analysis-content"),d=c.data("post-id");if(!d)return void alert((0,e.__)("Please save the post first.","betterdocs"));let l="",u="";if("undefined"!=typeof wp&&wp.data&&wp.data.select("core/editor")){const e=wp.data.select("core/editor");l=e.getEditedPostContent(),u=e.getEditedPostAttribute("title")}else"undefined"!=typeof tinymce&&tinymce.get("content")?(l=tinymce.get("content").getContent(),u=t("#title").val()||""):t("#content").length&&(l=t("#content").val(),u=t("#title").val()||"");a.prop("disabled",!0),r(c);const f={action:"betterdocs_analyze_quality",post_id:d,nonce:betterdocsQualityScore.nonce};l&&(f.current_content=l,f.current_title=u),t.ajax({url:betterdocsQualityScore.ajax_url,type:"POST",data:f,success:function(e){e.success?(i(c),o(c,e.data)):n(c,e.data||e)},error:function(){n(c,(0,e.__)("Network error. Please try again.","betterdocs"))},complete:function(){a.prop("disabled",!1)}})}))}))})(); |