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

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