2017-10-30 10:38:01 +01:00
|
|
|
import Controller, {inject as controller} from '@ember/controller';
|
2017-08-22 09:53:26 +02:00
|
|
|
import {alias, equal, sort} from '@ember/object/computed';
|
|
|
|
import {run} from '@ember/runloop';
|
2015-10-23 19:18:39 +02:00
|
|
|
|
2016-06-11 18:52:36 +02:00
|
|
|
export default Controller.extend({
|
2014-12-01 23:45:45 +01:00
|
|
|
|
2017-10-30 10:38:01 +01:00
|
|
|
tagController: controller('settings.tags.tag'),
|
2015-10-23 19:18:39 +02:00
|
|
|
|
2018-01-10 23:57:43 +01:00
|
|
|
tags: alias('model'),
|
2015-10-23 19:18:39 +02:00
|
|
|
selectedTag: alias('tagController.tag'),
|
|
|
|
|
|
|
|
tagListFocused: equal('keyboardFocus', 'tagList'),
|
|
|
|
tagContentFocused: equal('keyboardFocus', 'tagContent'),
|
2014-12-09 15:25:20 +01:00
|
|
|
|
2015-10-23 19:18:39 +02:00
|
|
|
// TODO: replace with ordering by page count once supported by the API
|
2018-01-10 23:57:43 +01:00
|
|
|
sortedTags: sort('tags', function (a, b) {
|
2015-10-28 12:36:45 +01:00
|
|
|
let idA = +a.get('id');
|
|
|
|
let idB = +b.get('id');
|
2015-05-24 07:47:23 +02:00
|
|
|
|
2015-10-15 14:03:26 +02:00
|
|
|
if (idA > idB) {
|
|
|
|
return 1;
|
|
|
|
} else if (idA < idB) {
|
|
|
|
return -1;
|
2014-12-04 11:37:30 +01:00
|
|
|
}
|
|
|
|
|
2015-10-15 14:03:26 +02:00
|
|
|
return 0;
|
2015-10-23 19:18:39 +02:00
|
|
|
}),
|
|
|
|
|
2018-01-11 18:43:23 +01:00
|
|
|
actions: {
|
|
|
|
leftMobile() {
|
|
|
|
let firstTag = this.get('tags.firstObject');
|
|
|
|
// redirect to first tag if possible so that you're not left with
|
|
|
|
// tag settings blank slate when switching from portrait to landscape
|
|
|
|
if (firstTag && !this.get('tagController.tag')) {
|
|
|
|
this.transitionToRoute('settings.tags.tag', firstTag);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
2017-07-06 12:04:28 +02:00
|
|
|
scrollTagIntoView(tag) {
|
|
|
|
run.scheduleOnce('afterRender', this, function () {
|
|
|
|
let id = `#gh-tag-${tag.get('id')}`;
|
|
|
|
let element = document.querySelector(id);
|
|
|
|
|
|
|
|
if (element) {
|
|
|
|
let scroll = document.querySelector('.tag-list');
|
|
|
|
let {scrollTop} = scroll;
|
|
|
|
let scrollHeight = scroll.offsetHeight;
|
|
|
|
let element = document.querySelector(id);
|
|
|
|
let elementTop = element.offsetTop;
|
|
|
|
let elementHeight = element.offsetHeight;
|
|
|
|
|
|
|
|
if (elementTop < scrollTop) {
|
|
|
|
element.scrollIntoView(true);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (elementTop + elementHeight > scrollTop + scrollHeight) {
|
|
|
|
element.scrollIntoView(false);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
2015-10-23 19:18:39 +02:00
|
|
|
}
|
2014-11-20 01:27:45 +01:00
|
|
|
});
|