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() {
|
||||
return this.totalAmount;
|
||||
},
|
||||
|
||||
setTotalMinusOne: function() {
|
||||
this.totalAmount--;
|
||||
}
|
||||
|
||||
});
|
||||
|
|
|
@ -15,6 +15,11 @@
|
|||
<span class="icon_arangodb_arrowleft" title="Previous collection"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="enabled">
|
||||
<a id="markDocuments" class="headerButton">
|
||||
<span class="icon_arangodb_edit" title="Edit documents"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="enabled">
|
||||
<a id="importCollection" class="headerButton">
|
||||
<span class="icon_arangodb_import" title="Upload documents from JSON file"></span>
|
||||
|
@ -61,6 +66,12 @@
|
|||
</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 class="contentIn" id="indexHeaderContent">
|
||||
<div id="indexEditView">
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
lastCollectionName: undefined,
|
||||
restoredFilters: [],
|
||||
|
||||
editMode: false,
|
||||
|
||||
allowUpload: false,
|
||||
|
||||
collectionContext : {
|
||||
|
@ -48,8 +50,6 @@
|
|||
$('#documents_first').css("visibility", "hidden");
|
||||
this.drawTable();
|
||||
this.renderPaginationElements();
|
||||
//window.App.documentsView.drawTable();
|
||||
//indow.App.documentsView.renderPaginationElements();
|
||||
},
|
||||
|
||||
template: templateEngine.createTemplate("documentsView.ejs"),
|
||||
|
@ -58,6 +58,7 @@
|
|||
"click #collectionPrev" : "prevCollection",
|
||||
"click #collectionNext" : "nextCollection",
|
||||
"click #filterCollection" : "filterCollection",
|
||||
"click #markDocuments" : "editDocuments",
|
||||
"click #indexCollection" : "indexCollection",
|
||||
"click #importCollection" : "importCollection",
|
||||
"click #filterSend" : "sendFilter",
|
||||
|
@ -65,6 +66,7 @@
|
|||
"click .removeFilterItem" : "removeFilterItem",
|
||||
"click #documentsTableID tr" : "clicked",
|
||||
"click #deleteDoc" : "remove",
|
||||
"click #deleteSelected" : "deleteSelectedDocs",
|
||||
"click #addDocumentButton" : "addDocument",
|
||||
"click #documents_first" : "firstDocuments",
|
||||
"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 () {
|
||||
$('#indexCollection').removeClass('activated');
|
||||
$('#importCollection').removeClass('activated');
|
||||
$('#markDocuments').removeClass('activated'); this.changeEditMode();
|
||||
$('#filterCollection').toggleClass('activated');
|
||||
this.activeFilter = true;
|
||||
$('#filterHeader').slideToggle(200);
|
||||
$('#importHeader').hide();
|
||||
$('#indexHeader').hide();
|
||||
$('#editHeader').hide();
|
||||
|
||||
var i;
|
||||
for (i in this.filters) {
|
||||
|
@ -227,22 +242,40 @@
|
|||
importCollection: function () {
|
||||
$('#filterCollection').removeClass('activated');
|
||||
$('#indexCollection').removeClass('activated');
|
||||
$('#markDocuments').removeClass('activated'); this.changeEditMode();
|
||||
$('#importCollection').toggleClass('activated');
|
||||
$('#importHeader').slideToggle(200);
|
||||
$('#filterHeader').hide();
|
||||
$('#indexHeader').hide();
|
||||
$('#editHeader').hide();
|
||||
},
|
||||
|
||||
indexCollection: function () {
|
||||
$('#filterCollection').removeClass('activated');
|
||||
$('#importCollection').removeClass('activated');
|
||||
$('#markDocuments').removeClass('activated'); this.changeEditMode();
|
||||
$('#indexCollection').toggleClass('activated');
|
||||
$('#newIndexView').hide();
|
||||
$('#indexEditView').show();
|
||||
$('#indexHeader').slideToggle(200);
|
||||
$('#importHeader').hide();
|
||||
$('#editHeader').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 () {
|
||||
|
@ -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) {
|
||||
this.target = a.currentTarget;
|
||||
var thiselement = a.currentTarget.parentElement;
|
||||
|
@ -487,6 +600,7 @@
|
|||
);
|
||||
if (result) {
|
||||
//on success
|
||||
this.collection.setTotalMinusOne();
|
||||
deleted = true;
|
||||
}
|
||||
else {
|
||||
|
@ -497,6 +611,7 @@
|
|||
result = this.documentStore.deleteEdge(this.collection.collectionID, this.docid);
|
||||
if (result === true) {
|
||||
//on success
|
||||
this.collection.setTotalMinusOne();
|
||||
deleted = true;
|
||||
}
|
||||
else {
|
||||
|
@ -515,11 +630,38 @@
|
|||
|
||||
},
|
||||
clicked: function (event) {
|
||||
var self = event.currentTarget;
|
||||
|
||||
if (this.alreadyClicked === true) {
|
||||
this.alreadyClicked = false;
|
||||
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);
|
||||
if (aPos === null) {
|
||||
// headline
|
||||
|
|
|
@ -39,6 +39,14 @@
|
|||
cursor: default;
|
||||
}
|
||||
}
|
||||
|
||||
.selected-row {
|
||||
background-color: $c-positive !important;
|
||||
|
||||
span {
|
||||
color: white !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Odd / Even coloring
|
||||
|
|
|
@ -72,16 +72,19 @@
|
|||
|
||||
.docsFirstCol {
|
||||
@extend %docs-col-no-border;
|
||||
height: 26px;
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
.docsSecCol {
|
||||
@extend %docs-col-no-border;
|
||||
min-width: 400px !important;
|
||||
height: 26px;
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.docsThirdCol {
|
||||
height: 26px;
|
||||
@extend %docs-col-no-border;
|
||||
@extend %pull-right;
|
||||
}
|
||||
|
|
|
@ -5951,6 +5951,10 @@ input.gv-radio-button {
|
|||
margin-top: 4px; }
|
||||
.arangoDataTable .dataTable .noPointer tr {
|
||||
cursor: default; }
|
||||
.arangoDataTable .selected-row {
|
||||
background-color: #8aa051 !important; }
|
||||
.arangoDataTable .selected-row span {
|
||||
color: white !important; }
|
||||
|
||||
.api-container #resources > li.resource:nth-child(even),
|
||||
table.arangoDataTable tr.even {
|
||||
|
@ -6054,12 +6058,17 @@ table .sorting {
|
|||
border: 0 !important; }
|
||||
|
||||
.docsFirstCol {
|
||||
height: 26px;
|
||||
width: 70%; }
|
||||
|
||||
.docsSecCol {
|
||||
min-width: 400px !important;
|
||||
height: 26px;
|
||||
width: 20%; }
|
||||
|
||||
.docsThirdCol {
|
||||
height: 26px; }
|
||||
|
||||
.add-filter-item {
|
||||
margin-left: 5px; }
|
||||
.add-filter-item i {
|
||||
|
|
Loading…
Reference in New Issue