thedesk/app/js/tl/src.js

252 lines
8.2 KiB
JavaScript
Raw Normal View History

2018-01-28 23:22:43 +11:00
//検索
//検索ボックストグル
function searchMenu() {
2019-08-07 13:14:07 +10:00
$("#src-contents").html("");
2019-08-07 00:06:09 +10:00
trend();
$("#left-menu div").removeClass("active");
$("#searchMenu").addClass("active");
$(".menu-content").addClass("hide");
2019-05-19 17:39:30 +10:00
$("#src-box").removeClass("hide");
2019-08-07 13:14:07 +10:00
//$('ul.tabs').tabs('select_tab', 'src-sta');
2018-01-28 23:22:43 +11:00
}
//検索取得
2019-08-30 02:46:19 +10:00
function src(mode, offset) {
2019-09-30 03:21:18 +10:00
if (!offset) {
2019-08-30 02:46:19 +10:00
$("#src-contents").html("");
var add = ""
2019-09-30 03:21:18 +10:00
} else {
2019-08-30 02:46:19 +10:00
var add = "&type=accounts&offset=" + $("#src-accts .cvo").length
}
2019-09-30 03:21:18 +10:00
2018-01-28 23:22:43 +11:00
var q = $("#src").val();
var acct_id = $("#src-acct-sel").val();
2019-05-19 17:39:30 +10:00
if (acct_id == "tootsearch") {
tsAdd(q)
2018-03-18 02:00:53 +11:00
return false;
}
2018-01-28 23:22:43 +11:00
localStorage.setItem("last-use", acct_id);
var domain = localStorage.getItem("domain_" + acct_id);
2019-05-19 17:39:30 +10:00
var at = localStorage.getItem("acct_" + acct_id + "_at");
var m = q.match(/^#(.+)$/);
2019-05-19 17:39:30 +10:00
if (m) { q = m[1]; }
2018-01-28 23:22:43 +11:00
if (user == "--now") {
var user = $('#his-data').attr("user-id");
}
2019-05-19 17:39:30 +10:00
if (!mode) {
2019-08-30 02:46:19 +10:00
var start = "https://" + domain + "/api/v2/search?q=" + q + add
2019-05-19 17:39:30 +10:00
} else {
2018-06-12 01:44:28 +10:00
var start = "https://" + domain + "/api/v1/search?q=" + q
}
2019-05-19 17:39:30 +10:00
console.log("Try to search at " + start)
2018-01-28 23:22:43 +11:00
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
2019-05-19 17:39:30 +10:00
}).then(function (response) {
2018-01-28 23:22:43 +11:00
return response.json();
2019-05-19 17:39:30 +10:00
}).catch(function (error) {
2018-06-12 01:44:28 +10:00
src("v1")
return false;
2019-05-19 17:39:30 +10:00
}).then(function (json) {
console.log(["Search", json]);
2018-06-12 01:44:28 +10:00
//ハッシュタグ
if (json.hashtags[0]) {
var tags = "";
2019-05-19 17:39:30 +10:00
Object.keys(json.hashtags).forEach(function (key4) {
2018-06-12 01:44:28 +10:00
var tag = json.hashtags[key4];
2019-05-19 17:39:30 +10:00
if (mode) {
2018-06-12 01:44:28 +10:00
tags = tags + '<a onclick="tl(\'tag\',\'' + tag + '\',\'' + acct_id +
2019-05-19 17:39:30 +10:00
'\',\'add\')" class="pointer">#' + escapeHTML(tag) + '</a><br> ';
} else {
2019-06-23 19:38:22 +10:00
tags = tags + graphDraw(tag, acct_id);
2018-06-12 01:44:28 +10:00
}
2019-05-19 17:39:30 +10:00
2018-06-12 01:44:28 +10:00
});
$("#src-contents").append("Tags<br>" + tags);
}
2018-01-28 23:22:43 +11:00
//トゥート
if (json.statuses[0]) {
2019-05-19 17:39:30 +10:00
var templete = parse(json.statuses, '', acct_id);
2019-06-23 19:38:22 +10:00
$("#src-contents").append("<br>Mentions<br>" + templete);
2018-01-28 23:22:43 +11:00
}
//アカウント
if (json.accounts[0]) {
2019-05-19 17:39:30 +10:00
var templete = userparse(json.accounts, '', acct_id);
2019-09-30 03:21:18 +10:00
if (!offset) {
2019-08-30 02:46:19 +10:00
$("#src-contents").append("<br>Accounts<div id=\"src-accts\">" + templete + '</div><a onclick="src(false,\'more\')" class="pointer">more...</a>');
2019-09-30 03:21:18 +10:00
} else {
2019-08-30 02:46:19 +10:00
$("#src-accts").append(templete)
}
2019-09-30 03:21:18 +10:00
2018-01-28 23:22:43 +11:00
}
jQuery("time.timeago").timeago();
});
}
2019-05-19 17:39:30 +10:00
function tsAdd(q) {
var add = {
domain: acct_id,
type: "tootsearch",
data: q
};
var multi = localStorage.getItem("column");
var obj = JSON.parse(multi);
localStorage.setItem("card_" + obj.length, "true");
obj.push(add);
var json = JSON.stringify(obj);
localStorage.setItem("column", json);
parseColumn('add');
}
2019-05-19 17:39:30 +10:00
function tootsearch(tlid, q) {
2018-03-18 02:00:53 +11:00
var start = "https://tootsearch.chotto.moe/api/v1/search?from=0&sort=created_at%3Adesc&q=" + q
2019-05-19 17:39:30 +10:00
console.log("Toot srrach at " + start)
$("#notice_" + tlid).text("tootsearch(" + q + ")");
$("#notice_icon_" + tlid).text("search");
2018-03-18 02:00:53 +11:00
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json'
},
2019-05-19 17:39:30 +10:00
}).then(function (response) {
2018-03-18 02:00:53 +11:00
return response.json();
2019-05-19 17:39:30 +10:00
}).catch(function (error) {
2018-03-18 02:00:53 +11:00
todo(error);
console.error(error);
2019-05-19 17:39:30 +10:00
}).then(function (raw) {
var templete = "";
var json = raw.hits.hits;
var max_id = raw["hits"].length;
for (var i = 0; i < json.length; i++) {
var toot = json[i]["_source"];
if (lastid != toot.uri) {
if (toot && toot.account) {
templete = templete + parse([toot], "noauth", null, tlid, 0, [], "tootsearch")
2018-03-18 02:00:53 +11:00
}
}
2019-05-19 17:39:30 +10:00
var lastid = toot.uri;
}
if (!templete) {
templete = lang.lang_details_nodata;
} else {
templete = templete + '<div class="hide ts-marker" data-maxid="' + max_id + '"></div>';
}
$("#timeline_" + tlid).html(templete);
2018-03-18 02:00:53 +11:00
jQuery("time.timeago").timeago();
});
2018-06-12 01:44:28 +10:00
}
2019-05-19 17:39:30 +10:00
function moreTs(tlid, q) {
2019-04-11 13:52:38 +10:00
var sid = $("#timeline_" + tlid + " .ts-marker").last().attr("data-maxid");
2019-05-19 17:39:30 +10:00
moreloading = true;
var start = "https://tootsearch.chotto.moe/api/v1/search?from=" + sid + "&sort=created_at%3Adesc&q=" + q
$("#notice_" + tlid).text("tootsearch(" + q + ")");
2019-04-11 13:52:38 +10:00
$("#notice_icon_" + tlid).text("search");
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json'
},
2019-05-19 17:39:30 +10:00
}).then(function (response) {
2019-04-11 13:52:38 +10:00
return response.json();
2019-05-19 17:39:30 +10:00
}).catch(function (error) {
2019-04-11 13:52:38 +10:00
todo(error);
console.error(error);
2019-05-19 17:39:30 +10:00
}).then(function (raw) {
var templete = "";
var json = raw.hits.hits;
var max_id = raw["hits"].length;
for (var i = 0; i < json.length; i++) {
var toot = json[i]["_source"];
if (lastid != toot.uri) {
if (toot && toot.account) {
templete = templete + parse([toot], "noauth", null, tlid, 0, [], "tootsearch")
2019-04-11 13:52:38 +10:00
}
}
2019-05-19 17:39:30 +10:00
var lastid = toot.uri;
}
if (!templete) {
templete = lang.lang_details_nodata;
} else {
templete = templete + '<div class="hide ts-marker" data-maxid="' + max_id + '"></div>';
}
$("#timeline_" + tlid).append(templete);
2019-04-11 13:52:38 +10:00
jQuery("time.timeago").timeago();
});
}
2019-06-23 19:38:22 +10:00
function graphDraw(tag, acct_id) {
2019-05-19 17:39:30 +10:00
var tags = "";
var his = tag.history;
var max = Math.max.apply(null, [his[0].uses, his[1].uses, his[2].uses, his[3].uses, his[4].uses, his[5].uses, his[6].uses]);
var six = 50 - (his[6].uses / max * 50);
var five = 50 - (his[5].uses / max * 50);
var four = 50 - (his[4].uses / max * 50);
var three = 50 - (his[3].uses / max * 50);
var two = 50 - (his[2].uses / max * 50);
var one = 50 - (his[1].uses / max * 50);
var zero = 50 - (his[0].uses / max * 50);
if (max === 0) {
tags = '<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50">' +
2019-07-29 01:52:12 +10:00
'</svg><span style="font-size:200%">' + his[0].uses + '</span>toot(s)&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
2019-05-19 17:39:30 +10:00
'\',\'add\')" class="pointer">#' + escapeHTML(tag.name) + '</a>&nbsp;' + his[0].accounts + lang.lang_src_people;
} else {
tags = '<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50">' +
'<g><path d="M0,' + six + ' L10,' + five + ' 20,' + four + ' 30,' + three + ' 40,' + two + ' 50,' + one + ' 60,' + zero + '" style="stroke: #9e9e9e; stroke-width: 1;fill: none;"></path></g>' +
2019-07-29 01:52:12 +10:00
'</svg><span style="font-size:200%">' + his[0].uses + '</span>toot&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
2019-05-19 17:39:30 +10:00
'\',\'add\')" class="pointer">#' + escapeHTML(tag.name) + '</a>&nbsp;' + his[0].accounts + lang.lang_src_people;
}
2018-06-12 01:44:28 +10:00
return tags;
}
/*
<svg version="1.1" viewbox="0 0 50 300" width="100%" height="50">
<path d="M0,0 L10,0 20,10 20,50" fill="#3F51B5"></path>
</svg>
2019-08-07 00:06:09 +10:00
*/
2019-09-30 03:21:18 +10:00
function trend() {
2019-08-07 00:06:09 +10:00
console.log("get trend")
$("#src-contents").html("");
var acct_id = $("#src-acct-sel").val();
2019-09-30 03:21:18 +10:00
if (acct_id == "tootsearch") {
2019-08-07 00:06:09 +10:00
return false;
}
var domain = localStorage.getItem("domain_" + acct_id);
2019-09-30 03:21:18 +10:00
var at = localStorage.getItem("acct_" + acct_id + "_at");
2019-08-07 00:06:09 +10:00
var start = "https://" + domain + "/api/v1/trends"
console.log(start)
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
2019-09-30 03:21:18 +10:00
}).then(function (response) {
2019-08-07 00:06:09 +10:00
return response.json();
2019-09-30 03:21:18 +10:00
}).catch(function (error) {
2019-08-07 00:06:09 +10:00
//todo(error);
console.error(error);
2019-09-30 03:21:18 +10:00
}).then(function (json) {
2019-08-07 00:06:09 +10:00
var tags = "";
2019-09-30 03:21:18 +10:00
Object.keys(json).forEach(function (keye) {
var tag = json[keye];
var his = tag.history;
var max = Math.max.apply(null, [his[0].uses, his[1].uses, his[2].uses, his[3].uses, his[4].uses, his[5].uses, his[6].uses]);
var six = 50 - (his[6].uses / max * 50);
var five = 50 - (his[5].uses / max * 50);
var four = 50 - (his[4].uses / max * 50);
var three = 50 - (his[3].uses / max * 50);
var two = 50 - (his[2].uses / max * 50);
var one = 50 - (his[1].uses / max * 50);
var zero = 50 - (his[0].uses / max * 50);
tags = '<svg version="1.1" viewbox="0 0 60 50" width="60" height="50">' +
'<g><path d="M-1,51, -1,' + six + ', 0,' + six + ' L10,' + five + ' 20,' + four + ' 30,' + three + ' 40,' + two + ' 50,' + one + ' 60,' + zero + ' 61,' + zero + ' 61,51 -1,51" style="stroke: #0f8c0c;fill: rgba(13,113,19,.25); stroke-width: 1;"></path></g>' +
'</svg><span style="font-size:200%">' + his[0].uses + '</span>toots&nbsp;<a onclick="tl(\'tag\',\'' + tag.name + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + tag.name + '</a>&nbsp;' + his[0].accounts + lang.lang_src_people + "<br><br>";
2019-08-07 00:06:09 +10:00
2019-09-30 03:21:18 +10:00
$("#src-contents").append(tags);
});
2019-08-07 00:06:09 +10:00
});
}