var documentsView = Backbone.View.extend({
collectionID: 0,
currentPage: 1,
documentsPerPage: 10,
totalPages: 1,
collectionContext : {
prev: null,
next: null
},
alreadyClicked: false,
el: '#content',
table: '#documentsTableID',
events: {
"click #collectionPrev" : "prevCollection",
"click #collectionNext" : "nextCollection",
"click #confirmCreateEdge" : "addEdge",
"click #documentsTableID tr" : "clicked",
"click #deleteDoc" : "remove",
"click #documents_first" : "firstDocuments",
"click #documents_last" : "lastDocuments",
"click #documents_prev" : "prevDocuments",
"click #documents_next" : "nextDocuments",
"click #confirmDeleteBtn" : "confirmDelete",
"keyup .modal-body" : "listenKey",
"click .key" : "nop"
},
nop: function(event) {
event.stopPropagation();
},
listenKey: function (e) {
if(e.keyCode === 13){
this.addEdge();
}
},
buildCollectionLink : function (collection) {
return "collection/" + encodeURIComponent(collection.get('name')) + '/documents/1';
},
prevCollection : function () {
if (this.collectionContext.prev !== null) {
$('#collectionPrev').parent().removeClass('disabledPag');
window.App.navigate(this.buildCollectionLink(this.collectionContext.prev), { trigger: true });
}
else {
$('#collectionPrev').parent().addClass('disabledPag');
}
},
nextCollection : function () {
if (this.collectionContext.next !== null) {
$('#collectionNext').parent().removeClass('disabledPag');
window.App.navigate(this.buildCollectionLink(this.collectionContext.next), { trigger: true });
}
else {
$('#collectionNext').parent().addClass('disabledPag');
}
},
addDocument: function () {
var collid = window.location.hash.split("/")[1];
var doctype = arangoHelper.collectionApiType(collid);
if (doctype === 'edge') {
$('#edgeCreateModal').modal('show');
$('.modalTooltips').tooltip({
placement: "left"
});
}
else {
var result = window.arangoDocumentStore.createTypeDocument(collid);
//Success
if (result !== false) {
window.location.hash = "collection/" + result;
arangoHelper.arangoNotification('Document created');
}
//Error
else {
arangoHelper.arangoError('Creating document failed');
}
}
},
addEdge: function () {
var collid = window.location.hash.split("/")[1];
var from = $('#new-document-from').val();
var to = $('#new-document-to').val();
if (from === '') {
arangoHelper.arangoNotification('From paramater is missing');
return;
}
if (to === '') {
arangoHelper.arangoNotification('To parameter is missing');
return;
}
var result = window.arangoDocumentStore.createTypeEdge(collid, from, to);
if (result !== false) {
$('#edgeCreateModal').modal('hide');
window.location.hash = "collection/"+result;
}
//Error
else {
arangoHelper.arangoError('Creating edge failed');
}
},
firstDocuments: function () {
window.arangoDocumentsStore.getFirstDocuments();
},
lastDocuments: function () {
window.arangoDocumentsStore.getLastDocuments();
},
prevDocuments: function () {
window.arangoDocumentsStore.getPrevDocuments();
},
nextDocuments: function () {
window.arangoDocumentsStore.getNextDocuments();
},
remove: function (a) {
this.target = a.currentTarget;
var thiselement = a.currentTarget.parentElement;
this.idelement = $(thiselement).prev().prev();
this.alreadyClicked = true;
$('#docDeleteModal').modal('show');
},
confirmDelete: function () {
this.reallyDelete();
},
reallyDelete: function () {
var self = this;
var row = $(self.target).closest("tr").get(0);
var hash = window.location.hash.split("/");
var page = hash[3];
var deleted = false;
this.docid = $(self.idelement).text();
if (this.type === 'document') {
var result = window.arangoDocumentStore.deleteDocument(this.colid, this.docid);
if (result === true) {
//on success
arangoHelper.arangoNotification('Document deleted');
deleted = true;
}
else if (result === false) {
arangoHelper.arangoError('Document error');
}
}
else if (this.type === 'edge') {
var result = window.arangoDocumentStore.deleteEdge(this.colid, this.docid);
if (result === true) {
//on success
arangoHelper.arangoNotification('Edge deleted');
deleted = true;
}
else if (result === false) {
arangoHelper.arangoError('Edge error');
}
}
if (deleted === true) {
$('#documentsTableID').dataTable().fnDeleteRow($('#documentsTableID').dataTable().fnGetPosition(row));
$('#documentsTableID').dataTable().fnClearTable();
window.arangoDocumentsStore.getDocuments(this.colid, page);
$('#docDeleteModal').modal('hide');
}
},
clicked: function (event) {
if (this.alreadyClicked == true) {
this.alreadyClicked = false;
return 0;
}
var self = event.currentTarget;
var aPos = $(this.table).dataTable().fnGetPosition(self);
if (aPos === null) {
// headline
return;
}
var checkData = $(this.table).dataTable().fnGetData(self);
if (checkData && checkData[0] === '') {
this.addDocument();
return;
}
var docId = self.firstChild.textContent;
window.location.hash = "#collection/" + this.colid + "/" + docId;
},
initTable: function (colid, pageid) {
this.collectionID = colid;
this.currentPage = pageid;
var documentsTable = $('#documentsTableID').dataTable({
"aaSorting": [[ 1, "asc" ]],
"bFilter": false,
"bPaginate":false,
"bRetrieve": true,
"bSortable": false,
"bSort": false,
"bLengthChange": false,
"bAutoWidth": false,
"iDisplayLength": -1,
"bJQueryUI": false,
"aoColumns": [
{ "sClass":"", "bSortable": false, "sWidth":"30px"},
{ "sClass":"","bSortable": false},
{ "bSortable": false, "sClass": ""}
],
"oLanguage": { "sEmptyTable": "No documents"}
});
},
clearTable: function() {
$(this.table).dataTable().fnClearTable();
},
drawTable: function() {
var self = this;
$(self.table).dataTable().fnAddData([
'',
'Add document',
''
]);
$.each(window.arangoDocumentsStore.models, function(key, value) {
$(self.table).dataTable().fnAddData([
'
' + self.cutByResolution(JSON.stringify(value.attributes.content)) + '', '' ]); }); $(".prettify").snippet("javascript", {style: "nedit", menu: false, startText: false, transparent: true, showNum: false}); /* $(".prettify").tooltip({ html: true, placement: "top" });*/ this.totalPages = window.arangoDocumentsStore.totalPages; this.currentPage = window.arangoDocumentsStore.currentPage; this.documentsCount = window.arangoDocumentsStore.documentsCount; if (this.documentsCount === 0) { } else { $('#documentsStatus').html( 'Showing Page '+this.currentPage+' of '+this.totalPages+ ', '+this.documentsCount+' entries' ); } }, template: new EJS({url: 'js/templates/documentsView.ejs'}), render: function() { this.collectionContext = window.arangoCollectionsStore.getPosition(this.colid); $(this.el).html(this.template.text); this.initTable(); this.breadcrumb(); if (this.collectionContext.prev === null) { $('#collectionPrev').parent().addClass('disabledPag'); } if (this.collectionContext.next === null) { $('#collectionNext').parent().addClass('disabledPag'); } $.gritter.removeAll(); return this; }, renderPagination: function (totalPages) { var currentPage = JSON.parse(this.pageid); var self = this; var target = $('#documentsToolbarF'), options = { left: 2, right: 2, page: currentPage, lastPage: totalPages, click: function(i) { options.page = i; window.location.hash = '#collection/' + self.colid + '/documents/' + options.page; } }; target.pagination(options); $('#documentsToolbarF').prepend(''); $('#documentsToolbarF').append(''); var total = $('#totalDocuments'); if (total.length > 0) { total.html("Total: " + this.documentsCount + " documents"); } else { $('#documentsToolbarFL').append('Total: ' + this.documentsCount + ' documents '); } }, breadcrumb: function () { var name = window.location.hash.split("/")[1]; $('#transparentHeader').append( ' ' ); }, cutByResolution: function (string) { if (string.length > 1024) { return this.escaped(string.substr(0, 1024)) + '...'; } return this.escaped(string); }, escaped: function (value) { return value.replace(/&/g, "&").replace(//g, ">").replace(/"/g, """).replace(/'/g, "'"); } });