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.0 kB

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