3 var _
= require('lodash');
4 var validateTag
= require('../../validation/validate-tag').validateTag
;
5 var getRoomNameFromTroupeName
= require('../../get-room-name-from-troupe-name');
7 // via http://stackoverflow.com/a/17633552/796832
9 { divider
: 1e18
, suffix
: 'P' },
10 { divider
: 1e15
, suffix
: 'E' },
11 { divider
: 1e12
, suffix
: 'T' },
12 { divider
: 1e9
, suffix
: 'G' },
13 { divider
: 1e6
, suffix
: 'M' },
14 { divider
: 1e3
, suffix
: 'k' }
16 var formatNumberWithSiPrefix = function(n
) {
17 for (var i
= 0; i
< ranges
.length
; i
++) {
18 if (n
>= ranges
[i
].divider
) {
19 var siValue
= n
/ ranges
[i
].divider
;
20 return (Math
.round(siValue
* 10) / 10).toString() + ranges
[i
].suffix
;
30 // generateRoomCardContext
31 module
.exports = function(room
, options
) {
32 var opts
= _
.extend({}, defaults
, options
);
33 var result
= _
.extend({}, room
);
36 result
.security
!== 'PUBLIC' && result
.security
!== null && result
.security
!== undefined;
37 result
.canEditTags
= opts
.isStaff
;
39 var roomName
= room
.name
;
40 if (opts
.stripGroupName
) {
41 roomName
= getRoomNameFromTroupeName(room
.name
);
43 result
.name
= roomName
;
44 result
.roomNameParts
= roomName
.split('/');
46 result
.topic
= room
.topic
|| room
.description
;
47 if (room
.messageCount
) {
48 result
.messageCountSiPrefixed
= formatNumberWithSiPrefix(room
.messageCount
);
50 result
.displayTags
= (result
.tags
|| []).filter(function(tag
) {
51 return validateTag(tag
, opts
.isStaff
).isValid
;