You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

search.js 6.2 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. var token;
  2. if(isEmpty(token)){
  3. var meta = $("meta[name=_uid]");
  4. if(!isEmpty(meta)){
  5. token = meta.attr("content");
  6. console.log("token is uid:" + token);
  7. }
  8. }
  9. var html =document.documentElement;
  10. var lang = html.attributes["lang"]
  11. var isZh = true;
  12. if(lang != null && lang.nodeValue =="en-US" ){
  13. console.log("the language is " + lang.nodeValue);
  14. isZh=false;
  15. }else{
  16. console.log("default lang=zh");
  17. }
  18. function isEmpty(str){
  19. if(typeof str == "undefined" || str == null || str == ""){
  20. return true;
  21. }
  22. return false;
  23. }
  24. function search(){
  25. console.log("enter here.");
  26. var keyword = document.getElementById("keyword_input").value;
  27. var page =1;
  28. var pageSize=15;
  29. if(!isEmpty(keyword)){
  30. doSearch("repository",keyword,page,pageSize,false);
  31. doSearch("issue",keyword,page,pageSize,true);
  32. doSearch("user",keyword,page,pageSize,true);
  33. doSearch("org",keyword,page,pageSize,true);
  34. doSearch("dataset",keyword,page,pageSize,true);
  35. doSearch("pr",keyword,page,pageSize,true);
  36. }
  37. }
  38. function doSearch(tableName,keyword,page,pageSize=15,onlyReturnNum=true){
  39. $.ajax({
  40. type:"GET",
  41. url:"/all/dosearch/",
  42. headers: {
  43. authorization:token,
  44. },
  45. dataType:"json",
  46. dataType:"json",
  47. data:{
  48. 'TableName': tableName,
  49. 'Key': keyword,
  50. 'Page': page,
  51. 'PageSize': pageSize,
  52. 'OnlyReturnNum':onlyReturnNum
  53. },
  54. async:true,
  55. success:function(json){
  56. console.log(json);
  57. displayResult(tableName,page,json,onlyReturnNum,keyword);
  58. },
  59. error:function(response) {
  60. console.log(response);
  61. }
  62. });
  63. }
  64. function displayResult(tableName,page,jsonResult,onlyReturnNum,keyword){
  65. if(tableName == "repository") {
  66. displayRepoResult(page,jsonResult,onlyReturnNum,keyword);
  67. } else if (tableName == "issue") {
  68. } else if (tableName == "user") {
  69. } else if (tableName == "org") {
  70. } else if (tableName == "dataset") {
  71. } else if (tableName == "pr") {
  72. }
  73. }
  74. function displayRepoResult(page,jsonResult,onlyReturnNum,keyword){
  75. var data = jsonResult.Result;
  76. var total = jsonResult.Total;
  77. $('#repo_total').text(total);
  78. $('#keyword_desc').text(keyword);
  79. $('#obj_desc').text("项目");
  80. $('#child_total').text(total);
  81. if(!onlyReturnNum){
  82. var html = "";
  83. var currentTime = new Date().getTime();
  84. for(var i = 0; i < data.length;i++){
  85. var recordMap = data[i];
  86. html += "<div class=\"item\">";
  87. if(!isEmpty(recordMap['avatar'])){
  88. html += "<img class=\"ui avatar image\" src=\"" + recordMap['avatar'] + "\">";
  89. }
  90. html += " <div class=\"content\">";
  91. html += " <div class=\"ui header\">";
  92. html += " <a class=\"name\" href=\"/" + record["owner_name"] + "/" + record["name"] +"\"> <span class=\"highlight\">" + record["owner_name"] +"</span> <span>/</span> <strong>" + record["name"] + "</strong></a>";
  93. html +=" <span class=\"middle\"><svg class=\"svg octicon-repo-clone\" width=\"16\" height=\"16\" aria-hidden=\"true\"><use xlink:href=\"#octicon-repo-clone\"></use></svg></span>";
  94. html +=" </div>";
  95. html += " <div class=\"description\">";
  96. html += " <p class=\"has-emoji\"> " + record["description"] + "</p>";
  97. html += " <div class=\"ui tags\">";
  98. if(!isEmpty(record["topics"])){
  99. for(var j = 0; j < record["topics"].length;j++){
  100. html +=" <a href=\"/explore/repos?q=" + record["topics"][j] + "&amp;topic=\"><div class=\"ui small label topic\">"+ record["topics"][j] + "</div></a>";
  101. }
  102. }
  103. html +=" </div>";
  104. html +=" <p class=\"time\">";
  105. html +=" <i class=\"ri-star-line\"></i>" + record["NumStars"] + "<i class=\"ri-git-branch-line am-ml-10\"></i>" + record["NumForks"];
  106. html +=" 最后更新于 <span class=\"time-since poping up\" title=\"\" data-content=\"\" data-variation=\"inverted tiny\">" + getTime(record["updated_unix"],currentTime) +"</span>";
  107. html +=" <span class=\"text grey am-ml-10\"><i class=\"color-icon\" style=\"background-color: #3572A5\"></i>" + record["lang"] + "</span>";
  108. html +=" </p>";
  109. html +=" </div>";
  110. html +=" </div>";
  111. html +="</div>";
  112. }
  113. }
  114. }
  115. function getTime(UpdatedUnix,currentTime){
  116. UpdatedUnix = UpdatedUnix;
  117. currentTime = currentTime / 1000;
  118. var timeEscSecond = currentTime - UpdatedUnix;
  119. if( timeEscSecond < 0){
  120. timeEscSecond = 1;
  121. }
  122. console.log("currentTime=" + currentTime + " updateUnix=" + UpdatedUnix);
  123. var hours= Math.floor(timeEscSecond / 3600);
  124. //计算相差分钟数
  125. var leave2 = Math.floor(timeEscSecond % (3600)); //计算小时数后剩余的秒数
  126. var minutes= Math.floor(leave2 / 60);//计算相差分钟数
  127. var leave3=Math.floor(leave2 % 60); //计算分钟数后剩余的秒数
  128. var seconds= leave3;
  129. if(hours == 0 && minutes == 0){
  130. return seconds + getRepoOrOrg(6,isZh);
  131. }else{
  132. if(hours > 0){
  133. if(hours >= 24){
  134. return Math.ceil(hours/24) + getRepoOrOrg(7,isZh);
  135. }else{
  136. return hours + getRepoOrOrg(4,isZh);
  137. }
  138. }else{
  139. return minutes + getRepoOrOrg(5,isZh);
  140. }
  141. }
  142. }
  143. function getRepoOrOrg(key,isZhLang){
  144. if(isZhLang){
  145. return repoAndOrgZH[key];
  146. }else{
  147. return repoAndOrgEN[key];
  148. }
  149. }
  150. var repoAndOrgZH={
  151. "1":"项目",
  152. "2":"成员",
  153. "3":"团队",
  154. "4":"小时前",
  155. "5":"分钟前",
  156. "6":"秒前",
  157. "7":"天前"
  158. };
  159. var repoAndOrgEN={
  160. "1":"repository",
  161. "2":"Members ",
  162. "3":"Teams",
  163. "4":" hours ago",
  164. "5":" minutes ago",
  165. "6":" seconds ago",
  166. "7":" days ago"
  167. };