Browse Source

增加用户搜索结果

Signed-off-by: zouap <zouap@pcl.ac.cn>
tags/v1.22.3.2^2
zouap 4 years ago
parent
commit
fe93d5dfa5
3 changed files with 85 additions and 16 deletions
  1. +3
    -2
      models/dbsql/dataset_foreigntable_for_es.sql
  2. +63
    -0
      public/home/search.js
  3. +19
    -14
      routers/search.go

+ 3
- 2
models/dbsql/dataset_foreigntable_for_es.sql View File

@@ -38,7 +38,7 @@ DELETE FROM public.dataset_es;
user_id,
repo_id,
created_unix,
updated_unix,file_name)
updated_unix,file_name,file_type)
SELECT
b.id,
b.title,
@@ -128,7 +128,8 @@ $def$
title=NEW.title,
category=NEW.category,
download_times=NEW.download_times,
file_name=(select array_to_string(array_agg(name order by created_unix desc),',') from public.attachment where dataset_id=NEW.id)
file_name=(select array_to_string(array_agg(name order by created_unix desc),',') from public.attachment where dataset_id=NEW.id),
where id=NEW.id;
return new;
END


+ 63
- 0
public/home/search.js View File

@@ -139,6 +139,36 @@ function displayDataSetResult(page,jsonResult,onlyReturnNum,keyword){
$('#keyword_desc').text(keyword);
$('#obj_desc').text("数据集");
$('#child_total').text(total);

var sortHtml = "";
sortHtml +="<a class=\"item\" href=\"javascript:searchItem(4,41);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_1\">最近更新</a>";
sortHtml +="<a class=\"item\" href=\"javascript:searchItem(4,42);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_2\">名称自然序</a>";
document.getElementById("sort_type").innerHTML=sortHtml;

var html = "";
var currentTime = new Date().getTime();
for(var i = 0; i < data.length;i++){
var recordMap = data[i];
html += "<div class=\"item\">";
html += " <div class=\"content\">";
html += " <div class=\"ui right metas\">" ;
html += " <span class=\"text grey\"><i class=\"ri-fire-line\"></i> " +recordMap["download_times"] + "</span> ";
html +=" </div>";
html += " <div class=\"ui header\">";
html += " <a class=\"name\" href=\"/" +recordMap["repoUrl"] +"datasets?type=0\">" + recordMap["repoUrl"] + "</a>";
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>";
html +=" </div>";
html += " <div class=\"description\">";
html += " <p class=\"has-emoji\"> " + recordMap["description"] + "</p>";
html += " <p class=\"has-emoji\"> " + recordMap["file_name"] + "</p>";
html +=" <p class=\"time\">";
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>";
html +=" </p>";
html +=" </div>";
html +=" </div>";
html +="</div>";
}
document.getElementById("child_search_item").innerHTML=html;
}
}

@@ -151,6 +181,39 @@ function displayOrgResult(page,jsonResult,onlyReturnNum,keyword){
$('#keyword_desc').text(keyword);
$('#obj_desc').text("组织");
$('#child_total').text(total);

var sortHtml = "";
sortHtml +="<a class=\"item\" href=\"javascript:searchItem(4,41);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_1\">最近更新</a>";
sortHtml +="<a class=\"item\" href=\"javascript:searchItem(4,42);\" tabindex=\"-1\" role=\"menuitem\" id=\"menuitem_2\">名称自然序</a>";
document.getElementById("sort_type").innerHTML=sortHtml;

var html = "";
var currentTime = new Date().getTime();
for(var i = 0; i < data.length;i++){
var recordMap = data[i];
html += "<div class=\"item members\">";
html += "<img class=\"ui avatar image\" src=\"" + recordMap["avatar"] + "\"></img>";
html += " <div class=\"content\">";
html += " <div class=\"ui header\">";
html += " <a class=\"name\" href=\"/" + recordMap["repoUrl"] +"\">" + recordMap["name"] + "</a>";
html +=" </div>";
html += " <div class=\"description\">";
html += " <p class=\"has-emoji\"> " + recordMap["description"] + "</p>";
html +=" <p class=\"has-emoji\">";
html +=" <i class=\"ri-map-pin-2-line\"></i> " + recordMap["location"];
html +=" <span class=\"am-ml-10\"></span>";
if(!isEmpty(recordMap["website"]) && recordMap["website"] != "null"){
html +=" <i class=\"ri-links-line\"></i>" + "<a href=\""+ recordMap["website"] + "\" target=\"_blank\">" + recordMap["website"] + "</a>";
}
html +=" <i class=\"ri-time-line am-ml-10\"></i> 加入于 ";
var userAddDate = new Date(recordMap["created_unix"]*1000);
html += monthDisplay[userAddDate.getMonth()] + " " + userAddDate.getDay() + " " + userAddDate.getFullYear();
html +=" </p>";
html +=" </div>";
html +=" </div>";
html +="</div>";
}
document.getElementById("child_search_item").innerHTML=html;
}
}
var monthDisplay=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Spt","Oct","Nov","Dec");


+ 19
- 14
routers/search.go View File

@@ -437,6 +437,7 @@ func makeDatasetResult(sRes *elastic.SearchResult, Key string, OnlyReturnNum boo
record["avatar"] = user.RelAvatarLink()
}
}
setRepoInfo(recordSource, record)
record["title"] = getLabelValue("title", recordSource, hit.Highlight)
record["category"] = getLabelValue("category", recordSource, hit.Highlight)
if recordSource["description"] != nil {
@@ -520,6 +521,23 @@ func queryHighlight(names ...string) *elastic.Highlight {
return re
}

func setRepoInfo(recordSource map[string]interface{}, record map[string]interface{}) {
repoIdstr := recordSource["repo_id"].(string)
repoId, cerr := strconv.ParseInt(repoIdstr, 10, 64)
if cerr == nil {
repo, errRepo := models.GetRepositoryByID(repoId)
if errRepo == nil {
log.Info("repo_url=" + repo.FullName())
record["repoUrl"] = repo.FullName()
record["avatar"] = repo.RelAvatarLink()
} else {
log.Info("repo err=" + errRepo.Error())
}
} else {
log.Info("parse int err=" + cerr.Error())
}
}

func makeIssueResult(sRes *elastic.SearchResult, Key string, OnlyReturnNum bool) *SearchRes {
total := sRes.Hits.TotalHits.Value
result := make([]map[string]interface{}, 0)
@@ -536,20 +554,7 @@ func makeIssueResult(sRes *elastic.SearchResult, Key string, OnlyReturnNum bool)
record["id"] = hit.Id
record["repo_id"] = recordSource["repo_id"]
log.Info("recordSource[\"repo_id\"]=" + fmt.Sprint(recordSource["repo_id"]))
repoIdstr := recordSource["repo_id"].(string)
repoId, cerr := strconv.ParseInt(repoIdstr, 10, 64)
if cerr == nil {
repo, errRepo := models.GetRepositoryByID(repoId)
if errRepo == nil {
log.Info("repo_url=" + repo.FullName())
record["repoUrl"] = repo.FullName()
record["avatar"] = repo.RelAvatarLink()
} else {
log.Info("repo err=" + errRepo.Error())
}
} else {
log.Info("parse int err=" + cerr.Error())
}
setRepoInfo(recordSource, record)
record["name"] = getLabelValue("name", recordSource, hit.Highlight)
if recordSource["content"] != nil {
desc := getLabelValue("content", recordSource, hit.Highlight)


Loading…
Cancel
Save