2020-10-09 22:37:16 +03:00
|
|
|
<!DOCTYPE html>
|
|
|
|
<html lang="en">
|
2020-06-07 20:28:32 +03:00
|
|
|
|
|
|
|
{{ template "head.tpl.html" . }}
|
|
|
|
|
|
|
|
<body class="bg-gray-800 text-gray-700 p-4 pt-10 flex flex-col min-h-screen max-w-screen-xl mx-auto justify-center">
|
2020-11-28 22:23:40 +03:00
|
|
|
|
2021-01-21 02:26:52 +03:00
|
|
|
<style>
|
|
|
|
.inline-bullet-list li a {
|
|
|
|
text-decoration: underline;
|
|
|
|
}
|
|
|
|
.inline-bullet-list li:after {
|
|
|
|
content: "•";
|
|
|
|
}
|
|
|
|
.inline-bullet-list li:last-child:after {
|
|
|
|
content: "";
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
|
2020-11-28 22:23:40 +03:00
|
|
|
{{ template "header.tpl.html" . }}
|
|
|
|
|
2020-06-07 20:28:32 +03:00
|
|
|
<div class="w-full flex justify-center">
|
2020-11-28 22:23:40 +03:00
|
|
|
<div class="flex items-center justify-between max-w-xl flex-grow">
|
2020-06-07 20:28:32 +03:00
|
|
|
<div><a href="" class="text-gray-500 text-sm">← Go back</a></div>
|
|
|
|
<div><h1 class="font-semibold text-2xl text-white m-0 border-b-4 border-green-700">Settings</h1></div>
|
2020-11-28 22:23:40 +03:00
|
|
|
<div> </div>
|
2020-06-07 20:28:32 +03:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
{{ template "alerts.tpl.html" . }}
|
|
|
|
|
2020-06-07 20:58:06 +03:00
|
|
|
<main class="mt-4 flex-grow flex justify-center w-full">
|
2020-11-28 22:23:40 +03:00
|
|
|
<div class="flex flex-col flex-grow max-w-xl mt-8">
|
2021-01-21 02:26:52 +03:00
|
|
|
<div class="text-gray-500 text-xs mb-8">
|
|
|
|
<ul class="flex justify-center flex-wrap space-x-1 inline-bullet-list">
|
|
|
|
<li class="hover:text-gray-400 mb-1">
|
|
|
|
<a href="settings#password">Change Password</a>
|
|
|
|
</li>
|
|
|
|
<li class="hover:text-gray-400 mb-1">
|
|
|
|
<a href="settings#apikey">Reset API Key</a>
|
|
|
|
</li>
|
|
|
|
<li class="hover:text-gray-400 mb-1">
|
|
|
|
<a href="settings#aliases">Aliases</a>
|
|
|
|
</li>
|
|
|
|
<li class="hover:text-gray-400 mb-1">
|
|
|
|
<a href="settings#languages">Languages & File Extensions</a>
|
|
|
|
</li>
|
|
|
|
<li class="hover:text-gray-400 mb-1">
|
|
|
|
<a href="settings#badges">Badges</a>
|
|
|
|
</li>
|
|
|
|
<li class="hover:text-gray-400 mb-1">
|
|
|
|
<a href="settings#danger">Danger Zone</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
|
2020-06-07 20:58:06 +03:00
|
|
|
<div class="w-full my-8 pb-8 border-b border-gray-700">
|
2021-01-21 02:26:52 +03:00
|
|
|
<div class="font-semibold text-lg text-white m-0 border-b-2 border-green-700 inline-block" id="password">
|
2020-06-07 20:58:06 +03:00
|
|
|
Change Password
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<form class="mt-10" action="settings/credentials" method="post">
|
|
|
|
<div class="mb-8">
|
|
|
|
<label class="inline-block text-sm mb-1 text-gray-500" for="password_old">Current Password</label>
|
|
|
|
<input class="shadow appearance-none bg-gray-800 focus:bg-gray-700 text-gray-300 border-green-700 focus:border-gray-500 border rounded w-full py-1 px-3"
|
|
|
|
type="password" id="password_old"
|
|
|
|
name="password_old" placeholder="Enter your old password" minlength="6" required>
|
|
|
|
</div>
|
|
|
|
<div class="mb-8">
|
|
|
|
<label class="inline-block text-sm mb-1 text-gray-500" for="password_new">New Password</label>
|
|
|
|
<input class="shadow appearance-none bg-gray-800 focus:bg-gray-700 text-gray-300 border-green-700 focus:border-gray-500 border rounded w-full py-1 px-3"
|
|
|
|
type="password" id="password_new"
|
2020-10-26 05:00:24 +03:00
|
|
|
name="password_new" placeholder="Choose a password" minlength="6" required>
|
|
|
|
</div>
|
2020-06-07 20:58:06 +03:00
|
|
|
<div class="mb-8">
|
|
|
|
<label class="inline-block text-sm mb-1 text-gray-500" for="password_repeat">And again ...</label>
|
|
|
|
<input class="shadow appearance-none bg-gray-800 focus:bg-gray-700 text-gray-300 border-green-700 focus:border-gray-500 border rounded w-full py-1 px-3"
|
|
|
|
type="password" id="password_repeat"
|
|
|
|
name="password_repeat" placeholder="Repeat your password" minlength="6" required>
|
|
|
|
</div>
|
|
|
|
<div class="flex justify-between float-right">
|
|
|
|
<button type="submit" class="py-1 px-3 rounded bg-green-700 hover:bg-green-800 text-white text-sm">
|
|
|
|
Save
|
|
|
|
</button>
|
|
|
|
</div>
|
|
|
|
</form>
|
2020-06-07 20:28:32 +03:00
|
|
|
</div>
|
|
|
|
|
2020-11-06 19:09:41 +03:00
|
|
|
<div class="w-full mt-4 mb-8 pb-8 border-b border-gray-700">
|
2021-01-21 02:26:52 +03:00
|
|
|
<div class="font-semibold text-lg text-white m-0 border-b-2 border-green-700 inline-block" id="apikey">
|
2020-06-07 20:58:06 +03:00
|
|
|
Reset API Key
|
2020-06-07 20:28:32 +03:00
|
|
|
</div>
|
2020-06-07 20:58:06 +03:00
|
|
|
|
|
|
|
<form class="mt-6" action="settings/reset" method="post">
|
|
|
|
<div class="text-gray-300 text-sm mb-4">
|
2021-01-21 02:26:52 +03:00
|
|
|
<strong>⚠️ Caution:</strong> Resetting your API key requires you to update your <span
|
|
|
|
class="font-mono">.wakatime.cfg</span> files on all of your computers to make the WakaTime
|
|
|
|
client send heartbeats again.
|
2020-06-07 20:58:06 +03:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="flex justify-between float-right">
|
|
|
|
<button type="submit" class="py-1 px-3 rounded bg-red-500 hover:bg-red-600 text-white text-sm">
|
|
|
|
Reset
|
|
|
|
</button>
|
|
|
|
</div>
|
|
|
|
</form>
|
|
|
|
</div>
|
2020-09-12 17:09:23 +03:00
|
|
|
|
2021-01-21 02:26:52 +03:00
|
|
|
<div class="w-full mt-4 mb-8 pb-8 border-b border-gray-700" id="aliases">
|
2020-10-25 09:22:10 +03:00
|
|
|
<div class="font-semibold text-lg text-white m-0 border-b-2 border-green-700 inline-block">
|
2021-01-21 02:26:52 +03:00
|
|
|
Aliases
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="text-gray-300 text-sm mb-4 mt-6">
|
|
|
|
You can specify aliases for any type of entity. For instance, you can define a rule, that both <span
|
|
|
|
class="inline-block mb-1 text-gray-500 italic">myapp-frontend</span> and <span
|
|
|
|
class="inline-block mb-1 text-gray-500 italic">myapp-backend</span> are combined under a
|
|
|
|
project called <span class="inline-block mb-1 text-gray-500 italic">myapp</span>.
|
|
|
|
</div>
|
|
|
|
|
|
|
|
{{ if .Aliases }}
|
|
|
|
<h3 class="text-md font-semibold text-white">Rules</h3>
|
|
|
|
{{ range $i, $alias := .Aliases }}
|
|
|
|
<div class="flex items-center">
|
|
|
|
<div class="text-gray-500 border-1 w-full border-green-700 inline-block my-1 py-1 text-align text-sm"
|
|
|
|
style="line-height: 1.8">
|
|
|
|
▸ All <span class="underline">{{ $alias.Type | typeName }}s</span> named
|
|
|
|
{{ range $j, $value := $alias.Values }}
|
|
|
|
<span class="text-white text-xs bg-gray-900 rounded py-1 px-2 font-mono">{{- $value -}}</span>
|
|
|
|
{{ if lt $j (add (len $alias.Values) -2) }}
|
|
|
|
<span class="-ml-1">{{- ", " | capitalize -}}</span>
|
|
|
|
{{ else if lt $j (add (len $alias.Values) -1) }}
|
|
|
|
<span>{{- "or" -}}</span>
|
|
|
|
{{ end }}
|
|
|
|
{{ end }}
|
|
|
|
are mapped to <span class="underline">{{ $alias.Type | typeName }}</span> <span
|
|
|
|
class="text-white text-xs bg-gray-900 rounded py-1 px-2 font-mono">{{ $alias.Key }}</span>.
|
|
|
|
</div>
|
|
|
|
<form class="float-right" action="settings/aliases/delete" method="post">
|
|
|
|
<input type="hidden" id="delete_alias_key" name="key" required value="{{ $alias.Key }}">
|
|
|
|
<input type="hidden" id="delete_alias_type" name="type" required value="{{ $alias.Type }}">
|
|
|
|
<button type="submit" class="py-1 px-3 rounded border border-red-500 hover:border-red-600 text-gray-400 text-sm">
|
|
|
|
✕
|
|
|
|
</button>
|
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
{{end}}
|
|
|
|
<div class="mb-8"></div>
|
|
|
|
{{end}}
|
|
|
|
|
|
|
|
<h3 class="text-md font-semibold text-white">Add Rule</h3>
|
|
|
|
<form action="settings/aliases" method="post">
|
|
|
|
<div class="flex items-center mt-2 w-full text-gray-500 text-sm">
|
|
|
|
<span class="mr-2">Map</span>
|
|
|
|
<select name="type" id="select-type"
|
|
|
|
class="shadow appearance-nonshadow appearance-none bg-gray-800 focus:bg-gray-700 text-gray-300 border-green-700 focus:border-gray-500 border rounded py-1 px-3 cursor-pointer">
|
|
|
|
{{ range $i, $t := entityTypes }}
|
|
|
|
<option value="{{ $t }}">{{ $t | typeName | capitalize }}</option>
|
|
|
|
{{ end }}
|
|
|
|
</select>
|
|
|
|
<span class="mx-2">named</span>
|
|
|
|
<input class="shadow appearance-nonshadow appearance-none bg-gray-800 focus:bg-gray-700 text-gray-300 border-green-700 focus:border-gray-500 border rounded py-1 px-3"
|
|
|
|
type="text" id="alias-value" style="width: 130px;"
|
|
|
|
name="value" placeholder="myapp-frontend" minlength="1" required>
|
|
|
|
<span class="mx-2">to</span>
|
|
|
|
<input class="shadow appearance-nonshadow appearance-none bg-gray-800 focus:bg-gray-700 text-gray-300 border-green-700 focus:border-gray-500 border rounded py-1 px-3"
|
|
|
|
type="text" id="alias-key" style="width: 100px"
|
|
|
|
name="key" placeholder="myapp" minlength="1" required>
|
|
|
|
<div class="flex-grow flex justify-end">
|
|
|
|
<button type="submit"
|
|
|
|
class="py-1 px-3 rounded bg-green-700 hover:bg-green-800 text-white text-sm">
|
|
|
|
Add
|
|
|
|
</button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="w-full mt-4 mb-8 pb-8 border-b border-gray-700">
|
|
|
|
<div class="font-semibold text-lg text-white m-0 border-b-2 border-green-700 inline-block" id="languages">
|
|
|
|
Languages & File Extensions
|
2020-10-25 09:22:10 +03:00
|
|
|
</div>
|
2021-01-21 02:26:52 +03:00
|
|
|
|
2020-10-26 07:27:07 +03:00
|
|
|
<div class="text-gray-300 text-sm mb-4 mt-6">
|
2021-01-21 02:26:52 +03:00
|
|
|
You can specify custom mapping from file extensions to programming languages, for instance a <span
|
|
|
|
class="inline-block mb-1 text-gray-500 italic">.jsx</span> file could be mapped to the <span
|
|
|
|
class="inline-block mb-1 text-gray-500 italic">React</span> language.
|
2020-10-26 07:27:07 +03:00
|
|
|
</div>
|
2020-10-25 09:22:10 +03:00
|
|
|
|
2020-11-01 22:14:10 +03:00
|
|
|
{{ if .LanguageMappings }}
|
2021-01-21 02:26:52 +03:00
|
|
|
<h3 class="text-md font-semibold text-white">Rules</h3>
|
2020-11-01 22:14:10 +03:00
|
|
|
{{ range $i, $mapping := .LanguageMappings }}
|
2021-01-21 02:26:52 +03:00
|
|
|
<div class="flex items-center">
|
|
|
|
<div class="text-gray-500 border-1 w-full border-green-700 inline-block my-1 py-1 text-align text-sm">
|
|
|
|
▸ When filename ends in <span
|
|
|
|
class="text-white text-xs bg-gray-900 rounded py-1 px-2 font-mono mr-1">{{ $mapping.Extension }}</span>
|
|
|
|
then change the <span class="underline">language</span> to <span
|
|
|
|
class="text-white text-xs bg-gray-900 rounded py-1 px-2 font-mono mr-1">{{ $mapping.Language }}</span>
|
|
|
|
</div>
|
2020-11-01 22:14:10 +03:00
|
|
|
<form class="float-right" action="settings/language_mappings/delete" method="post">
|
|
|
|
<input type="hidden" id="mapping_id" name="mapping_id" required value="{{ $mapping.ID }}">
|
2021-01-21 02:26:52 +03:00
|
|
|
<button type="submit" class="py-1 px-3 rounded border border-red-500 hover:border-red-600 text-gray-400 text-sm">
|
|
|
|
✕
|
2020-10-26 07:27:07 +03:00
|
|
|
</button>
|
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
{{end}}
|
2021-01-21 02:26:52 +03:00
|
|
|
<div class="mb-8"></div>
|
2020-10-25 09:22:10 +03:00
|
|
|
{{end}}
|
|
|
|
|
2021-01-21 02:26:52 +03:00
|
|
|
<h3 class="text-md font-semibold text-white">Add Rule</h3>
|
2020-11-01 22:14:10 +03:00
|
|
|
<form action="settings/language_mappings" method="post">
|
2021-01-21 02:26:52 +03:00
|
|
|
<div class="flex items-center w-full text-gray-500 text-sm">
|
|
|
|
<span class="mr-2">When filename ends in</span>
|
|
|
|
<input class="shadow appearance-nonshadow appearance-none bg-gray-800 focus:bg-gray-700 text-gray-300 border-green-700 focus:border-gray-500 border rounded py-1 px-3"
|
|
|
|
type="text" id="extension" style="width: 70px"
|
2020-11-01 22:14:10 +03:00
|
|
|
name="extension" placeholder=".py" minlength="1" required>
|
2021-01-21 02:26:52 +03:00
|
|
|
<span class="mx-2">change language to</span>
|
|
|
|
<input class="shadow appearance-nonshadow appearance-none bg-gray-800 focus:bg-gray-700 text-gray-300 border-green-700 focus:border-gray-500 border rounded py-1 px-3"
|
|
|
|
type="text" id="language" style="width: 100px"
|
2020-10-25 09:22:10 +03:00
|
|
|
name="language" placeholder="Python" minlength="1" required>
|
2021-01-21 02:26:52 +03:00
|
|
|
<div class="flex-grow flex justify-end">
|
|
|
|
<button type="submit"
|
|
|
|
class="py-1 px-3 my-3 rounded bg-green-700 hover:bg-green-800 text-white text-sm">
|
|
|
|
Add
|
|
|
|
</button>
|
|
|
|
</div>
|
2020-10-25 09:22:10 +03:00
|
|
|
</div>
|
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
|
2020-11-06 19:09:41 +03:00
|
|
|
<div class="w-full mt-4 mb-8 pb-8 border-b border-gray-700">
|
2021-01-21 02:26:52 +03:00
|
|
|
<div class="font-semibold text-lg text-white m-0 border-b-2 border-green-700 inline-block" id="badges">
|
2020-09-12 17:09:23 +03:00
|
|
|
Badges
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<form class="mt-6" action="settings/badges" method="post">
|
|
|
|
<div class="text-gray-300 text-sm mb-4">
|
|
|
|
{{ if .User.BadgesEnabled }}
|
2021-01-21 02:26:52 +03:00
|
|
|
<p>Badges are currently enabled. You can disable the feature by deactivating the respective API
|
|
|
|
endpoint.</p>
|
2020-09-12 17:09:23 +03:00
|
|
|
|
2021-01-21 02:26:52 +03:00
|
|
|
<div class="flex justify-around mt-4">
|
|
|
|
<span class="font-mono font-normal bg-gray-900 p-1 rounded whitespace-no-wrap">GET /api/compat/shields/v1</span>
|
|
|
|
<button type="submit"
|
|
|
|
class="py-1 px-2 rounded bg-orange-700 hover:bg-orange-800 text-white text-xs"
|
|
|
|
title="Disable support for badges to secure endpoint">
|
|
|
|
Status: public
|
|
|
|
</button>
|
|
|
|
</div>
|
2020-09-12 17:09:23 +03:00
|
|
|
|
2021-01-21 02:26:52 +03:00
|
|
|
<h3 class="font-semibold mb-2 mt-8">Examples</h3>
|
|
|
|
<div class="flex flex-col mb-4">
|
|
|
|
<div class="flex justify-between my-2">
|
|
|
|
<div>
|
|
|
|
<img class="with-url-src"
|
|
|
|
src="https://img.shields.io/endpoint?url=%s/api/compat/shields/v1/{{ .User.ID }}/interval:today&style=flat-square&color=blue&label=today"
|
|
|
|
alt="Shields.io badge"/>
|
|
|
|
</div>
|
|
|
|
<span class="with-url-inner text-xs bg-gray-900 rounded py-1 px-2 font-mono whitespace-no-wrap overflow-auto"
|
|
|
|
style="max-width: 300px;">
|
2020-09-12 17:09:23 +03:00
|
|
|
https://img.shields.io/endpoint?url=%s/api/compat/shields/v1/{{ .User.ID }}/interval:today&style=flat-square&color=blue&label=today
|
|
|
|
</span>
|
2021-01-21 02:26:52 +03:00
|
|
|
</div>
|
|
|
|
<div class="flex justify-between my-2">
|
|
|
|
<div>
|
|
|
|
<img class="with-url-src"
|
|
|
|
src="https://img.shields.io/endpoint?url=%s/api/compat/shields/v1/{{ .User.ID }}/interval:30_days&style=flat-square&color=blue&label=last 30d"
|
|
|
|
alt="Shields.io badge"/>
|
2020-09-12 17:09:23 +03:00
|
|
|
</div>
|
2021-01-21 02:26:52 +03:00
|
|
|
<span class="with-url-inner text-xs bg-gray-900 rounded py-1 px-2 font-mono whitespace-no-wrap overflow-auto"
|
|
|
|
style="max-width: 300px;">
|
2020-09-12 17:09:23 +03:00
|
|
|
https://img.shields.io/endpoint?url=%s/api/compat/shields/v1/{{ .User.ID }}/interval:30_days&style=flat-square&color=blue&label=last 30d
|
|
|
|
</span>
|
|
|
|
</div>
|
2021-01-21 02:26:52 +03:00
|
|
|
</div>
|
2020-09-12 17:09:23 +03:00
|
|
|
|
2021-01-21 02:26:52 +03:00
|
|
|
<p>You can also add <span class="text-xs bg-gray-900 rounded py-1 px-2 font-mono">/project:your-cool-project</span>
|
|
|
|
to the URL to filter by project.</p>
|
2020-09-12 17:09:23 +03:00
|
|
|
{{ else }}
|
2021-01-21 02:26:52 +03:00
|
|
|
<p>You have the ability to create badges from your coding statistics using <a
|
|
|
|
href="https://shields.io" target="_blank" class="border-b border-green-800"
|
|
|
|
rel="noopener noreferrer">Shields.io</a>. To do so, you need to grant public, unauthorized
|
|
|
|
access to the respective endpoint.</p>
|
|
|
|
<div class="flex justify-around mt-4">
|
|
|
|
<span class="font-mono font-normal bg-gray-900 p-1 rounded whitespace-no-wrap">GET /api/compat/shields/v1</span>
|
|
|
|
<button type="submit"
|
|
|
|
class="py-1 px-2 rounded bg-green-700 hover:bg-green-800 text-white text-xs"
|
|
|
|
title="Make endpoint public to enable badges">
|
|
|
|
Status: protected
|
|
|
|
</button>
|
|
|
|
</div>
|
2020-09-12 17:09:23 +03:00
|
|
|
{{ end }}
|
|
|
|
</div>
|
|
|
|
</form>
|
|
|
|
</div>
|
2020-11-06 19:09:41 +03:00
|
|
|
|
|
|
|
<div class="w-full mt-4 mb-8 pb-8">
|
2021-01-21 02:26:52 +03:00
|
|
|
<div class="font-semibold text-lg text-white m-0 border-b-2 border-green-700 inline-block" id="danger">
|
2020-11-06 19:09:41 +03:00
|
|
|
⚠️ Danger Zone
|
|
|
|
</div>
|
|
|
|
<div class="mt-10 text-gray-300 text-sm">
|
|
|
|
<h3 class="font-semibold text-md mb-4 border-b border-green-700 inline-block">
|
|
|
|
Regenerate summaries
|
|
|
|
</h3>
|
|
|
|
<p>
|
2021-01-21 02:26:52 +03:00
|
|
|
Wakapi improves its efficiency and speed by automatically aggregating individual heartbeats to
|
|
|
|
summaries on a per-day basis.
|
|
|
|
That is, historic summaries, i.e. such from past days, are generated once and only fetched from the
|
|
|
|
database in a static fashion afterwards, unless you pass <span
|
|
|
|
class="font-mono font-normal bg-gray-900 p-1 rounded whitespace-no-wrap">&recompute=true</span>
|
|
|
|
with your request.
|
2020-11-06 19:09:41 +03:00
|
|
|
</p>
|
|
|
|
<p class="mt-2">
|
2021-01-21 02:26:52 +03:00
|
|
|
If, for some reason, these aggregated summaries are faulty or preconditions have change (e.g. you
|
|
|
|
modified language mappings retrospectively), you may want to re-generate them from raw heartbeats.
|
2020-11-06 19:09:41 +03:00
|
|
|
</p>
|
|
|
|
<p class="mt-2">
|
2021-01-21 02:26:52 +03:00
|
|
|
<strong>Note:</strong> Only run this action if you know what you are doing. Data might be lost is
|
|
|
|
case heartbeats were deleted after the respective summaries had been generated.
|
2020-11-06 19:09:41 +03:00
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
<div class="mt-10 flex justify-center">
|
|
|
|
<form action="settings/regenerate" method="post" id="form-regenerate-summaries">
|
2021-01-21 02:26:52 +03:00
|
|
|
<button type="button" class="py-1 px-3 rounded bg-red-500 hover:bg-red-600 text-white text-sm"
|
|
|
|
id="btn-regenerate-summaries">
|
2020-11-06 19:09:41 +03:00
|
|
|
Clear & Regenerate
|
|
|
|
</button>
|
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
</div>
|
2020-06-07 20:28:32 +03:00
|
|
|
</div>
|
|
|
|
</main>
|
|
|
|
|
2020-09-12 17:09:23 +03:00
|
|
|
<script type="text/javascript">
|
|
|
|
const baseUrl = location.href.substring(0, location.href.indexOf('/settings'))
|
|
|
|
document.querySelectorAll('.with-url-src').forEach(e => {
|
|
|
|
e.setAttribute('src', e.getAttribute('src').replace('%s', baseUrl))
|
|
|
|
e.classList.remove('hidden')
|
|
|
|
})
|
|
|
|
document.querySelectorAll('.with-url-inner').forEach(e => {
|
|
|
|
e.innerHTML = e.innerHTML.replace('%s', baseUrl)
|
|
|
|
e.classList.remove('hidden')
|
|
|
|
})
|
2020-11-06 19:09:41 +03:00
|
|
|
|
2021-01-21 02:26:52 +03:00
|
|
|
const btnRegenerate = document.querySelector('#btn-regenerate-summaries')
|
2020-11-06 19:09:41 +03:00
|
|
|
const formRegenerate = document.querySelector('#form-regenerate-summaries')
|
|
|
|
btnRegenerate.addEventListener('click', () => {
|
|
|
|
if (confirm('Are you sure?')) {
|
|
|
|
formRegenerate.submit()
|
|
|
|
}
|
|
|
|
})
|
2020-09-12 17:09:23 +03:00
|
|
|
</script>
|
|
|
|
|
2020-06-07 20:28:32 +03:00
|
|
|
{{ template "footer.tpl.html" . }}
|
|
|
|
|
|
|
|
{{ template "foot.tpl.html" . }}
|
|
|
|
</body>
|
|
|
|
|
2020-10-25 09:22:10 +03:00
|
|
|
</html>
|
2020-10-26 05:00:24 +03:00
|
|
|
|