thedesk/app/js/ui/tips.js
2019-11-04 01:10:06 +09:00

219 lines
6.9 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//左下のメッセージ
var todcTrigger = null;
function todo(mes) {
clearInterval(todcTrigger);
$("#message").text(mes);
$("#message").fadeIn();
todcTrigger = setTimeout(todc, 4000);
}
function todc() {
$("#message").fadeOut();
}
//reverse
function bottomReverse() {
$("#bottom").toggleClass("reverse");
$(".leftside").toggleClass("reverse");
if ($("#bottom").hasClass("reverse")) {
localStorage.removeItem("reverse");
} else {
localStorage.setItem("reverse", "true");
}
}
function tips(mode) {
postMessage(["sendSinmpleIpc", "endmem"], "*");
clearInterval(clockint);
clearInterval(spotStart);
if (mode == "ver") {
tipsToggle();
$("#tips-text").html('<img src="../../img/desk.png" width="20" onclick="todo(\'TheDesk is a nice client!: TheDesk ' + localStorage.getItem("ver") + " git: " + gitHash + "')\">TheDesk " + localStorage.getItem("ver") + " {" + gitHash.slice(0, 7) + '} [<i class="material-icons" style="font-size:1.2rem;top: 3px;position: relative;">supervisor_account</i><span id="persons">1+</span>]');
localStorage.setItem("tips", "ver");
} else if (mode == "clock") {
tipsToggle();
localStorage.setItem("tips", "clock");
clock();
} else if (mode == "memory") {
tipsToggle();
localStorage.setItem("tips", "memory");
startmem();
} else if (mode == "trend") {
tipsToggle();
localStorage.setItem("tips", "trend");
trendTagonTip();
} else if (mode == "spotify") {
tipsToggle();
localStorage.setItem("tips", "spotify");
var json = nowplaying("spotifytips");
spotifytips(json);
}
}
//メモリ
function startmem() {
postMessage(["sendSinmpleIpc", "startmem"], "*");
}
function renderMem(use, cpu, total) {
$("#tips-text").html(escapeHTML(cpu) + "<br>Memory:" + Math.floor(use / 1024 / 1024 / 102.4) / 10 + "/" + Math.floor(total / 1024 / 1024 / 102.4) / 10 + "GB(" + Math.floor((use / total) * 100) + "%)");
}
//トレンドタグ
function trendTagonTip() {
$(".trendtag").remove();
var domain = "imastodon.net";
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/trend_tags";
fetch(start, {
method: "GET",
headers: {
"content-type": "application/json",
Authorization: "Bearer " + at
}
})
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
setLog(response.url, response.status, text);
});
}
return response.json();
})
.catch(function(error) {
todo(error);
setLog(start, "JSON", error);
console.error(error);
})
.then(function(json) {
if (json) {
var tags = "";
json = json.score;
Object.keys(json).forEach(function(tag) {
tags = tags + "<a onclick=\"tagShow('" + tag + '\')" class="pointer">#' + escapeHTML(tag) + '</a><span class="hide" data-tag="' + tag + "\"> <a onclick=\"tagTL('tag','" + tag + '\',false,\'add\')" class="pointer" title="#' + tag + 'のタイムライン">TL</a> <a onclick="show();brInsert(\'#' + tag + '\')" class="pointer" title="#' + tag + 'でトゥート">Toot</a></span><br>';
});
$("#tips-text").html('<div class="trendtag">トレンドタグ<i class="material-icons pointer" onclick="trendTagonTip()" style="font-size:12px">refresh</i>:<br>' + tags + "</div>");
trendTagonTipInterval();
} else {
$("#tips-text").html("");
}
});
}
//Spotify
function spotifytips() {
var start = "https://thedesk.top/now-playing?at=" + localStorage.getItem("spotify") + "&rt=" + localStorage.getItem("spotify-refresh");
var at = localStorage.getItem("spotify");
if (at) {
fetch(start, {
method: "GET",
headers: {
"content-type": "application/json"
}
})
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
setLog(response.url, response.status, text);
});
}
return response.json();
})
.catch(function(error) {
todo(error);
setLog(start, "JSON", error);
console.error(error);
})
.then(function(json) {
var ms = json.progress_ms;
var last = 1000 - (ms % 1000);
var item = json.item;
var img = item.album.images[0].url;
var artisttxt = "";
for (i = 0; i < item.artists.length; i++) {
if (i > 0) {
artisttxt = artisttxt + "," + item.artists[i].name;
} else {
artisttxt = item.artists[0].name;
}
}
artisttxt = escapeHTML(artisttxt);
sleep(last);
var tms = item.duration_ms;
var per = (ms / item.duration_ms) * 100;
ms = ms / 1000;
tms = tms / 1000;
var s = Math.round(ms) % 60;
if (s < 10) {
s = "0" + s;
}
var m = (Math.round(ms) - (Math.round(ms) % 60)) / 60;
var ts = Math.round(tms) % 60;
if (ts < 10) {
ts = "0" + ts;
}
var tm = (Math.round(tms) - (Math.round(tms) % 60)) / 60;
$("#tips-text").html('<div id="spot-box"><i class="material-icons pointer" onclick="spotifytips()" style="font-size:12px">refresh</i><img src="' + img + '" width="20" id="spot-img">' + escapeHTML(item.name) + '<span class="gray sml" id="spot-art">' + artisttxt + '</span><span id="spot-m">' + m + '</span>:<span id="spot-s">' + s + "</span>/" + tm + ":" + ts + '</span></div><div class="progress grey"><div class="determinate spotify-prog grey lighten-2" style="width: ' + per + '%" data-s="' + Math.round(ms) + '" data-total="' + item.duration_ms + '"></div></div>');
spotint = setInterval(spotStart, 1000);
});
} else {
Swal.fire({
type: "info",
title: lang.lang_spotify_acct
});
}
}
function spotStart() {
var total = $(".spotify-prog").attr("data-total");
var s = $(".spotify-prog").attr("data-s");
var news = s * 1 + 1;
var per = (news * 100000) / total;
var ns = news % 60;
var nm = (news - ns) / 60;
if (ns < 10) {
ns = "0" + ns;
}
if (per >= 100) {
clearInterval(spotStart);
spotifytips();
} else {
$("#spot-m").text(nm);
$("#spot-s").text(ns);
}
$(".spotify-prog").attr("data-s", news);
$(".spotify-prog").css("width", per + "%");
}
function trendTagonTipInterval() {
setTimeout(trendTagonTip, 6000000);
}
//時計
var clockint;
function clock() {
var now = new Date();
var last = 1000 - (now.getTime() % 1000);
sleep(last);
clockint = setInterval(clockStart, 1000);
}
function clockStart() {
var nowTime = new Date(); // 現在日時を得る
var nowHour = nowTime.getHours(); // 時を抜き出す
if (nowHour < 10) {
nowHour = "0" + nowHour;
}
var nowMin = nowTime.getMinutes(); // 分を抜き出す
if (nowMin < 10) {
nowMin = "0" + nowMin;
}
var nowSec = nowTime.getSeconds(); // 秒を抜き出す
if (nowSec < 10) {
nowSec = "0" + nowSec;
}
var msg = nowTime.getFullYear() + "/" + (nowTime.getMonth() + 1) + "/" + nowTime.getDate() + '<span style="font-size:20px; font-family:Open Sans">' + nowHour + ":" + nowMin + ":" + nowSec + "</span>";
$("#tips-text").html(msg);
}
function sleep(waitMsec) {
var startMsec = new Date();
while (new Date() - startMsec < waitMsec);
}
function tipsToggle() {
$("#tips").toggleClass("hide");
$("#tips-menu").toggleClass("hide");
}
if (localStorage.getItem("tips")) {
tips(localStorage.getItem("tips"));
}