1
0
Fork 0

Merge branch 'devel' of github.com:triAGENS/ArangoDB into devel

This commit is contained in:
Frank Celler 2013-02-27 14:40:37 +01:00
commit 1e200d361a
30 changed files with 208 additions and 102 deletions

View File

@ -19,7 +19,7 @@ BUILT_SOURCES += @V8_LIBS@
@echo "--------------------------------------------------------------------------------"
@echo
cd @top_srcdir@/3rdParty/V8 && $(MAKE) library=static strictaliasing=off snapshot=off werror=no @V8_TARGET@
cd @top_srcdir@/3rdParty/V8 && CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" $(MAKE) library=static strictaliasing=off snapshot=off werror=no @V8_TARGET@
touch @srcdir@/.v8-build-@TRI_BITS@

View File

@ -1,6 +1,8 @@
v1.3 (XXXX-XX-XX)
-----------------
* make AQL REVERSE() function work on strings, too
* disabled DOT generation in `make doxygen`. this speeds up docs generation
* renamed startup option `--dispatcher.report-intervall` to `--dispatcher.report-interval`

View File

@ -881,6 +881,8 @@ For string processing, AQL offers the following functions:
starting at @FA{offset} and with a maximum length of @FA{length} characters. Offsets
start at position 0.
- @FN{REVERSE(@FA{value})}: returns the reverse of the string @FA{value}.
- @FN{CONTAINS(@FA{text}, @FA{search}, @FA{return-index})}: checks whether the string
@FA{search} is contained in the string @FA{text}. By default, this function returns
`true` if @FA{search} is contained in @FA{text}, and `false` otherwise. By

View File

@ -614,7 +614,8 @@ TRI_associative_pointer_t* TRI_InitialiseFunctionsAql (void) {
REGISTER_FUNCTION("MAX", "MAX", true, true, "l", NULL);
REGISTER_FUNCTION("SUM", "SUM", true, true, "l", NULL);
REGISTER_FUNCTION("UNIQUE", "UNIQUE", true, false, "l", NULL);
REGISTER_FUNCTION("REVERSE", "REVERSE", true, false, "l", NULL);
// note: REVERSE() can be applied on strings, too
REGISTER_FUNCTION("REVERSE", "REVERSE", true, false, "ls", NULL);
REGISTER_FUNCTION("FIRST", "FIRST", true, false, "l", NULL);
REGISTER_FUNCTION("LAST", "LAST", true, false, "l", NULL);

View File

@ -44,7 +44,7 @@
box-shadow: 0 0 0 !important;
}
.icon-info-sign {
margin-top: 0px;
.icon-edit {
margin-top: 5px;
margin-right: 5px;
}

View File

@ -1,3 +1,5 @@
#newCollection {
margin-left: 22px;
margin-top: 2px;
@ -47,6 +49,10 @@
padding-top: 5px;
}
.btn-group {
border-radius: 2px 2px 2px 2px !important;
}
.searchInput {
background-color: #FFFFFF;
border: 1px solid #c0c0c0;
@ -60,6 +66,7 @@
padding: 2px;
vertical-align: middle;
width:280px;
border-radius: 2px 2px 2px 2px !important;
}
#searchSubmit {

View File

@ -7,9 +7,8 @@
}
.dashboardBox {
min-height: 200px;
min-height: 230px;
width: 940px;
border: 1px solid black;
padding-top: 10px;
margin-bottom: 20px;
background-color: rgba(0, 0, 0, 0.05);
@ -21,11 +20,56 @@
}
.leftBox {
width: 30%;
width: 300px;
float: left;
padding-left: 20px;
padding-top: 15px;
}
.leftBox th {
padding-left: 5px;
float:left;
width: 100px;
text-align: left;
font-weight: normal !important;
}
.leftBox table {
border-collapse:separate;
border-spacing:0 5px;
}
.leftBox table tr {
background-image: -moz-linear-gradient(top, #f3efec, #ebe7e3);
background-image: -ms-linear-gradient(top, #f3efec, #ebe7e3);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3efec), to(#ebe7e3));
background-image: -webkit-linear-gradient(top, #f3efec, #ebe7e3);
background-image: -o-linear-gradient(top, #f3efec, #ebe7e3);
background-image: linear-gradient(top, #f3efec, #ebe7e3);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3efec', endColorstr='#ebe7e3', GradientType=0);
border:1px solid #c1bdba;
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
}
.rightBox {
width: 70%;
float: left;
padding-bottom: 0;
float: right;
height: 160px !important;
max-height: 220px !important;
width: 598px;
border:1px solid #c1bdba;
background-color: red;
margin-top: 20px;
margin-right: 20px;
background-image: -moz-linear-gradient(top, #f3efec, #ebe7e3);
background-image: -ms-linear-gradient(top, #f3efec, #ebe7e3);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3efec), to(#ebe7e3));
background-image: -webkit-linear-gradient(top, #f3efec, #ebe7e3);
background-image: -o-linear-gradient(top, #f3efec, #ebe7e3);
background-image: linear-gradient(top, #f3efec, #ebe7e3);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3efec', endColorstr='#ebe7e3', GradientType=0);
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
}

View File

@ -1,3 +1,11 @@
#sourceFooter {
margin-top: 0;
background: none;
margin-bottom: 0;
padding-right: 0;
padding-bottom: 0;
}
#sourceEditor {
height: 400px;
width: 900px;
@ -26,5 +34,4 @@
}
.sourceBox {
padding-bottom:20px;
}

View File

@ -24,6 +24,7 @@
#deleteRow {
border: medium none;
margin-top: -4px;
padding-left: 10px;
background-color: transparent;
}
@ -46,6 +47,18 @@
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
}
#documentTableID thead {
text-align: left;
}
#documentTableID .icon-edit {
margin-top: 0;
}
#documentTableID .icon-edit:hover {
cursor: pointer;
}
#documentTableID.dataTable thead tr {
background-image: -moz-linear-gradient(top, #f3efec, #ebe7e3);
background-image: -ms-linear-gradient(top, #f3efec, #ebe7e3);

View File

@ -52,8 +52,8 @@ table.dataTable td {
margin-left: 20px !important;
width: 900px; !important;
table-layout:fixed !important;
border-collapse:separate;
border-spacing:0 5px;
border-collapse:separate;
border-spacing:0 5px;
}
table.dataTable thead th {

View File

@ -1,3 +1,11 @@
select {
border-radius: 2px 2px 2px 2px !important;
}
input {
border-radius: 2px 2px 2px 2px !important;
}
.arangoBtn {
background: none repeat scroll 0 0 #FFFFFF;
color: #333232;

View File

@ -1,7 +1,5 @@
#logContent {
margin-left: 20px;
margin-top: 0;
margin-right: 20px;
border: 20px solid rgba(0, 0, 0, 0.00);
background-color: rgba(0, 0, 0, 0.05);
min-height: 330px !important;
@ -35,12 +33,8 @@
.odd {
background-color: /*#D3DDB8 !important*/;
}
.even {
background-color: /*rgba(255, 255, 255, 0.8) !important*/;
#logContent .sorting_1 {
background-color: #FBFBFB !important;
}
/*.odd .sorting_1 {
@ -123,7 +117,7 @@ background-color: none !important;
#logNav {
padding-left: 20px;
margin-left: -20px;
width: 880px;
width: 920px;
padding-bottom: -10px;
margin-bottom: 0;
background-color: #686766;
@ -135,6 +129,7 @@ background-color: none !important;
}
#logTableID .firstcol, #infoTableID .firstcol, #debugTableID .firstcol, #critTableID .firstcol, #warnTableID .firstcol {
background-color: #F4F4F4 !important;
background-image: -moz-linear-gradient(center top , #F4F4F4, #E4E4E4);
border-top:1px solid #c1bdba;
border-bottom:1px solid #c1bdba;

View File

@ -31,3 +31,9 @@
.modal-body select {
width: 314px;
}
.modal-text {
font-weight: normal;
padding-top: 3px;
padding-bottom: 3px;
}

View File

@ -13,12 +13,21 @@
color: white !important;
box-shadow: 0 0px 0px rgba(0, 0, 0, 0.0) inset !important;
}
.navbar .nav > li > a:focus {
background-color: #333232 !important;
}
.navbar .nav > li > a:focus, .navbar .nav > li > a:hover {
background-color: #8AA051;
.navbar .nav > li > a:hover {
background-color: #8AA051 !important;
color: white !important
}
.arango-nav .dropdown-toggle, .arango-nav .dropdown-toggle:hover, .arango-nav .dropdown:hover, .arango-nav .dropdown:active {
background-color: rgba(0, 0, 0, 0) !important;
color: white !important;
margin-bottom: -8px !important;
}
body, input, textarea, .page-title span, .pingback a.url {
font-family: "Helvetica",sans-serif;
font-weight: 300;
@ -38,11 +47,3 @@ body, input, textarea, .page-title span, .pingback a.url {
height: 34px;
padding: 0 !important;
}
/*.dropdown-toggle:hover, .dropdown-toggle:focus {
color: white !important;
height:16px !important;
border: 0;
background-color: #333232 !important;
}
*/

View File

@ -8,10 +8,12 @@
<tr>
<th class="collectionTh">Name:</th>
<th class="collectionTh"><input type="text" id="change-collection-name" name="name" value=""/></th>
<th><a class="modalTooltips" title="The name of the collection."><i class="icon-info-sign"></i></a></th>
</tr>
<tr id="collectionSizeBox" style="display:none">
<th class="collectionTh">Size (MB):</th>
<th class="collectionTh"><input type="text" id="change-collection-size" name="size" value=""/></th>
<th><a class="modalTooltips" title="The maximal size of a journal or datafile. Must be at least 1MB."><i class="icon-info-sign"></i></a></th>
</tr>
<tr id="collectionSyncBox" style="display:none">
<th class="collectionTh">Sync:</th>
@ -21,33 +23,34 @@
<option value="true">Yes</option>
</select>
</th>
<th><a class="modalTooltips" title="Data is synchronised to disk before returning from a create or update of an document."><i class="icon-info-sign"></i></a></th>
</tr>
<tr>
<th class="collectionTh">ID:</th>
<th class="collectionTh">
<div id="change-collection-id"/>
<div id="change-collection-id" class="modal-text"/>
<th>
</tr>
<tr>
<th class="collectionTh">Type:</th>
<th class="collectionTh">
<div id="change-collection-type"/>
<div id="change-collection-type" class="modal-text"/>
</th>
</tr>
<tr>
<th class="collectionTh">Status:</th>
<th class="collectionTh">
<div id="change-collection-status"/>
<div id="change-collection-status" class="modal-text"/>
</th>
</tr>
</table>
</div>
<div id="colFooter" class="modal-footer">
<button id="save-modified-collection" class="btn btn-primary">Save</button>
<button id="delete-modified-collection" class="btn btn-danger">Delete</button>
<button id="save-modified-collection" class="arangoBtnSuccess" style="margin-right:10px">Save</button>
<button id="delete-modified-collection" class="arangoBtnError" style="float:right">Delete</button>
</div>
</div>

View File

@ -1,13 +1,13 @@
<div class="pull-right">
<a href="#collection/<%= attributes.id %>">
<i class="icon-info-sign"></i>
<i class="icon-edit"></i>
</a>
</div>
<a href="#collection/<%= attributes.name %>/documents/1" class="plain">
<img src="<%= attributes.picture %>" height="60" width="60" alt="" class="icon">
<span class="badge badge-success"><div class="cornered"><%= attributes.status %></div></span>
<span class="badge badge-success <%= attributes.status %>"><div class="cornered"><%= attributes.status %></div></span>
<h5 class="collectionName">
<div class="pull-left"><%= attributes.name %></div>

View File

@ -2,7 +2,9 @@
<div class="dashboardHeader">Collections</div>
<div id="dashboardCollectionsContent">
<div id="dashboardCollectionsText" class="leftBox"></div>
<div id="dashboardCollectionsGraph" class="rightBox"><svg style="height:200px;width:620px"></div>
<div id="dashboardCollectionsGraph" class="rightBox">
<svg style="height:100%;width:100%">
</div>
</div>
</div>

View File

@ -14,9 +14,9 @@
<div id="sourceEditor">
</div>
<div class="form-actions">
<a href="#" class="btn btn-primary pull-right">Save</a>
</div>
<div class="form-actions" id="sourceFooter">
<button class="arangoBtnSuccess" style="float:right">Save</button>
</div>
</div>

View File

@ -18,10 +18,11 @@
<thead>
<tr>
<th>Key</th>
<th>&nbsp;</th>
<th>Value</th>
<th>type</th>
<th></th>
<th></th>
<th>&nbsp;</th>
<th>&nbsp;</th>
</tr>
</thead>
</table>

View File

@ -43,7 +43,7 @@
<p>Theres no way back…</p>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
<button id="confirmDeleteBtn" class="btn btn-danger">Delete</button>
<!-- <button class="arangoBtn" data-dismiss="modal" aria-hidden="true">Close</button> -->
<button id="confirmDeleteBtn" class="arangoBtnError" style="float:right">Delete</button>
</div>
</div>

View File

@ -49,7 +49,7 @@
<option value="true">Yes</option>
</select>
</th>
<th><a class="modalTooltips" title="If true then the data is synchronised to disk before returning from a create or update of an document."><i class="icon-info-sign"></i></a></th>
<th><a class="modalTooltips" title="Data is synchronised to disk before returning from a create or update of an document."><i class="icon-info-sign"></i></a></th>
</tr>
</table>
</div>
@ -61,7 +61,6 @@
</div>
<div class="modal-footer">
<button class="arangoBtn" data-dismiss="modal" aria-hidden="true">Abort</button>
<button id="save-new-collection" style="margin-left: 320px" class="arangoBtnSuccess">Create Collection</button>
<button id="save-new-collection" class="arangoBtnSuccess">Create Collection</button>
</div>
</div>

View File

@ -11,6 +11,9 @@ var collectionView = Backbone.View.extend({
$('#change-collection').on('hidden', function () {
});
this.fillModal();
$('.modalTooltips').tooltip({
placement: "left"
});
return this;
},
@ -22,7 +25,7 @@ var collectionView = Backbone.View.extend({
"click #unload-modified-collection" : "unloadCollection"
},
hidden: function () {
window.location.hash = "#";
window.location.hash = "#collection/";
},
fillModal: function() {
this.myCollection = window.arangoCollectionsStore.get(this.options.colId).attributes;
@ -32,12 +35,12 @@ var collectionView = Backbone.View.extend({
$('#change-collection-status').text(this.myCollection.status);
if (this.myCollection.status == 'unloaded') {
$('#colFooter').append('<button id="load-modified-collection" class="btn">Load</button>');
$('#colFooter').append('<button id="load-modified-collection" class="arangoBtn">Load</button>');
$('#collectionSizeBox').hide();
$('#collectionSyncBox').hide();
}
else if (this.myCollection.status == 'loaded') {
$('#colFooter').append('<button id="unload-modified-collection" class="btn">Unload</button>');
$('#colFooter').append('<button id="unload-modified-collection" class="arangoBtn">Unload</button>');
var data = window.arangoCollectionsStore.getProperties(this.options.colId, true);
this.fillLoadedModal(data);
}
@ -102,6 +105,7 @@ var collectionView = Backbone.View.extend({
var returnval = window.arangoCollectionsStore.deleteCollection(collName);
if (returnval === true) {
self.hideModal();
window.location.hash="#";
}
else {
self.hideModal();

View File

@ -29,7 +29,7 @@ var collectionsView = Backbone.View.extend({
},
events: {
"click .icon-info-sign" : "details",
"blur #searchInput" : "restrictToSearchPhrase",
//"blur #searchInput" : "restrictToSearchPhrase",
"keypress #searchInput" : "restrictToSearchPhraseKey",
"change #searchInput" : "restrictToSearchPhrase",
"click #searchSubmit" : "restrictToSearchPhrase",
@ -40,7 +40,7 @@ var collectionsView = Backbone.View.extend({
checkSystem: function () {
var searchOptions = this.collection.searchOptions;
var oldValue = searchOptions.includeSystem;
searchOptions.includeSystem = ($('#checkSystem').is(":checked") === true);
if (oldValue != searchOptions.includeSystem) {
@ -60,9 +60,9 @@ var collectionsView = Backbone.View.extend({
checkUnloaded: function () {
var searchOptions = this.collection.searchOptions;
var oldValue = searchOptions.includeUnloaded;
searchOptions.includeUnloaded = ($('#checkUnloaded').is(":checked") === true);
if (oldValue != searchOptions.includeUnloaded) {
this.render();
}

View File

@ -34,7 +34,7 @@ var dashboardView = Backbone.View.extend({
d3.select("#dashboardCollectionsGraph svg")
.datum(self.formatCollectionsStats())
.transition().duration(1200)
.call(chart);
.call(chart)
return chart;
});

View File

@ -10,7 +10,9 @@ var documentView = Backbone.View.extend({
"click #saveDocument" : "saveDocument",
"click #addDocumentLine" : "addLine",
"click #deleteRow" : "deleteLine",
"click #sourceView" : "sourceView"
"click #sourceView" : "sourceView",
"click #editFirstRow" : "editFirst",
"click #editSecondRow" : "editSecond"
},
template: new EJS({url: '/_admin/html/js/templates/documentView.ejs'}),
@ -20,6 +22,16 @@ var documentView = Backbone.View.extend({
this.breadcrumb();
return this;
},
editFirst: function (e) {
var element = e.currentTarget;
var prevElement = $(element).parent().prev();
$(prevElement).click();
},
editSecond: function (e) {
var element = e.currentTarget;
var prevElement = $(element).parent().prev();
$(prevElement).click();
},
sourceView: function () {
window.location.hash = window.location.hash + "/source";
},
@ -41,7 +53,8 @@ var documentView = Backbone.View.extend({
drawTable: function () {
var self = this;
$(self.table).dataTable().fnAddData([
'<a class="add" class="notwriteable" id="addDocumentLine"><img id="addDocumentLine" class="plusIcon" class="pull-left" src="/_admin/html/img/plus_icon.png"> Neu hinzuf&uuml;gen</a>',
'<a class="add" class="notwriteable" id="addDocumentLine"><img id="addDocumentLine" class="plusIcon" class="pull-left" src="/_admin/html/img/plus_icon.png"> Add data</a>',
'<div class="notwriteable"></div>',
'<div class="notwriteable"></div>',
'<div class="notwriteable"></div>',
'<div class="notwriteable"></div>',
@ -51,6 +64,7 @@ var documentView = Backbone.View.extend({
if (arangoHelper.isSystemAttribute(key)) {
$(self.table).dataTable().fnAddData([
key,
'',
self.value2html(value, true),
JSON.stringify(value),
"",
@ -58,32 +72,37 @@ var documentView = Backbone.View.extend({
]);
}
else {
$(self.table).dataTable().fnAddData([
key,
self.value2html(value),
JSON.stringify(value),
'<i class="icon-edit"></i>',
'<button class="enabled" id="deleteRow"><img src="/_admin/html/img/icon_delete.png" width="16" height="16"></button>'
$(self.table).dataTable().fnAddData(
[
key,
'<i class="icon-edit" id="editFirstRow"></i>',
self.value2html(value),
JSON.stringify(value),
'<i class="icon-edit" id="editSecondRow"></i>',
'<button class="enabled" id="deleteRow"><img src="/_admin/html/img/icon_delete.png" width="16" height="16"></button>'
]);
}
});
this.makeEditable();
$(this.table).dataTable().fnSort([ [0,'asc'] ]);
},
addLine: function () {
$(this.table).dataTable().fnAddData([
"key"+arangoHelper.getRandomToken(),
this.value2html("editme"),
JSON.stringify("editme"),
'<i class="icon-edit"></i>',
'<button class="enabled" id="deleteRow"><img src="/_admin/html/img/icon_delete.png" width="16" height="16"></button>'
]);
$(this.table).dataTable().fnAddData(
[
"zkey"+arangoHelper.getRandomToken(),
'<i class="icon-edit" id="editFirstRow"></i>',
this.value2html("editme"),
JSON.stringify("editme"),
'<i class="icon-edit" id="editSecondRow"></i>',
'<button class="enabled" id="deleteRow"><img src="/_admin/html/img/icon_delete.png" width="16" height="16"></button>'
]
);
this.makeEditable();
this.updateLocalDocumentStorage();
$(this.table).dataTable().fnClearTable();
this.drawTable();
// $(this.table).dataTable().fnClearTable();
// this.drawTable();
},
deleteLine: function (a) {
@ -103,10 +122,11 @@ var documentView = Backbone.View.extend({
"bDeferRender": true,
"iDisplayLength": -1,
"aoColumns": [
{"sClass":"writeable", "bSortable": false, "sWidth":"400px" },
{"sClass":"writeable", "bSortable": false, "sWidth":"200px" },
{"sClass":"read_only leftCell", "bSortable": false, "sWidth": "20px"},
{"sClass":"writeable rightCell", "bSortable": false},
{"bVisible": false },
{"sClass":"read_only leftCell", "bSortable": false, "sWidth": "30px"},
{"sClass":"read_only leftCell", "bSortable": false, "sWidth": "20px"},
{"sClass":"read_only leftCell", "bSortable": false, "sWidth": "30px"}
],
"oLanguage": {"sEmptyTable": "No documents"}
@ -145,8 +165,11 @@ var documentView = Backbone.View.extend({
var result = {};
for (row in data) {
var row_data = data[row];
result[row_data[0]] = JSON.parse(row_data[2]);
//Exclude "add-collection" row
if (row !== '0') {
var row_data = data[row];
result[row_data[0]] = JSON.parse(row_data[3]);
}
}
window.arangoDocumentStore.updateLocalDocument(result);
this.saveDocument();
@ -171,13 +194,12 @@ var documentView = Backbone.View.extend({
});
$('.writeable', documentEditTable.fnGetNodes()).editable(function(value, settings) {
var aPos = documentEditTable.fnGetPosition(this);
console.log(aPos);
if (aPos[1] == 0) {
documentEditTable.fnUpdate(value, aPos[0], aPos[1]);
self.updateLocalDocumentStorage();
return value;
}
if (aPos[1] == 1) {
if (aPos[1] == 2) {
var oldContent = JSON.parse(documentEditTable.fnGetData(aPos[0], aPos[1] + 1));
var test = self.getTypedValue(value);
if (String(value) == String(oldContent)) {
@ -199,7 +221,7 @@ var documentView = Backbone.View.extend({
if (aPos[1] == 0) {
return value;
}
if (aPos[1] == 1) {
if (aPos[1] == 2) {
var oldContent = documentEditTable.fnGetData(aPos[0], aPos[1] + 1);
if (typeof(oldContent) == 'object') {
//grep hidden row and paste in visible row

View File

@ -20,8 +20,6 @@ var documentsView = Backbone.View.extend({
"click #documentsTableID tr" : "clicked",
"click #deleteDoc" : "remove",
"click #plusIconDoc" : "addDocument",
"click #documentAddBtn" : "addDocument",
"click #documents_first" : "firstDocuments",
"click #documents_last" : "lastDocuments",
"click #documents_prev" : "prevDocuments",

View File

@ -15,7 +15,7 @@ var newCollectionView = Backbone.View.extend({
$('#edgeFrom').hide();
$('#edgeTo').hide();
$('.modalTooltips').tooltip({
placement: "right"
placement: "left"
});
return this;
@ -23,23 +23,10 @@ var newCollectionView = Backbone.View.extend({
events: {
"click #save-new-collection" : "saveNewCollection",
"click #new-collection-type" : "displayEdge"
},
hidden: function () {
window.location.hash = "#";
},
displayEdge: function () {
var collType = $('#new-collection-type').val();
if (collType == 3) {
$('#edgeFrom').show();
$('#edgeTo').show();
}
else {
$('#edgeFrom').hide();
$('#edgeTo').hide();
}
window.location.hash = "#collection/";
},
saveNewCollection: function() {

View File

@ -2018,10 +2018,14 @@ function LAST (value) {
}
////////////////////////////////////////////////////////////////////////////////
/// @brief reverse the elements in a list
/// @brief reverse the elements in a list or in a string
////////////////////////////////////////////////////////////////////////////////
function REVERSE (value) {
if (TYPEWEIGHT(value) === TYPEWEIGHT_STRING) {
return value.split("").reverse().join("");
}
LIST(value);
return value.reverse();

View File

@ -425,7 +425,6 @@ function ahuacatlFunctionsTestSuite () {
assertEqual(errors.ERROR_QUERY_FUNCTION_ARGUMENT_TYPE_MISMATCH.code, getErrorCode(function() { QUERY("RETURN REVERSE(null)"); } ));
assertEqual(errors.ERROR_QUERY_FUNCTION_ARGUMENT_TYPE_MISMATCH.code, getErrorCode(function() { QUERY("RETURN REVERSE(true)"); } ));
assertEqual(errors.ERROR_QUERY_FUNCTION_ARGUMENT_TYPE_MISMATCH.code, getErrorCode(function() { QUERY("RETURN REVERSE(4)"); } ));
assertEqual(errors.ERROR_QUERY_FUNCTION_ARGUMENT_TYPE_MISMATCH.code, getErrorCode(function() { QUERY("RETURN REVERSE(\"yes\")"); } ));
assertEqual(errors.ERROR_QUERY_FUNCTION_ARGUMENT_TYPE_MISMATCH.code, getErrorCode(function() { QUERY("RETURN REVERSE({ })"); } ));
},

View File

@ -60,6 +60,7 @@ dnl ----------------------------------------------------------------------------
LIB_INFO="$LIB_INFO|."
if test "x$tr_ICU" = xyes; then
LIB_INFO="$LIB_INFO|ICU: system version"
LIB_INFO="$LIB_INFO|ICU VERSION: ${TRI_ICU_VERSION}"
LIB_INFO="$LIB_INFO|ICU_CPPFLAGS: ${ICU_CPPFLAGS}"