Browse Source

Merge pull request #31 from mario-orlicky/show-cards-count

New option to set up minimum limit to show cards count for each list …
Lauri Ojansivu 8 years ago
parent
commit
e41eeae09f

+ 4 - 0
client/components/lists/listHeader.jade

@@ -6,6 +6,10 @@ template(name="listHeader")
       h2.list-header-name(
         class="{{#if currentUser.isBoardMember}}js-open-inlined-form is-editable{{/if}}")
         = title
+        if showCardsCountForList cards.count
+          = cards.count
+          span.lowercase
+            |  {{_ 'cards'}}
       if currentUser.isBoardMember
         if isWatching
           i.list-header-watch-icon.fa.fa-eye

+ 8 - 0
client/components/lists/listHeader.js

@@ -13,6 +13,14 @@ BlazeComponent.extendComponent({
     return list.findWatcher(Meteor.userId());
   },
 
+  limitToShowCardsCount() {
+    return Meteor.user().getLimitToShowCardsCount();
+  },
+
+  showCardsCountForList(count) {
+    return count > this.limitToShowCardsCount();
+  },
+
   events() {
     return [{
       'click .js-open-list-menu': Popup.open('listAction'),

+ 5 - 0
client/components/main/layouts.styl

@@ -374,3 +374,8 @@ a
   .wrapper
     height: 100%
     margin: 0px
+
+.inline-input
+  height: 37px
+  margin: 8px 10px 0 0
+  width: 50px

+ 5 - 0
client/components/users/userHeader.jade

@@ -72,3 +72,8 @@ template(name="changeSettingsPopup")
         | {{_ 'hide-system-messages'}}
         if hiddenSystemMessages
           i.fa.fa-check
+    li
+      label.bold
+        | {{_ 'show-cards-minimum-count'}}
+      input#show-cards-count-at.inline-input.left(type="number" value="#{showCardsCountAt}" min="1" max="99" onkeydown="return false")
+      input.js-apply-show-cards-at.left(type="submit" value="{{_ 'apply'}}")

+ 11 - 0
client/components/users/userHeader.js

@@ -95,10 +95,21 @@ Template.changeSettingsPopup.helpers({
   hiddenSystemMessages() {
     return Meteor.user().hasHiddenSystemMessages();
   },
+  showCardsCountAt() {
+    return Meteor.user().getLimitToShowCardsCount();
+  },
 });
 
 Template.changeSettingsPopup.events({
   'click .js-toggle-system-messages'() {
     Meteor.call('toggleSystemMessages');
   },
+  'click .js-apply-show-cards-at'(evt, tpl) {
+    evt.preventDefault();
+    const minLimit = parseInt(tpl.$('#show-cards-count-at').val(), 10);
+    if (!isNaN(minLimit)) {
+      Meteor.call('changeLimitToShowCardsCount', minLimit);
+      Popup.back();
+    }
+  },
 });

+ 2 - 0
i18n/en.i18n.json

@@ -51,6 +51,7 @@
     "all-boards": "All boards",
     "and-n-other-card": "And __count__ other card",
     "and-n-other-card_plural": "And __count__ other cards",
+    "apply": "Apply",
     "app-is-offline": "The application is currently offline, refreshing the page will cause data loss.",
     "archive": "Archive",
     "archive-all": "Archive All",
@@ -286,6 +287,7 @@
     "shortcut-show-shortcuts": "Bring up this shortcuts list",
     "shortcut-toggle-filterbar": "Toggle Filter Sidebar",
     "shortcut-toggle-sidebar": "Toggle Board Sidebar",
+    "show-cards-minimum-count": "Show cards count if list contains more than",
     "signupPopup-title": "Create an Account",
     "star-board-title": "Click to star this board. It will show up at top of your boards list.",
     "starred-boards": "Starred Boards",

+ 17 - 0
models/users.js

@@ -79,6 +79,10 @@ Users.attachSchema(new SimpleSchema({
     type: [String],
     optional: true,
   },
+  'profile.showCardsCountAt': {
+    type: Number,
+    optional: true,
+  },
   'profile.starredBoards': {
     type: [String],
     optional: true,
@@ -180,6 +184,11 @@ Users.helpers({
     }
   },
 
+  getLimitToShowCardsCount() {
+    const profile = this.profile || {};
+    return profile.showCardsCountAt;
+  },
+
   getName() {
     const profile = this.profile || {};
     return profile.fullname || this.username;
@@ -283,6 +292,10 @@ Users.mutations({
   setAvatarUrl(avatarUrl) {
     return { $set: { 'profile.avatarUrl': avatarUrl }};
   },
+
+  setShowCardsCountAt(limit) {
+    return { $set: { 'profile.showCardsCountAt': limit } };
+  },
 });
 
 Meteor.methods({
@@ -299,6 +312,10 @@ Meteor.methods({
     const user = Meteor.user();
     user.toggleSystem(user.hasHiddenSystemMessages());
   },
+  changeLimitToShowCardsCount(limit) {
+    check(limit, Number);
+    Meteor.user().setShowCardsCountAt(limit);
+  },
 });
 
 if (Meteor.isServer) {