Page MenuHomePhabricator

No OneTemporary

diff --git a/lib/lsg_web/endpoint.ex b/lib/lsg_web/endpoint.ex
index b0cf9c5..a401f54 100644
--- a/lib/lsg_web/endpoint.ex
+++ b/lib/lsg_web/endpoint.ex
@@ -1,62 +1,62 @@
defmodule NolaWeb.Endpoint do
use Sentry.PlugCapture
use Phoenix.Endpoint, otp_app: :nola
# Serve at "/" the static files from "priv/static" directory.
#
# You should set gzip to true if you are running phoenix.digest
# when deploying your static files in production.
plug Plug.Static,
at: "/", from: :nola, gzip: false,
only: ~w(assets css js fonts images favicon.ico robots.txt)
# Code reloading can be explicitly enabled under the
# :code_reloader configuration of your endpoint.
if 42==43 && code_reloading? do
socket "/phoenix/live_reload/socket", Phoenix.LiveReloader.Socket
plug Phoenix.LiveReloader
plug Phoenix.CodeReloader
end
plug Plug.RequestId
plug Plug.Logger
plug Plug.Parsers,
parsers: [:urlencoded, :multipart, :json],
pass: ["*/*"],
json_decoder: Jason
plug Sentry.PlugContext
plug Plug.MethodOverride
plug Plug.Head
@session_options [store: :cookie,
- key: "_lsg_key",
+ key: "_nola_key",
signing_salt: "+p7K3wrj"]
socket "/live", Phoenix.LiveView.Socket,
websocket: [connect_info: [session: @session_options]]
# The session will be stored in the cookie and signed,
# this means its contents can be read but not tampered with.
# Set :encryption_salt if you would also like to encrypt it.
plug Plug.Session, @session_options
plug NolaWeb.Router
@doc """
Callback invoked for dynamically configuring the endpoint.
It receives the endpoint configuration and checks if
configuration should be loaded from the system environment.
"""
def init(_key, config) do
if config[:load_from_system_env] do
port = System.get_env("PORT") || raise "expected the PORT environment variable to be set"
{:ok, Keyword.put(config, :http, [:inet6, port: port])}
else
{:ok, config}
end
end
end
diff --git a/lib/lsg_web/live/chat_live.html.heex b/lib/lsg_web/live/chat_live.html.heex
index fc1f582..29cd6a1 100644
--- a/lib/lsg_web/live/chat_live.html.heex
+++ b/lib/lsg_web/live/chat_live.html.heex
@@ -1,91 +1,91 @@
<div class="chat" data-turbo="false">
<div class="py-4 px-4 bg-gradient-to-b from-black to-gray-900">
<div class="grid grid-cols-2">
<h1 class="text-gray-50 tracking-tight font-extrabold text-xl">
<%= @network %>
<span class="font-bold"><%= @chan %></span>
</h1>
<div class="text-right">
<a href="/" class="text-gray-400"><%= @account_id %></a>
</div>
</div>
</div>
<div class="body">
<div class="log">
<p class="disconnected text-center text-6xl tracking-tight font-extrabold text-red-800 w-full my-24 mx-auto overflow-y-auto">
Disconnected <span class="text-mono">:'(</span>
</p>
<p class="phx-errored text-center text-6xl tracking-tight font-extrabold text-red-800 w-full my-24 mx-auto overflow-y-auto">
Oh no error <span class="text-mono">>:(</span>
</p>
<ul class="pt-4 pl-4">
<%= for message <- @backlog do %>
<%= if is_map(message) && Map.get(message, :__struct__) == IRC.Message do %>
<li class="flex gap-2 place-items-center message"
data-account-id={message.account.id}>
- <LSGWeb.MessageComponent.content
+ <NolaWeb.MessageComponent.content
message={message}
self={message.account.id == @account_id}
text={message.text}
/>
</li>
<% end %>
<%= if is_binary(message) do %>
<li class="notice"><%= message %></li>
<% end %>
<%= if is_map(message) && Map.get(message, :type) do %>
<li class="flex gap-2 place-items-center event">
- <LSGWeb.Component.naive_date_time_utc datetime={message.at} format="time-24-with-seconds" />
+ <NolaWeb.Component.naive_date_time_utc datetime={message.at} format="time-24-with-seconds" />
<span class="inline-block font-bold flex-none cursor-default text-gray-700">*&nbsp;*&nbsp;*</span>
<span class="inline-block flex-grow cursor-default text-gray-700">
- <LSGWeb.EventComponent.content event={message}
+ <NolaWeb.EventComponent.content event={message}
self={@users[message.user_id] && @users[message.user_id].account == @account_id}
user={@users[message.user_id]}
/>
</span>
</li>
<% end %>
<% end %>
</ul>
</div>
<aside>
<%= for {_, user} <- @users do %>
<details class="user dropdown">
<summary><%= user.nick %></summary>
<div class="content">
<h3 class="text-xl font-bold"><%= user.nick %></h3>
<ul class="mt-4 space-y-2">
<li class="">User: <span class="font-bold"><%= user.username %></span></li>
<li class="">Name: <%= user.realname || user.nick %></li>
<li class="">Host: <span class="font-mono"><%= user.host %></span></li>
</ul>
<div class="mt-4 font-xs text-gray-300 text-center">
UID: <%= user.id %>
<br />
AID: <%= user.account %>
</div>
</div>
</details>
<% end %>
</aside>
</div>
<.form let={f} id={"form-#{@counter}"} for={:message} phx-submit="send" class="w-full px-4 pt-4">
<div>
<div class="mt-1 flex rounded-md shadow-sm border border-gray-300">
<%= text_input f, :text, class: "focus:ring-indigo-500 focus:border-indigo-500 block w-full border rounded-md pl-4 sm:text-sm border-gray-300", autofocus: true, 'phx-hook': "AutoFocus", autocomplete: "off", placeholder: "Don't be shy, say something…" %>
<%= submit content_tag(:span, "Send"), class: "-ml-px relative inline-flex items-center space-x-2 px-4 py-2 border border-gray-300 text-sm font-medium rounded-r-md text-gray-700 bg-gray-50 hover:bg-gray-100 focus:outline-none focus:ring-1 focus:ring-indigo-500 focus:border-indigo-500"%>
</div>
</div>
</.form>
</div>
diff --git a/lib/lsg_web/lsg_web.ex b/lib/lsg_web/lsg_web.ex
index da622c7..906e961 100644
--- a/lib/lsg_web/lsg_web.ex
+++ b/lib/lsg_web/lsg_web.ex
@@ -1,99 +1,99 @@
defmodule NolaWeb do
@moduledoc """
The entrypoint for defining your web interface, such
as controllers, views, channels and so on.
This can be used in your application as:
use NolaWeb, :controller
use NolaWeb, :view
The definitions below will be executed for every view,
controller, etc, so keep them short and clean, focused
on imports, uses and aliases.
Do NOT define functions inside the quoted expressions
below. Instead, define any helper function in modules
and import those modules here.
"""
def format_chan("##") do
"♯♯"
end
def format_chan("#") do
"♯"
end
def format_chan("#"<>chan) do
chan
end
def format_chan(chan = "!"<>_), do: chan
def reformat_chan("♯") do
"#"
end
def reformat_chan("♯♯") do
"##"
end
def reformat_chan(chan = "!"<>_), do: chan
def reformat_chan(chan) do
"#"<>chan
end
def controller do
quote do
use Phoenix.Controller, namespace: NolaWeb
import Plug.Conn
import NolaWeb.Router.Helpers
import NolaWeb.Gettext
alias NolaWeb.Router.Helpers, as: Routes
end
end
def view do
quote do
- use Phoenix.View, root: "lib/lsg_web/templates",
+ use Phoenix.View, root: "lib/nola_web/templates",
namespace: NolaWeb
# Import convenience functions from controllers
import Phoenix.Controller, only: [get_flash: 2, view_module: 1]
# Use all HTML functionality (forms, tags, etc)
use Phoenix.HTML
import NolaWeb.Router.Helpers
import NolaWeb.ErrorHelpers
import NolaWeb.Gettext
import Phoenix.LiveView.Helpers
alias NolaWeb.Router.Helpers, as: Routes
end
end
def router do
quote do
use Phoenix.Router
import Plug.Conn
import Phoenix.Controller
import Phoenix.LiveView.Router
end
end
def channel do
quote do
use Phoenix.Channel
import NolaWeb.Gettext
end
end
@doc """
When used, dispatch to the appropriate controller/view/etc.
"""
defmacro __using__(which) when is_atom(which) do
apply(__MODULE__, which, [])
end
end
diff --git a/lib/lsg_web/templates/alcoolog/index.html.eex b/lib/lsg_web/templates/alcoolog/index.html.eex
index 263da95..5a5423a 100644
--- a/lib/lsg_web/templates/alcoolog/index.html.eex
+++ b/lib/lsg_web/templates/alcoolog/index.html.eex
@@ -1,205 +1,205 @@
<style type="text/css">
ol li {
margin-bottom: 5px
}
</style>
<%= if @stats == [] do %>
<div class="rounded-md bg-red-50 p-4">
<div class="flex">
<div class="flex-shrink-0">
<svg class="h-5 w-5 text-red-400" viewBox="0 0 20 20" fill="currentColor">
<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z" clip-rule="evenodd" />
</svg>
</div>
<div class="ml-3">
<h3 class="text-sm leading-5 font-medium text-red-800">
CATASTROPHE! Personne n'a bu!!!!
</h3>
</div>
</div>
</div>
<% end %>
<ul class="grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3">
<%= for {nick, status} <- @stats do %>
<li class="col-span-1 bg-white rounded-lg shadow">
<div class="w-full flex items-center justify-between p-6 space-x-6">
<div class="flex-1 truncate">
<div class="flex items-center space-x-3">
<h3 class="text-gray-900 text-base leading-5 font-semibold truncate"><%= link nick, to: alcoolog_path(@conn, :nick, @network, nick) %></h3>
<% rising_class = if status.rising, do: "teal", else: "red" %>
<span class="flex-shrink-0 inline-block px-2 py-0.5 text-<%= rising_class %>-800 text-sm leading-4 font-medium bg-<%= rising_class %>-100 rounded-full">
<%= status.trend_symbol %> <%= Float.round(status.active, 4) %> g/l
</span>
</div>
<p class="mt-1 text-gray-700 text-sm leading-5 truncate">
<span class="text-base"><%= status.last_cl %>cl @ <%= status.last_deg %>°</span>
<%= if status.last_descr && status.last_descr != "" do %>
<br /><%= status.last_descr %>
<% end %>
- <br/><small><%= LSGWeb.LayoutView.format_time(status.last_at) %></small>
+ <br/><small><%= NolaWeb.LayoutView.format_time(status.last_at) %></small>
</p>
<p class="mt-1 text-gray-500 text-sm leading-5 truncate">
<br />
&mdash; sobre dans: <%= status.sober_in_s %><br />
<%= if status.since do %>
&mdash; depuis: <%= status.since_s %><br />
<% end %>
<small>
&mdash; 15m: <%= status.active15m %> g/l - 30m: <%= status.active30m %> g/l - 1h: <%= status.active1h %> g/l<br />
&mdash; aujourd'hui: <%= status.daily_volumes %> points, <%= status.daily_gl %> g/l
</small>
</p>
</div>
</div>
</li>
<% end %>
</ul>
<%= if @stats == %{} do %>
<div class="rounded-md bg-red-50 p-4">
<div class="flex">
<div class="flex-shrink-0">
<svg class="h-5 w-5 text-red-400" viewBox="0 0 20 20" fill="currentColor">
<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z" clip-rule="evenodd" />
</svg>
</div>
<div class="ml-3">
<h3 class="text-sm leading-5 font-medium text-red-800">
ENCORE PIRE! Aucune boisson enregistrée!
</h3>
</div>
</div>
</div>
<% else %>
<canvas id="myChart" class="w-full" height="200"></canvas>
<h2 class="leading-8 m-4 font-semibold text-2xl">Classement <span class="font-medium text-gray-600 text-lg">15 jours</span></h2>
<ul class="grid grid-cols-1 gap-6 sm:grid-cols-5 lg:grid-cols-5">
<%= for {{nick, count}, rank} <- Enum.with_index(@top) do %>
<% rank = rank + 1 %>
<% trophy = rank <= 3 %>
<% {colour, text} = case rank do
1 -> {"yellow-500", "font-semibold text-base"}
2 -> {"gray-500", "font-medium text-base"}
3 -> {"orange-300", "font-medium text-base"}
_ -> {"gray-300", ""}
end %>
<li class="col-span-1 bg-white rounded-lg shadow text-center <%= text %>">
<%= if trophy do %>
<span class="text-<%= colour %>">
<svg style="width: 1.125em; height: 1.5em; display: inline-block;" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="trophy" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" data-fa-i2svg=""><path fill="currentColor" d="M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 35.7 22.5 72.4 61.9 100.7 31.5 22.7 69.8 37.1 110 41.7C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6c40.3-4.6 78.6-19 110-41.7 39.3-28.3 61.9-65 61.9-100.7V88c0-13.3-10.7-24-24-24zM99.3 192.8C74.9 175.2 64 155.6 64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-15.1-5.2-29.2-12.4-41.7-21.4zM512 144c0 16.1-17.7 36.1-35.3 48.8-12.5 9-26.7 16.2-41.8 21.4 7-25 11.8-53.6 12.8-86.2H512v16z"></path></svg>
</span>
<% end %>
#<%= rank %>: <%= link nick, to: alcoolog_path(@conn, :nick, @network, nick) %>
<br />
<span class="text-xs"><%= Float.round(count, 4) %></span>
</li>
<% end %>
</ul>
<h2 class="leading-8 m-4 font-semibold text-2xl">Historique</h2>
<div class="flex flex-col">
<div class="-my-2 py-2 overflow-x-auto sm:-mx-6 sm:px-6 lg:-mx-8 lg:px-8">
<div class="align-middle inline-block min-w-full shadow overflow-hidden sm:rounded-lg border-b border-gray-200">
<table class="min-w-full divide-y divide-gray-200">
<thead>
<tr>
<th class="px-6 py-3 bg-gray-50 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider">
date
</th>
<th class="px-6 py-3 bg-gray-50 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider">
nick
</th>
<th class="px-6 py-3 bg-gray-50 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider">
&nbsp;
</th>
<th class="px-6 py-3 bg-gray-50 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider">
&nbsp;
</th>
</tr>
</thead>
<tbody>
<%= for {{{{account, date}, points, _active, cl, deg, nom, comment, _meta}, nick}, index} <- Enum.with_index(@drinks) do %>
<% class = if(Integer.is_even(index), do: "bg-gray-50", else: "bg-white") %>
<% date = DateTime.from_unix!(date, :millisecond) %>
<tr class="<%= class %>">
<td class="px-6 py-4 whitespace-no-wrap text-sm leading-5 font-medium text-gray-900">
- <%= LSGWeb.LayoutView.format_time(date, false) %>
+ <%= NolaWeb.LayoutView.format_time(date, false) %>
</td>
<td class="px-6 py-4 whitespace-no-wrap text-sm leading-5 font-medium text-gray-900">
<%= link nick, to: alcoolog_path(@conn, :nick, @network, nick) %>
</td>
<td class="px-6 py-4 whitespace-no-wrap text-sm leading-5 text-gray-500"><%= cl %>cl <%= deg %>°</td>
<td class="px-6 py-4 whitespace-no-wrap text-sm leading-5 text-gray-500"><%= comment||"" %></td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
</div>
<% end %>
<%= if @conn.assigns.account && (@network || @channel) do %>
<%= link("alcoolog global", to: alcoolog_path(@conn, :index)) %>
<% end %>
<link href='/css/metricsgraphics.css' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.css" integrity="sha512-SUJFImtiT87gVCOXl3aGC00zfDl6ggYAw5+oheJvRJ8KBXZrr/TMISSdVJ5bBarbQDRC2pR5Kto3xTR0kpZInA==" crossorigin="anonymous" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.bundle.min.js" integrity="sha512-vBmx0N/uQOXznm/Nbkp7h0P1RfLSj0HQrFSzV8m7rOGyj30fYAOKHYvCNez+yM8IrfnW0TCodDEjRqf6fodf/Q==" crossorigin="anonymous"></script>
<script src="/js/jquery3.1.0.min.js"></script>
<script src="/js/d3.v4.min.js"></script>
<script src="/js/metricsgraphics.min.js"></script>
<script type="text/javascript">
(function() {
// oui s trè moch :( :( :(
var ctx = document.getElementById('myChart').getContext('2d');
- d3.json('<%= alcoolog_path(@conn, :index_gls_json, @network, LSGWeb.format_chan(@channel)) %>', function(data) {
+ d3.json('<%= alcoolog_path(@conn, :index_gls_json, @network, NolaWeb.format_chan(@channel)) %>', function(data) {
var dynamicColors = function() {
var r = Math.floor(Math.random() * 255);
var g = Math.floor(Math.random() * 255);
var b = Math.floor(Math.random() * 255);
return "rgb(" + r + "," + g + "," + b + ")";
};
labels = data.labels;
datasets = $.map($.makeArray(data.data), function(set) {
return {label: set.name, data: set.history, fill: false, borderColor: dynamicColors()}
});
var myChart = new Chart(ctx, {
type: 'line',
data: {
labels: labels,
datasets: datasets
},
options: {
scales: {
xAxes: [{
type: 'time',
time: {
unit: 'day'
}
}],
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
});
});
})();
</script>
diff --git a/lib/lsg_web/templates/alcoolog/user.html.eex b/lib/lsg_web/templates/alcoolog/user.html.eex
index 8907f9a..d7f716b 100644
--- a/lib/lsg_web/templates/alcoolog/user.html.eex
+++ b/lib/lsg_web/templates/alcoolog/user.html.eex
@@ -1,170 +1,170 @@
<%= if @stats.active > 0 do %>
<h3 class="text-gray-900 text-xl leading-5 font-semibold truncate">
<% rising_class = if @stats.rising, do: "teal", else: "red" %>
<span class="flex-shrink-0 inline-block px-3 py-3 text-<%= rising_class %>-800 text-2xl leading-4 font-medium bg-<%= rising_class %>-100 rounded-full">
<%= @stats.trend_symbol %> <%= Float.round(@stats.active, 4) %> g/l
</span>
<span class="px-3"><%= @stats.last_cl %>cl @ <%= @stats.last_deg %>°</span>
<span class="px-3 text-lg text-gray-700"><%= if @stats.last_descr && @stats.last_descr != "" do %>
<%= @stats.last_descr %>
<% end %>
</span>
- <span class="px-3 text-gray-500 text-sm font-thin"><%= LSGWeb.LayoutView.format_time(@stats.last_at) %></span>
+ <span class="px-3 text-gray-500 text-sm font-thin"><%= NolaWeb.LayoutView.format_time(@stats.last_at) %></span>
</h3>
<p class="text-gray-500 font-thin text-lg">
a commencé il y a <span class="text-gray-700 font-semibold"><%= @stats.since_s %></span>
&mdash;
sobre dans <span class="text-gray-700 font-semibold"><%= @stats.sober_in_s %></span>
</p>
<% else %>
<h3 class="text-gray-900 text-xl leading-5 font-semibold truncate">
est sobre!
<p class="text-gray-500 font-thin text-lg">
dernier verre
<span class="px-3"><%= @stats.last_cl %>cl @ <%= @stats.last_deg %>°</span>
<span class="px-3 text-lg text-gray-700"><%= if @stats.last_descr && @stats.last_descr != "" do %>
<%= @stats.last_descr %>
<% end %>
</span>
- <span class="px-3 text-gray-500 text-sm font-thin"><%= LSGWeb.LayoutView.format_time(@stats.last_at) %></span>
+ <span class="px-3 text-gray-500 text-sm font-thin"><%= NolaWeb.LayoutView.format_time(@stats.last_at) %></span>
</h3>
<% end %>
<canvas id="myChart" class="w-full" height="200"></canvas>
<canvas id="myChartGl" class="w-full" height="200"></canvas>
<h2 class="leading-8 m-4 font-semibold text-2xl">Historique</h2>
<div class="flex flex-col">
<div class="-my-2 py-2 overflow-x-auto sm:-mx-6 sm:px-6 lg:-mx-8 lg:px-8">
<div class="align-middle inline-block min-w-full shadow overflow-hidden sm:rounded-lg border-b border-gray-200">
<table class="min-w-full divide-y divide-gray-200">
<thead>
<tr>
<th class="px-6 py-3 bg-gray-50 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider">
date
</th>
<th class="px-6 py-3 bg-gray-50 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider">
&nbsp;
</th>
<th class="px-6 py-3 bg-gray-50 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider">
&nbsp;
</th>
</tr>
</thead>
<tbody>
<%= for {%{at: date, cl: cl, deg: deg, description: comment}, index} <- Enum.with_index(@history) do %>
<% class = if(Integer.is_even(index), do: "bg-gray-50", else: "bg-white") %>
<tr class="<%= class %>">
<td class="px-6 py-4 whitespace-no-wrap text-sm leading-5 font-medium text-gray-900">
- <%= LSGWeb.LayoutView.format_time(date, false) %>
+ <%= NolaWeb.LayoutView.format_time(date, false) %>
</td>
<td class="px-6 py-4 whitespace-no-wrap text-sm leading-5 text-gray-500"><%= cl %>cl <%= deg %>°</td>
<td class="px-6 py-4 whitespace-no-wrap text-sm leading-5 text-gray-500"><%= comment||"" %></td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
</div>
<div id="metrics-gl" class="w-full"></div>
<link href='/css/metricsgraphics.css' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.css" integrity="sha512-SUJFImtiT87gVCOXl3aGC00zfDl6ggYAw5+oheJvRJ8KBXZrr/TMISSdVJ5bBarbQDRC2pR5Kto3xTR0kpZInA==" crossorigin="anonymous" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.bundle.min.js" integrity="sha512-vBmx0N/uQOXznm/Nbkp7h0P1RfLSj0HQrFSzV8m7rOGyj30fYAOKHYvCNez+yM8IrfnW0TCodDEjRqf6fodf/Q==" crossorigin="anonymous"></script>
<script src="/js/jquery3.1.0.min.js"></script>
<script src="/js/d3.v4.min.js"></script>
<script src="/js/metricsgraphics.min.js"></script>
<script type="text/javascript">
(function() {
var ctx = document.getElementById('myChart').getContext('2d');
d3.json('<%= alcoolog_path(@conn, :nick_volumes_json, @network, @nick, days: @days) %>', function(data) {
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: data.map(function(data) { return new Date(data.date) }),
datasets: [{
label: 'Volumes d\'alcool',
data: data.map(function(data) { return data.volumes }),
borderWidth: 1
}]
},
options: {
scales: {
xAxes: [{
type: 'time',
time: {
unit: 'day'
}
}],
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
});
});
var ctxgl = document.getElementById('myChartGl').getContext('2d');
d3.json('<%= alcoolog_path(@conn, :nick_gls_json, @network, @nick, days: @days) %>', function(data) {
var myChartgl = new Chart(ctxgl, {
type: 'bar',
data: {
labels: data.map(function(data) { return new Date(data.date) }),
datasets: [{
label: 'g/l ingérés',
data: data.map(function(data) { return data.gls }),
borderWidth: 1
}]
},
options: {
scales: {
xAxes: [{
type: 'time',
time: {
unit: 'day'
}
}],
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
});
});
d3.json('<%= alcoolog_path(@conn, :nick_log_json, @network, @nick, days: @days) %>', function(data) {
data = data.map(function(d) {
date = new Date(d.at);
return {"date": date, "active": d.active};
});
MG.data_graphic({
title: "g/l, All Time",
data: data,
width: 1000,
height: 400,
target: document.getElementById('metrics-gl'),
x_accessor: 'date',
y_accessor: 'active',
});
});
})();
</script>
diff --git a/lib/lsg_web/templates/irc/index.html.eex b/lib/lsg_web/templates/irc/index.html.eex
index 6cc3128..182624d 100644
--- a/lib/lsg_web/templates/irc/index.html.eex
+++ b/lib/lsg_web/templates/irc/index.html.eex
@@ -1,44 +1,44 @@
<div class="hidden sm:block">
<nav class="flex flex-wrap space-x-4">
- <%= link("live", to: LSGWeb.Router.Helpers.live_path(LSGWeb.Endpoint, LSGWeb.ChatLive, @network, LSGWeb.format_chan(@chan)), class: "py-4 font-medium leading-5 rounded-md text-gray-500 hover:text-gray-700 focus:outline-none focus:text-indigo-600 focus:bg-indigo-50", 'data-turbo': false) %>
+ <%= link("live", to: NolaWeb.Router.Helpers.live_path(NolaWeb.Endpoint, NolaWeb.ChatLive, @network, NolaWeb.format_chan(@chan)), class: "py-4 font-medium leading-5 rounded-md text-gray-500 hover:text-gray-700 focus:outline-none focus:text-indigo-600 focus:bg-indigo-50", 'data-turbo': false) %>
<% list = for {identifier, _} <- @commands do %>
<% name = String.replace(identifier, "_", " ") %>
<%= link(name, to: "##{identifier}", class: "py-4 font-medium leading-5 rounded-md text-gray-500 hover:text-gray-700 focus:outline-none focus:text-indigo-600 focus:bg-indigo-50") %>
<% end %>
<%= list %>
</nav>
</div>
<%= if @members != [] do %>
<ul class="flex flew-wrap space-x-4 mt-12">
<%= for user <- @members do %><li><%= user.nick %></li><% end %>
</ul>
<% end %>
<div class="irchelps space-y-6 mt-12">
<%= for {identifier, help} <- @commands do %>
<%= if help do %>
<div class="bg-white border-b border-gray-200" id="<%= identifier %>">
- <div class="prose w-auto max-w-full"><%= LSGWeb.LayoutView.liquid_markdown(@conn, help) %></div>
+ <div class="prose w-auto max-w-full"><%= NolaWeb.LayoutView.liquid_markdown(@conn, help) %></div>
</div>
<% end %>
<% end %>
</div>
<br/><br/><br/>
<p>
<small>
<strong>Légende:</strong><br />
entre <code>< ></code>: argument obligatoire,<br />
entre <code>[ ]</code>: argument optionel; <code>[1 | ]</code>: argument optionel avec valeur par défaut.
</small>
</p>
<br/><br/><br/>
<p>
<small>
- running beautte version <%= LSG.version() %> &mdash; <a href="<%= LSG.source_url() %>">git</a>
+ running beautte version <%= Nola.version() %> &mdash; <a href="<%= Nola.source_url() %>">git</a>
</small>
</p>
diff --git a/lib/lsg_web/templates/irc/txts.html.eex b/lib/lsg_web/templates/irc/txts.html.eex
index 68d35f5..aff0c5d 100644
--- a/lib/lsg_web/templates/irc/txts.html.eex
+++ b/lib/lsg_web/templates/irc/txts.html.eex
@@ -1,49 +1,49 @@
<div>
<h2 class="text-gray-500 text-xs font-medium uppercase tracking-wide">
<strong><%= @lines %></strong> lignes dans <strong><%= @files %></strong> fichiers
<a href="#help" class="ml-4 font-bold">Aide</a>
<a href="#system" class="text-gray-300 ml-4">Fichiers système</a>
</h2>
<ul class="mt-3 grid grid-cols-1 gap-5 sm:gap-6 sm:grid-cols-4 lg:grid-cols-6">
<%= for {txt, data} <- @data do %>
<% base_url = cond do
- @conn.assigns[:chan] -> "/#{@conn.assigns.network}/#{LSGWeb.format_chan(@conn.assigns.chan)}"
+ @conn.assigns[:chan] -> "/#{@conn.assigns.network}/#{NolaWeb.format_chan(@conn.assigns.chan)}"
true -> "/-"
end %>
<li class="col-span-1 flex shadow-sm rounded-m">
<div class="flex-1 flex items-center justify-between border-l border-t border-r border-b border-gray-200 bg-white rounded-md truncate">
<div class="flex-1 px-4 py-2 text-sm leading-5 truncate">
<a href="<%= base_url %>/txt/<%= txt %>" class="text-gray-900 text-lg font-medium hover:text-gray-600 transition ease-in-out duration-150"><%= txt %></a>
<p class="text-gray-500"><%= Enum.count(data) %> lignes</p>
</div>
</div>
</li>
<% end %>
</ul>
</div>
-<div class="prose mt-12" id="help""><%= LSGWeb.LayoutView.liquid_markdown(@conn, @doc) %></div>
+<div class="prose mt-12" id="help""><%= NolaWeb.LayoutView.liquid_markdown(@conn, @doc) %></div>
<div class="mt-24">
<h2 class="text-gray-500 text-xs font-medium uppercase tracking-wide">
Fichiers système
</h2>
<ul class="mt-3 grid grid-cols-1 gap-5 sm:gap-6 sm:grid-cols-4 lg:grid-cols-6">
<%= for {txt, data} <- @system do %>
<% base_url = cond do
- @conn.assigns[:chan] -> "/#{@conn.assigns.network}/#{LSGWeb.format_chan(@conn.assigns.chan)}"
+ @conn.assigns[:chan] -> "/#{@conn.assigns.network}/#{NolaWeb.format_chan(@conn.assigns.chan)}"
true -> "/-"
end %>
<li class="col-span-1 flex shadow-sm rounded-m">
<div class="flex-1 flex items-center justify-between border-l border-t border-r border-b border-gray-200 bg-white rounded-md truncate">
<div class="flex-1 px-4 py-2 text-sm leading-5 truncate">
<a href="<%= base_url %>/txt/<%= txt %>" class="text-gray-900 text-lg font-medium hover:text-gray-600 transition ease-in-out duration-150"><%= txt %></a>
<p class="text-gray-500"><%= Enum.count(data) %> lignes</p>
</div>
</div>
</li>
<% end %>
</ul>
</div>
diff --git a/lib/lsg_web/templates/layout/app.html.eex b/lib/lsg_web/templates/layout/app.html.eex
index b918ca5..956793f 100644
--- a/lib/lsg_web/templates/layout/app.html.eex
+++ b/lib/lsg_web/templates/layout/app.html.eex
@@ -1,126 +1,126 @@
<div>
<div class="bg-gray-800 pb-32">
<nav class="bg-gray-800">
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
<div class="border-b border-gray-700">
<div class="flex items-center justify-between h-16 px-4 sm:px-0">
<div class="flex items-center">
<div class="flex-shrink-0">
<img class="h-8 w-8" src="https://tailwindui.com/img/logos/workflow-mark-on-dark.svg" alt="Workflow logo">
</div>
<div class="hidden md:block">
<div class="ml-10 flex items-baseline">
<a href="/" class="px-3 py-2 rounded-md text-sm font-medium text-white bg-gray-900 focus:outline-none focus:text-white focus:bg-gray-700">bot.goulag.org</a>
<!--<a href="#" class="ml-4 px-3 py-2 rounded-md text-sm font-medium text-gray-300 hover:text-white hover:bg-gray-700 focus:outline-none focus:text-white focus:bg-gray-700">Team</a>
<a href="#" class="ml-4 px-3 py-2 rounded-md text-sm font-medium text-gray-300 hover:text-white hover:bg-gray-700 focus:outline-none focus:text-white focus:bg-gray-700">Projects</a>
<a href="#" class="ml-4 px-3 py-2 rounded-md text-sm font-medium text-gray-300 hover:text-white hover:bg-gray-700 focus:outline-none focus:text-white focus:bg-gray-700">Calendar</a>
<a href="#" class="ml-4 px-3 py-2 rounded-md text-sm font-medium text-gray-300 hover:text-white hover:bg-gray-700 focus:outline-none focus:text-white focus:bg-gray-700">Reports</a>-->
</div>
</div>
</div>
<div class="hidden md:block">
<div class="ml-4 flex items-center md:ml-6">
<!--<button class="p-1 border-2 border-transparent text-gray-400 rounded-full hover:text-white focus:outline-none focus:text-white focus:bg-gray-700" aria-label="Notifications">
<svg class="h-6 w-6" stroke="currentColor" fill="none" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9" />
</svg>
</button>-->
<!-- Profile dropdown -->
<div class="ml-3 relative">
<div>
<button class="max-w-xs flex items-center text-sm rounded-full text-white focus:outline-none focus:shadow-solid" id="user-menu" aria-label="User menu" aria-haspopup="true">
<!--<img class="h-8 w-8 rounded-full" src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt="">-->
~<%= if @conn.assigns[:account], do: @conn.assigns.account.name %>
</button>
</div>
<!--
Profile dropdown panel, show/hide based on dropdown state.
Entering: "transition ease-out duration-100"
From: "transform opacity-0 scale-95"
To: "transform opacity-100 scale-100"
Leaving: "transition ease-in duration-75"
From: "transform opacity-100 scale-100"
To: "transform opacity-0 scale-95"
-->
<!--<div class="origin-top-right absolute right-0 mt-2 w-48 rounded-md shadow-lg">
<div class="py-1 rounded-md bg-white shadow-xs">
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">Your Profile</a>
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">Settings</a>
<a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">Sign out</a>
</div>
</div>-->
</div>
</div>
</div>
<div class="-mr-2 flex md:hidden">
<!-- Mobile menu button -->
<button class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none focus:bg-gray-700 focus:text-white">
<!-- Menu open: "hidden", Menu closed: "block" -->
<svg class="block h-6 w-6" stroke="currentColor" fill="none" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
</svg>
<!-- Menu open: "block", Menu closed: "hidden" -->
<svg class="hidden h-6 w-6" stroke="currentColor" fill="none" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
</svg>
</button>
</div>
</div>
</div>
</div>
<!--
Mobile menu, toggle classes based on menu state.
Open: "block", closed: "hidden"
-->
<div class="hidden border-b border-gray-700 md:hidden">
<div class="px-2 py-3 sm:px-3">
<a href="#" class="block px-3 py-2 rounded-md text-base font-medium text-white bg-gray-900 focus:outline-none focus:text-white focus:bg-gray-700">Dashboard</a>
<a href="#" class="mt-1 block px-3 py-2 rounded-md text-base font-medium text-gray-300 hover:text-white hover:bg-gray-700 focus:outline-none focus:text-white focus:bg-gray-700">Team</a>
<a href="#" class="mt-1 block px-3 py-2 rounded-md text-base font-medium text-gray-300 hover:text-white hover:bg-gray-700 focus:outline-none focus:text-white focus:bg-gray-700">Projects</a>
<a href="#" class="mt-1 block px-3 py-2 rounded-md text-base font-medium text-gray-300 hover:text-white hover:bg-gray-700 focus:outline-none focus:text-white focus:bg-gray-700">Calendar</a>
<a href="#" class="mt-1 block px-3 py-2 rounded-md text-base font-medium text-gray-300 hover:text-white hover:bg-gray-700 focus:outline-none focus:text-white focus:bg-gray-700">Reports</a>
</div>
<div class="pt-4 pb-3 border-t border-gray-700">
<div class="flex items-center px-5">
<div class="flex-shrink-0">
<img class="h-10 w-10 rounded-full" src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt="">
</div>
<div class="ml-3">
<div class="text-base font-medium leading-none text-white">Tom Cook</div>
<div class="mt-1 text-sm font-medium leading-none text-gray-400">tom@example.com</div>
</div>
</div>
<div class="mt-3 px-2" role="menu" aria-orientation="vertical" aria-labelledby="user-menu">
<a href="#" class="block px-3 py-2 rounded-md text-base font-medium text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none focus:text-white focus:bg-gray-700" role="menuitem">Your Profile</a>
<a href="#" class="mt-1 block px-3 py-2 rounded-md text-base font-medium text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none focus:text-white focus:bg-gray-700" role="menuitem">Settings</a>
<a href="#" class="mt-1 block px-3 py-2 rounded-md text-base font-medium text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none focus:text-white focus:bg-gray-700" role="menuitem">Sign out</a>
</div>
</div>
</div>
</nav>
<header class="py-10">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<h1 class="text-3xl leading-9 font-bold text-white">
<%= if n = @conn.assigns[:network] do %><a href="/<%= n %>"><%= n %></a> &rsaquo; <% end %>
- <%= if c = @conn.assigns[:chan] do %><a href="/<%= @conn.assigns.network %>/<%= LSGWeb.format_chan(c) %>"><%= c %></a> &rsaquo; <% end %>
+ <%= if c = @conn.assigns[:chan] do %><a href="/<%= @conn.assigns.network %>/<%= NolaWeb.format_chan(c) %>"><%= c %></a> &rsaquo; <% end %>
<%= for({name, href} <- Enum.uniq(@conn.assigns[:breadcrumbs]||[]), do: [link(name, to: href), raw(" &rsaquo; ")]) %>
<%= @conn.assigns[:title] %>
</h1>
</div>
</header>
</div>
<main class="-mt-32 h-full">
<div class="max-w-7xl h-full mx-auto pb-12 px-4 sm:px-6 lg:px-8">
<!-- Replace with your content -->
<div class="bg-white h-full rounded-lg shadow px-5 py-6 sm:px-6">
<%= @inner_content %>
</div>
<!-- /End replace -->
</div>
</main>
</div>
diff --git a/lib/lsg_web/templates/page/user.html.eex b/lib/lsg_web/templates/page/user.html.eex
index 6eeb39d..de9f718 100644
--- a/lib/lsg_web/templates/page/user.html.eex
+++ b/lib/lsg_web/templates/page/user.html.eex
@@ -1,43 +1,43 @@
<div class="prose prose-lg">
<ul>
<li><%= link("Help", to: "/-") %></li>
<%= unless List.keyfind(@metas, "identity-id", 0) do %>
<li><%= link("Connect with random.sh", to: Routes.open_id_path(@conn, :login)) %></li>
<% end %>
</ul>
<h2>channels</h2>
<ul>
<%= for {net, channel} <- @memberships do %>
<li>
- <% url = LSGWeb.Router.Helpers.irc_path(LSGWeb.Endpoint, :index, net, LSGWeb.format_chan(channel)) %>
+ <% url = NolaWeb.Router.Helpers.irc_path(NolaWeb.Endpoint, :index, net, NolaWeb.format_chan(channel)) %>
<%= link([net, ": ", content_tag(:strong, channel)], to: url) %>
</li>
<% end %>
</ul>
<h2>connections</h2>
<ul>
<%= for user <- @users do %>
<li>
<strong><%= user.network %></strong>: <strong><%= user.nick %></strong>!<%= user.username %>@<%= user.host %> <i><%= user.realname %></i><br />
<%= Enum.join(Enum.intersperse(Enum.map(user.privileges, fn({c, _}) -> c end), ", ")) %>
</li>
<% end %>
</ul>
<h2>account</h2>
<ul>
<li>account-id: <%= @conn.assigns.account.id %></li>
<%= for {k, v} <- @metas do %>
<li><%= k %>: <%= to_string(v) %></li>
<% end %>
</ul>
<strong>irc auths:</strong>
<ul>
<%= for {net, {predicate, v}} <- @predicates do %>
<li><%= net %>: <%= to_string(predicate) %>, <%= v %></li>
<% end %>
</ul>
</div>

File Metadata

Mime Type
text/x-diff
Expires
Fri, Mar 14, 4:45 PM (1 d, 17 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33611
Default Alt Text
(41 KB)

Event Timeline