Tagging
This commit is contained in:
parent
7564136a67
commit
c69eef875b
@ -49,6 +49,18 @@
|
|||||||
<div id="functions" class="fnBlock">
|
<div id="functions" class="fnBlock">
|
||||||
<span id="fnRefresh" class="lnr lnr-sync"></span>
|
<span id="fnRefresh" class="lnr lnr-sync"></span>
|
||||||
<span id="fnSearch" class="lnr lnr-magnifier"></span>
|
<span id="fnSearch" class="lnr lnr-magnifier"></span>
|
||||||
|
<span class="mui-dropdown">
|
||||||
|
<button class="mui-btn mui-btn--primary" data-mui-toggle="dropdown">
|
||||||
|
Tags
|
||||||
|
<span class="mui-caret"></span>
|
||||||
|
</button>
|
||||||
|
<ul class="mui-dropdown__menu" id="tagList">
|
||||||
|
<li><a href="#?node">Node</a></li>
|
||||||
|
<li><a href="#?ember">Ember</a></li>
|
||||||
|
<li><a href="#">Option 3</a></li>
|
||||||
|
<li><a href="#">Option 4</a></li>
|
||||||
|
</ul>
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div id='searchbox' class="mui-textfield" style="display: none;">
|
<div id='searchbox' class="mui-textfield" style="display: none;">
|
||||||
<input id='newsearch' type="text" placeholder="Search for..">
|
<input id='newsearch' type="text" placeholder="Search for..">
|
||||||
|
572
app/js/app.js
572
app/js/app.js
@ -17,279 +17,359 @@ $.fn.pressEnter = function (fn) {
|
|||||||
|
|
||||||
var Keeper = (function () {
|
var Keeper = (function () {
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
console.log('GO!');
|
console.log('GO!');
|
||||||
var $list = $('#listContainer');
|
var $list = $('#listContainer');
|
||||||
var displayList = function (obj) {
|
var displayList = function (obj) {
|
||||||
var html = new EJS({url: '/partials/list.ejs'}).render(obj);
|
var html = new EJS({url: '/partials/list.ejs'}).render(obj);
|
||||||
console.log(html);
|
// console.log(html);
|
||||||
$list.empty();
|
$list.empty();
|
||||||
$list.append(html);
|
$list.append(html);
|
||||||
$('#listContainer').find('.entry').not('.emptyMessage').click(function () {
|
$('#listContainer').find('.entry').not('.emptyMessage').click(function () {
|
||||||
console.log('Clicked list. ' + this.id);
|
getBookmark(this.id);
|
||||||
getRecipe(this.id);
|
});
|
||||||
});
|
},
|
||||||
},
|
displayPage = function (obj) {
|
||||||
displayPage = function (obj) {
|
var $bodyContents = $('#bodyContents');
|
||||||
var $bodyContents = $('#bodyContents');
|
|
||||||
|
|
||||||
if (obj.reduced.length > 0) {
|
if (obj.reduced.length > 0) {
|
||||||
var vdata = {
|
var vdata = {
|
||||||
data: {
|
data: {
|
||||||
_id: obj._id,
|
_id: obj._id,
|
||||||
_rev: obj._rev,
|
_rev: obj._rev,
|
||||||
title: obj.title,
|
title: obj.title,
|
||||||
reduced: obj.reduced,
|
reduced: obj.reduced,
|
||||||
tags:obj.tags,
|
tags: obj.tags,
|
||||||
url:obj.url
|
url: obj.url
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var redoData = {
|
var redoData = {
|
||||||
_id: obj._id,
|
_id: obj._id,
|
||||||
_rev: obj._rev,
|
_rev: obj._rev,
|
||||||
url: obj.url
|
url: obj.url
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var html = new EJS({url: 'partials/view.ejs'}).render(vdata);
|
||||||
|
|
||||||
var html = new EJS({url: 'partials/view.ejs'}).render(vdata);
|
$bodyContents.empty();
|
||||||
|
$bodyContents.scrollTop(0);
|
||||||
|
|
||||||
$bodyContents.empty();
|
$bodyContents.append(html);
|
||||||
$bodyContents.scrollTop(0);
|
|
||||||
|
|
||||||
$bodyContents.append(html);
|
$('#redo').on('click', function () {
|
||||||
|
self.trigger('redo', redoData);
|
||||||
|
|
||||||
$('#redo').on('click', function () {
|
|
||||||
self.trigger('redo', redoData);
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#tagSave').on('click', function () {
|
|
||||||
self.trigger('tagsave',redoData);
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#tageditmode').on('click', function() {
|
|
||||||
self.trigger('startTags');
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
|
||||||
}, getRecipe = function (id) {
|
|
||||||
console.log('get recipe');
|
|
||||||
var url = '/entry/' + id;
|
|
||||||
var data = '';
|
|
||||||
$.ajax({
|
|
||||||
type: 'GET',
|
|
||||||
url: url,
|
|
||||||
data: data,
|
|
||||||
dataType: 'json',
|
|
||||||
|
|
||||||
timeout: 10000,
|
|
||||||
|
|
||||||
//contentType: ('application/json'),
|
|
||||||
headers: {
|
|
||||||
'Access-Control-Allow-Origin': '*',
|
|
||||||
'Access-Control-Allow-Methods': 'PUT, GET, POST, DELETE, OPTIONS',
|
|
||||||
'Access-Control-Allow-Headers': 'Content-Type'
|
|
||||||
|
|
||||||
},
|
|
||||||
success: function (data) {
|
|
||||||
// console.log(data);
|
|
||||||
displayPage(data);
|
|
||||||
},
|
|
||||||
error: function (xhr, type) {
|
|
||||||
console.log('ajax error');
|
|
||||||
console.log(xhr);
|
|
||||||
console.log(type);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
getList = function () {
|
|
||||||
|
|
||||||
var url = '/list';
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
type: 'GET',
|
|
||||||
url: url,
|
|
||||||
data: '',
|
|
||||||
dataType: 'json',
|
|
||||||
|
|
||||||
timeout: 10000,
|
|
||||||
|
|
||||||
//contentType: ('application/json'),
|
|
||||||
headers: {
|
|
||||||
'Access-Control-Allow-Origin': '*',
|
|
||||||
'Access-Control-Allow-Methods': 'PUT, GET, POST, DELETE, OPTIONS',
|
|
||||||
'Access-Control-Allow-Headers': 'Content-Type'
|
|
||||||
|
|
||||||
},
|
|
||||||
success: function (data) {
|
|
||||||
// console.log(data);
|
|
||||||
displayList(data);
|
|
||||||
},
|
|
||||||
error: function (xhr, type) {
|
|
||||||
console.log('ajax error');
|
|
||||||
console.log(xhr);
|
|
||||||
console.log(type);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
saveTags = function(d) {
|
|
||||||
function parse (input) {
|
|
||||||
return input
|
|
||||||
.trim()
|
|
||||||
.split(/\s*,\s*/)
|
|
||||||
.map(function (col) {
|
|
||||||
return col.trim();
|
|
||||||
})
|
|
||||||
.filter(function (col) {
|
|
||||||
return col && col.length;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('#tagSave').on('click', function () {
|
||||||
|
self.trigger('tagsave', redoData);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#tageditmode').on('click', function () {
|
||||||
|
self.trigger('startTags');
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
}, getBookmark = function (id) {
|
||||||
|
//console.log('getBookmark');
|
||||||
|
var url = '/entry/' + id;
|
||||||
|
var data = '';
|
||||||
|
$.ajax({
|
||||||
|
type: 'GET',
|
||||||
|
url: url,
|
||||||
|
data: data,
|
||||||
|
dataType: 'json',
|
||||||
|
|
||||||
|
timeout: 10000,
|
||||||
|
|
||||||
|
//contentType: ('application/json'),
|
||||||
|
headers: {
|
||||||
|
'Access-Control-Allow-Origin': '*',
|
||||||
|
'Access-Control-Allow-Methods': 'PUT, GET, POST, DELETE, OPTIONS',
|
||||||
|
'Access-Control-Allow-Headers': 'Content-Type'
|
||||||
|
|
||||||
|
},
|
||||||
|
success: function (data) {
|
||||||
|
// console.log(data);
|
||||||
|
displayPage(data);
|
||||||
|
},
|
||||||
|
error: function (xhr, type) {
|
||||||
|
console.log('ajax error');
|
||||||
|
console.log(xhr);
|
||||||
|
console.log(type);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
updateMainTagList = function (obj) {
|
||||||
|
var $taglist = $('#tagList');
|
||||||
|
|
||||||
|
var html = new EJS({url: '/partials/taglist.ejs'}).render(obj);
|
||||||
|
$taglist.empty();
|
||||||
|
$taglist.html(html);
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
getMainTagList = function () {
|
||||||
|
var url = '/tags';
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: 'GET',
|
||||||
|
url: url,
|
||||||
|
data: '',
|
||||||
|
dataType: 'json',
|
||||||
|
|
||||||
|
timeout: 10000,
|
||||||
|
|
||||||
|
//contentType: ('application/json'),
|
||||||
|
headers: {
|
||||||
|
'Access-Control-Allow-Origin': '*',
|
||||||
|
'Access-Control-Allow-Methods': 'PUT, GET, POST, DELETE, OPTIONS',
|
||||||
|
'Access-Control-Allow-Headers': 'Content-Type'
|
||||||
|
|
||||||
|
},
|
||||||
|
success: function (data) {
|
||||||
|
// console.log(data);
|
||||||
|
updateMainTagList(data);
|
||||||
|
},
|
||||||
|
error: function (xhr, type) {
|
||||||
|
console.log('ajax error');
|
||||||
|
console.log(xhr);
|
||||||
|
console.log(type);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getList = function () {
|
||||||
|
|
||||||
|
var url = '/list';
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: 'GET',
|
||||||
|
url: url,
|
||||||
|
data: '',
|
||||||
|
dataType: 'json',
|
||||||
|
|
||||||
|
timeout: 10000,
|
||||||
|
|
||||||
|
//contentType: ('application/json'),
|
||||||
|
headers: {
|
||||||
|
'Access-Control-Allow-Origin': '*',
|
||||||
|
'Access-Control-Allow-Methods': 'PUT, GET, POST, DELETE, OPTIONS',
|
||||||
|
'Access-Control-Allow-Headers': 'Content-Type'
|
||||||
|
|
||||||
|
},
|
||||||
|
success: function (data) {
|
||||||
|
// console.log(data);
|
||||||
|
displayList(data);
|
||||||
|
},
|
||||||
|
error: function (xhr, type) {
|
||||||
|
console.log('ajax error');
|
||||||
|
console.log(xhr);
|
||||||
|
console.log(type);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
saveTags = function (d) {
|
||||||
|
function parse(input) {
|
||||||
|
return input
|
||||||
|
.trim()
|
||||||
|
.split(/\s*,\s*/)
|
||||||
|
.map(function (col) {
|
||||||
|
return col.trim();
|
||||||
|
})
|
||||||
|
.filter(function (col) {
|
||||||
|
return col && col.length;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var data = d;
|
||||||
|
var url = '/tags';
|
||||||
|
var tags = {}, tagItems = $('#edittags').val();
|
||||||
|
tagItems = parse(tagItems);
|
||||||
|
tags.list = tagItems;
|
||||||
|
tags.solid = tagItems.join(', ');
|
||||||
|
|
||||||
|
data.tags = tags;
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
url: url,
|
||||||
|
data: d,
|
||||||
|
dataType: 'json',
|
||||||
|
|
||||||
|
timeout: 10000,
|
||||||
|
|
||||||
|
//contentType: ('application/json'),
|
||||||
|
headers: {
|
||||||
|
'Access-Control-Allow-Origin': '*',
|
||||||
|
'Access-Control-Allow-Methods': 'PUT, GET, POST, DELETE, OPTIONS',
|
||||||
|
'Access-Control-Allow-Headers': 'Content-Type'
|
||||||
|
|
||||||
|
},
|
||||||
|
success: function () {
|
||||||
|
// console.log(data);
|
||||||
|
// displayList(data);
|
||||||
|
$('#visualTabs').toggle();
|
||||||
|
$('#tagForm').toggle();
|
||||||
|
},
|
||||||
|
error: function (xhr, type) {
|
||||||
|
console.log('ajax error');
|
||||||
|
console.log(xhr);
|
||||||
|
console.log(type);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
, addNew = function (newUrl) {
|
||||||
|
var url = '/add';
|
||||||
|
|
||||||
var data = d;
|
var data = {url: JSON.stringify(newUrl)};
|
||||||
var url='/tags';
|
$.ajax({
|
||||||
var tags = {}, tagItems = $('#edittags').val();
|
type: 'POST',
|
||||||
tagItems = parse(tagItems);
|
url: url,
|
||||||
tags.list = tagItems;
|
data: data,
|
||||||
tags.solid = tagItems.join(', ');
|
dataType: 'json',
|
||||||
|
|
||||||
console.log('tags:' + JSON.stringify(tags));
|
timeout: 10000,
|
||||||
data.tags = tags;
|
|
||||||
|
|
||||||
console.log(data);
|
//contentType: ('application/json'),
|
||||||
|
headers: {
|
||||||
|
'Access-Control-Allow-Origin': '*',
|
||||||
|
'Access-Control-Allow-Methods': 'PUT, GET, POST, DELETE, OPTIONS',
|
||||||
|
'Access-Control-Allow-Headers': 'Content-Type'
|
||||||
|
|
||||||
$.ajax({
|
},
|
||||||
type: 'POST',
|
success: function () {
|
||||||
url: url,
|
// console.log(data);
|
||||||
data: d,
|
// displayList(data);
|
||||||
dataType: 'json',
|
},
|
||||||
|
error: function (xhr, type) {
|
||||||
|
console.log('ajax error');
|
||||||
|
console.log(xhr);
|
||||||
|
console.log(type);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
redo = function (d) {
|
||||||
|
console.log('redooing');
|
||||||
|
var url = '/redo';
|
||||||
|
|
||||||
timeout: 10000,
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
url: url,
|
||||||
|
data: d,
|
||||||
|
dataType: 'json',
|
||||||
|
|
||||||
//contentType: ('application/json'),
|
timeout: 10000,
|
||||||
headers: {
|
|
||||||
'Access-Control-Allow-Origin': '*',
|
|
||||||
'Access-Control-Allow-Methods': 'PUT, GET, POST, DELETE, OPTIONS',
|
|
||||||
'Access-Control-Allow-Headers': 'Content-Type'
|
|
||||||
|
|
||||||
},
|
//contentType: ('application/json'),
|
||||||
success: function () {
|
headers: {
|
||||||
// console.log(data);
|
'Access-Control-Allow-Origin': '*',
|
||||||
// displayList(data);
|
'Access-Control-Allow-Methods': 'PUT, GET, POST, DELETE, OPTIONS',
|
||||||
$('#visualTabs').toggle();
|
'Access-Control-Allow-Headers': 'Content-Type'
|
||||||
$('#tagForm').toggle();
|
|
||||||
},
|
|
||||||
error: function (xhr, type) {
|
|
||||||
console.log('ajax error');
|
|
||||||
console.log(xhr);
|
|
||||||
console.log(type);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
},
|
||||||
|
success: function () {
|
||||||
|
// console.log(data);
|
||||||
|
// displayList(data);
|
||||||
|
},
|
||||||
|
error: function (xhr, type) {
|
||||||
|
console.log('ajax error');
|
||||||
|
console.log(xhr);
|
||||||
|
console.log(type);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
start = function () {
|
||||||
|
|
||||||
,addNew = function (newUrl) {
|
|
||||||
var url = '/add';
|
|
||||||
|
|
||||||
var data = {url: JSON.stringify(newUrl)};
|
|
||||||
$.ajax({
|
|
||||||
type: 'POST',
|
|
||||||
url: url,
|
|
||||||
data: data,
|
|
||||||
dataType: 'json',
|
|
||||||
|
|
||||||
timeout: 10000,
|
|
||||||
|
|
||||||
//contentType: ('application/json'),
|
|
||||||
headers: {
|
|
||||||
'Access-Control-Allow-Origin': '*',
|
|
||||||
'Access-Control-Allow-Methods': 'PUT, GET, POST, DELETE, OPTIONS',
|
|
||||||
'Access-Control-Allow-Headers': 'Content-Type'
|
|
||||||
|
|
||||||
},
|
|
||||||
success: function () {
|
|
||||||
// console.log(data);
|
|
||||||
// displayList(data);
|
|
||||||
},
|
|
||||||
error: function (xhr, type) {
|
|
||||||
console.log('ajax error');
|
|
||||||
console.log(xhr);
|
|
||||||
console.log(type);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
redo = function (d) {
|
|
||||||
console.log('redooing');
|
|
||||||
var url = '/redo';
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
type: 'POST',
|
|
||||||
url: url,
|
|
||||||
data: d,
|
|
||||||
dataType: 'json',
|
|
||||||
|
|
||||||
timeout: 10000,
|
|
||||||
|
|
||||||
//contentType: ('application/json'),
|
|
||||||
headers: {
|
|
||||||
'Access-Control-Allow-Origin': '*',
|
|
||||||
'Access-Control-Allow-Methods': 'PUT, GET, POST, DELETE, OPTIONS',
|
|
||||||
'Access-Control-Allow-Headers': 'Content-Type'
|
|
||||||
|
|
||||||
},
|
|
||||||
success: function () {
|
|
||||||
// console.log(data);
|
|
||||||
// displayList(data);
|
|
||||||
},
|
|
||||||
error: function (xhr, type) {
|
|
||||||
console.log('ajax error');
|
|
||||||
console.log(xhr);
|
|
||||||
console.log(type);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
start = function () {
|
|
||||||
|
|
||||||
getList();
|
|
||||||
};
|
|
||||||
|
|
||||||
$('#newurl').pressEnter(function () {
|
|
||||||
var url = $(this).val();
|
|
||||||
if (url !== null) {
|
|
||||||
console.log('Adding: ' + url);
|
|
||||||
addNew(url);
|
|
||||||
$('#addstatus').fadeIn(400).delay(1500).fadeOut(400);
|
|
||||||
$(this).val('');
|
|
||||||
/* setTimeout(function () {
|
|
||||||
getList();
|
getList();
|
||||||
}, 5000);*/
|
getMainTagList();
|
||||||
}
|
},
|
||||||
});
|
listFromTag = function (tag) {
|
||||||
|
console.log('get for ' + tag);
|
||||||
|
var url = '/tags/' + tag;
|
||||||
|
|
||||||
$('#fnRefresh').on('click', function () {
|
$.ajax({
|
||||||
getList();
|
type: 'GET',
|
||||||
});
|
url: url,
|
||||||
|
data: '',
|
||||||
|
dataType: 'json',
|
||||||
|
|
||||||
|
timeout: 10000,
|
||||||
|
|
||||||
|
//contentType: ('application/json'),
|
||||||
|
headers: {
|
||||||
|
'Access-Control-Allow-Origin': '*',
|
||||||
|
'Access-Control-Allow-Methods': 'PUT, GET, POST, DELETE, OPTIONS',
|
||||||
|
'Access-Control-Allow-Headers': 'Content-Type'
|
||||||
|
|
||||||
this.bind('redo', function (data) {
|
},
|
||||||
redo(data);
|
success: function (data) {
|
||||||
});
|
// console.log(data);
|
||||||
|
displayList(data);
|
||||||
|
},
|
||||||
|
error: function (xhr, type) {
|
||||||
|
console.log('ajax error');
|
||||||
|
console.log(xhr);
|
||||||
|
console.log(type);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
this.bind('tagsave', function (data) {
|
};
|
||||||
saveTags(data);
|
|
||||||
});
|
|
||||||
this.bind('startTags', function (data) {
|
|
||||||
$('#visualTabs').toggle();
|
|
||||||
$('#tagForm').toggle();
|
|
||||||
});
|
|
||||||
|
|
||||||
start();
|
$('#newurl').pressEnter(function () {
|
||||||
});
|
var url = $(this).val();
|
||||||
|
if (url !== null) {
|
||||||
|
console.log('Adding: ' + url);
|
||||||
|
addNew(url);
|
||||||
|
$('#addstatus').fadeIn(400).delay(1500).fadeOut(400);
|
||||||
|
$(this).val('');
|
||||||
|
/* setTimeout(function () {
|
||||||
|
getList();
|
||||||
|
}, 5000);*/
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#fnRefresh').on('click', function () {
|
||||||
|
getList();
|
||||||
|
});
|
||||||
|
|
||||||
|
$(window).on('hashchange', ()=> {
|
||||||
|
|
||||||
|
self.trigger('hashchange', location.hash);
|
||||||
|
});
|
||||||
|
|
||||||
|
this.bind('redo', function (data) {
|
||||||
|
redo(data);
|
||||||
|
});
|
||||||
|
|
||||||
|
this.bind('tagsave', function (data) {
|
||||||
|
saveTags(data);
|
||||||
|
});
|
||||||
|
this.bind('startTags', function (data) {
|
||||||
|
$('#visualTabs').toggle();
|
||||||
|
$('#tagForm').toggle();
|
||||||
|
});
|
||||||
|
|
||||||
|
this.bind('hashchange', function (data) {
|
||||||
|
|
||||||
|
var tagroute = data.replace('#?', '');
|
||||||
|
|
||||||
|
if (tagroute !== '')
|
||||||
|
{
|
||||||
|
listFromTag(tagroute);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
getList();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
start();
|
||||||
|
})
|
||||||
|
;
|
||||||
|
|
||||||
MicroEvent.mixin(Keeper);
|
MicroEvent.mixin(Keeper);
|
||||||
|
|
||||||
|
4
app/partials/taglist.ejs
Normal file
4
app/partials/taglist.ejs
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<li><a href="#?"><em>No tag</em></a></li>
|
||||||
|
<% for(var i=0; i<list.length; i++) {%>
|
||||||
|
<li><a href="#?<%= list[i] %>"><%= list[i] %></a></li>
|
||||||
|
<% } %>
|
@ -29,7 +29,7 @@ gulp.task('scripts', function() {
|
|||||||
/*.pipe(gulp.dest('dist/js'))*/
|
/*.pipe(gulp.dest('dist/js'))*/
|
||||||
/*.pipe(rename({suffix: '.min'}))*/
|
/*.pipe(rename({suffix: '.min'}))*/
|
||||||
.pipe(concat('app.js'))
|
.pipe(concat('app.js'))
|
||||||
.pipe(uglify({mangle: false}))
|
/*.pipe(uglify({mangle: false}))*/
|
||||||
.pipe(gulp.dest('dist/js'))
|
.pipe(gulp.dest('dist/js'))
|
||||||
.pipe(notify({ message: 'Scripts task complete' }));
|
.pipe(notify({ message: 'Scripts task complete' }));
|
||||||
});
|
});
|
||||||
|
128
server/keeper.js
128
server/keeper.js
@ -126,10 +126,67 @@ var doGetBookmarkRes = (url, res) =>
|
|||||||
genericGrab(url, res);
|
genericGrab(url, res);
|
||||||
};
|
};
|
||||||
|
|
||||||
var doUpdateTagsDB = () =>
|
var doUpdateTagsDB = () => {
|
||||||
{
|
|
||||||
logger.debug('Update the tags database...');
|
logger.debug('Update the tags database...');
|
||||||
}
|
|
||||||
|
dbCouch.view('getAllTags', 'getAllTags', function (err, body) {
|
||||||
|
var masterList = [];
|
||||||
|
if (!err) {
|
||||||
|
|
||||||
|
var outJSON = [];
|
||||||
|
body.rows.forEach(function (doc) {
|
||||||
|
|
||||||
|
masterList = masterList.concat(doc.value);
|
||||||
|
});
|
||||||
|
|
||||||
|
masterList = masterList.filter((value, index, self) => {
|
||||||
|
return self.indexOf(value) === index;
|
||||||
|
});
|
||||||
|
|
||||||
|
dbCouch.view('taglist', 'taglist', function (err, body) {
|
||||||
|
|
||||||
|
if (!err) {
|
||||||
|
|
||||||
|
var outJSON = {};
|
||||||
|
|
||||||
|
body.rows.forEach(function (doc) {
|
||||||
|
doSaveTagsDB(doc.value,masterList);
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
var doSaveTagsDB = (orig, newList) =>
|
||||||
|
{
|
||||||
|
logger.debug('doSaveTagsDB');
|
||||||
|
// logger.info('sendSocket: ' + JSON.stringify(obj));
|
||||||
|
|
||||||
|
var _obj = orig;
|
||||||
|
|
||||||
|
_obj.taglist = newList;
|
||||||
|
|
||||||
|
dbCouch.insert(_obj, function (err, body, header) {
|
||||||
|
if (err) {
|
||||||
|
logger.error('Error updating into couch');
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
logger.info('Updated the tags list...');
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
// Events
|
// Events
|
||||||
busEmitter.on('saveBookmarkData', doInsertBookmark);
|
busEmitter.on('saveBookmarkData', doInsertBookmark);
|
||||||
@ -139,6 +196,7 @@ busEmitter.on('getBookmarkRes', doGetBookmarkRes);
|
|||||||
|
|
||||||
busEmitter.on('getBookmarkRedo', doGetBookmarkRedo);
|
busEmitter.on('getBookmarkRedo', doGetBookmarkRedo);
|
||||||
busEmitter.on('updateTagsDB', doUpdateTagsDB);
|
busEmitter.on('updateTagsDB', doUpdateTagsDB);
|
||||||
|
busEmitter.on('saveTagsDB', doSaveTagsDB);
|
||||||
|
|
||||||
|
|
||||||
function processBody(body, url, _id, _rev) {
|
function processBody(body, url, _id, _rev) {
|
||||||
@ -318,6 +376,67 @@ router.get('/entry/:id', function (req, res) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
router.get('/tags', function (req, res) {
|
||||||
|
logger.debug('entry..');
|
||||||
|
|
||||||
|
logger.debug(req.params.id);
|
||||||
|
|
||||||
|
dbCouch.view('taglist', 'taglist', function (err, body) {
|
||||||
|
if (!err) {
|
||||||
|
logger.debug(body);
|
||||||
|
var outJSON = [];
|
||||||
|
body.rows.forEach(function (doc) {
|
||||||
|
logger.info(doc.value.taglist);
|
||||||
|
if (doc.value[0]==req.params.id)
|
||||||
|
{
|
||||||
|
outJSON = doc.value.taglist;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
//logger.debug(util.inspect(body));
|
||||||
|
res.writeHead(200, {"ContentType": "application/json"});
|
||||||
|
res.end(JSON.stringify({list: outJSON}));
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
logger.error(err);
|
||||||
|
res.writeHead(500, {"ContentType": "application/json"});
|
||||||
|
res.end(JSON.stringify({}));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
router.get('/tags/:id', function (req, res) {
|
||||||
|
logger.debug('entry..');
|
||||||
|
|
||||||
|
logger.debug(req.params.id);
|
||||||
|
|
||||||
|
dbCouch.view('getTagByKey', 'getTagByKey', function (err, body) {
|
||||||
|
if (!err) {
|
||||||
|
// logger.debug(body);
|
||||||
|
var outJSON = [];
|
||||||
|
body.rows.forEach(function (doc) {
|
||||||
|
// logger.debug(doc);
|
||||||
|
if (doc.value[0]==req.params.id)
|
||||||
|
{
|
||||||
|
outJSON.push({id: doc.id, title: doc.value[1]})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
//logger.debug(util.inspect(body));
|
||||||
|
res.writeHead(200, {"ContentType": "application/json"});
|
||||||
|
res.end(JSON.stringify({list: outJSON}));
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
logger.error(err);
|
||||||
|
res.writeHead(500, {"ContentType": "application/json"});
|
||||||
|
res.end(JSON.stringify({}));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
router.post('/add', function (req, res) {
|
router.post('/add', function (req, res) {
|
||||||
@ -403,4 +522,7 @@ router.get('/new', function (req, res) {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
busEmitter.emit('updateTagsDB');
|
||||||
|
|
||||||
module.exports = router;
|
module.exports = router;
|
||||||
|
101
server/maker.js
101
server/maker.js
@ -1,42 +1,79 @@
|
|||||||
var nano = require('nano')('http://localhost:5984');
|
var nano = require('nano')('http://localhost:5984');
|
||||||
|
|
||||||
// clean up the database we created previously
|
// clean up the database we created previously
|
||||||
nano.db.destroy('keeper', function() {
|
nano.db.destroy('keeper', function () {
|
||||||
// create a new database
|
// create a new database
|
||||||
nano.db.create('keeper', function() {
|
nano.db.create('keeper', function () {
|
||||||
// specify the database we are going to use
|
// specify the database we are going to use
|
||||||
var keeper = nano.use('keeper');
|
var keeper = nano.use('keeper');
|
||||||
// and insert a document in it
|
// and insert a document in it
|
||||||
/* keeper.insert({ crazy: true }, 'rabbit', function(err, body, header) {
|
/* keeper.insert({ crazy: true }, 'rabbit', function(err, body, header) {
|
||||||
if (err) {
|
if (err) {
|
||||||
console.log('[alice.insert] ', err.message);
|
console.log('[alice.insert] ', err.message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
console.log('you have inserted the rabbit.')
|
console.log('you have inserted the rabbit.')
|
||||||
console.log(body);
|
console.log(body);
|
||||||
});*/
|
});*/
|
||||||
|
|
||||||
|
keeper.insert(
|
||||||
|
{
|
||||||
|
"views": {
|
||||||
|
"titles": {
|
||||||
|
"map": function (doc) { emit(null, doc.title); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, '_design/titles', function (error, response) {
|
||||||
|
console.log("_design/titles added");
|
||||||
|
});
|
||||||
|
|
||||||
keeper.insert(
|
keeper.insert(
|
||||||
{ "views":
|
{
|
||||||
{ "titles":
|
"views": {
|
||||||
{ "map": function(doc) { emit(null, doc.title); } }
|
"reducedView": {
|
||||||
}
|
"map": function (doc) { emit(null, [doc.title, doc.reduced]); }
|
||||||
}, '_design/titles', function (error, response) {
|
}
|
||||||
console.log("_design/titles added");
|
}
|
||||||
});
|
}, '_design/reducedView', function (error, response) {
|
||||||
|
console.log("_design/reducedView added");
|
||||||
|
});
|
||||||
|
|
||||||
keeper.insert(
|
keeper.insert(
|
||||||
{ "views":
|
{
|
||||||
{ "reducedView":
|
"views": {
|
||||||
{ "map": function(doc) { emit(null, [doc.title, doc.reduced]); } }
|
"taglist": {
|
||||||
}
|
"map": function (doc) { if (doc.type == 1) { emit(null, doc); } }
|
||||||
}, '_design/reducedView', function (error, response) {
|
}
|
||||||
console.log("_design/reducedView added");
|
}, '_design/taglist', function (error, response) {
|
||||||
});
|
console.log("_design/taglist added");
|
||||||
|
});
|
||||||
|
|
||||||
|
keeper.insert(
|
||||||
|
{
|
||||||
|
"views": {
|
||||||
|
"getAllTags": {
|
||||||
|
"map": function (doc) { if (doc.tags.list.length > 0) { emit(null, doc.tags.list); } }
|
||||||
|
}
|
||||||
|
}, '_design/getAllTags', function (error, response) {
|
||||||
|
console.log("_design/getAllTags added");
|
||||||
|
});
|
||||||
|
|
||||||
});
|
keeper.insert(
|
||||||
});/**
|
{
|
||||||
|
"views": {
|
||||||
|
"getAllTags": {
|
||||||
|
"map": function(doc) { if (doc.tags.list.length > 0) { for (var t=0;t< doc.tags.list.length;t++) { emit(doc._id, [doc.tags.list[t], doc.title]); } } }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, '_design/getTagByKey', function (error, response) {
|
||||||
|
console.log("_design/getTagByKey added");
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
/**
|
||||||
* Created by Martin on 02/03/2016.
|
* Created by Martin on 02/03/2016.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user