ptgbot/html/ptg.html
Adam Spiers e8f88b2ee1 Add subscribe command for automatic notifications of topics
Add a new 'subscribe' command which allows people to subscribe for
automatic notifications via direct message of topics which match the
subscription regex they provide.  With no regex argument it shows the
user's current subscription (if any).  Also add a new 'unsubscribe'
command for clearing the regex.

Example use cases:

1. I know that nova is planning to discuss $TOPIC some time tomorrow
   but they don't know exactly when, and I want to spend most of the
   day in another room whilst ensuring I don't miss that particular
   discussion on $TOPIC => "/msg ptgbot subscribe $TOPIC" will give me
   notifications when the PTL types "#nova next $TOPIC" and "#nova now
   $TOPIC".

2. I'm interested in *all* discussion on Python 3.  I don't know which
   projects are planning to discuss it, let alone when, but that
   doesn't matter, because I can type "/msg ptgbot subscribe python ?3"
   and get notified of all Python 3 discussions.

As with the presence tracking commands, these commands can be used in
public channels by preceding them with a '#' character.

Change-Id: I3f51acc318ecf31d435768640cef6c46d8ca136c
2019-04-30 13:06:58 -06:00

144 lines
5.1 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="refresh" content="180">
<title>Currently at the PTG</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="bootstrap-3.3.7.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>
<div class="container">
<h2>Project Teams Gathering</h2>
<p>See what is being discussed currently at the PTG, and what's coming next.<p>
<div id="PTGsessions">
</div>
</div>
<script id="PTGtemplate" type="text/x-handlebars-template">
<style>
.bot-help {
font-size: 85%;
font-style: italic;
padding-left: 8px;
padding-bottom: 4px;
}
{{#each colors as |color track|}}
.{{track}} {
background-color: {{color}};
}
{{/each}}
</style>
{{#if motd.message}}
<div class="alert alert-{{motd.level}}" role="alert">{{motd.message}}</div>
{{/if}}
<div class="panel panel-default">
<div class="panel-heading"><h3 class="panel-title">Current discussion topics</h3></div>
<table class="table">
{{#each tracks as |track| }}
{{#if (lookup @root.now track) }}
<tr>
<td class="col-sm-1"><span class="label label-primary {{track}}">{{track}}</span></td>
<td>{{#trackContentLine}}{{lookup @root.now track}}{{/trackContentLine}}</td>
<td>{{lookup @root.location track}}</td>
</tr>
{{/if}}
{{else}}
<tr><td><small><i>Nothing yet</i></small><td></tr>
{{/each}}
</table>
<div class="bot-help">
Use <code>#TRACK now INFO</code> to set;
this also clears "Coming up next..." info below.
<a href="https://opendev.org/openstack/ptgbot/src/branch/master/README.rst">(more help)</a>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading"><h3 class="panel-title">Coming up next...</h3></div>
<table class="table">
{{#each tracks as |track| }}
{{#if (lookup @root.next track) }}
<tr>
<td class="col-sm-1"><span class="label label-primary {{track}}">{{track}}</span></td>
<td>
{{#each (lookup @root.next track) as |item|}}
{{#trackContentLine}}{{item}}{{/trackContentLine}} <br/>
{{/each}}
</td>
</tr>
{{/if}}
{{else}}
<tr><td><small><i>Nothing yet</i></small><td></tr>
{{/each}}
</table>
<div class="bot-help">
Use <code>#TRACK next INFO</code> to append.
<a href="https://opendev.org/openstack/ptgbot/src/branch/master/README.rst">(more help)</a>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading"><h3 class="panel-title">Scheduled tracks</h3></div>
<div class="panel-body">
<ul class="nav nav-tabs" role="tablist">
{{#each slots as |times day|}}
<li role="presentation"><a id='st{{day}}' href="#s{{day}}" aria-controls="s{{day}}" role="tab" data-toggle="tab">{{day}}</a></li>
{{/each}}
</ul>
<!-- Tab panes -->
<div class="tab-content">
{{#each slots as |times day|}}
<div role="tabpanel" class="tab-pane" id="s{{day}}">
<table class="table table-condensed">
<thead><tr><th></th>
{{#each times as |time|}}
<th>{{time.desc}}</th>
{{/each}}
</tr></thead>
{{#each @root.schedule as |sched room|}}
{{#if (roomactive @root.schedule room times)}}
<tr><td>{{room}}</td>
{{#each (lookup @root.slots day) as |time|}}
<td>{{ roomcode @root.schedule room time.name 0 }}</td>
{{/each}}
</tr>
{{/if}}
{{/each}}
</table>
</div>
{{/each}}
</div>
</div>
<div class="bot-help">
Use <code>#TRACK book SLOTREF</code> to book one of the empty slots with the ptgbot.
<a href="https://opendev.org/openstack/ptgbot/src/branch/master/README.rst">(more help)</a>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading"><h3 class="panel-title">Worried about missing discussions on your favourite topic?</h3></div>
<div class="bot-help">
Message the bot with <code>subscribe REGEXP</code> to get a
notification message when any topic matching that REGEXP is being
discussed or up next.
<a href="https://opendev.org/openstack/ptgbot/src/branch/master/README.rst">(more help)</a>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading"><h3 class="panel-title">Looking for someone, or want to be easy to find?</h3></div>
<div class="bot-help">
Use <code>#seen NICK</code> to see if a user has checked in to a particular location.
Use <code>#in LOCATION</code> to check in somewhere, and <code>#out</code> to check out.
<br />
Presence-tracking commands can also be sent privately to the bot.
<a href="https://opendev.org/openstack/ptgbot/src/branch/master/README.rst">(more help)</a>
</div>
</div>
<p class="text-muted">Content on this page is being driven by room operators through the <a href="https://opendev.org/openstack/ptgbot/src/branch/master/README.rst">openstackptg bot</a> on the <a href="http://eavesdrop.openstack.org/irclogs/%23openstack-ptg/">#openstack-ptg IRC channel</a>. It was last refreshed on {{timestamp}}.</p>
</script>
<script src="jquery-1.9.1.min.js"></script>
<script src="handlebars-4.0.6.js"></script>
<script src="bootstrap-3.3.7.min.js"></script>
<script src="ptg.js"></script>
</body>
</html>