Side-nav CoffeeScript to JavaScript II (#6266)
* convert sidenav Coffeescript to Javascript * fix no unused varspull/6274/head
parent
4b5689445a
commit
2ffad6d4e3
@ -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); |
||||
} |
||||
} |
||||
); |
||||
}); |
||||
Loading…
Reference in new issue