@plusscommunities/pluss-circles-web 1.0.17 → 1.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -21,6 +21,8 @@ var reactBootstrap = require('react-bootstrap');
21
21
  var FontAwesome = require('react-fontawesome');
22
22
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
23
23
  var reactRouter = require('react-router');
24
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
25
+ var freeSolidSvgIcons = require('@fortawesome/free-solid-svg-icons');
24
26
 
25
27
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
26
28
 
@@ -59,6 +61,7 @@ var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
59
61
  var PlussCore__namespace = /*#__PURE__*/_interopNamespace(PlussCore);
60
62
  var FontAwesome__default = /*#__PURE__*/_interopDefaultLegacy(FontAwesome);
61
63
  var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
64
+ var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
62
65
 
63
66
  var values = {
64
67
  featureKey: 'circles',
@@ -193,10 +196,10 @@ var circleRemoved = function circleRemoved(circleId) {
193
196
  };
194
197
 
195
198
  var Helper$3 = PlussCore__namespace.Helper,
196
- Session$3 = PlussCore__namespace.Session;
199
+ Session$4 = PlussCore__namespace.Session;
197
200
  var circleActions = {
198
201
  getAll: function getAll(site) {
199
- return Session$3.authedFunction({
202
+ return Session$4.authedFunction({
200
203
  method: 'GET',
201
204
  url: Helper$3.getUrl(values.serviceKey, 'get/all', {
202
205
  site: site
@@ -204,7 +207,7 @@ var circleActions = {
204
207
  });
205
208
  },
206
209
  getFiles: function getFiles(circleId) {
207
- return Session$3.authedFunction({
210
+ return Session$4.authedFunction({
208
211
  method: 'GET',
209
212
  url: Helper$3.getUrl(values.serviceKey, 'get/files', {
210
213
  circleId: circleId
@@ -212,7 +215,7 @@ var circleActions = {
212
215
  });
213
216
  },
214
217
  getImages: function getImages(circleId) {
215
- return Session$3.authedFunction({
218
+ return Session$4.authedFunction({
216
219
  method: 'GET',
217
220
  url: Helper$3.getUrl(values.serviceKey, 'get/images', {
218
221
  circleId: circleId
@@ -220,7 +223,7 @@ var circleActions = {
220
223
  });
221
224
  },
222
225
  add: function add(site, title, image, audience, isPublic) {
223
- return Session$3.authedFunction({
226
+ return Session$4.authedFunction({
224
227
  method: 'POST',
225
228
  url: Helper$3.getUrl(values.serviceKey, 'update/add'),
226
229
  data: {
@@ -233,7 +236,7 @@ var circleActions = {
233
236
  });
234
237
  },
235
238
  edit: function edit(circleId, title, image, audience, isPublic) {
236
- return Session$3.authedFunction({
239
+ return Session$4.authedFunction({
237
240
  method: 'POST',
238
241
  url: Helper$3.getUrl(values.serviceKey, 'update/edit'),
239
242
  data: {
@@ -246,7 +249,7 @@ var circleActions = {
246
249
  });
247
250
  },
248
251
  delete: function _delete(circleId) {
249
- return Session$3.authedFunction({
252
+ return Session$4.authedFunction({
250
253
  method: 'POST',
251
254
  url: Helper$3.getUrl(values.serviceKey, 'update/delete'),
252
255
  data: {
@@ -255,7 +258,7 @@ var circleActions = {
255
258
  });
256
259
  },
257
260
  addAdmin: function addAdmin(circleId, userId) {
258
- return Session$3.authedFunction({
261
+ return Session$4.authedFunction({
259
262
  method: 'POST',
260
263
  url: Helper$3.getUrl(values.serviceKey, 'update/addadmin'),
261
264
  data: {
@@ -265,7 +268,7 @@ var circleActions = {
265
268
  });
266
269
  },
267
270
  removeAdmin: function removeAdmin(circleId, userId) {
268
- return Session$3.authedFunction({
271
+ return Session$4.authedFunction({
269
272
  method: 'POST',
270
273
  url: Helper$3.getUrl(values.serviceKey, 'update/removeadmin'),
271
274
  data: {
@@ -297,7 +300,7 @@ var circleActions = {
297
300
  query.limit = limit;
298
301
  }
299
302
 
300
- return _context.abrupt("return", Session$3.authedFunction({
303
+ return _context.abrupt("return", Session$4.authedFunction({
301
304
  method: 'GET',
302
305
  url: Helper$3.getUrl(values.serviceKey, 'getMessages', query)
303
306
  }));
@@ -322,7 +325,7 @@ var circleActions = {
322
325
  while (1) {
323
326
  switch (_context2.prev = _context2.next) {
324
327
  case 0:
325
- return _context2.abrupt("return", Session$3.authedFunction({
328
+ return _context2.abrupt("return", Session$4.authedFunction({
326
329
  method: 'post',
327
330
  url: Helper$3.getUrl(values.serviceKey, 'sendMessage'),
328
331
  data: {
@@ -347,11 +350,14 @@ var circleActions = {
347
350
  }()
348
351
  };
349
352
 
353
+ var Apis$1 = PlussCore__namespace.Apis;
354
+ var analyticsActions = Apis$1.analyticsActions;
355
+
350
356
  function _createSuper$7(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$7(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
351
357
 
352
358
  function _isNativeReflectConstruct$7() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
353
- var Components$3 = PlussCore__namespace.Components,
354
- Session$2 = PlussCore__namespace.Session,
359
+ var Components$4 = PlussCore__namespace.Components,
360
+ Session$3 = PlussCore__namespace.Session,
355
361
  Helper$2 = PlussCore__namespace.Helper;
356
362
 
357
363
  var Circles = /*#__PURE__*/function (_Component) {
@@ -414,13 +420,13 @@ var Circles = /*#__PURE__*/function (_Component) {
414
420
 
415
421
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "canAddNew", function () {
416
422
  var auth = _this.props.auth;
417
- return Session$2.validateAccess(auth.site, values.permission, auth);
423
+ return Session$3.validateAccess(auth.site, values.permission, auth);
418
424
  });
419
425
 
420
426
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onAddNew", function () {
421
427
  var auth = _this.props.auth;
422
428
 
423
- if (Session$2.validateAccess(auth.site, values.permission, auth)) {
429
+ if (Session$3.validateAccess(auth.site, values.permission, auth)) {
424
430
  _this.props.history.push("/".concat(values.featureKey, "/add"));
425
431
  }
426
432
  });
@@ -577,7 +583,7 @@ var Circles = /*#__PURE__*/function (_Component) {
577
583
  value: function validateCircleAdmin(circle, onlyCreator) {
578
584
  var _this4 = this;
579
585
 
580
- if (Session$2.validateAccess(this.props.auth.site, values.permission, this.props.auth)) {
586
+ if (Session$3.validateAccess(this.props.auth.site, values.permission, this.props.auth)) {
581
587
  return true;
582
588
  }
583
589
 
@@ -601,7 +607,7 @@ var Circles = /*#__PURE__*/function (_Component) {
601
607
  }, /*#__PURE__*/React__default['default'].createElement(reactRouterDom.Link, {
602
608
  to: "/".concat(values.featureKey, "/").concat(values.entityKey, "/").concat(circle.Id)
603
609
  }, this.getTitle(circle))), /*#__PURE__*/React__default['default'].createElement("td", null, moment__default['default'](circle.Changed).local().format('D MMM YYYY')), /*#__PURE__*/React__default['default'].createElement("td", null, circle.Audience.map(function (user) {
604
- return /*#__PURE__*/React__default['default'].createElement(Components$3.ProfilePic, {
610
+ return /*#__PURE__*/React__default['default'].createElement(Components$4.ProfilePic, {
605
611
  size: 30,
606
612
  image: user.profilePic,
607
613
  hoverText: user.displayName,
@@ -641,24 +647,24 @@ var Circles = /*#__PURE__*/function (_Component) {
641
647
  }, {
642
648
  key: "renderFilters",
643
649
  value: function renderFilters() {
644
- var userFilter = /*#__PURE__*/React__default['default'].createElement(Components$3.Tag, {
650
+ var userFilter = /*#__PURE__*/React__default['default'].createElement(Components$4.Tag, {
645
651
  className: "marginRight-10",
646
652
  onClick: this.openUserFilter,
647
653
  text: "User"
648
654
  });
649
- var typeFilter = /*#__PURE__*/React__default['default'].createElement(Components$3.Tag, {
655
+ var typeFilter = /*#__PURE__*/React__default['default'].createElement(Components$4.Tag, {
650
656
  className: "marginRight-10",
651
657
  onClick: this.openTypeFilter,
652
658
  text: "Type"
653
659
  });
654
660
 
655
661
  if (this.state.selectedUserFilter) {
656
- userFilter = /*#__PURE__*/React__default['default'].createElement(Components$3.Tag, {
662
+ userFilter = /*#__PURE__*/React__default['default'].createElement(Components$4.Tag, {
657
663
  className: "marginRight-10",
658
664
  onClick: this.openUserFilter,
659
665
  rightIcon: "close",
660
666
  rightClick: this.removeUserFilter
661
- }, /*#__PURE__*/React__default['default'].createElement(Components$3.UserListing, {
667
+ }, /*#__PURE__*/React__default['default'].createElement(Components$4.UserListing, {
662
668
  size: 15,
663
669
  user: this.state.selectedUserFilter,
664
670
  textClass: "tag_text"
@@ -666,7 +672,7 @@ var Circles = /*#__PURE__*/function (_Component) {
666
672
  }
667
673
 
668
674
  if (this.state.selectedTypeFilter) {
669
- typeFilter = /*#__PURE__*/React__default['default'].createElement(Components$3.Tag, {
675
+ typeFilter = /*#__PURE__*/React__default['default'].createElement(Components$4.Tag, {
670
676
  className: "marginRight-10",
671
677
  onClick: this.openTypeFilter,
672
678
  rightIcon: "close",
@@ -677,7 +683,7 @@ var Circles = /*#__PURE__*/function (_Component) {
677
683
 
678
684
  return /*#__PURE__*/React__default['default'].createElement("div", {
679
685
  className: "flex flex-center marginTop-20"
680
- }, /*#__PURE__*/React__default['default'].createElement(Components$3.Text, {
686
+ }, /*#__PURE__*/React__default['default'].createElement(Components$4.Text, {
681
687
  type: "h5",
682
688
  className: "marginRight-20"
683
689
  }, "Filter by"), userFilter, typeFilter);
@@ -691,14 +697,14 @@ var Circles = /*#__PURE__*/function (_Component) {
691
697
  return null;
692
698
  }
693
699
 
694
- return /*#__PURE__*/React__default['default'].createElement(Components$3.Popup, {
700
+ return /*#__PURE__*/React__default['default'].createElement(Components$4.Popup, {
695
701
  title: "Select User",
696
702
  maxWidth: 600,
697
703
  minWidth: 400,
698
704
  minHeight: 400,
699
705
  hasPadding: true,
700
706
  onClose: this.closeUserFilter
701
- }, /*#__PURE__*/React__default['default'].createElement(Components$3.GenericInput, {
707
+ }, /*#__PURE__*/React__default['default'].createElement(Components$4.GenericInput, {
702
708
  id: "userSearch",
703
709
  type: "text",
704
710
  label: "Search",
@@ -709,7 +715,7 @@ var Circles = /*#__PURE__*/function (_Component) {
709
715
  },
710
716
  alwaysShowLabel: true
711
717
  }), this.getUsers().map(function (user) {
712
- return /*#__PURE__*/React__default['default'].createElement(Components$3.UserListing, {
718
+ return /*#__PURE__*/React__default['default'].createElement(Components$4.UserListing, {
713
719
  key: user.userId,
714
720
  user: user,
715
721
  onClick: function onClick() {
@@ -727,19 +733,19 @@ var Circles = /*#__PURE__*/function (_Component) {
727
733
  return null;
728
734
  }
729
735
 
730
- return /*#__PURE__*/React__default['default'].createElement(Components$3.Popup, {
736
+ return /*#__PURE__*/React__default['default'].createElement(Components$4.Popup, {
731
737
  title: "Select Type",
732
738
  maxWidth: 600,
733
739
  minWidth: 400,
734
740
  hasPadding: true,
735
741
  onClose: this.closeTypeFilter
736
- }, /*#__PURE__*/React__default['default'].createElement(Components$3.Tag, {
742
+ }, /*#__PURE__*/React__default['default'].createElement(Components$4.Tag, {
737
743
  onClick: function onClick() {
738
744
  _this7.selectTypeFilter('circle');
739
745
  },
740
746
  text: ___default['default'].capitalize(values.entityName),
741
747
  className: "marginRight-10"
742
- }), /*#__PURE__*/React__default['default'].createElement(Components$3.Tag, {
748
+ }), /*#__PURE__*/React__default['default'].createElement(Components$4.Tag, {
743
749
  onClick: function onClick() {
744
750
  _this7.selectTypeFilter('private');
745
751
  },
@@ -751,12 +757,12 @@ var Circles = /*#__PURE__*/function (_Component) {
751
757
  value: function render() {
752
758
  var _this8 = this;
753
759
 
754
- return /*#__PURE__*/React__default['default'].createElement("div", null, this.renderTypeFilterPopup(), this.renderUserFilterPopup(), /*#__PURE__*/React__default['default'].createElement(Components$3.Header, null, this.canAddNew() && /*#__PURE__*/React__default['default'].createElement(Components$3.AddButton, {
760
+ return /*#__PURE__*/React__default['default'].createElement("div", null, this.renderTypeFilterPopup(), this.renderUserFilterPopup(), /*#__PURE__*/React__default['default'].createElement(Components$4.Header, null, this.canAddNew() && /*#__PURE__*/React__default['default'].createElement(Components$4.AddButton, {
755
761
  onClick: this.onAddNew,
756
762
  text: "NEW ".concat(___default['default'].upperCase(values.entityName))
757
763
  })), /*#__PURE__*/React__default['default'].createElement("div", {
758
764
  className: "pageContainer paddingVertical-20 paddingHorizontal-40"
759
- }, /*#__PURE__*/React__default['default'].createElement(Components$3.Text, {
765
+ }, /*#__PURE__*/React__default['default'].createElement(Components$4.Text, {
760
766
  type: "h1",
761
767
  className: ""
762
768
  }, values.textFeatureTitle), this.renderFilters(), /*#__PURE__*/React__default['default'].createElement(reactBootstrap.Table, {
@@ -783,7 +789,7 @@ var Circles = /*#__PURE__*/function (_Component) {
783
789
  return Circles;
784
790
  }(React.Component);
785
791
 
786
- var mapStateToProps$2 = function mapStateToProps(state) {
792
+ var mapStateToProps$3 = function mapStateToProps(state) {
787
793
  var circles = state[values.reducerKey].circles;
788
794
  var auth = state.auth;
789
795
  return {
@@ -793,7 +799,7 @@ var mapStateToProps$2 = function mapStateToProps(state) {
793
799
  };
794
800
  };
795
801
 
796
- var Circles$1 = reactRedux.connect(mapStateToProps$2, {
802
+ var Circles$1 = reactRedux.connect(mapStateToProps$3, {
797
803
  circlesLoaded: circlesLoaded,
798
804
  circleRemoved: circleRemoved
799
805
  })(Circles);
@@ -802,8 +808,8 @@ function _createSuper$6(Derived) { var hasNativeReflectConstruct = _isNativeRefl
802
808
 
803
809
  function _isNativeReflectConstruct$6() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
804
810
  var Actions$1 = PlussCore__namespace.Actions,
805
- Components$2 = PlussCore__namespace.Components,
806
- Session$1 = PlussCore__namespace.Session,
811
+ Components$3 = PlussCore__namespace.Components,
812
+ Session$2 = PlussCore__namespace.Session,
807
813
  Apis = PlussCore__namespace.Apis,
808
814
  Colours$2 = PlussCore__namespace.Colours,
809
815
  Helper$1 = PlussCore__namespace.Helper;
@@ -1079,7 +1085,7 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1079
1085
  _createClass__default['default'](AddCircle, [{
1080
1086
  key: "componentDidMount",
1081
1087
  value: function componentDidMount() {
1082
- Session$1.checkLoggedIn(this, this.props.auth);
1088
+ Session$2.checkLoggedIn(this, this.props.auth);
1083
1089
  this.props.addRecentlyCreated(values.entityKey);
1084
1090
  this.getUsers();
1085
1091
  this.checkGetCircle();
@@ -1125,7 +1131,7 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1125
1131
  key: "renderSuccess",
1126
1132
  value: function renderSuccess() {
1127
1133
  if (!this.state.success) return null;
1128
- return /*#__PURE__*/React__default['default'].createElement(Components$2.SuccessPopup, {
1134
+ return /*#__PURE__*/React__default['default'].createElement(Components$3.SuccessPopup, {
1129
1135
  text: "".concat(___default['default'].capitalize(values.entityName), " has been ").concat(this.state.circleId == null ? 'added' : 'edited'),
1130
1136
  buttons: [{
1131
1137
  type: 'outlined',
@@ -1142,12 +1148,12 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1142
1148
  var _this4 = this;
1143
1149
 
1144
1150
  if (this.state.updating) {
1145
- return /*#__PURE__*/React__default['default'].createElement(Components$2.Button, {
1151
+ return /*#__PURE__*/React__default['default'].createElement(Components$3.Button, {
1146
1152
  buttonType: "secondary"
1147
1153
  }, "Saving...");
1148
1154
  }
1149
1155
 
1150
- return /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(Components$2.Button, {
1156
+ return /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(Components$3.Button, {
1151
1157
  inline: true,
1152
1158
  buttonType: "tertiary",
1153
1159
  onClick: function onClick() {
@@ -1157,7 +1163,7 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1157
1163
  style: {
1158
1164
  marginRight: 16
1159
1165
  }
1160
- }, "Cancel"), /*#__PURE__*/React__default['default'].createElement(Components$2.Button, {
1166
+ }, "Cancel"), /*#__PURE__*/React__default['default'].createElement(Components$3.Button, {
1161
1167
  inline: true,
1162
1168
  buttonType: "primary",
1163
1169
  onClick: this.onSave,
@@ -1171,7 +1177,7 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1171
1177
 
1172
1178
  return /*#__PURE__*/React__default['default'].createElement("div", {
1173
1179
  className: "optionsContent_bottom"
1174
- }, /*#__PURE__*/React__default['default'].createElement(Components$2.RadioButton, {
1180
+ }, /*#__PURE__*/React__default['default'].createElement(Components$3.RadioButton, {
1175
1181
  label: "Do you want to make this ".concat(values.entityName, " a public ").concat(values.entityName, "?"),
1176
1182
  isActive: this.state.isPublic,
1177
1183
  options: [{
@@ -1226,7 +1232,7 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1226
1232
  return null;
1227
1233
  }
1228
1234
 
1229
- return /*#__PURE__*/React__default['default'].createElement(Components$2.OptionsSection, {
1235
+ return /*#__PURE__*/React__default['default'].createElement(Components$3.OptionsSection, {
1230
1236
  options: options,
1231
1237
  selected: this.state.selectedOption,
1232
1238
  selectOption: this.selectOption
@@ -1239,12 +1245,12 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1239
1245
 
1240
1246
  return /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement("div", {
1241
1247
  className: "padding-60 paddingVertical-40 bottomDivideBorder"
1242
- }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1248
+ }, /*#__PURE__*/React__default['default'].createElement(Components$3.Text, {
1243
1249
  type: "formTitleLarge",
1244
1250
  className: "marginBottom-24"
1245
1251
  }, this.state.circleId == null ? 'New' : 'Edit', " ", ___default['default'].capitalize(values.entityName)), /*#__PURE__*/React__default['default'].createElement("div", {
1246
1252
  className: "flex flex-reverse"
1247
- }, /*#__PURE__*/React__default['default'].createElement(Components$2.ImageInput, {
1253
+ }, /*#__PURE__*/React__default['default'].createElement(Components$3.ImageInput, {
1248
1254
  ref: function ref(_ref2) {
1249
1255
  _this6.imageInput = _ref2;
1250
1256
  },
@@ -1256,7 +1262,7 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1256
1262
  }
1257
1263
  }), /*#__PURE__*/React__default['default'].createElement("div", {
1258
1264
  className: "flex-1"
1259
- }, /*#__PURE__*/React__default['default'].createElement(Components$2.GenericInput, {
1265
+ }, /*#__PURE__*/React__default['default'].createElement(Components$3.GenericInput, {
1260
1266
  id: "title",
1261
1267
  type: "text",
1262
1268
  label: "Title",
@@ -1275,16 +1281,16 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1275
1281
  }
1276
1282
  })))), /*#__PURE__*/React__default['default'].createElement("div", {
1277
1283
  className: "padding-60 paddingVertical-40 bottomDivideBorder"
1278
- }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1284
+ }, /*#__PURE__*/React__default['default'].createElement(Components$3.Text, {
1279
1285
  type: "formTitleMedium"
1280
1286
  }, "Members"), /*#__PURE__*/React__default['default'].createElement("div", {
1281
1287
  className: "flex marginTop-20"
1282
1288
  }, /*#__PURE__*/React__default['default'].createElement("div", {
1283
1289
  className: "flex-1"
1284
- }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1290
+ }, /*#__PURE__*/React__default['default'].createElement(Components$3.Text, {
1285
1291
  type: "formTitleSmall",
1286
1292
  className: "marginBottom-10"
1287
- }, "Select Users"), /*#__PURE__*/React__default['default'].createElement(Components$2.GenericInput, {
1293
+ }, "Select Users"), /*#__PURE__*/React__default['default'].createElement(Components$3.GenericInput, {
1288
1294
  id: "userSearch",
1289
1295
  type: "text",
1290
1296
  label: "Search",
@@ -1295,7 +1301,7 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1295
1301
  },
1296
1302
  alwaysShowLabel: true
1297
1303
  }), this.getShownUsers().map(function (user) {
1298
- return /*#__PURE__*/React__default['default'].createElement(Components$2.UserListing, {
1304
+ return /*#__PURE__*/React__default['default'].createElement(Components$3.UserListing, {
1299
1305
  key: user.userId,
1300
1306
  user: user,
1301
1307
  onClick: function onClick() {
@@ -1304,23 +1310,23 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1304
1310
  });
1305
1311
  })), /*#__PURE__*/React__default['default'].createElement("div", {
1306
1312
  className: "flex-1"
1307
- }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1313
+ }, /*#__PURE__*/React__default['default'].createElement(Components$3.Text, {
1308
1314
  type: "formTitleSmall",
1309
1315
  className: "marginBottom-10"
1310
1316
  }, "Selected"), this.state.selectedUsers.map(function (user) {
1311
- return /*#__PURE__*/React__default['default'].createElement(Components$2.UserListing, {
1317
+ return /*#__PURE__*/React__default['default'].createElement(Components$3.UserListing, {
1312
1318
  key: user.userId,
1313
1319
  user: user,
1314
1320
  rightContent: /*#__PURE__*/React__default['default'].createElement("div", {
1315
1321
  className: "flex flex-reverse flex-center"
1316
- }, /*#__PURE__*/React__default['default'].createElement(Components$2.SVGIcon, {
1322
+ }, /*#__PURE__*/React__default['default'].createElement(Components$3.SVGIcon, {
1317
1323
  className: "removeIcon marginLeft-8",
1318
1324
  icon: "close",
1319
1325
  colour: Colours$2.COLOUR_DUSK,
1320
1326
  onClick: function onClick() {
1321
1327
  _this6.onSelectUser(user);
1322
1328
  }
1323
- }), /*#__PURE__*/React__default['default'].createElement(Components$2.StatusButton, {
1329
+ }), /*#__PURE__*/React__default['default'].createElement(Components$3.StatusButton, {
1324
1330
  isActive: user.isAdmin,
1325
1331
  activate: function activate() {
1326
1332
  _this6.addAdmin(user);
@@ -1340,18 +1346,18 @@ var AddCircle = /*#__PURE__*/function (_Component) {
1340
1346
  key: "render",
1341
1347
  value: function render() {
1342
1348
  var success = this.state.success;
1343
- return /*#__PURE__*/React__default['default'].createElement(Components$2.OverlayPage, null, /*#__PURE__*/React__default['default'].createElement(Components$2.OverlayPageContents, {
1349
+ return /*#__PURE__*/React__default['default'].createElement(Components$3.OverlayPage, null, /*#__PURE__*/React__default['default'].createElement(Components$3.OverlayPageContents, {
1344
1350
  noBottomButtons: success
1345
- }, /*#__PURE__*/React__default['default'].createElement(Components$2.OverlayPageSection, {
1351
+ }, /*#__PURE__*/React__default['default'].createElement(Components$3.OverlayPageSection, {
1346
1352
  className: "pageSectionWrapper--newPopup"
1347
- }, /*#__PURE__*/React__default['default'].createElement("div", null, this.renderSuccess(), !success && this.renderMain()))), /*#__PURE__*/React__default['default'].createElement(Components$2.OverlayPageBottomButtons, null, this.renderSubmit()));
1353
+ }, /*#__PURE__*/React__default['default'].createElement("div", null, this.renderSuccess(), !success && this.renderMain()))), /*#__PURE__*/React__default['default'].createElement(Components$3.OverlayPageBottomButtons, null, this.renderSubmit()));
1348
1354
  }
1349
1355
  }]);
1350
1356
 
1351
1357
  return AddCircle;
1352
1358
  }(React.Component);
1353
1359
 
1354
- var mapStateToProps$1 = function mapStateToProps(state) {
1360
+ var mapStateToProps$2 = function mapStateToProps(state) {
1355
1361
  var circles = state[values.reducerKey].circles;
1356
1362
  var auth = state.auth;
1357
1363
  return {
@@ -1361,7 +1367,7 @@ var mapStateToProps$1 = function mapStateToProps(state) {
1361
1367
  };
1362
1368
  };
1363
1369
 
1364
- var AddCircle$1 = reactRedux.connect(mapStateToProps$1, {
1370
+ var AddCircle$1 = reactRedux.connect(mapStateToProps$2, {
1365
1371
  circlesLoaded: circlesLoaded,
1366
1372
  circleUpdated: circleUpdated,
1367
1373
  addRecentlyCreated: Actions$1.addRecentlyCreated
@@ -1370,10 +1376,10 @@ var AddCircle$1 = reactRedux.connect(mapStateToProps$1, {
1370
1376
  function _createSuper$5(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$5(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
1371
1377
 
1372
1378
  function _isNativeReflectConstruct$5() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
1373
- var Components$1 = PlussCore__namespace.Components,
1379
+ var Components$2 = PlussCore__namespace.Components,
1374
1380
  Helper = PlussCore__namespace.Helper,
1375
1381
  Actions = PlussCore__namespace.Actions,
1376
- Session = PlussCore__namespace.Session,
1382
+ Session$1 = PlussCore__namespace.Session,
1377
1383
  Colours$1 = PlussCore__namespace.Colours;
1378
1384
 
1379
1385
  var Circle = /*#__PURE__*/function (_Component) {
@@ -1794,7 +1800,7 @@ var Circle = /*#__PURE__*/function (_Component) {
1794
1800
  value: function validateCircleAdmin() {
1795
1801
  var _this4 = this;
1796
1802
 
1797
- if (Session.validateAccess(this.props.auth.site, values.permission, this.props.auth)) {
1803
+ if (Session$1.validateAccess(this.props.auth.site, values.permission, this.props.auth)) {
1798
1804
  return true;
1799
1805
  }
1800
1806
 
@@ -1808,7 +1814,7 @@ var Circle = /*#__PURE__*/function (_Component) {
1808
1814
  var _this5 = this;
1809
1815
 
1810
1816
  if (!this.isMember()) {
1811
- return /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
1817
+ return /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1812
1818
  type: "highlightedHelp",
1813
1819
  className: "chat_noMessage"
1814
1820
  }, "You can't send a message to this ", ___default['default'].capitalize(values.entityName), " as you are not a member.");
@@ -1822,7 +1828,7 @@ var Circle = /*#__PURE__*/function (_Component) {
1822
1828
  onClick: this.sendMessage
1823
1829
  }), /*#__PURE__*/React__default['default'].createElement("div", {
1824
1830
  className: "chat_inputContainer"
1825
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.GenericInput, {
1831
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.GenericInput, {
1826
1832
  id: "messageInput",
1827
1833
  type: "textarea",
1828
1834
  className: "chat_input",
@@ -1849,7 +1855,7 @@ var Circle = /*#__PURE__*/function (_Component) {
1849
1855
  style: {
1850
1856
  display: this.state.imageInputShowing ? 'block' : 'none'
1851
1857
  }
1852
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.ImageInput, {
1858
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.ImageInput, {
1853
1859
  ref: function ref(_ref4) {
1854
1860
  _this5.imageInput = _ref4;
1855
1861
  },
@@ -1864,7 +1870,7 @@ var Circle = /*#__PURE__*/function (_Component) {
1864
1870
  style: {
1865
1871
  display: this.state.fileInputShowing ? 'block' : 'none'
1866
1872
  }
1867
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.FileInput, {
1873
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.FileInput, {
1868
1874
  ref: function ref(_ref5) {
1869
1875
  _this5.fileInput = _ref5;
1870
1876
  },
@@ -1885,7 +1891,7 @@ var Circle = /*#__PURE__*/function (_Component) {
1885
1891
  return /*#__PURE__*/React__default['default'].createElement("div", {
1886
1892
  key: m._id,
1887
1893
  className: "message"
1888
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
1894
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1889
1895
  type: "h5",
1890
1896
  className: "message_system"
1891
1897
  }, m.text));
@@ -1895,28 +1901,28 @@ var Circle = /*#__PURE__*/function (_Component) {
1895
1901
  return /*#__PURE__*/React__default['default'].createElement("div", {
1896
1902
  key: m._id,
1897
1903
  className: "message".concat(isSelf ? ' message-self' : '').concat(m.uploading ? ' message-uploading' : '')
1898
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
1904
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1899
1905
  type: "h5-noUpper",
1900
1906
  className: "message_time"
1901
1907
  }, moment__default['default'].utc(m.createdAt).local().format('D MMM YYYY • h:mma')), /*#__PURE__*/React__default['default'].createElement("div", {
1902
1908
  className: "message_inner"
1903
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.ProfilePic, {
1909
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.ProfilePic, {
1904
1910
  size: 40,
1905
1911
  image: m.user.avatar,
1906
1912
  className: "message_profilePic"
1907
1913
  }), /*#__PURE__*/React__default['default'].createElement("div", {
1908
1914
  className: "message_bubbleContainer"
1909
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
1915
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1910
1916
  type: "body",
1911
1917
  className: "message_name"
1912
1918
  }, m.user.name, m.replyingTo ? " replied to ".concat(m.replyingTo.user.name) : ''), m.replyingTo && /*#__PURE__*/React__default['default'].createElement("div", {
1913
1919
  className: "message_replyBubble"
1914
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
1920
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1915
1921
  type: "body",
1916
1922
  className: "message_text"
1917
1923
  }, Helper.toParagraphed((m.replyingTo.text || '').substr(0, 100)))), /*#__PURE__*/React__default['default'].createElement("div", {
1918
1924
  className: "message_bubble"
1919
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
1925
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1920
1926
  type: "body",
1921
1927
  className: "message_text"
1922
1928
  }, Helper.toParagraphed(m.text)), /*#__PURE__*/React__default['default'].createElement("div", null, (m.image || []).map(function (url, i) {
@@ -1930,14 +1936,14 @@ var Circle = /*#__PURE__*/function (_Component) {
1930
1936
  alt: Helper.getFileName(url)
1931
1937
  }));
1932
1938
  })), /*#__PURE__*/React__default['default'].createElement("div", null, (m.attachments || []).map(function (url, i) {
1933
- return /*#__PURE__*/React__default['default'].createElement(Components$1.Attachment, {
1939
+ return /*#__PURE__*/React__default['default'].createElement(Components$2.Attachment, {
1934
1940
  source: url,
1935
1941
  key: i,
1936
1942
  white: isSelf
1937
1943
  });
1938
1944
  }))), /*#__PURE__*/React__default['default'].createElement("div", {
1939
1945
  className: "message_reply"
1940
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
1946
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1941
1947
  type: "button",
1942
1948
  onClick: function onClick() {
1943
1949
  _this6.onReply(m);
@@ -1986,12 +1992,12 @@ var Circle = /*#__PURE__*/function (_Component) {
1986
1992
  onClick: this.toggleMembers
1987
1993
  }), /*#__PURE__*/React__default['default'].createElement("div", {
1988
1994
  className: "flex-1"
1989
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
1995
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
1990
1996
  type: "formTitleMedium"
1991
1997
  }, "Member", Helper.getPluralS(members.length), " (", members.length, ")"))), this.state.membersExpanded && /*#__PURE__*/React__default['default'].createElement("div", {
1992
1998
  className: "paddingTop-8"
1993
1999
  }, members.map(function (user) {
1994
- return /*#__PURE__*/React__default['default'].createElement(Components$1.UserListing, {
2000
+ return /*#__PURE__*/React__default['default'].createElement(Components$2.UserListing, {
1995
2001
  user: user
1996
2002
  });
1997
2003
  }))), /*#__PURE__*/React__default['default'].createElement("div", {
@@ -2004,7 +2010,7 @@ var Circle = /*#__PURE__*/function (_Component) {
2004
2010
  onClick: this.toggleImages
2005
2011
  }), /*#__PURE__*/React__default['default'].createElement("div", {
2006
2012
  className: "flex-1"
2007
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
2013
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
2008
2014
  type: "formTitleMedium"
2009
2015
  }, "Image", Helper.getPluralS(this.state.images.length), " (", this.state.images.length, ")"))), this.state.imagesExpanded && /*#__PURE__*/React__default['default'].createElement("div", {
2010
2016
  className: "paddingTop-8"
@@ -2027,12 +2033,12 @@ var Circle = /*#__PURE__*/function (_Component) {
2027
2033
  onClick: this.toggleFiles
2028
2034
  }), /*#__PURE__*/React__default['default'].createElement("div", {
2029
2035
  className: "flex-1"
2030
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
2036
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
2031
2037
  type: "formTitleMedium"
2032
2038
  }, "File", Helper.getPluralS(this.state.files.length), " (", this.state.files.length, ")"))), this.state.filesExpanded && /*#__PURE__*/React__default['default'].createElement("div", {
2033
2039
  className: "paddingTop-8"
2034
2040
  }, this.state.files.map(function (file, i) {
2035
- return /*#__PURE__*/React__default['default'].createElement(Components$1.Attachment, {
2041
+ return /*#__PURE__*/React__default['default'].createElement(Components$2.Attachment, {
2036
2042
  source: file.Url,
2037
2043
  key: i
2038
2044
  });
@@ -2052,13 +2058,13 @@ var Circle = /*#__PURE__*/function (_Component) {
2052
2058
  className: "chat_replyTo"
2053
2059
  }, /*#__PURE__*/React__default['default'].createElement("div", {
2054
2060
  className: "chat_replyTo_container"
2055
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
2061
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
2056
2062
  type: "h5"
2057
- }, "Replying to ", m && m.user && !___default['default'].isEmpty(m.user.displayName) ? m.user.displayName : ''), m && !___default['default'].isEmpty(m.text) && /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
2063
+ }, "Replying to ", m && m.user && !___default['default'].isEmpty(m.user.displayName) ? m.user.displayName : ''), m && !___default['default'].isEmpty(m.text) && /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
2058
2064
  type: "body"
2059
2065
  }, m.text.substr(0, 50))), /*#__PURE__*/React__default['default'].createElement("div", {
2060
2066
  className: "chat_replyTo_remove"
2061
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.SVGIcon, {
2067
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.SVGIcon, {
2062
2068
  className: "removeIcon",
2063
2069
  icon: "close",
2064
2070
  onClick: function onClick() {
@@ -2072,13 +2078,13 @@ var Circle = /*#__PURE__*/function (_Component) {
2072
2078
  value: function render() {
2073
2079
  var _this8 = this;
2074
2080
 
2075
- return /*#__PURE__*/React__default['default'].createElement(Components$1.OverlayPage, {
2081
+ return /*#__PURE__*/React__default['default'].createElement(Components$2.OverlayPage, {
2076
2082
  fullPage: true,
2077
2083
  fullPageStyle: {
2078
2084
  display: 'flex',
2079
2085
  flexDirection: 'column'
2080
2086
  }
2081
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Header, {
2087
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Header, {
2082
2088
  rightContent: this.renderHeaderRight()
2083
2089
  }, /*#__PURE__*/React__default['default'].createElement(FontAwesome__default['default'], {
2084
2090
  className: "header_back",
@@ -2086,21 +2092,21 @@ var Circle = /*#__PURE__*/function (_Component) {
2086
2092
  onClick: function onClick() {
2087
2093
  window.history.back();
2088
2094
  }
2089
- }), /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
2095
+ }), /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
2090
2096
  type: "formTitleLarge",
2091
2097
  className: "header_title"
2092
2098
  }, this.getTitle())), /*#__PURE__*/React__default['default'].createElement("div", {
2093
2099
  className: "flex flex-1 flex-reverse overflow-hidden"
2094
2100
  }, this.renderSideBar(), /*#__PURE__*/React__default['default'].createElement("div", {
2095
2101
  className: "flex-1 flex flex-column overflow-hidden"
2096
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Header, {
2102
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Header, {
2097
2103
  onlyContainer: true
2098
2104
  }, /*#__PURE__*/React__default['default'].createElement("div", {
2099
2105
  className: "flex flex-center flex-1 paddingHorizontal-16"
2100
- }, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
2106
+ }, /*#__PURE__*/React__default['default'].createElement(Components$2.Text, {
2101
2107
  type: "h5",
2102
2108
  className: "marginRight-20"
2103
- }, "Filter by"), /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(Components$1.GenericInput, {
2109
+ }, "Filter by"), /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(Components$2.GenericInput, {
2104
2110
  id: "messageDate",
2105
2111
  label: "Date",
2106
2112
  alwaysShowLabel: true,
@@ -2111,13 +2117,13 @@ var Circle = /*#__PURE__*/function (_Component) {
2111
2117
  showMessageDate: !_this8.state.showMessageDate
2112
2118
  });
2113
2119
  },
2114
- rightContent: !___default['default'].isEmpty(this.state.messageDate) && /*#__PURE__*/React__default['default'].createElement(Components$1.SVGIcon, {
2120
+ rightContent: !___default['default'].isEmpty(this.state.messageDate) && /*#__PURE__*/React__default['default'].createElement(Components$2.SVGIcon, {
2115
2121
  colour: Colours$1.COLOUR_DUSK_LIGHT,
2116
2122
  icon: "close",
2117
2123
  className: "timepicker_clear",
2118
2124
  onClick: this.onClearDate
2119
2125
  })
2120
- }), this.state.showMessageDate && /*#__PURE__*/React__default['default'].createElement(Components$1.DatePicker, {
2126
+ }), this.state.showMessageDate && /*#__PURE__*/React__default['default'].createElement(Components$2.DatePicker, {
2121
2127
  hideTop: true,
2122
2128
  selectedDate: this.state.messageDate,
2123
2129
  selectDate: this.handleMessageDateChange
@@ -2139,7 +2145,7 @@ var Circle = /*#__PURE__*/function (_Component) {
2139
2145
  return Circle;
2140
2146
  }(React.Component);
2141
2147
 
2142
- var mapStateToProps = function mapStateToProps(state) {
2148
+ var mapStateToProps$1 = function mapStateToProps(state) {
2143
2149
  var circles = state[values.reducerKey].circles;
2144
2150
  var auth = state.auth;
2145
2151
  return {
@@ -2149,11 +2155,259 @@ var mapStateToProps = function mapStateToProps(state) {
2149
2155
  };
2150
2156
  };
2151
2157
 
2152
- var Circle$1 = reactRedux.connect(mapStateToProps, {
2158
+ var Circle$1 = reactRedux.connect(mapStateToProps$1, {
2153
2159
  circlesLoaded: circlesLoaded,
2154
2160
  setNavData: Actions.setNavData
2155
2161
  })(Circle);
2156
2162
 
2163
+ var Analytics$1 = PlussCore__namespace.Analytics,
2164
+ Session = PlussCore__namespace.Session,
2165
+ Components$1 = PlussCore__namespace.Components;
2166
+
2167
+ var getInitialState = function getInitialState() {
2168
+ return {
2169
+ isLoading: true,
2170
+ messages: 0,
2171
+ prevMessages: 0,
2172
+ staffMessages: 0,
2173
+ prevStaffMessages: 0,
2174
+ residentMessages: 0,
2175
+ prevResidentMessages: 0,
2176
+ groupMessages: 0,
2177
+ prevGroupMessages: 0,
2178
+ privateMessages: 0,
2179
+ prevPrivateMessages: 0,
2180
+ activeGroups: 0,
2181
+ prevActiveGroups: 0
2182
+ };
2183
+ }; // AnalyticsHub Component
2184
+
2185
+
2186
+ var AnalyticsHub = function AnalyticsHub(_ref) {
2187
+ var startTime = _ref.startTime,
2188
+ endTime = _ref.endTime,
2189
+ auth = _ref.auth,
2190
+ prevText = _ref.prevText,
2191
+ dayCount = _ref.dayCount,
2192
+ strings = _ref.strings;
2193
+
2194
+ var _useState = React.useState(getInitialState()),
2195
+ _useState2 = _slicedToArray__default['default'](_useState, 2),
2196
+ analyticsData = _useState2[0],
2197
+ setAnalyticsData = _useState2[1];
2198
+
2199
+ var _useState3 = React.useState(false),
2200
+ _useState4 = _slicedToArray__default['default'](_useState3, 2),
2201
+ isExportOpen = _useState4[0],
2202
+ setIsExportOpen = _useState4[1];
2203
+
2204
+ var hasAccess = Session.validateAccess(auth.site, values.permissionNewsletter, auth);
2205
+
2206
+ if (!hasAccess) {
2207
+ return null;
2208
+ }
2209
+
2210
+ var featureTitle = function (key) {
2211
+ if (!strings || !strings.sideNav || !strings.sideNav[key]) {
2212
+ return values.textFeatureTitle;
2213
+ }
2214
+
2215
+ return strings.sideNav[key];
2216
+ }();
2217
+
2218
+ var exportColumns = [{
2219
+ label: 'Select All',
2220
+ key: ''
2221
+ }, {
2222
+ label: 'Start Date',
2223
+ key: 'startDate'
2224
+ }, {
2225
+ label: 'End Date',
2226
+ key: 'endDate'
2227
+ }, {
2228
+ label: 'Messages',
2229
+ key: 'messages'
2230
+ }, {
2231
+ label: 'Messages by Staff',
2232
+ key: 'staffMessages'
2233
+ }, {
2234
+ label: 'Messages by Primary Users',
2235
+ key: 'residentMessages'
2236
+ }, {
2237
+ label: 'Group Messages',
2238
+ key: 'groupMessages'
2239
+ }, {
2240
+ label: 'Private Messages',
2241
+ key: 'privateMessages'
2242
+ }, {
2243
+ label: 'Groups with Messages',
2244
+ key: 'activeGroups'
2245
+ }];
2246
+ React.useEffect(function () {
2247
+ getData();
2248
+ }, [startTime, endTime]);
2249
+
2250
+ var getData = /*#__PURE__*/function () {
2251
+ var _ref2 = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee() {
2252
+ var timeDifference, _yield$Promise$all, _yield$Promise$all2, currentStatsResponse, prevStatsResponse, data;
2253
+
2254
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
2255
+ while (1) {
2256
+ switch (_context.prev = _context.next) {
2257
+ case 0:
2258
+ setAnalyticsData(getInitialState()); // Load analytics data here using startTime and endTime
2259
+
2260
+ timeDifference = endTime - startTime;
2261
+ _context.next = 4;
2262
+ return Promise.all([analyticsActions.getAggregateEntityStats(auth.site, values.entityKey, startTime, endTime, true), analyticsActions.getAggregateEntityStats(auth.site, values.entityKey, startTime - timeDifference, startTime, true)]);
2263
+
2264
+ case 4:
2265
+ _yield$Promise$all = _context.sent;
2266
+ _yield$Promise$all2 = _slicedToArray__default['default'](_yield$Promise$all, 2);
2267
+ currentStatsResponse = _yield$Promise$all2[0];
2268
+ prevStatsResponse = _yield$Promise$all2[1];
2269
+ data = {
2270
+ messages: Analytics$1.countActivities(currentStatsResponse.data, 'Message', 'total'),
2271
+ prevMessages: Analytics$1.countActivities(prevStatsResponse.data, 'Message', 'total'),
2272
+ staffMessages: Analytics$1.countActivities(currentStatsResponse.data, 'StaffMessage', 'total'),
2273
+ prevStaffMessages: Analytics$1.countActivities(prevStatsResponse.data, 'StaffMessage', 'total'),
2274
+ residentMessages: Analytics$1.countActivities(currentStatsResponse.data, 'ResidentMessage', 'total'),
2275
+ prevResidentMessages: Analytics$1.countActivities(prevStatsResponse.data, 'ResidentMessage', 'total'),
2276
+ groupMessages: Analytics$1.countActivities(currentStatsResponse.data, 'GroupMessage', 'total'),
2277
+ prevGroupMessages: Analytics$1.countActivities(prevStatsResponse.data, 'GroupMessage', 'total'),
2278
+ privateMessages: Analytics$1.countActivities(currentStatsResponse.data, 'PrivateMessage', 'total'),
2279
+ prevPrivateMessages: Analytics$1.countActivities(prevStatsResponse.data, 'PrivateMessage', 'total'),
2280
+ activeGroups: Analytics$1.countActivities(currentStatsResponse.data, 'GroupMessage', 'unique'),
2281
+ prevActiveGroups: Analytics$1.countActivities(prevStatsResponse.data, 'GroupMessage', 'unique'),
2282
+ // uniquePageView: Analytics.countActivities(currentStatsResponse.data, 'UniquePageView', 'uniquearray'),
2283
+ // prevUniquePageView: Analytics.countActivities(prevStatsResponse.data, 'UniquePageView', 'uniquearray'),
2284
+ isLoading: false
2285
+ };
2286
+ setAnalyticsData(data);
2287
+
2288
+ case 10:
2289
+ case "end":
2290
+ return _context.stop();
2291
+ }
2292
+ }
2293
+ }, _callee);
2294
+ }));
2295
+
2296
+ return function getData() {
2297
+ return _ref2.apply(this, arguments);
2298
+ };
2299
+ }();
2300
+
2301
+ var isReadyToOpenCSV = function isReadyToOpenCSV() {
2302
+ return !analyticsData.isLoading;
2303
+ };
2304
+
2305
+ var getExportSource = function getExportSource() {
2306
+ return [{
2307
+ startDate: moment__default['default'](startTime + 1).format('D-MM-YYYY'),
2308
+ endDate: moment__default['default'](endTime).format('D-MM-YYYY'),
2309
+ messages: analyticsData.messages,
2310
+ staffMessages: analyticsData.staffMessages,
2311
+ residentMessages: analyticsData.residentMessages,
2312
+ groupMessages: analyticsData.groupMessages,
2313
+ privateMessages: analyticsData.privateMessages,
2314
+ activeGroups: analyticsData.activeGroups
2315
+ }];
2316
+ };
2317
+
2318
+ var csvPopup = function csvPopup() {
2319
+ if (!isExportOpen) {
2320
+ return null;
2321
+ }
2322
+
2323
+ var source = getExportSource();
2324
+ return /*#__PURE__*/React__default['default'].createElement(Components$1.ExportCsvPopup, {
2325
+ onClose: function onClose() {
2326
+ setIsExportOpen(false);
2327
+ },
2328
+ columns: exportColumns,
2329
+ source: source,
2330
+ filename: "".concat(values.analyticsKey, "analytics_").concat(source[0].startDate, "_").concat(source[0].endDate, ".csv")
2331
+ });
2332
+ };
2333
+
2334
+ return /*#__PURE__*/React__default['default'].createElement("div", {
2335
+ className: "dashboardSection"
2336
+ }, csvPopup(), /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(Components$1.Text, {
2337
+ type: "h4",
2338
+ className: "inlineBlock marginRight-40"
2339
+ }, featureTitle), /*#__PURE__*/React__default['default'].createElement(Components$1.Button, {
2340
+ inline: true,
2341
+ buttonType: "primaryAction",
2342
+ onClick: function onClick() {
2343
+ if (!isReadyToOpenCSV()) return;
2344
+ setIsExportOpen(true);
2345
+ },
2346
+ isActive: isReadyToOpenCSV(),
2347
+ leftIcon: "file-code-o"
2348
+ }, "Export CSV")), /*#__PURE__*/React__default['default'].createElement("div", {
2349
+ className: "analyticsSection dashboardSection_content"
2350
+ }, /*#__PURE__*/React__default['default'].createElement(Components$1.StatBox, {
2351
+ title: "Groups with Messages",
2352
+ icon: freeSolidSvgIcons.faUserGroup,
2353
+ value: analyticsData.activeGroups,
2354
+ previousValue: analyticsData.prevActiveGroups,
2355
+ prevText: prevText,
2356
+ viewGraphLink: "/chart?entity=".concat(values.entityKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=GroupMessage&countType=unique&dayCount=").concat(dayCount),
2357
+ isLoading: analyticsData.isLoading
2358
+ }), /*#__PURE__*/React__default['default'].createElement(Components$1.StatBox, {
2359
+ title: "Messages",
2360
+ icon: freeSolidSvgIcons.faMessage,
2361
+ value: analyticsData.messages,
2362
+ previousValue: analyticsData.prevMessages,
2363
+ prevText: prevText,
2364
+ viewGraphLink: "/chart?entity=".concat(values.entityKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=Message&countType=total&dayCount=").concat(dayCount),
2365
+ isLoading: analyticsData.isLoading
2366
+ }), /*#__PURE__*/React__default['default'].createElement(Components$1.StatBox, {
2367
+ title: "Messages by Staff",
2368
+ icon: freeSolidSvgIcons.faUserTie,
2369
+ value: analyticsData.staffMessages,
2370
+ previousValue: analyticsData.prevStaffMessages,
2371
+ prevText: prevText,
2372
+ viewGraphLink: "/chart?entity=".concat(values.entityKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=StaffMessage&countType=total&dayCount=").concat(dayCount),
2373
+ isLoading: analyticsData.isLoading
2374
+ }), /*#__PURE__*/React__default['default'].createElement(Components$1.StatBox, {
2375
+ title: "Messages by Primary Users",
2376
+ icon: freeSolidSvgIcons.faUsers,
2377
+ value: analyticsData.residentMessages,
2378
+ previousValue: analyticsData.prevResidentMessages,
2379
+ prevText: prevText,
2380
+ viewGraphLink: "/chart?entity=".concat(values.entityKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=ResidentMessage&countType=total&dayCount=").concat(dayCount),
2381
+ isLoading: analyticsData.isLoading
2382
+ }), /*#__PURE__*/React__default['default'].createElement(Components$1.StatBox, {
2383
+ title: "Group Messages",
2384
+ icon: freeSolidSvgIcons.faUsersRectangle,
2385
+ value: analyticsData.groupMessages,
2386
+ previousValue: analyticsData.prevGroupMessages,
2387
+ prevText: prevText,
2388
+ viewGraphLink: "/chart?entity=".concat(values.entityKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=GroupMessage&countType=total&dayCount=").concat(dayCount),
2389
+ isLoading: analyticsData.isLoading
2390
+ }), /*#__PURE__*/React__default['default'].createElement(Components$1.StatBox, {
2391
+ title: "Private Messages",
2392
+ icon: freeSolidSvgIcons.faPeopleArrows,
2393
+ value: analyticsData.privateMessages,
2394
+ previousValue: analyticsData.prevPrivateMessages,
2395
+ prevText: prevText,
2396
+ viewGraphLink: "/chart?entity=".concat(values.entityKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=PrivateMessage&countType=total&dayCount=").concat(dayCount),
2397
+ isLoading: analyticsData.isLoading
2398
+ })));
2399
+ };
2400
+
2401
+ var mapStateToProps = function mapStateToProps(state) {
2402
+ var auth = state.auth;
2403
+ return {
2404
+ auth: auth,
2405
+ strings: state.strings && state.strings.config || {}
2406
+ };
2407
+ };
2408
+
2409
+ var toExport = reactRedux.connect(mapStateToProps, {})(AnalyticsHub);
2410
+
2157
2411
  function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
2158
2412
 
2159
2413
  function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$2(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
@@ -2458,7 +2712,9 @@ var FeaturePickerContent = (function () {
2458
2712
  var _Screens;
2459
2713
  var Reducers = _defineProperty__default['default']({}, values.reducerKey, CircleReducer);
2460
2714
  var Screens = (_Screens = {}, _defineProperty__default['default'](_Screens, values.componentCircles, Circles$1), _defineProperty__default['default'](_Screens, values.componentAddCircle, AddCircle$1), _defineProperty__default['default'](_Screens, values.componentCircle, Circle$1), _Screens);
2715
+ var Analytics = [toExport];
2461
2716
 
2717
+ exports.Analytics = Analytics;
2462
2718
  exports.Config = FeatureConfig;
2463
2719
  exports.FeaturePickerContent = FeaturePickerContent;
2464
2720
  exports.PreviewFull = PreviewFull;