Merge remote-tracking branch 'origin/develop' into develop

pull/5777/head
Weblate 2017-12-04 18:09:30 +00:00
commit 33446bf4ff
1 changed files with 20 additions and 17 deletions

View File

@ -327,43 +327,46 @@ var RoomSubList = React.createClass({
}, },
calcManualOrderTagData: function(room) { calcManualOrderTagData: function(room) {
var index = this.state.sortedList.indexOf(room); const index = this.state.sortedList.indexOf(room);
// we sort rooms by the lexicographic ordering of the 'order' metadata on their tags. // we sort rooms by the lexicographic ordering of the 'order' metadata on their tags.
// for convenience, we calculate this for now a floating point number between 0.0 and 1.0. // for convenience, we calculate this for now a floating point number between 0.0 and 1.0.
var orderA = 0.0; // by default we're next to the beginning of the list let orderA = 0.0; // by default we're next to the beginning of the list
if (index > 0) { if (index > 0) {
var prevTag = this.state.sortedList[index - 1].tags[this.props.tagName]; const prevTag = this.state.sortedList[index - 1].tags[this.props.tagName];
if (!prevTag) { if (!prevTag) {
console.error("Previous room in sublist is not tagged to be in this list. This should never happen.") console.error("Previous room in sublist is not tagged to be in this list. This should never happen.");
} } else if (prevTag.order === undefined) {
else if (prevTag.order === undefined) {
console.error("Previous room in sublist has no ordering metadata. This should never happen."); console.error("Previous room in sublist has no ordering metadata. This should never happen.");
} } else {
else {
orderA = prevTag.order; orderA = prevTag.order;
} }
} }
var orderB = 1.0; // by default we're next to the end of the list too let orderB = 1.0; // by default we're next to the end of the list too
if (index < this.state.sortedList.length - 1) { if (index < this.state.sortedList.length - 1) {
var nextTag = this.state.sortedList[index + 1].tags[this.props.tagName]; const nextTag = this.state.sortedList[index + 1].tags[this.props.tagName];
if (!nextTag) { if (!nextTag) {
console.error("Next room in sublist is not tagged to be in this list. This should never happen.") console.error("Next room in sublist is not tagged to be in this list. This should never happen.");
} } else if (nextTag.order === undefined) {
else if (nextTag.order === undefined) {
console.error("Next room in sublist has no ordering metadata. This should never happen."); console.error("Next room in sublist has no ordering metadata. This should never happen.");
} } else {
else {
orderB = nextTag.order; orderB = nextTag.order;
} }
} }
var order = (orderA + orderB) / 2.0; const order = (orderA + orderB) / 2.0;
if (order === orderA || order === orderB) { if (order === orderA || order === orderB) {
console.error("Cannot describe new list position. This should be incredibly unlikely."); console.error("Cannot describe new list position. This should be incredibly unlikely.");
// TODO: renumber the list this.state.sortedList.forEach((room, index) => {
MatrixClientPeg.get().setRoomTag(
room.roomId, this.props.tagName,
{order: index / this.state.sortedList.length},
);
});
return index / this.state.sortedList.length;
} }
return order; return order;