mirror of https://gitee.com/bigwinds/arangodb
added support for multiple document deletion, fixed a a bug when wrong count of documents was returned
This commit is contained in:
parent
029d9d7c18
commit
7c70351a7d
|
@ -61,6 +61,10 @@
|
||||||
|
|
||||||
getTotal: function() {
|
getTotal: function() {
|
||||||
return this.totalAmount;
|
return this.totalAmount;
|
||||||
|
},
|
||||||
|
|
||||||
|
setTotalMinusOne: function() {
|
||||||
|
this.totalAmount--;
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -15,6 +15,11 @@
|
||||||
<span class="icon_arangodb_arrowleft" title="Previous collection"></span>
|
<span class="icon_arangodb_arrowleft" title="Previous collection"></span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="enabled">
|
||||||
|
<a id="markDocuments" class="headerButton">
|
||||||
|
<span class="icon_arangodb_edit" title="Edit documents"></span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li class="enabled">
|
<li class="enabled">
|
||||||
<a id="importCollection" class="headerButton">
|
<a id="importCollection" class="headerButton">
|
||||||
<span class="icon_arangodb_import" title="Upload documents from JSON file"></span>
|
<span class="icon_arangodb_import" title="Upload documents from JSON file"></span>
|
||||||
|
@ -61,6 +66,12 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="editHeader" class="dropdownImport">
|
||||||
|
<div class="queryline">
|
||||||
|
<button id="deleteSelected" class="button-neutral btn-old-padding" style="float:right">Delete</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="indexHeader" class="headerDropdown">
|
<div id="indexHeader" class="headerDropdown">
|
||||||
<div class="contentIn" id="indexHeaderContent">
|
<div class="contentIn" id="indexHeaderContent">
|
||||||
<div id="indexEditView">
|
<div id="indexEditView">
|
||||||
|
|
|
@ -14,6 +14,8 @@
|
||||||
lastCollectionName: undefined,
|
lastCollectionName: undefined,
|
||||||
restoredFilters: [],
|
restoredFilters: [],
|
||||||
|
|
||||||
|
editMode: false,
|
||||||
|
|
||||||
allowUpload: false,
|
allowUpload: false,
|
||||||
|
|
||||||
collectionContext : {
|
collectionContext : {
|
||||||
|
@ -48,8 +50,6 @@
|
||||||
$('#documents_first').css("visibility", "hidden");
|
$('#documents_first').css("visibility", "hidden");
|
||||||
this.drawTable();
|
this.drawTable();
|
||||||
this.renderPaginationElements();
|
this.renderPaginationElements();
|
||||||
//window.App.documentsView.drawTable();
|
|
||||||
//indow.App.documentsView.renderPaginationElements();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
template: templateEngine.createTemplate("documentsView.ejs"),
|
template: templateEngine.createTemplate("documentsView.ejs"),
|
||||||
|
@ -58,6 +58,7 @@
|
||||||
"click #collectionPrev" : "prevCollection",
|
"click #collectionPrev" : "prevCollection",
|
||||||
"click #collectionNext" : "nextCollection",
|
"click #collectionNext" : "nextCollection",
|
||||||
"click #filterCollection" : "filterCollection",
|
"click #filterCollection" : "filterCollection",
|
||||||
|
"click #markDocuments" : "editDocuments",
|
||||||
"click #indexCollection" : "indexCollection",
|
"click #indexCollection" : "indexCollection",
|
||||||
"click #importCollection" : "importCollection",
|
"click #importCollection" : "importCollection",
|
||||||
"click #filterSend" : "sendFilter",
|
"click #filterSend" : "sendFilter",
|
||||||
|
@ -65,6 +66,7 @@
|
||||||
"click .removeFilterItem" : "removeFilterItem",
|
"click .removeFilterItem" : "removeFilterItem",
|
||||||
"click #documentsTableID tr" : "clicked",
|
"click #documentsTableID tr" : "clicked",
|
||||||
"click #deleteDoc" : "remove",
|
"click #deleteDoc" : "remove",
|
||||||
|
"click #deleteSelected" : "deleteSelectedDocs",
|
||||||
"click #addDocumentButton" : "addDocument",
|
"click #addDocumentButton" : "addDocument",
|
||||||
"click #documents_first" : "firstDocuments",
|
"click #documents_first" : "firstDocuments",
|
||||||
"click #documents_last" : "lastDocuments",
|
"click #documents_last" : "lastDocuments",
|
||||||
|
@ -206,14 +208,27 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
editDocuments: function () {
|
||||||
|
$('#indexCollection').removeClass('activated');
|
||||||
|
$('#importCollection').removeClass('activated');
|
||||||
|
$('#filterCollection').removeClass('activated');
|
||||||
|
$('#markDocuments').toggleClass('activated'); this.changeEditMode();
|
||||||
|
$('#filterHeader').hide();
|
||||||
|
$('#importHeader').hide();
|
||||||
|
$('#indexHeader').hide();
|
||||||
|
$('#editHeader').slideToggle(200);
|
||||||
|
},
|
||||||
|
|
||||||
filterCollection : function () {
|
filterCollection : function () {
|
||||||
$('#indexCollection').removeClass('activated');
|
$('#indexCollection').removeClass('activated');
|
||||||
$('#importCollection').removeClass('activated');
|
$('#importCollection').removeClass('activated');
|
||||||
|
$('#markDocuments').removeClass('activated'); this.changeEditMode();
|
||||||
$('#filterCollection').toggleClass('activated');
|
$('#filterCollection').toggleClass('activated');
|
||||||
this.activeFilter = true;
|
this.activeFilter = true;
|
||||||
$('#filterHeader').slideToggle(200);
|
$('#filterHeader').slideToggle(200);
|
||||||
$('#importHeader').hide();
|
$('#importHeader').hide();
|
||||||
$('#indexHeader').hide();
|
$('#indexHeader').hide();
|
||||||
|
$('#editHeader').hide();
|
||||||
|
|
||||||
var i;
|
var i;
|
||||||
for (i in this.filters) {
|
for (i in this.filters) {
|
||||||
|
@ -227,22 +242,40 @@
|
||||||
importCollection: function () {
|
importCollection: function () {
|
||||||
$('#filterCollection').removeClass('activated');
|
$('#filterCollection').removeClass('activated');
|
||||||
$('#indexCollection').removeClass('activated');
|
$('#indexCollection').removeClass('activated');
|
||||||
|
$('#markDocuments').removeClass('activated'); this.changeEditMode();
|
||||||
$('#importCollection').toggleClass('activated');
|
$('#importCollection').toggleClass('activated');
|
||||||
$('#importHeader').slideToggle(200);
|
$('#importHeader').slideToggle(200);
|
||||||
$('#filterHeader').hide();
|
$('#filterHeader').hide();
|
||||||
$('#indexHeader').hide();
|
$('#indexHeader').hide();
|
||||||
|
$('#editHeader').hide();
|
||||||
},
|
},
|
||||||
|
|
||||||
indexCollection: function () {
|
indexCollection: function () {
|
||||||
$('#filterCollection').removeClass('activated');
|
$('#filterCollection').removeClass('activated');
|
||||||
$('#importCollection').removeClass('activated');
|
$('#importCollection').removeClass('activated');
|
||||||
|
$('#markDocuments').removeClass('activated'); this.changeEditMode();
|
||||||
$('#indexCollection').toggleClass('activated');
|
$('#indexCollection').toggleClass('activated');
|
||||||
$('#newIndexView').hide();
|
$('#newIndexView').hide();
|
||||||
$('#indexEditView').show();
|
$('#indexEditView').show();
|
||||||
$('#indexHeader').slideToggle(200);
|
$('#indexHeader').slideToggle(200);
|
||||||
$('#importHeader').hide();
|
$('#importHeader').hide();
|
||||||
|
$('#editHeader').hide();
|
||||||
$('#filterHeader').hide();
|
$('#filterHeader').hide();
|
||||||
|
},
|
||||||
|
|
||||||
|
changeEditMode: function () {
|
||||||
|
if (this.editMode === true) {
|
||||||
|
$('#documentsTableID tr').css('cursor', 'default');
|
||||||
|
$('.deleteButton').fadeIn();
|
||||||
|
$('.addButton').fadeIn();
|
||||||
|
this.editMode = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$('#documentsTableID tr').css('cursor', 'copy');
|
||||||
|
$('.deleteButton').fadeOut();
|
||||||
|
$('.addButton').fadeOut();
|
||||||
|
this.editMode = true;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
getFilterContent: function () {
|
getFilterContent: function () {
|
||||||
|
@ -452,6 +485,86 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
deleteSelectedDocs: function() {
|
||||||
|
var buttons = [], tableContent = [];
|
||||||
|
var toDelete = this.getSelectedDocs();
|
||||||
|
|
||||||
|
if (toDelete.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
tableContent.push(
|
||||||
|
window.modalView.createReadOnlyEntry(
|
||||||
|
undefined,
|
||||||
|
toDelete.length + ' Documents selected',
|
||||||
|
'Do you want to delete all selected documents?',
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
false,
|
||||||
|
undefined
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
buttons.push(
|
||||||
|
window.modalView.createDeleteButton('Delete', this.confirmDeleteSelectedDocs.bind(this))
|
||||||
|
);
|
||||||
|
|
||||||
|
window.modalView.show(
|
||||||
|
'modalTable.ejs',
|
||||||
|
'Delete documents',
|
||||||
|
buttons,
|
||||||
|
tableContent
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
|
confirmDeleteSelectedDocs: function() {
|
||||||
|
var toDelete = this.getSelectedDocs();
|
||||||
|
var deleted = [], self = this;
|
||||||
|
|
||||||
|
_.each(toDelete, function(key) {
|
||||||
|
var result = false;
|
||||||
|
if (self.type === 'document') {
|
||||||
|
result = self.documentStore.deleteDocument(
|
||||||
|
self.collection.collectionID, key
|
||||||
|
);
|
||||||
|
if (result) {
|
||||||
|
//on success
|
||||||
|
deleted.push(true);
|
||||||
|
self.collection.setTotalMinusOne();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
deleted.push(false);
|
||||||
|
arangoHelper.arangoError('Document error', 'Could not delete document.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (self.type === 'edge') {
|
||||||
|
result = self.documentStore.deleteEdge(self.collection.collectionID, key);
|
||||||
|
if (result === true) {
|
||||||
|
//on success
|
||||||
|
self.collection.setTotalMinusOne();
|
||||||
|
deleted.push(true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
deleted.push(false);
|
||||||
|
arangoHelper.arangoError('Edge error', 'Could not delete edge');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.collection.getDocuments(this.getDocsCallback.bind(this));
|
||||||
|
$('#markDocuments').click();
|
||||||
|
window.modalView.hide();
|
||||||
|
},
|
||||||
|
|
||||||
|
getSelectedDocs: function() {
|
||||||
|
var toDelete = [];
|
||||||
|
_.each($('#documentsTableID tr'), function(element) {
|
||||||
|
if ($(element).hasClass('selected-row')) {
|
||||||
|
toDelete.push($($(element).children()[1]).find('.key').text());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return toDelete;
|
||||||
|
},
|
||||||
|
|
||||||
remove: function (a) {
|
remove: function (a) {
|
||||||
this.target = a.currentTarget;
|
this.target = a.currentTarget;
|
||||||
var thiselement = a.currentTarget.parentElement;
|
var thiselement = a.currentTarget.parentElement;
|
||||||
|
@ -487,6 +600,7 @@
|
||||||
);
|
);
|
||||||
if (result) {
|
if (result) {
|
||||||
//on success
|
//on success
|
||||||
|
this.collection.setTotalMinusOne();
|
||||||
deleted = true;
|
deleted = true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -497,6 +611,7 @@
|
||||||
result = this.documentStore.deleteEdge(this.collection.collectionID, this.docid);
|
result = this.documentStore.deleteEdge(this.collection.collectionID, this.docid);
|
||||||
if (result === true) {
|
if (result === true) {
|
||||||
//on success
|
//on success
|
||||||
|
this.collection.setTotalMinusOne();
|
||||||
deleted = true;
|
deleted = true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -515,11 +630,38 @@
|
||||||
|
|
||||||
},
|
},
|
||||||
clicked: function (event) {
|
clicked: function (event) {
|
||||||
|
var self = event.currentTarget;
|
||||||
|
|
||||||
if (this.alreadyClicked === true) {
|
if (this.alreadyClicked === true) {
|
||||||
this.alreadyClicked = false;
|
this.alreadyClicked = false;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
var self = event.currentTarget;
|
|
||||||
|
if(this.editMode === true) {
|
||||||
|
if($(self).hasClass('selected-row')) {
|
||||||
|
$(event.currentTarget).removeClass('selected-row');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$(event.currentTarget).addClass('selected-row');
|
||||||
|
}
|
||||||
|
|
||||||
|
var selected = this.getSelectedDocs();
|
||||||
|
|
||||||
|
if (selected.length > 0) {
|
||||||
|
$('#deleteSelected').prop('disabled', false);
|
||||||
|
$('#deleteSelected').removeClass('button-neutral');
|
||||||
|
$('#deleteSelected').addClass('button-danger');
|
||||||
|
$('#deleteSelected').removeClass('disabled');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$('#deleteSelected').prop('disabled', true);
|
||||||
|
$('#deleteSelected').addClass('disabled');
|
||||||
|
$('#deleteSelected').addClass('button-neutral');
|
||||||
|
$('#deleteSelected').removeClass('button-danger');
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var aPos = $(this.table).dataTable().fnGetPosition(self);
|
var aPos = $(this.table).dataTable().fnGetPosition(self);
|
||||||
if (aPos === null) {
|
if (aPos === null) {
|
||||||
// headline
|
// headline
|
||||||
|
|
|
@ -39,6 +39,14 @@
|
||||||
cursor: default;
|
cursor: default;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.selected-row {
|
||||||
|
background-color: $c-positive !important;
|
||||||
|
|
||||||
|
span {
|
||||||
|
color: white !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Odd / Even coloring
|
// Odd / Even coloring
|
||||||
|
|
|
@ -72,16 +72,19 @@
|
||||||
|
|
||||||
.docsFirstCol {
|
.docsFirstCol {
|
||||||
@extend %docs-col-no-border;
|
@extend %docs-col-no-border;
|
||||||
|
height: 26px;
|
||||||
width: 70%;
|
width: 70%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.docsSecCol {
|
.docsSecCol {
|
||||||
@extend %docs-col-no-border;
|
@extend %docs-col-no-border;
|
||||||
min-width: 400px !important;
|
min-width: 400px !important;
|
||||||
|
height: 26px;
|
||||||
width: 20%;
|
width: 20%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.docsThirdCol {
|
.docsThirdCol {
|
||||||
|
height: 26px;
|
||||||
@extend %docs-col-no-border;
|
@extend %docs-col-no-border;
|
||||||
@extend %pull-right;
|
@extend %pull-right;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5951,6 +5951,10 @@ input.gv-radio-button {
|
||||||
margin-top: 4px; }
|
margin-top: 4px; }
|
||||||
.arangoDataTable .dataTable .noPointer tr {
|
.arangoDataTable .dataTable .noPointer tr {
|
||||||
cursor: default; }
|
cursor: default; }
|
||||||
|
.arangoDataTable .selected-row {
|
||||||
|
background-color: #8aa051 !important; }
|
||||||
|
.arangoDataTable .selected-row span {
|
||||||
|
color: white !important; }
|
||||||
|
|
||||||
.api-container #resources > li.resource:nth-child(even),
|
.api-container #resources > li.resource:nth-child(even),
|
||||||
table.arangoDataTable tr.even {
|
table.arangoDataTable tr.even {
|
||||||
|
@ -6054,12 +6058,17 @@ table .sorting {
|
||||||
border: 0 !important; }
|
border: 0 !important; }
|
||||||
|
|
||||||
.docsFirstCol {
|
.docsFirstCol {
|
||||||
|
height: 26px;
|
||||||
width: 70%; }
|
width: 70%; }
|
||||||
|
|
||||||
.docsSecCol {
|
.docsSecCol {
|
||||||
min-width: 400px !important;
|
min-width: 400px !important;
|
||||||
|
height: 26px;
|
||||||
width: 20%; }
|
width: 20%; }
|
||||||
|
|
||||||
|
.docsThirdCol {
|
||||||
|
height: 26px; }
|
||||||
|
|
||||||
.add-filter-item {
|
.add-filter-item {
|
||||||
margin-left: 5px; }
|
margin-left: 5px; }
|
||||||
.add-filter-item i {
|
.add-filter-item i {
|
||||||
|
|
Loading…
Reference in New Issue