Browse Source

Merge pull request #5652 from NadavTasher/feature/toggle-week-of-year-display

Feature - Add toggle for week-of-year in date displays (ISO 8601)
Lauri Ojansivu 5 months ago
parent
commit
3322d3b33d

+ 7 - 5
client/components/cards/cardCustomFields.jade

@@ -79,13 +79,14 @@ template(name="cardCustomField-currency")
 
 template(name="cardCustomField-date")
     if canModifyCard
-      a.js-edit-date(title="{{showTitle}} {{_ 'predicate-week'}} {{showWeek}}" class="{{classes}}")
+      a.js-edit-date(title="{{showTitle}} {{_ 'predicate-week'}} {{#if showWeekOfYear}}{{showWeek}}{{/if}}" class="{{classes}}")
         if value
           div.card-date
             time(datetime="{{showISODate}}")
               | {{showDate}}
-              b
-                | {{showWeek}}
+              if showWeekOfYear
+                b
+                  | {{showWeek}}
         else
           | {{_ 'edit'}}
     else
@@ -93,8 +94,9 @@ template(name="cardCustomField-date")
         div.card-date
           time(datetime="{{showISODate}}")
             | {{showDate}}
-            b
-              | {{showWeek}}
+            if showWeekOfYear
+                b
+                | {{showWeek}}
 
 template(name="cardCustomField-dropdown")
     if canModifyCard

+ 4 - 0
client/components/cards/cardCustomFields.js

@@ -148,6 +148,10 @@ CardCustomField.register('cardCustomField');
     return this.date.get().week().toString();
   }
 
+  showWeekOfYear() {
+    return ReactiveCache.getCurrentUser().isShowWeekOfYear();
+  }
+
   showDate() {
     // this will start working once mquandalle:moment
     // is updated to at least moment.js 2.10.5

+ 12 - 9
client/components/cards/cardDate.jade

@@ -1,20 +1,23 @@
 template(name="dateBadge")
   if canModifyCard
-    a.js-edit-date.card-date(title="{{showTitle}} {{_ 'predicate-week'}} {{showWeek}}" class="{{classes}}")
+    a.js-edit-date.card-date(title="{{showTitle}} {{_ 'predicate-week'}} {{#if showWeekOfYear}}{{showWeek}}{{/if}}" class="{{classes}}")
       time(datetime="{{showISODate}}")
         | {{showDate}}
-        b
-          | {{showWeek}}
+        if showWeekOfYear
+          b
+            | {{showWeek}}
   else
-    a.card-date(title="{{showTitle}} {{_ 'predicate-week'}} {{showWeek}}" class="{{classes}}")
+    a.card-date(title="{{showTitle}} {{_ 'predicate-week'}} {{#if showWeekOfYear}}{{showWeek}}{{/if}}" class="{{classes}}")
       time(datetime="{{showISODate}}")
         | {{showDate}}
-        b
-          | {{showWeek}}
+        if showWeekOfYear
+          b
+            | {{showWeek}}
 
 template(name="dateCustomField")
-  a(title="{{showTitle}} {{_ 'predicate-week'}} {{showWeek}}" class="{{classes}}")
+  a(title="{{showTitle}} {{_ 'predicate-week'}} {{#if showWeekOfYear}}{{showWeek}}{{/if}}" class="{{classes}}")
     time(datetime="{{showISODate}}")
       | {{showDate}}
-      b
-        | {{showWeek}}
+      if showWeekOfYear
+        b
+          | {{showWeek}}

+ 8 - 0
client/components/cards/cardDate.js

@@ -110,6 +110,10 @@ const CardDate = BlazeComponent.extendComponent({
     return this.date.get().week().toString();
   },
 
+  showWeekOfYear() {
+    return ReactiveCache.getCurrentUser().isShowWeekOfYear();
+  },
+
   showDate() {
     // this will start working once mquandalle:moment
     // is updated to at least moment.js 2.10.5
@@ -283,6 +287,10 @@ class CardCustomFieldDate extends CardDate {
     return this.date.get().week().toString();
   }
 
+  showWeekOfYear() {
+    return ReactiveCache.getCurrentUser().isShowWeekOfYear();
+  }
+
   showDate() {
     // this will start working once mquandalle:moment
     // is updated to at least moment.js 2.10.5

+ 5 - 0
client/components/sidebar/sidebar.jade

@@ -39,6 +39,11 @@ template(name='homeSidebar')
       span {{_ 'enable-vertical-scrollbars'}}
       b  
       .materialCheckBox(class="{{#if isVerticalScrollbars}}is-checked{{/if}}")
+  ul#cards.show-week-of-year-toggle
+    a.flex.js-show-week-of-year-toggle(title="{{_ 'show-week-of-year'}}")
+      span {{_ 'show-week-of-year'}}
+      b  
+      .materialCheckBox(class="{{#if isShowWeekOfYear}}is-checked{{/if}}")
   hr
   unless currentUser.isNoComments
     h3.activity-title

+ 7 - 0
client/components/sidebar/sidebar.js

@@ -142,6 +142,9 @@ BlazeComponent.extendComponent({
         'click .js-vertical-scrollbars-toggle'() {
           ReactiveCache.getCurrentUser().toggleVerticalScrollbars();
         },
+        'click .js-show-week-of-year-toggle'() {
+          ReactiveCache.getCurrentUser().toggleShowWeekOfYear();
+        },
         'click .js-close-sidebar'() {
           Sidebar.toggle()
         },
@@ -167,6 +170,10 @@ BlazeComponent.extendComponent({
     const user = ReactiveCache.getCurrentUser();
     return user && user.isVerticalScrollbars();
   },
+  isShowWeekOfYear() {
+    const user = ReactiveCache.getCurrentUser();
+    return user && user.isShowWeekOfYear();
+  },
   showActivities() {
     let ret = Utils.getCurrentBoard().showActivities ?? false;
     return ret;

+ 1 - 0
imports/i18n/data/en.i18n.json

@@ -1257,6 +1257,7 @@
   "text": "Text",
   "translation-text": "Translation text",
   "show-subtasks-field": "Show subtasks field",
+  "show-week-of-year": "Show week of year (ISO 8601)",
   "convert-to-markdown": "Convert to markdown",
   "import-board-zip": "Add .zip file that has board JSON files, and board name subdirectories with attachments",
   "collapse": "Collapse",

+ 20 - 0
models/users.js

@@ -458,6 +458,13 @@ Users.attachSchema(
       type: Boolean,
       defaultValue: true,
     },
+    'profile.showWeekOfYear': {
+      /**
+       * User-specified state of week-of-year in date displays.
+       */
+      type: Boolean,
+      defaultValue: true,
+    },
     services: {
       /**
        * services field of the user
@@ -978,6 +985,11 @@ Users.helpers({
     return verticalScrollbars;
   },
 
+  isShowWeekOfYear() {
+    const { showWeekOfYear = true } = this.profile || {};
+    return showWeekOfYear;
+  },
+
   remove() {
     User.remove({
       _id: this._id,
@@ -1058,6 +1070,14 @@ Users.mutations({
       },
     };
   },
+  toggleShowWeekOfYear() {
+    const { showWeekOfYear = true } = this.profile || {};
+    return {
+      $set: {
+        'profile.showWeekOfYear': !showWeekOfYear,
+      },
+    };
+  },
 
   addInvite(boardId) {
     return {