From bec69f702ba8ecdc9a77db34ff94b7e55879be59 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Wed, 11 Apr 2018 10:51:44 +0800 Subject: Add topic support (#3711) * add topic models and unit tests * fix comments * fix comment * add the UI to show or add topics for a repo * show topics on repositories list * fix test * don't show manage topics link when no permission * use green basic as topic label * fix topic label color * remove trace content * remove debug function --- public/js/index.js | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) (limited to 'public/js') diff --git a/public/js/index.js b/public/js/index.js index 8b3d7c3d7d..c1ea85fc7d 100644 --- a/public/js/index.js +++ b/public/js/index.js @@ -1591,6 +1591,7 @@ $(document).ready(function () { initTeamSettings(); initCtrlEnterSubmit(); initNavbarContentToggle(); + initTopicbar(); // Repo clone url. if ($('#repo-clone-url').length > 0) { @@ -2122,3 +2123,74 @@ function initNavbarContentToggle() { } }); } + +function initTopicbar() { + var mgrBtn = $("#manage_topic") + var editDiv = $("#topic_edit") + var viewDiv = $("#repo-topic") + var saveBtn = $("#save_topic") + + mgrBtn.click(function() { + viewDiv.hide(); + editDiv.show(); + }) + + saveBtn.click(function() { + var topics = $("input[name=topics]").val(); + + $.post($(this).data('link'), { + "_csrf": csrf, + "topics": topics + }).success(function(res){ + if (res["status"] != "ok") { + alert(res.message); + } else { + viewDiv.children(".topic").remove(); + var topicArray = topics.split(","); + var last = viewDiv.children("a").last(); + for (var i=0;i < topicArray.length; i++) { + $('
'+topicArray[i]+'
').insertBefore(last) + } + } + }).done(function() { + editDiv.hide(); + viewDiv.show(); + }) + }) + + $('#topic_edit .dropdown').dropdown({ + allowAdditions: true, + fields: { name: "description", value: "data-value" }, + saveRemoteData: false, + label: { + transition : 'horizontal flip', + duration : 200, + variation : false, + blue : true, + basic: true, + }, + className: { + label: 'ui green basic label' + }, + apiSettings: { + url: suburl + '/api/v1/topics/search?q={query}', + throttle: 500, + cache: false, + onResponse: function(res) { + var formattedResponse = { + success: false, + results: new Array(), + }; + + if (res.topics) { + formattedResponse.success = true; + for (var i=0;i < res.topics.length;i++) { + formattedResponse.results.push({"description": res.topics[i].Name, "data-value":res.topics[i].Name}) + } + } + + return formattedResponse; + }, + }, + }); +} \ No newline at end of file -- cgit v1.2.3