Templates and snippets for export

This commit is contained in:
2021-03-26 10:13:33 +01:00
parent 7533f382e7
commit 8163e056c6
92 changed files with 15324 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
2c51cff6d460b829993d6d0c61c12828 hideshow.js 1442808908
8fc25e27d42774aeae6edbc0a18b72aa jquery-1.11.0.min.js 1442808908
7c87f5b9f7e504e3c12f460967436550 jquery.localscroll-min.js 1442808908
9ef39fa9511ae4fd1d34ed9252ceaadc bigblow.js 1442808908
397754ba49e9e0cf4e7c190da78dda05 jquery-1.9.1.min.js 1442808908
c4dff68594e0fdb05b48aac9a90c0a19 jquery.scrollTo-1.4.3.1-min.js 1442808908
9f4401cdc4405d0730362256b4c04cc0 ZeroClipboard.swf 1442808908
9e85741bf31afd921a7289b6cccdfdbd jquery.zclip.min.js 1442808908
3e6acb1e6426ef90d2e786a006a4ea28 jquery-ui-1.10.2.min.js 1442808908

View File

@@ -0,0 +1,524 @@
// darksun.js --- darksun JS file
//
// Copyright (C) 2011-2016 All Right Reserved, Fabrice Niessen
//
// This file is free software: you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation, either version 3 of
// the License, or (at your option) any later version.
//
// This file is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// Author: Fabrice Niessen <(concat "fniessen" at-sign "pirilampo.org")>
// URL: https://github.com/fniessen/org-html-themes/
// Version: 20140515.1841
$(function() {
$('p').
html(function(index, old) {
return old.replace('FIXME',
'<span class="fixme">FIXME</span>');
});
$('p').
html(function(index, old) {
return old.replace('XXX',
'<span class="fixme">XXX</span>');
});
});
// Remove leading section number
$(function() {
$('.section-number-2').text("");
for (var i = 3; i <= 5; i++) {
$('.section-number-' + i).each(function() {
$(this).text($(this).text().replace(/^[0-9]+\./g, ""));
});
}
});
$(function() {
$('<div id="minitoc" class="dontprint"></div>').prependTo('body');
});
// generate contents of minitoc
function generateMiniToc(divId) {
$('#minitoc-content').empty().append('<h2>In this section</h2><ul></ul>');
$('#' + divId).find('h3').each(function(i) {
// [2018-09-03 Mon 03:48] Get text up to non-breaking space,
// to omit the tags. If there are no tags, there will be no
// &nbsp;, so get all the text. (This fixes a bug in the
// original code.)
let text = null;
let pos = $(this).text().search(/ | ►/);
if (pos > 0) {
text = $(this).text().substring(0, pos);
}
else {
text = $(this).text();
}
$("#minitoc-content>ul").append("<li><a href='#" + $(this).attr("id") + "'>"
+ text + "</a></li>");
});
// Ensure that the target is expanded (hideShow)
$('#minitoc-content a[href^="#"]').click(function() {
var href = $(this).attr('href');
hsExpandAnchor(href);
});
}
// display tabs
function tabifySections() {
// hide TOC (if present)
$('#table-of-contents').hide();
// grab the list of `h2' from the page
var allSections = [];
$('h2')
.each(function() {
// Remove TODO keywords and tags (contained in spans)
var tabText = $(this).clone().find('span').remove().end()
.text().trim();
var tabId = $(this).parent().attr('id');
if (tabText) {
// - remove heading number (all leading digits)
// - remove progress logging (between square brackets)
// - remove leading and trailing spaces
tabText = tabText.replace(/^\d+\s+/, '').replace(/\[[\d/%]+\]/, '').trim();
allSections.push({
text: tabText,
id: tabId
});
}
});
// create the tab links
var tabs = $('<ul id="tabs"></ul>');
for (i = 0; i < allSections.length; i++) {
var item = allSections[i];
html = $('<li><a href="#' + item.id + '">' + item.text + '</a></li>');
tabs.append(html);
}
// insert tabs menu after title (`h1'), or at the beginning of the content
if($('.title').length !== 0) {
$('.title').after(tabs);
}
else {
$('#content').prepend(tabs);
}
}
function selectTabAndScroll(href) {
// At this point we assume that href is local (starts with #)
// alert(href);
// Find the tab to activate
var targetTab = $(href).closest('.ui-tabs-panel');
var targetTabId = targetTab.attr('id');
var targetTabAriaLabel = targetTab.attr('aria-labelledby');
var targetTabIndex = $("#content ul li")
.index($('[aria-labelledby="' + targetTabAriaLabel + '"]'));
// Activate target tab
$('#content').tabs('option', 'active', targetTabIndex);
// Rebuild minitoc
generateMiniToc(targetTabId);
// Set the location hash
// document.location.hash = href;
// Scroll to top if href was a tab
if (href == '#' + targetTabId) {
// alert(targetTabId);
$.scrollTo(0);
}
// Scroll to href if href was not a tab
else {
$.scrollTo(href);
}
}
$(document).ready(function() {
$('#preamble').remove();
$('#table-of-contents').remove();
// Initialize hideShow
hsInit();
// Prepare for tabs
tabifySections();
// Build the tabs from the #content div
$('#content').tabs();
// Set default animation
$('#content').tabs('option', 'show', true);
// Rebuild minitoc when a tab is activated
$('#content').tabs({
activate: function(event, ui) {
var divId = ui.newTab.attr('aria-controls');
generateMiniToc(divId);
}
});
// Required to get the link of the tab in URL
$('#content ul').localScroll({
target: '#content',
duration: 0,
hash: true
});
// Handle hash in URL
if ($('#content') && document.location.hash) {
hsExpandAnchor(document.location.hash);
selectTabAndScroll(document.location.hash);
}
// If no hash, build the minitoc anyway for selected tab
else {
var divId = $('#content div[aria-expanded=true]').attr('id');
generateMiniToc(divId);
}
// Handle click on internal links
$('.ui-tabs-panel a[href^="#"]').click(function(e) {
var href = $(this).attr('href');
hsExpandAnchor(href);
selectTabAndScroll(href);
e.preventDefault();
});
// add sticky headers to tables
$('table').stickyTableHeaders();
});
function copyToClipboard(text)
{
if (window.clipboardData && window.clipboardData.setData) { // Internet Explorer
window.clipboardData.setData("Text", text);
}
else { // Fallback solution
window.prompt("Copy to clipboard: Ctrl+C, Enter", text);
}
}
$(document).ready(function() {
// Assuming that the ZeroClipboard swf file is in the same folder than darksun,
// get the path to it (it will be relative to the current page location).
var bbScriptPath = $('script[src$="darksun.js"]').attr('src'); // the js file path
var bbPathToZeroClipboardSwf = bbScriptPath.replace('darksun.js', 'ZeroClipboard.swf');
// Add copy to clipboard snippets
$('.org-src-container').prepend('<div class="snippet-copy-to-clipboard"><span class="copy-to-clipboard-button">[copy]</span></div>');
// Display/hide snippets on source block mouseenter/mouseleave
$(document).on('mouseenter', '.org-src-container', function () {
$(this).find('.snippet-copy-to-clipboard').show();
// Need to call zclip here, once the button is visible.
// Beacause when the button is not visible, zclip does nothing.
if ((window.location.protocol != 'file:') && ($(this).find('.zclip').length == 0)) {
$(this).find('.copy-to-clipboard-button').zclip({
//path: 'http://www.steamdev.com/zclip/js/ZeroClipboard.swf',
//path: 'styles/darksun/js/ZeroClipboard.swf',
path: bbPathToZeroClipboardSwf,
copy: function() {
return $(this).parent().parent().find('.src').text();
}
});
}
}).on('mouseleave', '.org-src-container', function () {
$(this).find('.snippet-copy-to-clipboard').hide();
});
// Handle copy to clipboard (here, for a local file only 'file://...'
if (window.location.protocol == 'file:') { // if local file use browser-specific code
$('.copy-to-clipboard-button').click(function() {
// Get the text to be copied
var text = $(this).parent().parent().find('.src').text();
text = text.replace(/\n/g, "\r\n");
// alert(text);
copyToClipboard(text);
});
}
});
$(function() {
$('li > code :contains("[X]")')
.parent()
.addClass('checked')
.end()
.remove();
$('li > code :contains("[-]")')
.parent()
.addClass('halfchecked')
.end()
.remove();
$('li > code :contains("[ ]")')
.parent()
.addClass('unchecked')
.end()
.remove();
});
$(function() {
$('i :contains("[#A]")')
.replaceWith('<i><span style="color: #F67777;">[#A]</span></i>');
$('i :contains("[#B]")')
.replaceWith('<i><span style="color: #B6E864;">[#B]</span></i>');
$('i :contains("[#C]")')
.replaceWith('<i><span style="color: #C3DCFF;">[#C]</span></i>');
});
function togglePanel(e) {
e.preventDefault();
$("#left-panel-contents").toggleClass('active').toggle(200);
$("#right-panel-contents").toggleClass('active').toggle(200);
var slidePos =
$("#left-panel-button").css("left") == "-23px"? '182px': '-23px';
$("#left-panel-button").
animate({"left": slidePos, "opacity": 0.9}, {duration: "200" });
// if ($("#left-panel-contents").hasClass('active')) {
// hsHideTodoKeyword('done');
// } else {
// hsShowTodoKeyword('done');
// }
// return false;
}
$(function() {
$('<div id="left-panel-wrapper" class="dontprint"><div id="left-panel-contents" style="opacity: 0.9"></div><div id="left-panel-button" class="dontprint"><a href="#">Dashboard</a></div></div>')
.appendTo('body');
$('<div id="right-panel-wrapper" class="dontprint"><div id="right-panel-contents" style="opacity: 0.9"></div></div>')
.appendTo('body');
$('#left-panel-button').click(togglePanel);
});
$(function() {
var ul = $('<ul id="listOfTodo"></ul>').appendTo('#left-panel-contents');
var countOfTodo = {}, listOfTodo = [], totalOfTodo = 0;
// assign the counts (avoid double-counting elements from the ToC)
$('span.todo').not($('#table-of-contents span.todo')).each(function() {
var $thisTodo = $(this).text().trim();
if ($.inArray($thisTodo, listOfTodo) == -1) {
countOfTodo[$thisTodo] = 1;
listOfTodo.push($thisTodo);
}
else
countOfTodo[$thisTodo] += 1;
totalOfTodo += 1;
});
function scoreTodo(t) {
switch (t) {
case 'NEW': return 1;
case 'TODO': return 2;
case 'STRT': return 3;
case 'WAIT': return 4;
case 'DLGT': return 5;
case 'SDAY': return 6;
case 'DFRD': return 7;
case 'DONE': return 8;
case 'CANX': return 9;
default: return 0;
}
}
function compareTodo(a, b) {
if (scoreTodo(a) < scoreTodo(b)) return -1;
if (scoreTodo(a) > scoreTodo(b)) return 1;
return 0;
}
listOfTodo.sort(compareTodo);
// display
for (i = 0; i < listOfTodo.length; i++) {
var $thisTodo = listOfTodo[i];
$(ul).append('<li><span class="todo ' + $thisTodo + '">'+ $thisTodo + '</span>'
+ ' <small>(' + countOfTodo[$thisTodo] + ')</small></li>');
}
$('#listOfTodo')
.before('<b>Next Actions</b> <small>(' + totalOfTodo + ')</small>:<br>');
});
$(function() {
var ul = $('<ul id="listOfDone"></ul>').appendTo('#left-panel-contents');
var countOfDone = {}, listOfDone = [], totalOfDone = 0;
// assign the counts (avoid double-counting elements from the ToC)
$('span.done').not($('#table-of-contents span.done')).each(function() {
var $thisDone = $(this).text().trim();
if ($.inArray($thisDone, listOfDone) == -1) {
countOfDone[$thisDone] = 1;
listOfDone.push($thisDone);
}
else
countOfDone[$thisDone] += 1;
totalOfDone += 1;
});
// display
for (i = 0; i < listOfDone.length; i++) {
var $thisDone = listOfDone[i];
$(ul).append('<li><span class="done ' + $thisDone + '">'+ $thisDone + '</span>'
+ ' <small>(' + countOfDone[$thisDone] + ')</small></li>');
}
$('#listOfDone')
.before('<b>Done Actions</b> <small>(' + totalOfDone + '):</small><br>');
});
$(function() {
var ul = $('<ul id="listOfTags"></ul>').appendTo('#right-panel-contents');
var countOfTags = {}, listOfTags = [], totalOfTags = 0;
// assign the counts (avoid double-counting elements from the ToC)
$('span.tag').not($('#table-of-contents span.tag')).each(function() {
var $thisTagGroup = $(this).text().trim().split(/\s/);
// \s matches spaces, tabs, new lines, etc.
for (tag in $thisTagGroup) {
if ($.inArray($thisTagGroup[tag], listOfTags) == -1) {
countOfTags[$thisTagGroup[tag]] = 1;
listOfTags.push($thisTagGroup[tag]);
}
else
countOfTags[$thisTagGroup[tag]] += 1;
totalOfTags += 1;
}
});
listOfTags.sort();
// display
for (i = 0; i < listOfTags.length; i++) {
var $thisTag = listOfTags[i];
// $(ul).append('<li><span class="tag ' + $thisTag + '">'+
// $thisTag + '</span> <small>(' + countOfTags[$thisTag] + ')</small></li>');
$(ul).append('<li><span class="tag"><span class="' + $thisTag + '">' + $thisTag
+ '</span></span>'
+ ' <small>(' + countOfTags[$thisTag] + ')</small></li>');
}
$('#listOfTags')
.before('<b>Contexts</b> <small>(' + totalOfTags + '):</small><br>');
});
$(function() {
$('.done').parent(':header').parent().find(':header').addClass('DONEheader');
$('.done').parent(':header').parent().css({color: '#999999'});
});
$(function() {
$('span.todo').click(function(e) {
var orgKeyword = $(this).text().trim();
$('.' + orgKeyword).toggleClass('selected');
$('#content .' + orgKeyword).parent().parent()
.toggleClass('match' + orgKeyword);
$('#left-panel-wrapper .' + orgKeyword).parent()
.toggleClass('match' + orgKeyword);
e.preventDefault();
})
});
$(function() {
$('.tag span').click(function(e) {
var orgTag = $(this).text().trim();
$('.' + orgTag).toggleClass('selected');
$('#content .' + orgTag).parent().parent().parent()
.toggleClass('matchtag');
$('#right-panel-wrapper .' + orgTag).parent().parent()
.toggleClass('matchtag');
e.preventDefault();
})
});
function clickPreviousTab() {
var active = $('#content').tabs('option', 'active');
// Avoid going back to last tab
if (active == 0) return;
$('#content').tabs('option', 'active', active - 1);
// Set the location href
var href = $('#content div[aria-expanded=true]').attr('id');
document.location.hash = href;
$.scrollTo(0);
}
function clickNextTab() {
var active = $('#content').tabs('option', 'active');
$('#content').tabs('option', 'active', active + 1);
// Set the location href
var href = $('#content div[aria-expanded=true]').attr('id');
document.location.hash = href;
$.scrollTo(0);
}
function orgDefkey(e) {
if (!e)
var e = window.event;
var keycode = (e.keyCode) ? e.keyCode : e.which;
var actualkey = String.fromCharCode(keycode);
switch (actualkey) {
case "?": // help (dashboard)
case "h":
togglePanel(e);
break;
case "n": // next
clickNextTab();
break;
case "p": // previous
clickPreviousTab();
break;
// case "b": // scroll down - should be mapped to Shift-SPC
// $(window).scrollTop($(window).scrollTop()-$(window).height());
// break;
case "<": // scroll to top
$(window).scrollTop(0);
break;
case ">": // scroll to bottom
$(window).scrollTop($(document).height());
break;
case "-": // collapse all
hsCollapseAll();
break;
case "+": // expand all
hsExpandAll();
break;
case "r": // go to next task
hsReviewTaskNext();
break;
case "R": // go to previous task
hsReviewTaskPrev();
break;
case "q": // quit reviewing
hsReviewTaskQuit();
break;
case "g": // refresh the page (from the server, rather than the cache)
location.reload(true);
break;
}
}
document.onkeypress = orgDefkey;

View File

@@ -0,0 +1,335 @@
// hideshow.js --- HideShow JS file
//
// Copyright (C) 2014 All Right Reserved, Fabrice Niessen
//
// This file is free software: you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation, either version 3 of
// the License, or (at your option) any later version.
//
// This file is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// Author: Fabrice Niessen <(concat "fniessen" at-sign "pirilampo.org")>
// URL: https://github.com/fniessen/hide-show/
// Version: 20140912.1722
// var HS_COLLAPSIBLE_HEADERS = $('h3, h4, h5'); // collapsible headers
if (typeof HS_STARTUP_FOLDED === 'undefined') {
var HS_STARTUP_FOLDED = false; // Show just the overview, or show all.
}
if (typeof HS_SHOW_ALL_TEXT === 'undefined') {
var HS_SHOW_ALL_TEXT = 'Expand';
}
if (typeof HS_HIDE_ALL_TEXT === 'undefined') {
var HS_HIDE_ALL_TEXT = 'Collapse';
}
if (typeof HS_ALWAYS_DISPLAY_ICON === 'undefined') {
var HS_ALWAYS_DISPLAY_ICON = false; // Display an icon for all states, or
// just when closed.
}
if (typeof HS_ICON_CLOSED === 'undefined') {
var HS_ICON_CLOSED = '&#x25BA;'; // black right-pointing pointer
}
if (typeof HS_ICON_OPEN === 'undefined') {
var HS_ICON_OPEN = '&#x25BC;'; // black down-pointing triangle
}
if (typeof HS_ICON_EMPTY === 'undefined') {
var HS_ICON_EMPTY = '&#x25A0;'; // black square
}
if (typeof HS_SHOW_ALL_OPEN_DONE_TREES === 'undefined') {
var HS_SHOW_ALL_OPEN_DONE_TREES = false; // Expand all will open DONE trees.
}
if (typeof HS_CLASS === 'undefined') {
var HS_CLASS = 'hsCollapsible';
}
// Expand a header
function hsExpand(header) {
hsExpand2(header, true);
}
// Expand a header
function hsExpand2(header, expandDoneHeader) {
// Ignore non collapsible entries
if (!header.parent().hasClass(HS_CLASS)) return;
// Do not expand DONE node if not required
if (hsIsDoneHeader(header) && !expandDoneHeader) return;
header.children('span[class="ellipsis"]').remove();
if (HS_ALWAYS_DISPLAY_ICON == true) {
header.append('<span class="ellipsis"> ' + HS_ICON_OPEN + '</span>');
}
header.parent().removeClass('hsCollapsed').addClass('hsExpanded');
header.nextAll().show();
}
// Expand a header and all its parents
function hsExpandParents(header) {
hsExpand(header);
header.parents('.hsCollapsed').each(function() {
hsExpand($(this).children(':header'));
});
}
// Collapse a header and all its parents
function hsCollapseParents(header) {
hsCollapse(header);
header.parents('.hsExpanded').each(function() {
hsCollapse($(this).children(':header'));
});
}
// Collapse a header
function hsCollapse(header) {
// Ignore non collapsible entries
if (!header.parent().hasClass(HS_CLASS)) return;
header.children('span[class="ellipsis"]').remove();
header.append('<span class="ellipsis"> ' + HS_ICON_CLOSED + '</span>');
header.parent().removeClass('hsExpanded').addClass('hsCollapsed');
// header.nextAll().hide('fast');
header.nextAll().hide();
}
// Toggle a header
function hsToggleCollapsing(header) {
if (header.parent().hasClass('hsCollapsed'))
hsExpand(header);
else if (header.parent().hasClass('hsExpanded'))
hsCollapse(header);
}
// Expand all headers
function hsExpandAll() {
$('#content .hsCollapsed').each(function() {
hsExpand2($(this).children(':header'), HS_SHOW_ALL_OPEN_DONE_TREES);
});
}
// Collapse all headers
function hsCollapseAll() {
$('#content .hsExpanded').each(function() {
hsCollapse($(this).children(':header'));
});
}
// Collapse all visible headers
function hsCollapseAllVisible() {
$('#content .hsExpanded:visible').each(function() {
hsCollapse($(this).children(':header'));
});
}
// Add click events to H3/H4/H5 headers which have contents.
function hsInit() {
for (var i = 3; i <= 5; i++) {
$('#content .outline-' + i).each(function() {
var header = $(this).children(':header');
if (header.siblings().length > 0) {
$(this).addClass(HS_CLASS);
header.css({cursor: 'pointer'});
header.click(function() {
hsToggleCollapsing($(this)); });
// Allow to override global Collapse/Expand default on an entry
// basis (see property `:HTML_CONTAINER_CLASS:')
if (header.parent().hasClass('hsCollapsed')) {
hsCollapse(header);
} else if (header.parent().hasClass('hsExpanded')) {
hsExpand(header);
} else {
hsSetDefaultVisibility(header);
}
}
else {
if (HS_ALWAYS_DISPLAY_ICON == true) {
header.append('<span class="ellipsis"> ' + HS_ICON_EMPTY
+ '</span>');
}
$(this).addClass('hsEmpty');
}
});
}
// Add div to hold minitoc content (so it can be cleared without deleting the buttons)
$('#minitoc').append($('<div id="minitoc-content"></div>'));
// Add buttons
$('#minitoc').append($('<div class="buttons dontprint"></div>'));
$('.buttons').append($('<span>' + HS_SHOW_ALL_TEXT + '</span>')
.addClass('hsButton')
.click(hsExpandAll));
$('.buttons').append($('<span>' + HS_HIDE_ALL_TEXT + '</span>')
.addClass('hsButton')
.click(hsCollapseAll));
}
// Returns true if a header is a DONE header
function hsIsDoneHeader(header) {
return $('span.done', header).length;
}
// Sets the default visibility state to a header
function hsSetDefaultVisibility(header) {
if (HS_STARTUP_FOLDED) {
hsCollapse(header);
}
else {
if (!hsIsDoneHeader(header) | HS_SHOW_ALL_OPEN_DONE_TREES) {
hsExpand(header);
}
else {
hsCollapse(header);
}
}
}
// Expands an anchor, i.e. expand all parent headers
function hsExpandAnchor(id) {
// alert(id);
if (id) {
// alert($(id + '.hsNode').length);
$(id).parents('.hsCollapsed').each(function() {
hsExpand2($(this).children(':header'), true);
});
}
}
// Search for next task to review, starting from beginning of current tab.
// If BACKWARD is true, search in the reverse direction.
function hsReviewTaskNext(backward) {
// If no tasks to review at all, do nothing.
if ($('.outline-2 span.todo').length == 0) return;
if ($('.hsReviewing').length == 0) { // reviewing is starting
$('body').addClass('hsReviewing');
$('.hsReviewPanel').addClass('hsReviewing');
$('body').prepend('<div id="hsOverlay"></div>');
hsAddReviewingPanels();
hsCollapseAll();
// Get first task to review on each tab and expand it
$('.outline-2').each(function(){
var firstTodo = $(this).find('span.todo:first').parent().parent();
firstTodo.addClass('hsReview');
hsExpandParents($(firstTodo).children(':header'));
});
}
else {
// Get all todos
var todosElements = $('.outline-2:visible span.todo').parent().parent();
// alert(todosElements.length);
var todos = jQuery.makeArray(todosElements);
if (backward) {
todos = todos.reverse();
}
// Find current review item and review the next one
var foundReview = false;
var index;
for (index = 0; index < todos.length; ++index) {
var todo = todos[index];
if (foundReview) {
$(todo).addClass('hsReview');
hsExpandParents($(todo).children(':header'));
break;
}
if ($(todo).hasClass('hsReview')) {
foundReview = true;
if (index < todos.length - 1) {
$(todo).removeClass('hsReview');
hsCollapseParents($(todo).children(':header'));
}
}
}
// Update reviewing panel
if (index < todos.length) {
var reviewItem = index + 1;
if (backward) {
reviewItem = todos.length - index;
}
$('.outline-2:visible .hsReviewingPanel .hsReviewItem').text(reviewItem);
}
}
// Scroll to the current review item
$('html, body').animate({
scrollTop: $(".hsReview:visible").offset().top
}, 200);
}
// go to previous task to review
function hsReviewTaskPrev() {
hsReviewTaskNext(true);
}
// stop reviewing tasks
function hsReviewTaskQuit() {
$('body').removeClass('hsReviewing');
$('.hsReviewPanel').removeClass('hsReviewing');
$('.hsReview').removeClass('hsReview');
$('#hsOverlay').remove();
$('.hsReviewingPanel').remove();
}
function hsHideTodoKeyword(kw) {
$('span.' + kw).addClass('hsHidden').parent().parent().hide();
}
function hsShowTodoKeyword(kw) {
$('span.' + kw).removeClass('hsHidden').parent().parent().show();
// XXX Show if parent is not collapsed!
}
function hsAddReviewPanels() {
$('.outline-2').each(function(e) {
var nbItems = $(this).find('span.todo').length;
if (nbItems > 0) {
$(this).prepend('<div class="hsReviewPanel hsUnselectable" onclick="hsReviewTaskNext()">'
+ 'Press r or click here<br>'
+ 'to review ' + nbItems + ' tasks<br>'
+ '(out of ' + nbReviewTotalTasks + ' tasks)</div>');
}
});
}
function hsAddReviewingPanels() {
$('.outline-2').each(function(e) {
var nbItems = $(this).find('span.todo').length;
if (nbItems > 0) {
$(this).prepend('<div class="hsReviewingPanel hsUnselectable">Reviewing task <span class="hsReviewItem">1</span> / ' + nbItems + '<br>'
+ '(out of ' + nbReviewTotalTasks + ' tasks)<br>'
+ 'Shortcuts: '
+ '<span class="hsReviewButton" onclick="hsReviewTaskNext()">r (next)</span> - '
+ '<span class="hsReviewButton" onclick="hsReviewTaskPrev()">R (previous)</span>'
+ '</div>');
}
else {
$(this).prepend('<div class="hsReviewingPanel hsUnselectable">No task to review<br>'
+ '(out of ' + nbReviewTotalTasks + ' tasks)<br>'
+ 'Shortcuts: '
+ '<span class="hsReviewButton" onclick="hsReviewTaskNext()">r (next)</span> - '
+ '<span class="hsReviewButton" onclick="hsReviewTaskPrev()">R (previous)</span>'
+ '</div>');
}
});
}
var nbReviewTotalTasks;
$(document).ready(function() {
nbReviewTotalTasks = $('.outline-2 span.todo').length;
hsAddReviewPanels();
});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,9 @@
/**
* jQuery.LocalScroll - Animated scrolling navigation, using anchors.
* Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
* Dual licensed under MIT and GPL.
* Date: 3/11/2009
* @author Ariel Flesler
* @version 1.2.7
**/
;(function($){var l=location.href.replace(/#.*/,'');var g=$.localScroll=function(a){$('body').localScroll(a)};g.defaults={duration:1e3,axis:'y',event:'click',stop:true,target:window,reset:true};g.hash=function(a){if(location.hash){a=$.extend({},g.defaults,a);a.hash=false;if(a.reset){var e=a.duration;delete a.duration;$(a.target).scrollTo(0,a);a.duration=e}i(0,location,a)}};$.fn.localScroll=function(b){b=$.extend({},g.defaults,b);return b.lazy?this.bind(b.event,function(a){var e=$([a.target,a.target.parentNode]).filter(d)[0];if(e)i(a,e,b)}):this.find('a,area').filter(d).bind(b.event,function(a){i(a,this,b)}).end().end();function d(){return!!this.href&&!!this.hash&&this.href.replace(this.hash,'')==l&&(!b.filter||$(this).is(b.filter))}};function i(a,e,b){var d=e.hash.slice(1),f=document.getElementById(d)||document.getElementsByName(d)[0];if(!f)return;if(a)a.preventDefault();var h=$(b.target);if(b.lock&&h.is(':animated')||b.onBefore&&b.onBefore.call(b,a,f,h)===false)return;if(b.stop)h.stop(true);if(b.hash){var j=f.id==d?'id':'name',k=$('<a> </a>').attr(j,d).css({position:'absolute',top:$(window).scrollTop(),left:$(window).scrollLeft()});f[j]='';$('body').prepend(k);location=e.hash;k.remove();f[j]=d}h.scrollTo(f,b).trigger('notify.serialScroll',[f])}})(jQuery);

View File

@@ -0,0 +1,7 @@
/**
* Copyright (c) 2007-2012 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
* Dual licensed under MIT and GPL.
* @author Ariel Flesler
* @version 1.4.3.1
*/
;(function($){var h=$.scrollTo=function(a,b,c){$(window).scrollTo(a,b,c)};h.defaults={axis:'xy',duration:parseFloat($.fn.jquery)>=1.3?0:1,limit:true};h.window=function(a){return $(window)._scrollable()};$.fn._scrollable=function(){return this.map(function(){var a=this,isWin=!a.nodeName||$.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!isWin)return a;var b=(a.contentWindow||a).document||a.ownerDocument||a;return/webkit/i.test(navigator.userAgent)||b.compatMode=='BackCompat'?b.body:b.documentElement})};$.fn.scrollTo=function(e,f,g){if(typeof f=='object'){g=f;f=0}if(typeof g=='function')g={onAfter:g};if(e=='max')e=9e9;g=$.extend({},h.defaults,g);f=f||g.duration;g.queue=g.queue&&g.axis.length>1;if(g.queue)f/=2;g.offset=both(g.offset);g.over=both(g.over);return this._scrollable().each(function(){if(e==null)return;var d=this,$elem=$(d),targ=e,toff,attr={},win=$elem.is('html,body');switch(typeof targ){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(targ)){targ=both(targ);break}targ=$(targ,this);if(!targ.length)return;case'object':if(targ.is||targ.style)toff=(targ=$(targ)).offset()}$.each(g.axis.split(''),function(i,a){var b=a=='x'?'Left':'Top',pos=b.toLowerCase(),key='scroll'+b,old=d[key],max=h.max(d,a);if(toff){attr[key]=toff[pos]+(win?0:old-$elem.offset()[pos]);if(g.margin){attr[key]-=parseInt(targ.css('margin'+b))||0;attr[key]-=parseInt(targ.css('border'+b+'Width'))||0}attr[key]+=g.offset[pos]||0;if(g.over[pos])attr[key]+=targ[a=='x'?'width':'height']()*g.over[pos]}else{var c=targ[pos];attr[key]=c.slice&&c.slice(-1)=='%'?parseFloat(c)/100*max:c}if(g.limit&&/^\d+$/.test(attr[key]))attr[key]=attr[key]<=0?0:Math.min(attr[key],max);if(!i&&g.queue){if(old!=attr[key])animate(g.onAfterFirst);delete attr[key]}});animate(g.onAfter);function animate(a){$elem.animate(attr,f,g.easing,a&&function(){a.call(this,e,g)})}}).end()};h.max=function(a,b){var c=b=='x'?'Width':'Height',scroll='scroll'+c;if(!$(a).is('html,body'))return a[scroll]-$(a)[c.toLowerCase()]();var d='client'+c,html=a.ownerDocument.documentElement,body=a.ownerDocument.body;return Math.max(html[scroll],body[scroll])-Math.min(html[d],body[d])};function both(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);

File diff suppressed because one or more lines are too long