This commit is contained in:
Luke Barnard 2017-12-01 18:18:48 +00:00
parent cc4890f0b8
commit e80c4fadea
1 changed files with 13 additions and 16 deletions

View File

@ -327,40 +327,37 @@ 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 // TODO: renumber the list