diff options
author | Andrew Dolgov <[email protected]> | 2015-06-18 18:30:05 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2015-06-18 18:30:05 +0300 |
commit | 168e32b946731d57961b0774380bd5e979272c7f (patch) | |
tree | 087d7b977e83065687af8ab67cba0a0bb4396c8f | |
parent | 5a45821ec9132de96396f1855024896eb3dcc389 (diff) |
add basic classifier information window
-rw-r--r-- | plugins/af_sort_bayes/init.js | 22 | ||||
-rw-r--r-- | plugins/af_sort_bayes/init.php | 60 |
2 files changed, 81 insertions, 1 deletions
diff --git a/plugins/af_sort_bayes/init.js b/plugins/af_sort_bayes/init.js index 461cdc7f3..bb6bf5954 100644 --- a/plugins/af_sort_bayes/init.js +++ b/plugins/af_sort_bayes/init.js @@ -57,3 +57,25 @@ function bayesUpdateUI() { exception_error("showTrgmRelated", e); } } + +function bayesShow(id) { + try { + if (dijit.byId("bayesShowDlg")) + dijit.byId("bayesShowDlg").destroyRecursive(); + + var query = "backend.php?op=pluginhandler&plugin=af_sort_bayes&method=showArticleStats&article_id=" + param_escape(id); + + dialog = new dijit.Dialog({ + id: "bayesShowDlg", + title: __("Classifier information"), + style: "width: 600px", + href: query}); + + dialog.show(); + + } catch (e) { + exception_error("shareArticle", e); + } +} + + diff --git a/plugins/af_sort_bayes/init.php b/plugins/af_sort_bayes/init.php index 51294b46e..2293ea490 100644 --- a/plugins/af_sort_bayes/init.php +++ b/plugins/af_sort_bayes/init.php @@ -122,7 +122,11 @@ class Af_Sort_Bayes extends Plugin { "<img src=\"plugins/af_sort_bayes/thumb_down.png\" style=\"cursor : pointer\" style=\"cursor : pointer\" onclick=\"bayesTrain(".$line["id"].", false, event)\" - class='tagsPic' title='".__('-1')."'>"; + class='tagsPic' title='".__('-1')."'>" . + "<img src=\"plugins/af_sort_bayes/chart_bar.png\" + style=\"cursor : pointer\" style=\"cursor : pointer\" + onclick=\"bayesShow(".$line["id"].")\" + class='tagsPic' title='".__('Show classifier info')."'>"; } @@ -345,6 +349,60 @@ class Af_Sort_Bayes extends Plugin { $nb->updateProbabilities(); } + function showArticleStats() { + $article_id = (int) $_REQUEST["article_id"]; + + $result = $this->dbh->query("SELECT score, guid, title, content FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id AND id = " . + $article_id . " AND owner_uid = " . $_SESSION["uid"]); + + if ($this->dbh->num_rows($result) != 0) { + $guid = $this->dbh->fetch_result($result, 0, "guid"); + $title = $this->dbh->fetch_result($result, 0, "title"); + $content = mb_strtolower($title . " " . strip_tags($this->dbh->fetch_result($result, 0, "content"))); + + print "<h2>" . $title . "</h2>"; + + $nbs = new NaiveBayesianStorage($_SESSION["uid"]); + $nb = new NaiveBayesian($nbs); + + $categories = $nbs->getCategories(); + + $ref = $nbs->getReference($guid, false); + + $current_cat = isset($ref["category_id"]) ? $categories[$ref["category_id"]]["category"] : "N/A"; + + print "<p>" . T_sprintf("Currently stored as: %s", $current_cat) . "</p>"; + + $result = $nb->categorize($content); + + print "<h3>" . __("Classifier result") . "</h3>"; + + print "<table>"; + print "<tr><th>Category</th><th>Probability</th></tr>"; + + foreach ($result as $k => $v) { + print "<tr>"; + print "<td>" . $categories[$k]["category"] . "</td>"; + print "<td>" . $v . "</td>"; + + print "</tr>"; + } + + print "</table>"; + + } else { + print_error("Article not found"); + } + + print "<div align='center'>"; + + print "<button dojoType=\"dijit.form.Button\" onclick=\"return dijit.byId('bayesShowDlg').hide()\">". + __('Close this window')."</button>"; + + print "</div>"; + + } + function api_version() { return 2; } |