Side-nav CoffeeScript to JavaScript II (#6266)

* convert sidenav Coffeescript to Javascript

* fix no unused vars
pull/6274/head
Martin Schoeler 9 years ago committed by Rodrigo Nascimento
parent 4b5689445a
commit 2ffad6d4e3
  1. 122
      packages/rocketchat-ui-sidenav/client/chatRoomItem.coffee
  2. 158
      packages/rocketchat-ui-sidenav/client/chatRoomItem.js
  3. 95
      packages/rocketchat-ui-sidenav/client/listChannelsFlex.coffee
  4. 131
      packages/rocketchat-ui-sidenav/client/listChannelsFlex.js
  5. 109
      packages/rocketchat-ui-sidenav/client/listCombinedFlex.coffee
  6. 151
      packages/rocketchat-ui-sidenav/client/listCombinedFlex.js
  7. 63
      packages/rocketchat-ui-sidenav/client/listPrivateGroupsFlex.coffee
  8. 83
      packages/rocketchat-ui-sidenav/client/listPrivateGroupsFlex.js
  9. 8
      packages/rocketchat-ui-sidenav/package.js

@ -1,122 +0,0 @@
Template.chatRoomItem.helpers
alert: ->
if FlowRouter.getParam('_id') isnt this.rid or not document.hasFocus()
return this.alert
unread: ->
if (FlowRouter.getParam('_id') isnt this.rid or not document.hasFocus()) and this.unread > 0
return this.unread
userStatus: ->
userStatus = RocketChat.roomTypes.getUserStatus(this.t, this.rid);
return 'status-' + (userStatus or 'offline')
name: ->
return this.name
roomIcon: ->
return RocketChat.roomTypes.getIcon this.t
active: ->
if Session.get('openedRoom') is this.rid
return 'active'
canLeave: ->
roomData = Session.get('roomData' + this.rid)
return false unless roomData
if (roomData.cl? and not roomData.cl) or roomData.t is 'd'
return false
else
return true
route: ->
return RocketChat.roomTypes.getRouteLink @t, @
archived: ->
return if this.archived then 'archived'
Template.chatRoomItem.rendered = ->
if not (FlowRouter.getParam('_id')? and FlowRouter.getParam('_id') is this.data.rid) and not this.data.ls and this.data.alert is true
KonchatNotification.newRoom(this.data.rid)
Template.chatRoomItem.events
'click .open-room': (e) ->
menu.close()
'click .hide-room': (e) ->
e.stopPropagation()
e.preventDefault()
rid = this.rid
name = this.name
warnText = switch this.t
when 'c' then 'Hide_Room_Warning'
when 'p' then 'Hide_Group_Warning'
when 'd' then 'Hide_Private_Warning'
swal {
title: t('Are_you_sure')
text: if warnText then t(warnText, name) else ''
type: 'warning'
showCancelButton: true
confirmButtonColor: '#DD6B55'
confirmButtonText: t('Yes_hide_it')
cancelButtonText: t('Cancel')
closeOnConfirm: true
html: false
}, ->
if FlowRouter.getRouteName() in ['channel', 'group', 'direct'] and Session.get('openedRoom') is rid
FlowRouter.go 'home'
Meteor.call 'hideRoom', rid, (err) ->
if err
handleError(err)
else
if rid is Session.get('openedRoom')
Session.delete('openedRoom')
'click .leave-room': (e) ->
e.stopPropagation()
e.preventDefault()
rid = this.rid
name = this.name
warnText = switch
when this.t == 'c' then 'Leave_Room_Warning'
when this.t == 'p' then 'Leave_Group_Warning'
when this.t == 'd' then 'Leave_Private_Warning'
swal {
title: t('Are_you_sure')
text: t(warnText, name)
type: 'warning'
showCancelButton: true
confirmButtonColor: '#DD6B55'
confirmButtonText: t('Yes_leave_it')
cancelButtonText: t('Cancel')
closeOnConfirm: false
html: false
}, (isConfirm) ->
if isConfirm
Meteor.call 'leaveRoom', rid, (err) ->
if err
swal {
title: t('Warning')
text: handleError(err, false)
type: 'warning'
html: false
}
else
swal.close()
if FlowRouter.getRouteName() in ['channel', 'group', 'direct'] and Session.get('openedRoom') is rid
FlowRouter.go 'home'
RoomManager.close rid
else
swal.close()

@ -0,0 +1,158 @@
/* globals KonchatNotification, menu */
Template.chatRoomItem.helpers({
alert() {
if ((FlowRouter.getParam('_id') !== this.rid) || !document.hasFocus()) {
return this.alert;
}
},
unread() {
if (((FlowRouter.getParam('_id') !== this.rid) || !document.hasFocus()) && (this.unread > 0)) {
return this.unread;
}
},
userStatus() {
const userStatus = RocketChat.roomTypes.getUserStatus(this.t, this.rid);
return `status-${userStatus || 'offline'}`;
},
name() {
return this.name;
},
roomIcon() {
return RocketChat.roomTypes.getIcon(this.t);
},
active() {
if (Session.get('openedRoom') === this.rid) {
return 'active';
}
},
canLeave() {
const roomData = Session.get('roomData' + this.rid);
if (!roomData) { return false; }
if (((roomData.cl != null) && !roomData.cl) || (roomData.t === 'd')) {
return false;
} else {
return true;
}
},
route() {
return RocketChat.roomTypes.getRouteLink(this.t, this);
},
archived() {
return this.archived ? 'archived' : undefined;
}
});
Template.chatRoomItem.rendered = function() {
if (!(FlowRouter.getParam('_id') && (FlowRouter.getParam('_id') === this.data.rid)) && !this.data.ls && (this.data.alert === true)) {
return KonchatNotification.newRoom(this.data.rid);
}
};
Template.chatRoomItem.events({
'click .open-room'() {
return menu.close();
},
'click .hide-room'(e) {
e.stopPropagation();
e.preventDefault();
const { rid } = this;
const { name } = this;
const warnText = (() => {
switch (this.t) {
case 'c': return 'Hide_Room_Warning';
case 'p': return 'Hide_Group_Warning';
case 'd': return 'Hide_Private_Warning';
}
})();
return swal({
title: t('Are_you_sure'),
text: warnText ? t(warnText, name) : '',
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#DD6B55',
confirmButtonText: t('Yes_hide_it'),
cancelButtonText: t('Cancel'),
closeOnConfirm: true,
html: false
}, function() {
if (['channel', 'group', 'direct'].includes(FlowRouter.getRouteName()) && (Session.get('openedRoom') === rid)) {
FlowRouter.go('home');
}
return Meteor.call('hideRoom', rid, function(err) {
if (err) {
return handleError(err);
} else if (rid === Session.get('openedRoom')) {
return Session.delete('openedRoom');
}
});
});
},
'click .leave-room'(e) {
e.stopPropagation();
e.preventDefault();
const { rid } = this;
const { name } = this;
const warnText = (() => {
switch (false) {
case this.t !== 'c': return 'Leave_Room_Warning';
case this.t !== 'p': return 'Leave_Group_Warning';
case this.t !== 'd': return 'Leave_Private_Warning';
}
})();
return swal({
title: t('Are_you_sure'),
text: t(warnText, name),
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#DD6B55',
confirmButtonText: t('Yes_leave_it'),
cancelButtonText: t('Cancel'),
closeOnConfirm: false,
html: false
}, function(isConfirm) {
if (isConfirm) {
return Meteor.call('leaveRoom', rid, function(err) {
if (err) {
return swal({
title: t('Warning'),
text: handleError(err, false),
type: 'warning',
html: false
});
} else {
swal.close();
if (['channel', 'group', 'direct'].includes(FlowRouter.getRouteName()) && (Session.get('openedRoom') === rid)) {
FlowRouter.go('home');
}
return RoomManager.close(rid);
}
});
} else {
return swal.close();
}
});
}
});

@ -1,95 +0,0 @@
Template.listChannelsFlex.helpers
channel: ->
return Template.instance().channelsList?.get()
hasMore: ->
return Template.instance().hasMore.get()
sortChannelsSelected: (sort) ->
return Template.instance().sortChannels.get() is sort
sortSubscriptionsSelected: (sort) ->
return Template.instance().sortSubscriptions.get() is sort
showSelected: (show) ->
return Template.instance().show.get() is show
member: ->
return !!RocketChat.models.Subscriptions.findOne({ name: @name, open: true })
hidden: ->
return !!RocketChat.models.Subscriptions.findOne({ name: @name, open: false })
Template.listChannelsFlex.events
'click header': ->
SideNav.closeFlex()
'click .channel-link': ->
SideNav.closeFlex()
'click footer .create': ->
if RocketChat.authz.hasAtLeastOnePermission( 'create-c')
SideNav.setFlex "createChannelFlex"
'mouseenter header': ->
SideNav.overArrow()
'mouseleave header': ->
SideNav.leaveArrow()
'scroll .content': _.throttle (e, t) ->
if t.hasMore.get() and e.target.scrollTop >= e.target.scrollHeight - e.target.clientHeight
t.limit.set(t.limit.get() + 50)
, 200
'submit .search-form': (e) ->
e.preventDefault()
'keyup #channel-search': _.debounce (e, instance) ->
instance.nameFilter.set($(e.currentTarget).val())
, 300
'change #sort-channels': (e, instance) ->
instance.sortChannels.set($(e.currentTarget).val())
'change #sort-subscriptions': (e, instance) ->
instance.sortSubscriptions.set($(e.currentTarget).val())
'change #show': (e, instance) ->
show = $(e.currentTarget).val()
if show is 'joined'
instance.$('#sort-channels').hide();
instance.$('#sort-subscriptions').show();
else
instance.$('#sort-channels').show();
instance.$('#sort-subscriptions').hide();
instance.show.set(show)
Template.listChannelsFlex.onCreated ->
@channelsList = new ReactiveVar []
@hasMore = new ReactiveVar true
@limit = new ReactiveVar 50
@nameFilter = new ReactiveVar ''
@sortChannels = new ReactiveVar 'name'
@sortSubscriptions = new ReactiveVar 'name'
@show = new ReactiveVar 'all'
@autorun =>
if @show.get() is 'joined'
@hasMore.set true
options = { fields: { name: 1 } }
if _.isNumber @limit.get()
options.limit = @limit.get()
if _.trim(@sortSubscriptions.get())
switch @sortSubscriptions.get()
when 'name'
options.sort = { name: 1 }
when 'ls'
options.sort = { ls: -1 }
@channelsList.set RocketChat.models.Subscriptions.find({
name: new RegExp s.trim(s.escapeRegExp(@nameFilter.get())), "i"
t: 'c'
}, options).fetch()
if @channelsList.get().length < @limit.get()
@hasMore.set false
else
Meteor.call 'channelsList', @nameFilter.get(), 'public', @limit.get(), @sortChannels.get(), (err, result) =>
if result
@hasMore.set true
@channelsList.set result.channels
if result.channels.length < @limit.get()
@hasMore.set false

@ -0,0 +1,131 @@
Template.listChannelsFlex.helpers({
channel() {
return Template.instance().channelsList.get();
},
hasMore() {
return Template.instance().hasMore.get();
},
sortChannelsSelected(sort) {
return Template.instance().sortChannels.get() === sort;
},
sortSubscriptionsSelected(sort) {
return Template.instance().sortSubscriptions.get() === sort;
},
showSelected(show) {
return Template.instance().show.get() === show;
},
member() {
return !!RocketChat.models.Subscriptions.findOne({ name: this.name, open: true });
},
hidden() {
return !!RocketChat.models.Subscriptions.findOne({ name: this.name, open: false });
}
});
Template.listChannelsFlex.events({
'click header'() {
return SideNav.closeFlex();
},
'click .channel-link'() {
return SideNav.closeFlex();
},
'click footer .create'() {
if (RocketChat.authz.hasAtLeastOnePermission('create-c')) {
return SideNav.setFlex('createChannelFlex');
}
},
'mouseenter header'() {
return SideNav.overArrow();
},
'mouseleave header'() {
return SideNav.leaveArrow();
},
'scroll .content': _.throttle(function(e, t) {
if (t.hasMore.get() && (e.target.scrollTop >= (e.target.scrollHeight - e.target.clientHeight))) {
return t.limit.set(t.limit.get() + 50);
}
}
, 200),
'submit .search-form'(e) {
return e.preventDefault();
},
'keyup #channel-search': _.debounce((e, instance) => instance.nameFilter.set($(e.currentTarget).val())
, 300),
'change #sort-channels'(e, instance) {
return instance.sortChannels.set($(e.currentTarget).val());
},
'change #sort-subscriptions'(e, instance) {
return instance.sortSubscriptions.set($(e.currentTarget).val());
},
'change #show'(e, instance) {
const show = $(e.currentTarget).val();
if (show === 'joined') {
instance.$('#sort-channels').hide();
instance.$('#sort-subscriptions').show();
} else {
instance.$('#sort-channels').show();
instance.$('#sort-subscriptions').hide();
}
return instance.show.set(show);
}
});
Template.listChannelsFlex.onCreated(function() {
this.channelsList = new ReactiveVar([]);
this.hasMore = new ReactiveVar(true);
this.limit = new ReactiveVar(50);
this.nameFilter = new ReactiveVar('');
this.sortChannels = new ReactiveVar('name');
this.sortSubscriptions = new ReactiveVar('name');
this.show = new ReactiveVar('all');
return this.autorun(() => {
if (this.show.get() === 'joined') {
this.hasMore.set(true);
const options = { fields: { name: 1 } };
if (_.isNumber(this.limit.get())) {
options.limit = this.limit.get();
}
if (_.trim(this.sortSubscriptions.get())) {
switch (this.sortSubscriptions.get()) {
case 'name':
options.sort = { name: 1 };
break;
case 'ls':
options.sort = { ls: -1 };
break;
}
}
this.channelsList.set(RocketChat.models.Subscriptions.find({
name: new RegExp(s.trim(s.escapeRegExp(this.nameFilter.get())), 'i'),
t: 'c'
}, options).fetch()
);
if (this.channelsList.get().length < this.limit.get()) {
return this.hasMore.set(false);
}
} else {
return Meteor.call('channelsList', this.nameFilter.get(), 'public', this.limit.get(), this.sortChannels.get(), (err, result) => {
if (result) {
this.hasMore.set(true);
this.channelsList.set(result.channels);
if (result.channels.length < this.limit.get()) {
return this.hasMore.set(false);
}
}
}
);
}
}
);
});

@ -1,109 +0,0 @@
Template.listCombinedFlex.helpers
channel: ->
return Template.instance().channelsList?.get()
hasMore: ->
return Template.instance().hasMore.get()
sortChannelsSelected: (sort) ->
return Template.instance().sortChannels.get() is sort
sortSubscriptionsSelected: (sort) ->
return Template.instance().sortSubscriptions.get() is sort
showSelected: (show) ->
return Template.instance().show.get() is show
channelTypeSelected: (type) ->
return Template.instance().channelType.get() is type
member: ->
return !!RocketChat.models.Subscriptions.findOne({ name: @name, open: true })
hidden: ->
return !!RocketChat.models.Subscriptions.findOne({ name: @name, open: false })
roomIcon: ->
return RocketChat.roomTypes.getIcon @t
url: ->
return if @t is 'p' then 'group' else 'channel'
Template.listCombinedFlex.events
'click header': ->
SideNav.closeFlex()
'click .channel-link': ->
SideNav.closeFlex()
'mouseenter header': ->
SideNav.overArrow()
'mouseleave header': ->
SideNav.leaveArrow()
'scroll .content': _.throttle (e, t) ->
if t.hasMore.get() and e.target.scrollTop >= e.target.scrollHeight - e.target.clientHeight
t.limit.set(t.limit.get() + 50)
, 200
'submit .search-form': (e) ->
e.preventDefault()
'keyup #channel-search': _.debounce (e, instance) ->
instance.nameFilter.set($(e.currentTarget).val())
, 300
'change #sort-channels': (e, instance) ->
instance.sortChannels.set($(e.currentTarget).val())
'change #channel-type': (e, instance) ->
instance.channelType.set($(e.currentTarget).val())
'change #sort-subscriptions': (e, instance) ->
instance.sortSubscriptions.set($(e.currentTarget).val())
'change #show': (e, instance) ->
show = $(e.currentTarget).val()
if show is 'joined'
instance.$('#sort-channels').hide();
instance.$('#sort-subscriptions').show();
else
instance.$('#sort-channels').show();
instance.$('#sort-subscriptions').hide();
instance.show.set(show)
Template.listCombinedFlex.onCreated ->
@channelsList = new ReactiveVar []
@hasMore = new ReactiveVar true
@limit = new ReactiveVar 50
@nameFilter = new ReactiveVar ''
@sortChannels = new ReactiveVar 'name'
@sortSubscriptions = new ReactiveVar 'name'
@channelType = new ReactiveVar 'all'
@show = new ReactiveVar 'all'
@type = if @t is 'p' then 'group' else 'channel'
@autorun =>
if @show.get() is 'joined'
@hasMore.set true
options = { fields: { name: 1, t: 1 } }
if _.isNumber @limit.get()
options.limit = @limit.get()
if _.trim(@sortSubscriptions.get())
switch @sortSubscriptions.get()
when 'name'
options.sort = { name: 1 }
when 'ls'
options.sort = { ls: -1 }
type = {$in: ['c', 'p']}
if _.trim(@channelType.get())
switch @channelType.get()
when 'public'
type = 'c'
when 'private'
type = 'p'
@channelsList.set RocketChat.models.Subscriptions.find({
name: new RegExp s.trim(s.escapeRegExp(@nameFilter.get())), "i"
t: type
}, options).fetch()
if @channelsList.get().length < @limit.get()
@hasMore.set false
else
Meteor.call 'channelsList', @nameFilter.get(), @channelType.get(), @limit.get(), @sortChannels.get(), (err, result) =>
if result
@hasMore.set true
@channelsList.set result.channels
if result.channels.length < @limit.get()
@hasMore.set false

@ -0,0 +1,151 @@
Template.listCombinedFlex.helpers({
channel() {
return Template.instance().channelsList.get();
},
hasMore() {
return Template.instance().hasMore.get();
},
sortChannelsSelected(sort) {
return Template.instance().sortChannels.get() === sort;
},
sortSubscriptionsSelected(sort) {
return Template.instance().sortSubscriptions.get() === sort;
},
showSelected(show) {
return Template.instance().show.get() === show;
},
channelTypeSelected(type) {
return Template.instance().channelType.get() === type;
},
member() {
return !!RocketChat.models.Subscriptions.findOne({ name: this.name, open: true });
},
hidden() {
return !!RocketChat.models.Subscriptions.findOne({ name: this.name, open: false });
},
roomIcon() {
return RocketChat.roomTypes.getIcon(this.t);
},
url() {
return this.t === 'p' ? 'group' : 'channel';
}
});
Template.listCombinedFlex.events({
'click header'() {
return SideNav.closeFlex();
},
'click .channel-link'() {
return SideNav.closeFlex();
},
'mouseenter header'() {
return SideNav.overArrow();
},
'mouseleave header'() {
return SideNav.leaveArrow();
},
'scroll .content': _.throttle(function(e, t) {
if (t.hasMore.get() && (e.target.scrollTop >= (e.target.scrollHeight - e.target.clientHeight))) {
return t.limit.set(t.limit.get() + 50);
}
}
, 200),
'submit .search-form'(e) {
return e.preventDefault();
},
'keyup #channel-search': _.debounce((e, instance) => instance.nameFilter.set($(e.currentTarget).val())
, 300),
'change #sort-channels'(e, instance) {
return instance.sortChannels.set($(e.currentTarget).val());
},
'change #channel-type'(e, instance) {
return instance.channelType.set($(e.currentTarget).val());
},
'change #sort-subscriptions'(e, instance) {
return instance.sortSubscriptions.set($(e.currentTarget).val());
},
'change #show'(e, instance) {
const show = $(e.currentTarget).val();
if (show === 'joined') {
instance.$('#sort-channels').hide();
instance.$('#sort-subscriptions').show();
} else {
instance.$('#sort-channels').show();
instance.$('#sort-subscriptions').hide();
}
return instance.show.set(show);
}
});
Template.listCombinedFlex.onCreated(function() {
this.channelsList = new ReactiveVar([]);
this.hasMore = new ReactiveVar(true);
this.limit = new ReactiveVar(50);
this.nameFilter = new ReactiveVar('');
this.sortChannels = new ReactiveVar('name');
this.sortSubscriptions = new ReactiveVar('name');
this.channelType = new ReactiveVar('all');
this.show = new ReactiveVar('all');
this.type = this.t === 'p' ? 'group' : 'channel';
return this.autorun(() => {
if (this.show.get() === 'joined') {
this.hasMore.set(true);
const options = { fields: { name: 1, t: 1 } };
if (_.isNumber(this.limit.get())) {
options.limit = this.limit.get();
}
if (_.trim(this.sortSubscriptions.get())) {
switch (this.sortSubscriptions.get()) {
case 'name':
options.sort = { name: 1 };
break;
case 'ls':
options.sort = { ls: -1 };
break;
}
}
let type = {$in: ['c', 'p']};
if (_.trim(this.channelType.get())) {
switch (this.channelType.get()) {
case 'public':
type = 'c';
break;
case 'private':
type = 'p';
break;
}
}
this.channelsList.set(RocketChat.models.Subscriptions.find({
name: new RegExp(s.trim(s.escapeRegExp(this.nameFilter.get())), 'i'),
t: type
}, options).fetch()
);
if (this.channelsList.get().length < this.limit.get()) {
return this.hasMore.set(false);
}
} else {
return Meteor.call('channelsList', this.nameFilter.get(), this.channelType.get(), this.limit.get(), this.sortChannels.get(), (err, result) => {
if (result) {
this.hasMore.set(true);
this.channelsList.set(result.channels);
if (result.channels.length < this.limit.get()) {
return this.hasMore.set(false);
}
}
}
);
}
}
);
});

@ -1,63 +0,0 @@
Template.listPrivateGroupsFlex.helpers
groups: ->
return Template.instance().groups.get()
hasMore: ->
return Template.instance().hasMore.get()
sortSelected: (sort) ->
return Template.instance().sort.get() is sort
hidden: ->
return !!RocketChat.models.Subscriptions.findOne({ name: @name, open: false })
Template.listPrivateGroupsFlex.events
'click header': ->
SideNav.closeFlex()
'click .channel-link': ->
SideNav.closeFlex()
'mouseenter header': ->
SideNav.overArrow()
'mouseleave header': ->
SideNav.leaveArrow()
'scroll .content': _.throttle (e, t) ->
if t.hasMore.get() and e.target.scrollTop >= e.target.scrollHeight - e.target.clientHeight
t.limit.set(t.limit.get() + 50)
, 200
'keyup #channel-search': _.debounce (e, instance) ->
instance.nameFilter.set($(e.currentTarget).val())
, 300
'change #sort': (e, instance) ->
instance.sort.set($(e.currentTarget).val())
Template.listPrivateGroupsFlex.onCreated ->
@groups = new ReactiveVar []
@hasMore = new ReactiveVar true
@limit = new ReactiveVar 50
@nameFilter = new ReactiveVar ''
@sort = new ReactiveVar 'name'
@autorun =>
@hasMore.set true
options = { fields: { name: 1 } }
if _.isNumber @limit.get()
options.limit = @limit.get()
if _.trim(@sort.get())
switch @sort.get()
when 'name'
options.sort = { name: 1 }
when 'ls'
options.sort = { ls: -1 }
query = { t: { $in: ['p']}, f: { $ne: true }, archived: { $ne: true } }
@groups.set RocketChat.models.Subscriptions.find({
name: new RegExp s.trim(s.escapeRegExp(@nameFilter.get())), "i"
t: 'p'
archived: { $ne: true }
}, options).fetch()
if @groups.get().length < @limit.get()
@hasMore.set false

@ -0,0 +1,83 @@
Template.listPrivateGroupsFlex.helpers({
groups() {
return Template.instance().groups.get();
},
hasMore() {
return Template.instance().hasMore.get();
},
sortSelected(sort) {
return Template.instance().sort.get() === sort;
},
hidden() {
return !!RocketChat.models.Subscriptions.findOne({ name: this.name, open: false });
}
});
Template.listPrivateGroupsFlex.events({
'click header'() {
return SideNav.closeFlex();
},
'click .channel-link'() {
return SideNav.closeFlex();
},
'mouseenter header'() {
return SideNav.overArrow();
},
'mouseleave header'() {
return SideNav.leaveArrow();
},
'scroll .content': _.throttle(function(e, t) {
if (t.hasMore.get() && (e.target.scrollTop >= (e.target.scrollHeight - e.target.clientHeight))) {
return t.limit.set(t.limit.get() + 50);
}
}
, 200),
'keyup #channel-search': _.debounce((e, instance) => instance.nameFilter.set($(e.currentTarget).val())
, 300),
'change #sort'(e, instance) {
return instance.sort.set($(e.currentTarget).val());
}
});
Template.listPrivateGroupsFlex.onCreated(function() {
this.groups = new ReactiveVar([]);
this.hasMore = new ReactiveVar(true);
this.limit = new ReactiveVar(50);
this.nameFilter = new ReactiveVar('');
this.sort = new ReactiveVar('name');
return this.autorun(() => {
this.hasMore.set(true);
const options = { fields: { name: 1 } };
if (_.isNumber(this.limit.get())) {
options.limit = this.limit.get();
}
if (_.trim(this.sort.get())) {
switch (this.sort.get()) {
case 'name':
options.sort = { name: 1 };
break;
case 'ls':
options.sort = { ls: -1 };
break;
}
}
this.groups.set(RocketChat.models.Subscriptions.find({
name: new RegExp(s.trim(s.escapeRegExp(this.nameFilter.get())), 'i'),
t: 'p',
archived: { $ne: true }
}, options).fetch()
);
if (this.groups.get().length < this.limit.get()) {
return this.hasMore.set(false);
}
}
);
});

@ -39,13 +39,13 @@ Package.onUse(function(api) {
api.addFiles('client/accountBox.js', 'client');
api.addFiles('client/combined.js', 'client');
api.addFiles('client/chatRoomItem.coffee', 'client');
api.addFiles('client/chatRoomItem.js', 'client');
api.addFiles('client/channels.js', 'client');
api.addFiles('client/createCombinedFlex.coffee', 'client');
api.addFiles('client/directMessages.js', 'client');
api.addFiles('client/listChannelsFlex.coffee', 'client');
api.addFiles('client/listCombinedFlex.coffee', 'client');
api.addFiles('client/listPrivateGroupsFlex.coffee', 'client');
api.addFiles('client/listChannelsFlex.js', 'client');
api.addFiles('client/listCombinedFlex.js', 'client');
api.addFiles('client/listPrivateGroupsFlex.js', 'client');
api.addFiles('client/privateGroups.js', 'client');
api.addFiles('client/privateGroupsFlex.coffee', 'client');
api.addFiles('client/sideNav.coffee', 'client');

Loading…
Cancel
Save