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 30 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750
  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. var itemType={
  25. "1":"repository",
  26. "2":"issue",
  27. "3":"user",
  28. "4":"org",
  29. "5":"dataset",
  30. "6":"pr"
  31. };
  32. var sortBy={
  33. "10":"default",
  34. "11":"updated_unix.keyword",
  35. "12":"num_watches",
  36. "13":"num_stars",
  37. "14":"num_forks",
  38. "20":"default",
  39. "21":"updated_unix.keyword",
  40. "30":"default",
  41. "31":"created_unix.keyword",
  42. "32":"name.keyword",
  43. "40":"default",
  44. "41":"name.keyword",
  45. "42":"name.keyword",
  46. "43":"created_unix.keyword",
  47. "44":"created_unix.keyword",
  48. "50":"default",
  49. "51":"download_times.keyword",
  50. "60":"default",
  51. "61":"updated_unix.keyword"
  52. };
  53. var sortAscending={
  54. "10":"false",
  55. "11":"false",
  56. "12":"false",
  57. "13":"false",
  58. "14":"false",
  59. "20":"false",
  60. "21":"false",
  61. "30":"false",
  62. "31":"false",
  63. "32":"true",
  64. "40":"false",
  65. "41":"false",
  66. "42":"true",
  67. "43":"false",
  68. "44":"true",
  69. "50":"false",
  70. "51":"false",
  71. "60":"false",
  72. "61":"false"
  73. };
  74. var currentPage = 1;
  75. var pageSize = 15;
  76. var currentSearchTableName ="";
  77. var currentSearchKeyword="";
  78. var currentSearchSortBy="";
  79. var currentSearchAscending=false;
  80. var OnlySearchLabel=false;
  81. var startIndex =1;
  82. var endIndex = 5;
  83. var totalPage = 1;
  84. var totalNum = 0;
  85. var privateTotal = 0;
  86. function initPageInfo(){
  87. currentPage = 1;
  88. startIndex =1;
  89. endIndex = 5;
  90. }
  91. function searchItem(type,sortType){
  92. console.log("enter item 2.");
  93. currentSearchKeyword = document.getElementById("keyword_input").value;
  94. if(!isEmpty(currentSearchKeyword)){
  95. initPageInfo();
  96. currentSearchTableName = itemType[type];
  97. currentSearchSortBy = sortBy[sortType];
  98. currentSearchAscending = sortAscending[sortType];
  99. OnlySearchLabel =false;
  100. page(currentPage);
  101. }
  102. }
  103. function search(){
  104. console.log("enter here 1.");
  105. currentSearchKeyword = document.getElementById("keyword_input").value;
  106. initPageInfo();
  107. if(!isEmpty(currentSearchKeyword)){
  108. currentSearchTableName = "repository";
  109. currentSearchSortBy = sortBy[10];
  110. currentSearchAscending = false;
  111. OnlySearchLabel =false;
  112. page(currentPage);
  113. doSearch("issue",currentSearchKeyword,1,pageSize,true,"",false);
  114. doSearch("user",currentSearchKeyword,1,pageSize,true,"",false);
  115. doSearch("org",currentSearchKeyword,1,pageSize,true,"",false);
  116. doSearch("dataset",currentSearchKeyword,1,pageSize,true,"",false);
  117. doSearch("pr",currentSearchKeyword,1,pageSize,true,"",false);
  118. }
  119. }
  120. function initDiv(isSearchLabel=false){
  121. if(isSearchLabel){
  122. document.getElementById("search_div").style.display="none";
  123. document.getElementById("search_label_div").style.display="block";
  124. document.getElementById("dataset_item").style.display="none";
  125. document.getElementById("issue_item").style.display="none";
  126. document.getElementById("pr_item").style.display="none";
  127. document.getElementById("user_item").style.display="none";
  128. document.getElementById("org_item").style.display="none";
  129. document.getElementById("find_id").innerHTML="";
  130. }else{
  131. document.getElementById("search_div").style.display="block";
  132. document.getElementById("search_label_div").style.display="none";
  133. document.getElementById("dataset_item").style.display="block";
  134. document.getElementById("issue_item").style.display="block";
  135. document.getElementById("pr_item").style.display="block";
  136. document.getElementById("user_item").style.display="block";
  137. document.getElementById("org_item").style.display="block";
  138. document.getElementById("find_id").innerHTML="找到";
  139. }
  140. }
  141. function searchLabel(tableName,keyword,sortBy="",ascending=false){
  142. console.log("enter label search.");
  143. initDiv(true);
  144. //document.getElementById("search_div").style.display="none";
  145. //document.getElementById("search_label_div").style.display="block";
  146. document.getElementById("search_label_div").innerHTML="<p class=\"searchlabel\">#" + keyword + "</p>";
  147. currentSearchKeyword = keyword;
  148. initPageInfo();
  149. currentSearchTableName = tableName;
  150. currentSearchSortBy = sortBy;
  151. currentSearchAscending = ascending;
  152. OnlySearchLabel =true;
  153. page(currentPage);
  154. }
  155. function doSearch(tableName,keyword,page,pageSize=15,onlyReturnNum=true,sortBy="",OnlySearchLabel=false){
  156. $.ajax({
  157. type:"GET",
  158. url:"/all/dosearch/",
  159. headers: {
  160. authorization:token,
  161. },
  162. dataType:"json",
  163. data:{
  164. 'TableName': tableName,
  165. 'Key': keyword,
  166. 'Page': page,
  167. 'PageSize': pageSize,
  168. 'OnlyReturnNum':onlyReturnNum,
  169. 'SortBy':sortBy,
  170. 'OnlySearchLabel':OnlySearchLabel,
  171. 'Ascending':currentSearchAscending,
  172. 'WebTotal':totalNum,
  173. 'PrivateTotal':privateTotal
  174. },
  175. async:true,
  176. success:function(json){
  177. console.log("tableName=" + tableName);
  178. console.log(json);
  179. displayResult(tableName,page,json,onlyReturnNum,keyword);
  180. },
  181. error:function(response) {
  182. console.log(response);
  183. }
  184. });
  185. }
  186. function displayResult(tableName,page,jsonResult,onlyReturnNum,keyword){
  187. if(tableName == "repository") {
  188. displayRepoResult(page,jsonResult,onlyReturnNum,keyword);
  189. } else if (tableName == "issue") {
  190. displayIssueResult(page,jsonResult,onlyReturnNum,keyword);
  191. } else if (tableName == "user") {
  192. displayUserResult(page,jsonResult,onlyReturnNum,keyword);
  193. } else if (tableName == "org") {
  194. displayOrgResult(page,jsonResult,onlyReturnNum,keyword);
  195. } else if (tableName == "dataset") {
  196. displayDataSetResult(page,jsonResult,onlyReturnNum,keyword);
  197. } else if (tableName == "pr") {
  198. displayPrResult(page,jsonResult,onlyReturnNum,keyword);
  199. }
  200. if(!onlyReturnNum){
  201. console.log("set total num." + tableName);
  202. totalPage =Math.ceil(jsonResult.Total/pageSize);
  203. totalNum = jsonResult.Total;
  204. privateTotal = jsonResult.PrivateTotal;
  205. setPage(page);
  206. }
  207. }
  208. function displayPrResult(page,jsonResult,onlyReturnNum,keyword){
  209. var data = jsonResult.Result;
  210. var total = jsonResult.Total;
  211. $('#pr_total').text(total);
  212. if(!onlyReturnNum){
  213. setActivate("pr_item");
  214. $('#keyword_desc').text(keyword);
  215. $('#obj_desc').text("合并请求");
  216. $('#child_total').text(total);
  217. setIssueOrPrInnerHtml(data,"pulls");
  218. }
  219. }
  220. var categoryDesc={
  221. "computer_vision":"计算机视觉",
  222. "natural_language_processing":"自然语言处理",
  223. "speech_processing":"语音处理",
  224. "computer_vision_natural_language_processing":"计算机视觉、自然语言处理"
  225. };
  226. var taskDesc={
  227. "machine_translation":"机器翻译",
  228. "question_answering_system":"问答系统",
  229. "information_retrieval":"信息检索",
  230. "knowledge_graph":"知识图谱",
  231. "text_annotation":"文本标注",
  232. "text_categorization":"文本分类",
  233. "emotion_analysis":"情感分析",
  234. "language_modeling":"语言建模",
  235. "speech_recognition":"语音识别",
  236. "automatic_digest":"自动文摘",
  237. "information_extraction":"信息抽取",
  238. "description_generation":"说明生成",
  239. "image_classification":"图像分类",
  240. "face_recognition":"人脸识别",
  241. "image_search":"图像搜索",
  242. "target_detection":"目标检测",
  243. "image_description_generation":"图像描述生成",
  244. "vehicle_license_plate_recognition":"车辆车牌识别",
  245. "medical_image_analysis":"医学图像分析",
  246. "unmanned":"无人驾驶",
  247. "unmanned_security":"无人安防",
  248. "drone":"无人机",
  249. "vr_ar":"VR/AR",
  250. "2_d_vision":"2-D视觉",
  251. "2_5_d_vision":"2.5-D视觉",
  252. "3_d_reconstruction":"3D重构",
  253. "image_processing":"图像处理",
  254. "video_processing":"视频处理",
  255. "visual_input_system":"视觉输入系统",
  256. "speech_coding":"语音编码",
  257. "speech_enhancement":"语音增强",
  258. "speech_recognition":"语音识别",
  259. "speech_synthesis":"语音合成"
  260. };
  261. function getCategoryDesc(key){
  262. var re = categoryDesc[key];
  263. if(isEmpty(re)){
  264. return key;
  265. }
  266. return re;
  267. }
  268. function getTaskDesc(key){
  269. var re = taskDesc[key];
  270. if(isEmpty(re)){
  271. return key;
  272. }
  273. return re;
  274. }
  275. function displayDataSetResult(page,jsonResult,onlyReturnNum,keyword){
  276. var data = jsonResult.Result;
  277. var total = jsonResult.Total;
  278. $('#dataset_total').text(total);
  279. if(!onlyReturnNum){
  280. setActivate("dataset_item");
  281. $('#keyword_desc').text(keyword);
  282. $('#obj_desc').text("数据集");
  283. $('#child_total').text(total);
  284. var sortHtml = "";
  285. sortHtml +="<a class=\"item\" href=\"javascript:searchItem(5,50);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_1\">最佳匹配</a>";
  286. sortHtml +="<a class=\"item\" href=\"javascript:searchItem(5,51);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_1\">下载次数</a>";
  287. document.getElementById("sort_type").innerHTML=sortHtml;
  288. var html = "";
  289. var currentTime = new Date().getTime();
  290. for(var i = 0; i < data.length;i++){
  291. var recordMap = data[i];
  292. html += "<div class=\"item\">";
  293. html += " <div class=\"content\">";
  294. html += " <div class=\"ui right metas\">" ;
  295. if(!isEmpty(recordMap["category"])){
  296. html += " <span class=\"text grey\"><svg class=\"svg octicon-tasklist\" width=\"16\" height=\"16\" aria-hidden=\"true\"><use xlink:href=\"#octicon-tasklist\" /></svg> " + getCategoryDesc(recordMap["category"]) + "</span>";
  297. }
  298. if(!isEmpty(recordMap["task"])){
  299. html += " <span class=\"text grey\"><svg class=\"svg octicon-tag\" width=\"16\" height=\"16\" aria-hidden=\"true\"><use xlink:href=\"#octicon-tag\" /></svg>" + getTaskDesc(recordMap["task"]) + "</span>";
  300. }
  301. html += " <span class=\"text grey\"><i class=\"ri-fire-line\"></i> " +recordMap["download_times"] + "</span> ";
  302. html +=" </div>";
  303. html += " <div class=\"ui header\">";
  304. html += " <a class=\"name\" href=\"/" +recordMap["repoUrl"] +"/datasets?type=0\">" + recordMap["title"] + "</a>";
  305. 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>";
  306. html +=" </div>";
  307. html += " <div class=\"description\">";
  308. html += " <p class=\"has-emoji\"> " + recordMap["description"] + "</p>";
  309. if(!isEmpty(recordMap["file_name"])){
  310. html += " <p class=\"has-emoji\"> " + recordMap["file_name"] + "</p>";
  311. }
  312. html +=" <p class=\"time\">";
  313. html +=" <span class=\"am-ml-10\"></span> 最后更新于 <span class=\"time-since poping up\" title=\"\" data-content=\"\" data-variation=\"inverted tiny\">" + getTime(recordMap["created_unix"],currentTime) +"</span>";
  314. html +=" </p>";
  315. html +=" </div>";
  316. html +=" </div>";
  317. html +="</div>";
  318. }
  319. document.getElementById("child_search_item").innerHTML=html;
  320. }
  321. }
  322. function displayOrgResult(page,jsonResult,onlyReturnNum,keyword){
  323. var data = jsonResult.Result;
  324. var total = jsonResult.Total;
  325. $('#org_total').text(total);
  326. if(!onlyReturnNum){
  327. setActivate("org_item");
  328. $('#keyword_desc').text(keyword);
  329. $('#obj_desc').text("组织");
  330. $('#child_total').text(total);
  331. var sortHtml = "";
  332. sortHtml +="<a class=\"item\" href=\"javascript:searchItem(4,40);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_1\">最佳匹配</a>";
  333. sortHtml +="<a class=\"item\" href=\"javascript:searchItem(4,41);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_1\">字母顺序排序</a>";
  334. sortHtml +="<a class=\"item\" href=\"javascript:searchItem(4,42);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_2\">字母逆序排序</a>";
  335. sortHtml +="<a class=\"item\" href=\"javascript:searchItem(4,43);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_2\">最近创建</a>";
  336. sortHtml +="<a class=\"item\" href=\"javascript:searchItem(4,44);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_2\">最早创建</a>";
  337. document.getElementById("sort_type").innerHTML=sortHtml;
  338. var html = "";
  339. var currentTime = new Date().getTime();
  340. for(var i = 0; i < data.length;i++){
  341. var recordMap = data[i];
  342. html += "<div class=\"item members\">";
  343. html += "<img class=\"ui avatar image\" src=\"" + recordMap["avatar"] + "\"></img>";
  344. html += " <div class=\"content\">";
  345. html += " <div class=\"ui header\">";
  346. html += " <a class=\"name\" href=\"/" + recordMap["real_name"] +"\">" + recordMap["name"] + "</a>";
  347. html +=" </div>";
  348. html += " <div class=\"description\">";
  349. html += " <p class=\"has-emoji\"> " + recordMap["description"] + "</p>";
  350. html +=" <p class=\"has-emoji\">";
  351. if(!isEmpty(recordMap["location"]) && recordMap["location"] != "null"){
  352. html +=" <i class=\"ri-map-pin-2-line\"></i> " + recordMap["location"];
  353. }
  354. html +=" <span class=\"am-ml-10\"></span>";
  355. if(!isEmpty(recordMap["website"]) && recordMap["website"] != "null"){
  356. html +=" <i class=\"ri-links-line\"></i>" + "<a href=\""+ recordMap["website"] + "\" target=\"_blank\">" + recordMap["website"] + "</a>";
  357. }
  358. html +=" <i class=\"ri-time-line am-ml-10\"></i> 加入于 ";
  359. var userAddDate = new Date(recordMap["created_unix"]*1000);
  360. html += monthDisplay[userAddDate.getMonth()] + " " + userAddDate.getDay() + " " + userAddDate.getFullYear();
  361. html +=" </p>";
  362. html +=" </div>";
  363. html +=" </div>";
  364. html +="</div>";
  365. }
  366. document.getElementById("child_search_item").innerHTML=html;
  367. }
  368. }
  369. var monthDisplay=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Spt","Oct","Nov","Dec");
  370. function displayUserResult(page,jsonResult,onlyReturnNum,keyword){
  371. var data = jsonResult.Result;
  372. var total = jsonResult.Total;
  373. $('#user_total').text(total);
  374. if(!onlyReturnNum){
  375. setActivate("user_item");
  376. $('#keyword_desc').text(keyword);
  377. $('#obj_desc').text("用户");
  378. $('#child_total').text(total);
  379. var sortHtml = "";//equal user sort by
  380. sortHtml +="<a class=\"item\" href=\"javascript:searchItem(4,40);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_1\">最佳匹配</a>";
  381. sortHtml +="<a class=\"item\" href=\"javascript:searchItem(4,41);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_1\">字母顺序排序</a>";
  382. sortHtml +="<a class=\"item\" href=\"javascript:searchItem(4,42);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_2\">字母逆序排序</a>";
  383. sortHtml +="<a class=\"item\" href=\"javascript:searchItem(4,43);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_2\">最近创建</a>";
  384. sortHtml +="<a class=\"item\" href=\"javascript:searchItem(4,44);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_2\">最早创建</a>";
  385. document.getElementById("sort_type").innerHTML=sortHtml;
  386. var html = "";
  387. var currentTime = new Date().getTime();
  388. for(var i = 0; i < data.length;i++){
  389. var recordMap = data[i];
  390. html += "<div class=\"item members\">";
  391. html += "<img class=\"ui avatar image\" src=\"" + recordMap["avatar"] + "\"></img>";
  392. html += " <div class=\"content\">";
  393. html += " <div class=\"ui header\">";
  394. html += " <a class=\"name\" href=\"/" + recordMap["real_name"] +"\">" + recordMap["name"] + "&nbsp;&nbsp;" + recordMap["full_name"] + "</a>";
  395. html +=" </div>";
  396. html += " <div class=\"description\">";
  397. html += " <p class=\"has-emoji\"> " + recordMap["description"] + "</p>";
  398. html +=" <p class=\"has-emoji\">";
  399. html +=" <i class=\"ri-mail-line\"></i>" + recordMap["email"];
  400. html +=" <i class=\"ri-time-line am-ml-10\"></i> 加入于 ";
  401. var userAddDate = new Date(recordMap["created_unix"]*1000);
  402. html += monthDisplay[userAddDate.getMonth()] + " " + userAddDate.getDay() + " " + userAddDate.getFullYear();
  403. html +=" </p>";
  404. html +=" </div>";
  405. html +=" </div>";
  406. html +="</div>";
  407. }
  408. document.getElementById("child_search_item").innerHTML=html;
  409. }
  410. }
  411. function setIssueOrPrInnerHtml(data,path){
  412. var sortHtml = "";
  413. sortHtml +="<a class=\"item\" href=\"javascript:searchItem(2,20);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_1\">最佳匹配</a>";
  414. sortHtml +="<a class=\"item\" href=\"javascript:searchItem(2,21);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_1\">最近更新</a>";
  415. document.getElementById("sort_type").innerHTML=sortHtml;
  416. var html = "";
  417. var currentTime = new Date().getTime();
  418. for(var i = 0; i < data.length;i++){
  419. var recordMap = data[i];
  420. html += "<div class=\"item\">";
  421. html += " <div class=\"content\">";
  422. html += " <div class=\"ui header\">";
  423. html += " <a class=\"name\" \"/" + recordMap["repoUrl"] +"/" + path + "/" + recordMap["index"] + "\">" + recordMap["name"] + "</a>";
  424. html +=" </div>";
  425. html += " <div class=\"description\">";
  426. html += " <p class=\"has-emoji\"> " + recordMap["content"] + "</p>";
  427. html +=" <p class=\"time\">";
  428. html +=" <i class=\"ri-code-box-line\"></i>";
  429. html +=" <a class=\"am-text grey\" href=\"/" + recordMap["repoUrl"] +"/" + path + "/" + recordMap["index"] + "\"> " + recordMap["repoUrl"] +"#" + recordMap["index"] + "</a>";
  430. html +=" <i class=\"ri-information-line am-ml-10\"></i> ";
  431. if(isEmpty(recordMap["is_closed"]) || recordMap["is_closed"]=="f"){
  432. html += "关闭";
  433. }else{
  434. html += "开启中";
  435. }
  436. html +=" <span class=\"am-ml-10\"></span> 最后更新于 <span class=\"time-since poping up\" title=\"\" data-content=\"\" data-variation=\"inverted tiny\">" + getTime(recordMap["updated_unix"],currentTime) +"</span>";
  437. html +=" </p>";
  438. html +=" </div>";
  439. html +=" </div>";
  440. html +="</div>";
  441. }
  442. document.getElementById("child_search_item").innerHTML=html;
  443. }
  444. function displayIssueResult(page,jsonResult,onlyReturnNum,keyword){
  445. var data = jsonResult.Result;
  446. var total = jsonResult.Total;
  447. $('#issue_total').text(total);
  448. if(!onlyReturnNum){
  449. setActivate("issue_item");
  450. $('#keyword_desc').text(keyword);
  451. $('#obj_desc').text("任务");
  452. $('#child_total').text(total);
  453. setIssueOrPrInnerHtml(data,"issues");
  454. }
  455. }
  456. function setActivate(name){
  457. $('#repo_item').removeClass("active");
  458. $('#user_item').removeClass("active");
  459. $('#issue_item').removeClass("active");
  460. $('#dataset_item').removeClass("active");
  461. $('#org_item').removeClass("active");
  462. $('#pr_item').removeClass("active");
  463. var tmp = "#" + name;
  464. $(tmp).addClass("active");
  465. }
  466. function displayRepoResult(page,jsonResult,onlyReturnNum,keyword){
  467. var data = jsonResult.Result;
  468. var total = jsonResult.Total;
  469. $('#repo_total').text(total);
  470. if(!onlyReturnNum){
  471. setActivate("repo_item");
  472. $('#keyword_desc').text(keyword);
  473. $('#obj_desc').text("项目");
  474. $('#child_total').text(total);
  475. var sortHtml = "";
  476. sortHtml +="<a class=\"item\" href=\"javascript:searchItem(1,10);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_1\">最佳匹配</a>";
  477. sortHtml +="<a class=\"item\" href=\"javascript:searchItem(1,11);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_1\">最近更新</a>";
  478. sortHtml +="<a class=\"item\" href=\"javascript:searchItem(1,12);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_1\">关注数</a>";
  479. sortHtml +="<a class=\"item\" href=\"javascript:searchItem(1,13);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_1\">点赞数</a>";
  480. sortHtml +="<a class=\"item\" href=\"javascript:searchItem(1,14);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_1\">Fork数</a>";
  481. document.getElementById("sort_type").innerHTML=sortHtml;
  482. var html = "";
  483. var currentTime = new Date().getTime();
  484. for(var i = 0; i < data.length;i++){
  485. var recordMap = data[i];
  486. html += "<div class=\"item\">";
  487. if(!isEmpty(recordMap['avatar'])){
  488. html += "<img class=\"ui avatar image\" src=\"" + recordMap['avatar'] + "\">";
  489. }
  490. html += " <div class=\"content\">";
  491. html += " <div class=\"ui header\">";
  492. html += " <a class=\"name\" href=\"/" + recordMap["owner_name"] + "/" + recordMap["real_name"] +"\"> <span>" + recordMap["owner_name"] +"</span> <span>/</span> <strong>" + recordMap["alias"] + "</strong></a>";
  493. if(recordMap["is_private"]){
  494. html +=" <span class=\"middle text gold\"><svg class=\"svg octicon-lock\" width=\"16\" height=\"16\" aria-hidden=\"true\"><use xlink:href=\"#octicon-lock\" /></svg></span>";
  495. }
  496. html +=" </div>";
  497. html += " <div class=\"description\">";
  498. html += " <p class=\"has-emoji\"> " + recordMap["description"] + "</p>";
  499. html += " <div class=\"ui tags\">";
  500. if(!isEmpty(recordMap["topics"]) && recordMap["topics"] !="null"){
  501. for(var j = 0; j < recordMap["topics"].length;j++){
  502. //function searchLabel(tableName,keyword,sortBy="",ascending=false)
  503. html +=" <a href=\"javascript:searchLabel('repository','" + recordMap["topics"][j] + "','updated_unix.keyword',false);\"><div class=\"ui small label topic\">"+ recordMap["hightTopics"][j] + "</div></a>";
  504. }
  505. }
  506. html +=" </div>";
  507. html +=" <p class=\"time\">";
  508. html +=" <i class=\"icon fa-eye\">" +recordMap["num_watches"] + "</i>&nbsp;&nbsp;<i class=\"ri-star-line\"></i>" + recordMap["num_stars"] + "&nbsp;&nbsp;<i class=\"ri-git-branch-line am-ml-10\"></i>" + recordMap["num_forks"] +"&nbsp;&nbsp;";
  509. html +="&nbsp;&nbsp;&nbsp;&nbsp;最后更新于 <span class=\"time-since poping up\" title=\"\" data-content=\"\" data-variation=\"inverted tiny\">" + getTime(recordMap["updated_unix"],currentTime) +"</span>";
  510. if(!isEmpty(recordMap["lang"])){
  511. html +=" <span class=\"text grey am-ml-10\"><i class=\"color-icon\" style=\"background-color: #3572A5\"></i>" + recordMap["lang"] + "</span>";
  512. }
  513. html +=" </p>";
  514. html +=" </div>";
  515. html +=" </div>";
  516. html +="</div>";
  517. }
  518. document.getElementById("child_search_item").innerHTML=html;
  519. }
  520. }
  521. function getTime(UpdatedUnix,currentTime){
  522. UpdatedUnix = UpdatedUnix;
  523. currentTime = currentTime / 1000;
  524. var timeEscSecond = currentTime - UpdatedUnix;
  525. if( timeEscSecond < 0){
  526. timeEscSecond = 1;
  527. }
  528. console.log("currentTime=" + currentTime + " updateUnix=" + UpdatedUnix);
  529. var hours= Math.floor(timeEscSecond / 3600);
  530. //计算相差分钟数
  531. var leave2 = Math.floor(timeEscSecond % (3600)); //计算小时数后剩余的秒数
  532. var minutes= Math.floor(leave2 / 60);//计算相差分钟数
  533. var leave3=Math.floor(leave2 % 60); //计算分钟数后剩余的秒数
  534. var seconds= leave3;
  535. if(hours == 0 && minutes == 0){
  536. return seconds + getRepoOrOrg(6,isZh);
  537. }else{
  538. if(hours > 0){
  539. if(hours >= 24){
  540. var days = Math.ceil(hours/24)
  541. if (days >= 30){
  542. return Math.ceil(days/30) + getRepoOrOrg(8,isZh);
  543. }else if(days >= 365){
  544. return Math.ceil(days/365) + getRepoOrOrg(9,isZh);
  545. }
  546. return Math.ceil(hours/24) + getRepoOrOrg(7,isZh);
  547. }else{
  548. return hours + getRepoOrOrg(4,isZh);
  549. }
  550. }else{
  551. return minutes + getRepoOrOrg(5,isZh);
  552. }
  553. }
  554. }
  555. function getRepoOrOrg(key,isZhLang){
  556. if(isZhLang){
  557. return repoAndOrgZH[key];
  558. }else{
  559. return repoAndOrgEN[key];
  560. }
  561. }
  562. var repoAndOrgZH={
  563. "1":"项目",
  564. "2":"成员",
  565. "3":"团队",
  566. "4":"小时前",
  567. "5":"分钟前",
  568. "6":"秒前",
  569. "7":"天前",
  570. "8":"月前",
  571. "9":"年前"
  572. };
  573. var repoAndOrgEN={
  574. "1":"repository",
  575. "2":"Members ",
  576. "3":"Teams",
  577. "4":" hours ago",
  578. "5":" minutes ago",
  579. "6":" seconds ago",
  580. "7":" day ago",
  581. "8":" month ago",
  582. "9":" year ago"
  583. };
  584. function page(current){
  585. //function doSearch(tableName,keyword,page,pageSize=15,onlyReturnNum=true,sortBy="",OnlySearchLabel=false){
  586. currentPage=current;
  587. doSearch(currentSearchTableName,currentSearchKeyword,current,pageSize,false,currentSearchSortBy,OnlySearchLabel);
  588. }
  589. function nextPage(){
  590. currentPage = currentPage+1;
  591. console.log("currentPage=" + currentPage);
  592. if(currentPage >= endIndex){
  593. startIndex=startIndex+1;
  594. endIndex = endIndex +1;
  595. }
  596. page(currentPage);
  597. }
  598. function prePage(){
  599. console.log("currentPage=" + currentPage);
  600. if(currentPage > 1){
  601. currentPage = currentPage-1;
  602. if(currentPage <= startIndex && startIndex > 1){
  603. startIndex = startIndex -1;
  604. endIndex = endIndex - 1;
  605. }
  606. console.log("currentPage=" + (currentPage));
  607. page(currentPage);
  608. }
  609. }
  610. function goPage(){
  611. var goNum = $('#inputpage').val();
  612. if (goNum<=0){
  613. alert("请输入大于0的数值");
  614. }
  615. else if(goNum<=totalPage){
  616. page(goNum);
  617. }
  618. else{
  619. alert("不能超出总页数!");
  620. }
  621. }
  622. function setPage(currentPage){
  623. console.log("totalPage=" + totalPage);
  624. var html ="";
  625. console.log("currentPage=" + currentPage);
  626. console.log("privateTotal=" + privateTotal);
  627. if(totalPage==0){
  628. return;
  629. }
  630. html += "<span class=\"item\">共 " + totalNum + " 条</span>"
  631. if(currentPage > 1){
  632. html += "<a class=\"item navigation\" href=\"javascript:page(1)\"><span class=\"navigation_label\">首页</span></a>";
  633. html += "<a class=\"item navigation\" href=\"javascript:prePage()\"><i class=\"left arrow icon\"></i></a>";
  634. }else{
  635. html += "<a class=\"disabled item navigation\" href=\"javascript:page(1)\"><span class=\"navigation_label\">首页</span></a>";
  636. html += "<a class=\"disabled item navigation\" href=\"javascript:prePage()\"><i class=\"left arrow icon\"></i></a>";
  637. }
  638. for(var i=startIndex; i <= endIndex; i++){
  639. var page_i = i;
  640. if(page_i > totalPage){
  641. break;
  642. }
  643. if( page_i == currentPage){
  644. html += "<a id=\"page_" + page_i+ "\" class=\"active item\" href=\"javascript:page(" + page_i +")\">" + page_i + "</a>";
  645. }else{
  646. html += "<a id=\"page_" + page_i+ "\" class=\"item\" href=\"javascript:page(" + page_i +")\">" + page_i + "</a>";
  647. }
  648. }
  649. if(currentPage >=totalPage){
  650. html += "<a class=\"disabled item navigation\" href=\"javascript:nextPage()\"><i class=\"icon right arrow\"></i></a>";
  651. html += "<a class=\"disabled item navigation\" href=\"javascript:page(" + totalPage + ")\"><span class=\"navigation_label\">末页</span></a>";
  652. }else{
  653. html += "<a class=\"item navigation\" href=\"javascript:nextPage()\"><i class=\"icon right arrow\"></i></a>";
  654. html += "<a class=\"item navigation\" href=\"javascript:page(" + totalPage + ")\"><span class=\"navigation_label\">末页</span></a>";
  655. }
  656. html +="<div class=\"item\"> 前往<div class=\"ui input\"><input id=\"inputpage\" type=\"text\"></div>页</div>";
  657. console.log("html=" + html)
  658. document.getElementById("page_menu").innerHTML=html;
  659. $('#inputpage').on('keypress',function(event){
  660. if(event.keyCode == 13){
  661. goPage();
  662. }
  663. });
  664. }
  665. $('#keyword_input').on('keypress',function(event){
  666. if(event.keyCode == 13){
  667. var keyword = $('#keyword_input').val();
  668. if(!isEmpty(keyword)){
  669. search();
  670. }
  671. }
  672. });
  673. initDiv(false);
  674. document.onreadystatechange = function() {
  675. if (document.readyState === "complete") {
  676. var keyword = $('#keyword_input').val();
  677. if(!isEmpty(keyword)){
  678. search();
  679. }
  680. }
  681. }