mirror of
https://github.com/flarum/core.git
synced 2025-07-29 20:50:28 +02:00
Fix JSHint errors
This commit is contained in:
@@ -2,7 +2,8 @@
|
|||||||
"predef": [
|
"predef": [
|
||||||
"document",
|
"document",
|
||||||
"window",
|
"window",
|
||||||
"-Promise"
|
"-Promise",
|
||||||
|
"moment"
|
||||||
],
|
],
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"boss": true,
|
"boss": true,
|
||||||
|
@@ -2,7 +2,6 @@ import Ember from 'ember';
|
|||||||
|
|
||||||
import TaggedArray from '../../utils/tagged-array';
|
import TaggedArray from '../../utils/tagged-array';
|
||||||
import ActionButton from '../ui/controls/action-button';
|
import ActionButton from '../ui/controls/action-button';
|
||||||
import SeparatorItem from '../ui/items/separator-item';
|
|
||||||
|
|
||||||
export default Ember.Component.extend({
|
export default Ember.Component.extend({
|
||||||
|
|
||||||
@@ -23,11 +22,11 @@ export default Ember.Component.extend({
|
|||||||
}.property('childViews.@each.active'),
|
}.property('childViews.@each.active'),
|
||||||
|
|
||||||
displayUnread: function() {
|
displayUnread: function() {
|
||||||
return this.get('countType') == 'unread' && this.get('discussion.isUnread');
|
return this.get('countType') === 'unread' && this.get('discussion.isUnread');
|
||||||
}.property('countType', 'discussion.isUnread'),
|
}.property('countType', 'discussion.isUnread'),
|
||||||
|
|
||||||
displayLastPost: function() {
|
displayLastPost: function() {
|
||||||
return this.get('terminalPostType') == 'last' && this.get('discussion.repliesCount');
|
return this.get('terminalPostType') === 'last' && this.get('discussion.repliesCount');
|
||||||
}.property('terminalPostType', 'discussion.repliesCount'),
|
}.property('terminalPostType', 'discussion.repliesCount'),
|
||||||
|
|
||||||
start: function() {
|
start: function() {
|
||||||
@@ -37,11 +36,13 @@ export default Ember.Component.extend({
|
|||||||
discussionId: Ember.computed.alias('discussion.id'),
|
discussionId: Ember.computed.alias('discussion.id'),
|
||||||
|
|
||||||
relevantPosts: function() {
|
relevantPosts: function() {
|
||||||
if (this.get('controller.show') != 'posts') return [];
|
if (this.get('controller.show') !== 'posts') {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
if (this.get('controller.searchQuery')) {
|
if (this.get('controller.searchQuery')) {
|
||||||
return this.get('discussion.relevantPosts');
|
return this.get('discussion.relevantPosts');
|
||||||
} else if (this.get('controller.sort') == 'newest' || this.get('controller.sort') == 'oldest') {
|
} else if (this.get('controller.sort') === 'newest' || this.get('controller.sort') === 'oldest') {
|
||||||
return [this.get('discussion.startPost')];
|
return [this.get('discussion.startPost')];
|
||||||
} else {
|
} else {
|
||||||
return [this.get('discussion.lastPost')];
|
return [this.get('discussion.lastPost')];
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import Ember from 'ember';
|
import Ember from 'ember';
|
||||||
|
|
||||||
import TaggedArray from '../../utils/tagged-array';
|
// import TaggedArray from '../../utils/tagged-array';
|
||||||
import ActionButton from '../ui/controls/action-button';
|
// import ActionButton from '../ui/controls/action-button';
|
||||||
|
|
||||||
export default Ember.Component.extend({
|
export default Ember.Component.extend({
|
||||||
tagName: 'article',
|
tagName: 'article',
|
||||||
@@ -45,18 +45,18 @@ export default Ember.Component.extend({
|
|||||||
}, 100);
|
}, 100);
|
||||||
},
|
},
|
||||||
|
|
||||||
addControl: function(tag, title, icon, permissionAttribute) {
|
// addControl: function(tag, title, icon, permissionAttribute) {
|
||||||
if (permissionAttribute && ! this.get('post').get(permissionAttribute)) {
|
// if (permissionAttribute && ! this.get('post').get(permissionAttribute)) {
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
|
|
||||||
var self = this;
|
// var self = this;
|
||||||
var action = function(post) {
|
// var action = function(post) {
|
||||||
self.get('controller').send(actionName, post);
|
// self.get('controller').send(actionName, post);
|
||||||
};
|
// };
|
||||||
|
|
||||||
var item = MenuItem.extend({title: title, icon: icon, action: action});
|
// var item = MenuItem.extend({title: title, icon: icon, action: action});
|
||||||
this.get('controls').addItem(tag, item);
|
// this.get('controls').addItem(tag, item);
|
||||||
}
|
// }
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@@ -1,5 +1,7 @@
|
|||||||
import Ember from 'ember';
|
import Ember from 'ember';
|
||||||
|
|
||||||
|
var $ = Ember.$;
|
||||||
|
|
||||||
export default Ember.Component.extend({
|
export default Ember.Component.extend({
|
||||||
|
|
||||||
classNames: ['stream'],
|
classNames: ['stream'],
|
||||||
@@ -177,7 +179,7 @@ export default Ember.Component.extend({
|
|||||||
if ($item.length) {
|
if ($item.length) {
|
||||||
var marginTop = this.getMarginTop();
|
var marginTop = this.getMarginTop();
|
||||||
var scrollTop = $item.is(':first-child') ? 0 : $item.offset().top - marginTop;
|
var scrollTop = $item.is(':first-child') ? 0 : $item.offset().top - marginTop;
|
||||||
if (scrollTop != $(document).scrollTop()) {
|
if (scrollTop !== $(document).scrollTop()) {
|
||||||
$container.stop(true).animate({scrollTop: scrollTop});
|
$container.stop(true).animate({scrollTop: scrollTop});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,7 @@
|
|||||||
import Ember from 'ember';
|
import Ember from 'ember';
|
||||||
|
|
||||||
|
var $ = Ember.$;
|
||||||
|
|
||||||
// A discussion 'item' represents one item in the post stream. In other words, a
|
// A discussion 'item' represents one item in the post stream. In other words, a
|
||||||
// single item may represent a single post, or it may represent a gap of many
|
// single item may represent a single post, or it may represent a gap of many
|
||||||
// posts which have not been loaded.
|
// posts which have not been loaded.
|
||||||
@@ -38,7 +40,7 @@ export default Ember.Component.extend({
|
|||||||
if (this.get('loading')) {
|
if (this.get('loading')) {
|
||||||
buffer.push(' ');
|
buffer.push(' ');
|
||||||
} else {
|
} else {
|
||||||
buffer.push(this.get('count')+' more post'+(this.get('count') != 1 ? 's' : ''));
|
buffer.push(this.get('count')+' more post'+(this.get('count') !== 1 ? 's' : ''));
|
||||||
}
|
}
|
||||||
buffer.push('</span>');
|
buffer.push('</span>');
|
||||||
},
|
},
|
||||||
@@ -93,9 +95,7 @@ export default Ember.Component.extend({
|
|||||||
// anchor (i.e. this gap is terminal,) then we'll scroll to the
|
// anchor (i.e. this gap is terminal,) then we'll scroll to the
|
||||||
// bottom of the document.
|
// bottom of the document.
|
||||||
Ember.run.scheduleOnce('afterRender', function() {
|
Ember.run.scheduleOnce('afterRender', function() {
|
||||||
$('body').scrollTop(anchor.length
|
$('body').scrollTop(anchor.length ? anchor.offset().top - scrollOffset : $('body').height());
|
||||||
? anchor.offset().top - scrollOffset
|
|
||||||
: $('body').height());
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,7 @@
|
|||||||
import Ember from 'ember';
|
import Ember from 'ember';
|
||||||
|
|
||||||
|
var $ = Ember.$;
|
||||||
|
|
||||||
export default Ember.Component.extend({
|
export default Ember.Component.extend({
|
||||||
layoutName: 'components/discussions/stream-scrubber',
|
layoutName: 'components/discussions/stream-scrubber',
|
||||||
classNames: ['scrubber', 'stream-scrubber'],
|
classNames: ['scrubber', 'stream-scrubber'],
|
||||||
@@ -245,7 +247,7 @@ export default Ember.Component.extend({
|
|||||||
// Now loop through each of the items in the discussion. An 'item' is
|
// Now loop through each of the items in the discussion. An 'item' is
|
||||||
// either a single post or a 'gap' of one or more posts that haven't
|
// either a single post or a 'gap' of one or more posts that haven't
|
||||||
// been loaded yet.
|
// been loaded yet.
|
||||||
$items.each(function(k) {
|
$items.each(function() {
|
||||||
var $this = $(this),
|
var $this = $(this),
|
||||||
top = $this.offset().top,
|
top = $this.offset().top,
|
||||||
height = $this.outerHeight(true);
|
height = $this.outerHeight(true);
|
||||||
@@ -319,7 +321,7 @@ export default Ember.Component.extend({
|
|||||||
|
|
||||||
// jQuery likes to put overflow:hidden, but because the scrollbar
|
// jQuery likes to put overflow:hidden, but because the scrollbar
|
||||||
// handle has a negative margin-left, we need to override.
|
// handle has a negative margin-left, we need to override.
|
||||||
if (func == 'animate') {
|
if (func === 'animate') {
|
||||||
$part.css('overflow', 'visible');
|
$part.css('overflow', 'visible');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -369,7 +371,7 @@ export default Ember.Component.extend({
|
|||||||
// percentage to account for it.
|
// percentage to account for it.
|
||||||
var minPercentVisible = 50 / this.$('.scrubber-scrollbar').outerHeight() * 100;
|
var minPercentVisible = 50 / this.$('.scrubber-scrollbar').outerHeight() * 100;
|
||||||
var percentPerVisiblePost = Math.max(100 / count, minPercentVisible / visible);
|
var percentPerVisiblePost = Math.max(100 / count, minPercentVisible / visible);
|
||||||
var percentPerPost = count == visible ? 0 : (100 - percentPerVisiblePost * visible) / (count - visible);
|
var percentPerPost = count === visible ? 0 : (100 - percentPerVisiblePost * visible) / (count - visible);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
index: percentPerPost,
|
index: percentPerPost,
|
||||||
|
@@ -19,9 +19,9 @@ export default Ember.Component.extend({
|
|||||||
click: function(e) {
|
click: function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var action = this.get('action');
|
var action = this.get('action');
|
||||||
if (typeof action == 'string') {
|
if (typeof action === 'string') {
|
||||||
this.sendAction('action');
|
this.sendAction('action');
|
||||||
} else if (typeof action == 'function') {
|
} else if (typeof action === 'function') {
|
||||||
action();
|
action();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
import Ember from 'ember';
|
|
||||||
|
|
||||||
import DropdownButton from './dropdown-button';
|
import DropdownButton from './dropdown-button';
|
||||||
|
|
||||||
export default DropdownButton.extend({
|
export default DropdownButton.extend({
|
||||||
|
@@ -7,10 +7,12 @@ export default Ember.Component.extend({
|
|||||||
layoutName: 'components/ui/controls/item-list',
|
layoutName: 'components/ui/controls/item-list',
|
||||||
|
|
||||||
listItems: function() {
|
listItems: function() {
|
||||||
if (!Ember.isArray(this.get('items'))) return [];
|
if (!Ember.isArray(this.get('items'))) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
var listItems = [];
|
var listItems = [];
|
||||||
this.get('items').forEach(function(item) {
|
this.get('items').forEach(function(item) {
|
||||||
if (item.tagName != 'li') {
|
if (item.tagName !== 'li') {
|
||||||
item = ComponentItem.extend({component: item});
|
item = ComponentItem.extend({component: item});
|
||||||
}
|
}
|
||||||
listItems.push(item);
|
listItems.push(item);
|
||||||
|
@@ -9,7 +9,7 @@ export default Ember.Component.extend({
|
|||||||
didInsertElement: function() {
|
didInsertElement: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
this.$().find('input').on('keydown', function(e) {
|
this.$().find('input').on('keydown', function(e) {
|
||||||
if (e.which == 27) {
|
if (e.which === 27) {
|
||||||
self.clear();
|
self.clear();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -18,7 +18,7 @@ export default Ember.Component.extend({
|
|||||||
}).on('click', function(e) {
|
}).on('click', function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
self.clear();
|
self.clear();
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
clear: function() {
|
clear: function() {
|
||||||
|
@@ -28,11 +28,11 @@ export default Ember.ArrayController.extend(Ember.Evented, PaneableMixin, {
|
|||||||
],
|
],
|
||||||
|
|
||||||
terminalPostType: function() {
|
terminalPostType: function() {
|
||||||
return ['newest', 'oldest'].indexOf(this.get('sort')) != -1 ? 'start' : 'last';
|
return ['newest', 'oldest'].indexOf(this.get('sort')) !== -1 ? 'start' : 'last';
|
||||||
}.property('sort'),
|
}.property('sort'),
|
||||||
|
|
||||||
countType: function() {
|
countType: function() {
|
||||||
return this.get('sort') == 'replies' ? 'replies' : 'unread';
|
return this.get('sort') === 'replies' ? 'replies' : 'unread';
|
||||||
}.property('sort'),
|
}.property('sort'),
|
||||||
|
|
||||||
discussionsCount: function() {
|
discussionsCount: function() {
|
||||||
@@ -56,35 +56,39 @@ export default Ember.ArrayController.extend(Ember.Evented, PaneableMixin, {
|
|||||||
var show = this.get('show');
|
var show = this.get('show');
|
||||||
var searchQuery = this.get('searchQuery');
|
var searchQuery = this.get('searchQuery');
|
||||||
|
|
||||||
if (sort == 'newest') {
|
if (sort === 'newest') {
|
||||||
sort = 'created';
|
sort = 'created';
|
||||||
order = 'desc';
|
order = 'desc';
|
||||||
} else if (sort == 'oldest') {
|
} else if (sort === 'oldest') {
|
||||||
sort = 'created';
|
sort = 'created';
|
||||||
}
|
}
|
||||||
else if (sort == 'recent') {
|
else if (sort === 'recent') {
|
||||||
sort = '';
|
sort = '';
|
||||||
}
|
}
|
||||||
else if (sort == 'replies') {
|
else if (sort === 'replies') {
|
||||||
order = 'desc';
|
order = 'desc';
|
||||||
}
|
}
|
||||||
|
|
||||||
var params = {
|
var params = {
|
||||||
sort: (order == 'desc' ? '-' : '')+sort,
|
sort: (order === 'desc' ? '-' : '')+sort,
|
||||||
q: searchQuery,
|
q: searchQuery,
|
||||||
start: start
|
start: start
|
||||||
};
|
};
|
||||||
|
|
||||||
if (show == 'posts') {
|
if (show === 'posts') {
|
||||||
if (searchQuery) params.include = 'relevantPosts';
|
if (searchQuery) {
|
||||||
else if (sort == 'created') params.include = 'startPost,startUser';
|
params.include = 'relevantPosts';
|
||||||
else params.include = 'lastPost,lastUser';
|
} else if (sort === 'created') {
|
||||||
|
params.include = 'startPost,startUser';
|
||||||
|
} else {
|
||||||
|
params.include = 'lastPost,lastUser';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.store.find('discussion', params).then(function(discussions) {
|
return this.store.find('discussion', params).then(function(discussions) {
|
||||||
var results = Em.A();
|
var results = Ember.A();
|
||||||
discussions.forEach(function(discussion) {
|
discussions.forEach(function(discussion) {
|
||||||
var relevantPosts = Em.A();
|
var relevantPosts = Ember.A();
|
||||||
// discussion.get('relevantPosts.content').forEach(function(post) {
|
// discussion.get('relevantPosts.content').forEach(function(post) {
|
||||||
// relevantPosts.pushObject(PostResult.create(post));
|
// relevantPosts.pushObject(PostResult.create(post));
|
||||||
// });
|
// });
|
||||||
@@ -118,21 +122,21 @@ export default Ember.ArrayController.extend(Ember.Evented, PaneableMixin, {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
searchQueryDidChange: function(q) {
|
searchQueryDidChange: function() {
|
||||||
this.get('controllers.application').set('searchQuery', this.get('searchQuery'));
|
this.get('controllers.application').set('searchQuery', this.get('searchQuery'));
|
||||||
this.get('controllers.application').set('searchActive', !! this.get('searchQuery'));
|
this.get('controllers.application').set('searchActive', !! this.get('searchQuery'));
|
||||||
|
|
||||||
var sortOptions = this.get('sortOptions');
|
var sortOptions = this.get('sortOptions');
|
||||||
|
|
||||||
if (this.get('searchQuery') && sortOptions[0].sort != 'relevance') {
|
if (this.get('searchQuery') && sortOptions[0].sort !== 'relevance') {
|
||||||
sortOptions.unshiftObject({sort: 'relevance', label: 'Relevance'});
|
sortOptions.unshiftObject({sort: 'relevance', label: 'Relevance'});
|
||||||
}
|
}
|
||||||
else if ( ! this.get('searchQuery') && sortOptions[0].sort == 'relevance') {
|
else if ( ! this.get('searchQuery') && sortOptions[0].sort === 'relevance') {
|
||||||
sortOptions.shiftObject();
|
sortOptions.shiftObject();
|
||||||
}
|
}
|
||||||
}.observes('searchQuery'),
|
}.observes('searchQuery'),
|
||||||
|
|
||||||
paramsDidChange: function(show) {
|
paramsDidChange: function() {
|
||||||
this.set('start', 0);
|
this.set('start', 0);
|
||||||
}.observes('show', 'sort', 'searchQuery')
|
}.observes('show', 'sort', 'searchQuery')
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import Ember from 'ember';
|
import Ember from 'ember';
|
||||||
|
|
||||||
export default Ember.Handlebars.makeBoundHelper(function(number, options) {
|
export default Ember.Handlebars.makeBoundHelper(function(number) {
|
||||||
return new Ember.Handlebars.SafeString(''+number);
|
return new Ember.Handlebars.SafeString(''+number);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import Ember from 'ember';
|
import Ember from 'ember';
|
||||||
|
|
||||||
export default Ember.Handlebars.makeBoundHelper(function(icon, options) {
|
export default Ember.Handlebars.makeBoundHelper(function(icon, options) {
|
||||||
return new Handlebars.SafeString('<i class="fa fa-fw fa-'+icon+' '+(options.hash.class || '')+'"></i>');
|
return new Ember.Handlebars.SafeString('<i class="fa fa-fw fa-'+icon+' '+(options.hash.class || '')+'"></i>');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import Ember from 'ember';
|
import Ember from 'ember';
|
||||||
|
|
||||||
export default Ember.Handlebars.makeBoundHelper(function(text, phrase, options) {
|
export default Ember.Handlebars.makeBoundHelper(function(text, phrase) {
|
||||||
if (phrase) {
|
if (phrase) {
|
||||||
var words = phrase.split(' ');
|
var words = phrase.split(' ');
|
||||||
var replacement = function(matched) {
|
var replacement = function(matched) {
|
||||||
@@ -13,6 +13,6 @@ export default Ember.Handlebars.makeBoundHelper(function(text, phrase, options)
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return new Handlebars.SafeString(text);
|
return new Ember.Handlebars.SafeString(text);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -5,11 +5,11 @@ export default Ember.Handlebars.makeBoundHelper(function(time) {
|
|||||||
var datetime = m.format(),
|
var datetime = m.format(),
|
||||||
full = m.format('LLLL');
|
full = m.format('LLLL');
|
||||||
|
|
||||||
var second = 1e3;
|
// var second = 1e3;
|
||||||
var minute = 6e4;
|
var minute = 6e4;
|
||||||
var hour = 36e5;
|
var hour = 36e5;
|
||||||
var day = 864e5;
|
var day = 864e5;
|
||||||
var week = 6048e5;
|
// var week = 6048e5;
|
||||||
var ago = null;
|
var ago = null;
|
||||||
|
|
||||||
var diff = Math.abs(m.diff(moment()));
|
var diff = Math.abs(m.diff(moment()));
|
||||||
@@ -20,12 +20,12 @@ export default Ember.Handlebars.makeBoundHelper(function(time) {
|
|||||||
ago = moment.duration(diff).hours()+'h ago';
|
ago = moment.duration(diff).hours()+'h ago';
|
||||||
} else if (diff < 30 * day) {
|
} else if (diff < 30 * day) {
|
||||||
ago = moment.duration(diff).days()+'d ago';
|
ago = moment.duration(diff).days()+'d ago';
|
||||||
} else if (m.year() == moment().year()) {
|
} else if (m.year() === moment().year()) {
|
||||||
ago = m.format('D MMM');
|
ago = m.format('D MMM');
|
||||||
} else {
|
} else {
|
||||||
ago = m.format('MMM \'YY');
|
ago = m.format('MMM \'YY');
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Handlebars.SafeString('<time pubdate datetime="'+datetime+'" title="'+full+'">'+ago+'</time>');
|
return new Ember.Handlebars.SafeString('<time pubdate datetime="'+datetime+'" title="'+full+'">'+ago+'</time>');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -1,9 +1,9 @@
|
|||||||
import Ember from 'ember';
|
import Ember from 'ember';
|
||||||
|
|
||||||
function HSVtoRGB(h, s, v) {
|
function hsvToRgb(h, s, v) {
|
||||||
var r, g, b, i, f, p, q, t;
|
var r, g, b, i, f, p, q, t;
|
||||||
if (h && s === undefined && v === undefined) {
|
if (h && s === undefined && v === undefined) {
|
||||||
s = h.s, v = h.v, h = h.h;
|
s = h.s; v = h.v; h = h.h;
|
||||||
}
|
}
|
||||||
i = Math.floor(h * 6);
|
i = Math.floor(h * 6);
|
||||||
f = h * 6 - i;
|
f = h * 6 - i;
|
||||||
@@ -11,12 +11,12 @@ function HSVtoRGB(h, s, v) {
|
|||||||
q = v * (1 - f * s);
|
q = v * (1 - f * s);
|
||||||
t = v * (1 - (1 - f) * s);
|
t = v * (1 - (1 - f) * s);
|
||||||
switch (i % 6) {
|
switch (i % 6) {
|
||||||
case 0: r = v, g = t, b = p; break;
|
case 0: r = v; g = t; b = p; break;
|
||||||
case 1: r = q, g = v, b = p; break;
|
case 1: r = q; g = v; b = p; break;
|
||||||
case 2: r = p, g = v, b = t; break;
|
case 2: r = p; g = v; b = t; break;
|
||||||
case 3: r = p, g = q, b = v; break;
|
case 3: r = p; g = q; b = v; break;
|
||||||
case 4: r = t, g = p, b = v; break;
|
case 4: r = t; g = p; b = v; break;
|
||||||
case 5: r = v, g = p, b = q; break;
|
case 5: r = v; g = p; b = q; break;
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
r: Math.floor(r * 255),
|
r: Math.floor(r * 255),
|
||||||
@@ -26,17 +26,21 @@ function HSVtoRGB(h, s, v) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default Ember.Handlebars.makeBoundHelper(function(user, options) {
|
export default Ember.Handlebars.makeBoundHelper(function(user, options) {
|
||||||
if (!user) return;
|
if (!user) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var number;
|
var number;
|
||||||
if (number = user.get('avatarNumber')) {
|
if (number = user.get('avatarNumber')) {
|
||||||
number = number + '';
|
number = number + '';
|
||||||
var filename = number.length >= 3 ? number : new Array(3 - number.length + 1).join('0') + number;
|
var filename = number.length >= 3 ? number : new Array(3 - number.length + 1).join('0') + number;
|
||||||
return new Handlebars.SafeString('<img src="/packages/flarum/core/avatars/'+filename+'.jpg" class="avatar '+options.hash.class+'">');
|
return new Ember.Handlebars.SafeString('<img src="/packages/flarum/core/avatars/'+filename+'.jpg" class="avatar '+options.hash.class+'">');
|
||||||
}
|
}
|
||||||
|
|
||||||
var username = user.get('username');
|
var username = user.get('username');
|
||||||
if (!username) username = '?';
|
if (!username) {
|
||||||
|
username = '?';
|
||||||
|
}
|
||||||
|
|
||||||
var letter = username.charAt(0).toUpperCase();
|
var letter = username.charAt(0).toUpperCase();
|
||||||
|
|
||||||
@@ -46,8 +50,8 @@ export default Ember.Handlebars.makeBoundHelper(function(user, options) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var hue = num % 360;
|
var hue = num % 360;
|
||||||
var rgb = HSVtoRGB(hue / 360, 100 / 255, 200 / 255);
|
var rgb = hsvToRgb(hue / 360, 100 / 255, 200 / 255);
|
||||||
var bg = ''+rgb.r.toString(16)+rgb.g.toString(16)+rgb.b.toString(16);
|
var bg = ''+rgb.r.toString(16)+rgb.g.toString(16)+rgb.b.toString(16);
|
||||||
return new Handlebars.SafeString('<span class="avatar '+options.hash.class+'" style="background:#'+bg+'" title="'+username+'">'+letter+'</span>');
|
return new Ember.Handlebars.SafeString('<span class="avatar '+options.hash.class+'" style="background:#'+bg+'" title="'+username+'">'+letter+'</span>');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -2,7 +2,7 @@ import Ember from 'ember';
|
|||||||
|
|
||||||
var DiscussionResult = Ember.ObjectProxy.extend({
|
var DiscussionResult = Ember.ObjectProxy.extend({
|
||||||
|
|
||||||
relevantPosts: Em.A(),
|
relevantPosts: null,
|
||||||
|
|
||||||
startPost: null,
|
startPost: null,
|
||||||
lastPost: null
|
lastPost: null
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
import Ember from 'ember';
|
|
||||||
import DS from 'ember-data';
|
import DS from 'ember-data';
|
||||||
|
|
||||||
export default DS.Model.extend({
|
export default DS.Model.extend({
|
||||||
|
@@ -8,7 +8,9 @@ var PostResult = Ember.ObjectProxy.extend({
|
|||||||
|
|
||||||
PostResult.reopenClass({
|
PostResult.reopenClass({
|
||||||
create: function(post) {
|
create: function(post) {
|
||||||
if (!post) return null;
|
if (!post) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
var result = this._super();
|
var result = this._super();
|
||||||
result.set('content', post);
|
result.set('content', post);
|
||||||
|
@@ -43,7 +43,7 @@ export default Ember.ArrayProxy.extend(Ember.Evented, {
|
|||||||
// Clear the contents of the post stream, resetting it to one big gap.
|
// Clear the contents of the post stream, resetting it to one big gap.
|
||||||
clear: function() {
|
clear: function() {
|
||||||
var content = Ember.A();
|
var content = Ember.A();
|
||||||
content.clear().pushObject(Em.Object.create({
|
content.clear().pushObject(Ember.Object.create({
|
||||||
gap: true,
|
gap: true,
|
||||||
indexStart: 0,
|
indexStart: 0,
|
||||||
indexEnd: this.get('count') - 1,
|
indexEnd: this.get('count') - 1,
|
||||||
@@ -60,10 +60,7 @@ export default Ember.ArrayProxy.extend(Ember.Evented, {
|
|||||||
// Find the appropriate gap objects in the post stream. When we find
|
// Find the appropriate gap objects in the post stream. When we find
|
||||||
// one, we will turn on its loading flag.
|
// one, we will turn on its loading flag.
|
||||||
this.get('content').forEach(function(item) {
|
this.get('content').forEach(function(item) {
|
||||||
if (item.gap && (
|
if (item.gap && ((item.indexStart >= start && item.indexStart <= end) || (item.indexEnd >= start && item.indexEnd <= end))) {
|
||||||
(item.indexStart >= start && item.indexStart <= end)
|
|
||||||
|| (item.indexEnd >= start && item.indexEnd <= end)
|
|
||||||
)) {
|
|
||||||
item.set('loading', true);
|
item.set('loading', true);
|
||||||
item.set('direction', backwards ? 'up' : 'down');
|
item.set('direction', backwards ? 'up' : 'down');
|
||||||
}
|
}
|
||||||
@@ -96,7 +93,7 @@ export default Ember.ArrayProxy.extend(Ember.Evented, {
|
|||||||
// request.) Or, if it's a gap, we'll switch on its loading flag.
|
// request.) Or, if it's a gap, we'll switch on its loading flag.
|
||||||
var item = this.findNearestToNumber(number);
|
var item = this.findNearestToNumber(number);
|
||||||
if (item) {
|
if (item) {
|
||||||
if (item.get('content.number') == number) {
|
if (item.get('content.number') === number) {
|
||||||
return Ember.RSVP.resolve([item.get('content')]);
|
return Ember.RSVP.resolve([item.get('content')]);
|
||||||
} else if (item.gap) {
|
} else if (item.gap) {
|
||||||
item.set('direction', 'down').set('loading', true);
|
item.set('direction', 'down').set('loading', true);
|
||||||
@@ -143,7 +140,6 @@ export default Ember.ArrayProxy.extend(Ember.Evented, {
|
|||||||
},
|
},
|
||||||
|
|
||||||
addPost: function(post) {
|
addPost: function(post) {
|
||||||
var stream = this;
|
|
||||||
var index = this.get('ids').indexOf(post.get('id'));
|
var index = this.get('ids').indexOf(post.get('id'));
|
||||||
var content = this.get('content');
|
var content = this.get('content');
|
||||||
|
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
import Ember from 'ember';
|
|
||||||
import DS from 'ember-data';
|
import DS from 'ember-data';
|
||||||
|
|
||||||
export default DS.Model.extend({
|
export default DS.Model.extend({
|
||||||
|
@@ -42,14 +42,14 @@ export default Ember.Route.extend({
|
|||||||
var controller = this.get('controller'),
|
var controller = this.get('controller'),
|
||||||
oldStart = this.get('controller.start');
|
oldStart = this.get('controller.start');
|
||||||
Ember.run.next(function() {
|
Ember.run.next(function() {
|
||||||
if (! params.start || ! controller || ! controller.get('loaded') || params.start == oldStart) {
|
if (! params.start || ! controller || ! controller.get('loaded') || params.start === oldStart) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
controller.trigger('startWasChanged', params.start);
|
controller.trigger('startWasChanged', params.start);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
willTransition: function(transition) {
|
willTransition: function() {
|
||||||
// When we transition away from this discussion, we want to hide
|
// When we transition away from this discussion, we want to hide
|
||||||
// the discussions list pane. This means that when the user
|
// the discussions list pane. This means that when the user
|
||||||
// selects a different discussion within the pane, the pane will
|
// selects a different discussion within the pane, the pane will
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
import Ember from 'ember';
|
import Ember from 'ember';
|
||||||
import Discussion from '../models/discussion';
|
|
||||||
|
|
||||||
export default Ember.Route.extend({
|
export default Ember.Route.extend({
|
||||||
|
|
||||||
@@ -18,14 +17,14 @@ export default Ember.Route.extend({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
model: function(params) {
|
model: function() {
|
||||||
var model = Ember.ArrayProxy.create();
|
var model = Ember.ArrayProxy.create();
|
||||||
|
|
||||||
return Ember.RSVP.resolve(model);
|
return Ember.RSVP.resolve(model);
|
||||||
},
|
},
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
queryParamsDidChange: function(newParams, params) {
|
queryParamsDidChange: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
Ember.run.scheduleOnce('afterRender', function() {
|
Ember.run.scheduleOnce('afterRender', function() {
|
||||||
self.refresh();
|
self.refresh();
|
||||||
|
@@ -21,7 +21,7 @@ export default Ember.ArrayProxy.extend({
|
|||||||
|
|
||||||
insertAfterTag: function(anchorTag, obj, tag) {
|
insertAfterTag: function(anchorTag, obj, tag) {
|
||||||
var idx = this.indexOfTag(anchorTag);
|
var idx = this.indexOfTag(anchorTag);
|
||||||
this.insertAtWithTag(idx + 1, obj, newTag);
|
this.insertAtWithTag(idx + 1, obj, tag);
|
||||||
},
|
},
|
||||||
|
|
||||||
insertBeforeTag: function(anchorTag, obj, tag) {
|
insertBeforeTag: function(anchorTag, obj, tag) {
|
||||||
|
@@ -5,6 +5,8 @@ import SearchInput from '../components/ui/controls/search-input';
|
|||||||
import DropdownSelect from '../components/ui/controls/dropdown-select';
|
import DropdownSelect from '../components/ui/controls/dropdown-select';
|
||||||
import TaggedArray from '../utils/tagged-array';
|
import TaggedArray from '../utils/tagged-array';
|
||||||
|
|
||||||
|
var $ = Ember.$;
|
||||||
|
|
||||||
export default Ember.View.extend({
|
export default Ember.View.extend({
|
||||||
|
|
||||||
title: function() {
|
title: function() {
|
||||||
|
@@ -3,9 +3,10 @@ import Ember from 'ember';
|
|||||||
import TaggedArray from '../utils/tagged-array';
|
import TaggedArray from '../utils/tagged-array';
|
||||||
import ActionButton from '../components/ui/controls/action-button';
|
import ActionButton from '../components/ui/controls/action-button';
|
||||||
import DropdownSplit from '../components/ui/controls/dropdown-split';
|
import DropdownSplit from '../components/ui/controls/dropdown-split';
|
||||||
import DropdownButton from '../components/ui/controls/dropdown-button';
|
|
||||||
import StreamScrubber from '../components/discussions/stream-scrubber';
|
import StreamScrubber from '../components/discussions/stream-scrubber';
|
||||||
|
|
||||||
|
var $ = Ember.$;
|
||||||
|
|
||||||
export default Ember.View.extend(Ember.Evented, {
|
export default Ember.View.extend(Ember.Evented, {
|
||||||
|
|
||||||
sidebarItems: null,
|
sidebarItems: null,
|
||||||
|
@@ -5,6 +5,8 @@ import ActionButton from '../components/ui/controls/action-button';
|
|||||||
import NavItem from '../components/ui/items/nav-item';
|
import NavItem from '../components/ui/items/nav-item';
|
||||||
import TaggedArray from '../utils/tagged-array';
|
import TaggedArray from '../utils/tagged-array';
|
||||||
|
|
||||||
|
var $ = Ember.$;
|
||||||
|
|
||||||
export default Ember.View.extend({
|
export default Ember.View.extend({
|
||||||
|
|
||||||
sidebarItems: null,
|
sidebarItems: null,
|
||||||
@@ -24,7 +26,7 @@ export default Ember.View.extend({
|
|||||||
return $sidebar.offset().top - $('#header').outerHeight(true) - parseInt($sidebar.css('margin-top'));
|
return $sidebar.offset().top - $('#header').outerHeight(true) - parseInt($sidebar.css('margin-top'));
|
||||||
},
|
},
|
||||||
bottom: function () {
|
bottom: function () {
|
||||||
return (this.bottom = $('#footer').outerHeight(true))
|
return (this.bottom = $('#footer').outerHeight(true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -57,7 +59,7 @@ export default Ember.View.extend({
|
|||||||
label: 'Start a Discussion',
|
label: 'Start a Discussion',
|
||||||
icon: 'edit',
|
icon: 'edit',
|
||||||
className: 'btn btn-primary new-discussion'
|
className: 'btn btn-primary new-discussion'
|
||||||
})
|
});
|
||||||
sidebar.pushObjectWithTag(newDiscussion, 'newDiscussion');
|
sidebar.pushObjectWithTag(newDiscussion, 'newDiscussion');
|
||||||
|
|
||||||
var nav = TaggedArray.create();
|
var nav = TaggedArray.create();
|
||||||
|
@@ -14,7 +14,7 @@ export default Ember.View.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
willDestroyElement: function() {
|
willDestroyElement: function() {
|
||||||
this.get('controller.session').off('sessionAuthenticationSucceeded', this, this.hide)
|
this.get('controller.session').off('sessionAuthenticationSucceeded', this, this.hide);
|
||||||
},
|
},
|
||||||
|
|
||||||
hide: function() {
|
hide: function() {
|
||||||
|
Reference in New Issue
Block a user