Skip to content

Instantly share code, notes, and snippets.

@evenfrost
Last active August 29, 2015 14:15
Show Gist options
  • Save evenfrost/883fc90d98b16cec1898 to your computer and use it in GitHub Desktop.
Save evenfrost/883fc90d98b16cec1898 to your computer and use it in GitHub Desktop.
Adds a button to generate raw text data from daily entries on Harvest.
/**
* Adds a button to generate raw text data from daily entries on Harvest.
*/
(function () {
var button = document.createElement('button'),
nav = document.querySelector('#nav'),
dayLinks = document.querySelectorAll('.js-harvest-current-view .day-view-week-nav a.js-day'),
area;
button.textContent = 'Raw';
button.setAttribute('style',
'background: transparent; color: #fff; cursor: pointer; float: right; font-weight: 600; height: 100%; margin-left: 10px; padding: 0 10px; position: relative;');
button.addEventListener('click', onButtonClick);
nav.insertBefore(button, nav.firstChild);
for (var i = 0; i < dayLinks.length; i++) {
dayLinks[i].addEventListener('click', setEntries);
}
function onButtonClick() {
if (!area || area.hidden) {
if (!area)
createArea();
setEntries();
selectText(area);
area.hidden = false;
} else {
area.hidden = true;
}
}
function createArea() {
area = document.createElement('div');
area.contentEditable = true;
area.setAttribute('style',
'background: hsla(0, 0%, 100%, .8); border: 1px solid #ccc; margin: 10px; max-width: 30vw; left: 0; padding: 10px; position: fixed; top: 0;');
document.body.appendChild(area);
}
function getEntries() {
var notes = document.querySelectorAll('.js-harvest-current-view .notes p'),
entries = [],
row;
for (var i = 0, len = notes.length; i < len; i++) {
row = notes[i].innerHTML.split('<br>');
for (var n = 0, l = row.length; n < l; n++) {
entries.push(row[n]);
}
}
return entries;
}
function setEntries() {
if (area)
area.innerHTML = getEntries().join('<br>');
}
function selectText(el) {
var range, sel;
range = document.createRange();
range.selectNodeContents(el);
sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment