diff options
Diffstat (limited to 'client')
-rw-r--r-- | client/components/boards/boardBody.js | 2 | ||||
-rw-r--r-- | client/components/cards/minicard.jade | 3 | ||||
-rw-r--r-- | client/components/sidebar/sidebarCustomFields.jade | 4 | ||||
-rw-r--r-- | client/lib/filter.js | 206 |
4 files changed, 117 insertions, 98 deletions
diff --git a/client/components/boards/boardBody.js b/client/components/boards/boardBody.js index 456bf9b3..dfe7b8d2 100644 --- a/client/components/boards/boardBody.js +++ b/client/components/boards/boardBody.js @@ -88,11 +88,13 @@ BlazeComponent.extendComponent({ isViewSwimlanes() { const currentUser = Meteor.user(); + if (!currentUser) return false; return (currentUser.profile.boardView === 'board-view-swimlanes'); }, isViewLists() { const currentUser = Meteor.user(); + if (!currentUser) return true; return (currentUser.profile.boardView === 'board-view-lists'); }, diff --git a/client/components/cards/minicard.jade b/client/components/cards/minicard.jade index b44021a6..c912ea70 100644 --- a/client/components/cards/minicard.jade +++ b/client/components/cards/minicard.jade @@ -37,7 +37,8 @@ template(name="minicard") .minicard-custom-field-item = definition.name .minicard-custom-field-item - = value + +viewer + = trueValue if members .minicard-members.js-minicard-members diff --git a/client/components/sidebar/sidebarCustomFields.jade b/client/components/sidebar/sidebarCustomFields.jade index def083e9..fd31e5ac 100644 --- a/client/components/sidebar/sidebarCustomFields.jade +++ b/client/components/sidebar/sidebarCustomFields.jade @@ -37,7 +37,7 @@ template(name="createCustomFieldPopup") each dropdownItems.get input.js-dropdown-item(type="text" value=name placeholder="") input.js-dropdown-item.last(type="text" value="" placeholder="{{_ 'custom-field-dropdown-options-placeholder'}}") - a.flex.js-field-show-on-card + a.flex.js-field-show-on-card(class="{{#if showOnCard}}is-checked{{/if}}") .materialCheckBox(class="{{#if showOnCard}}is-checked{{/if}}") span {{_ 'show-field-on-card'}} @@ -49,4 +49,4 @@ template(name="createCustomFieldPopup") template(name="deleteCustomFieldPopup") p {{_ "custom-field-delete-pop"}} - button.js-confirm.negate.full(type="submit") {{_ 'delete'}}
\ No newline at end of file + button.js-confirm.negate.full(type="submit") {{_ 'delete'}} diff --git a/client/lib/filter.js b/client/lib/filter.js index fa139cfe..ea1811de 100644 --- a/client/lib/filter.js +++ b/client/lib/filter.js @@ -145,6 +145,22 @@ class AdvancedFilter { return found._id; } + _fieldValueToId(field, value) + { + const found = CustomFields.findOne({ 'name': field }); + if (found.settings.dropdownItems && found.settings.dropdownItems.length > 0) + { + for (let i = 0; i < found.settings.dropdownItems.length; i++) + { + if (found.settings.dropdownItems[i].name === value) + { + return found.settings.dropdownItems[i]._id; + } + } + } + return value; + } + _arrayToSelector(commands) { try { //let changed = false; @@ -163,27 +179,27 @@ class AdvancedFilter { if (commands[i].cmd) { switch (commands[i].cmd) { case '(': - { - level++; - if (start === -1) start = i; - continue; - } + { + level++; + if (start === -1) start = i; + continue; + } case ')': - { - level--; - commands.splice(i, 1); - i--; - continue; - } - default: - { - if (level > 0) { - subcommands.push(commands[i]); + { + level--; commands.splice(i, 1); i--; continue; } - } + default: + { + if (level > 0) { + subcommands.push(commands[i]); + commands.splice(i, 1); + i--; + continue; + } + } } } } @@ -205,86 +221,86 @@ class AdvancedFilter { case '=': case '==': case '===': - { - const field = commands[i - 1].cmd; - const str = commands[i + 1].cmd; - commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': str }; - commands.splice(i - 1, 1); - commands.splice(i, 1); + { + const field = commands[i - 1].cmd; + const str = commands[i + 1].cmd; + commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': {$in: [this._fieldValueToId(field, str), parseInt(str, 10)]} }; + commands.splice(i - 1, 1); + commands.splice(i, 1); //changed = true; - i--; - break; - } + i--; + break; + } case '!=': case '!==': - { - const field = commands[i - 1].cmd; - const str = commands[i + 1].cmd; - commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': { $not: str } }; - commands.splice(i - 1, 1); - commands.splice(i, 1); + { + const field = commands[i - 1].cmd; + const str = commands[i + 1].cmd; + commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': { $not: {$in: [this._fieldValueToId(field, str), parseInt(str, 10)]} } }; + commands.splice(i - 1, 1); + commands.splice(i, 1); //changed = true; - i--; - break; - } + i--; + break; + } case '>': case 'gt': case 'Gt': case 'GT': - { - const field = commands[i - 1].cmd; - const str = commands[i + 1].cmd; - commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': { $gt: str } }; - commands.splice(i - 1, 1); - commands.splice(i, 1); + { + const field = commands[i - 1].cmd; + const str = commands[i + 1].cmd; + commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': { $gt: parseInt(str, 10) } }; + commands.splice(i - 1, 1); + commands.splice(i, 1); //changed = true; - i--; - break; - } + i--; + break; + } case '>=': case '>==': case 'gte': case 'Gte': case 'GTE': - { - const field = commands[i - 1].cmd; - const str = commands[i + 1].cmd; - commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': { $gte: str } }; - commands.splice(i - 1, 1); - commands.splice(i, 1); + { + const field = commands[i - 1].cmd; + const str = commands[i + 1].cmd; + commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': { $gte: parseInt(str, 10) } }; + commands.splice(i - 1, 1); + commands.splice(i, 1); //changed = true; - i--; - break; - } + i--; + break; + } case '<': case 'lt': case 'Lt': case 'LT': - { - const field = commands[i - 1].cmd; - const str = commands[i + 1].cmd; - commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': { $lt: str } }; - commands.splice(i - 1, 1); - commands.splice(i, 1); + { + const field = commands[i - 1].cmd; + const str = commands[i + 1].cmd; + commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': { $lt: parseInt(str, 10) } }; + commands.splice(i - 1, 1); + commands.splice(i, 1); //changed = true; - i--; - break; - } + i--; + break; + } case '<=': case '<==': case 'lte': case 'Lte': case 'LTE': - { - const field = commands[i - 1].cmd; - const str = commands[i + 1].cmd; - commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': { $lte: str } }; - commands.splice(i - 1, 1); - commands.splice(i, 1); + { + const field = commands[i - 1].cmd; + const str = commands[i + 1].cmd; + commands[i] = { 'customFields._id': this._fieldNameToId(field), 'customFields.value': { $lte: parseInt(str, 10) } }; + commands.splice(i - 1, 1); + commands.splice(i, 1); //changed = true; - i--; - break; - } + i--; + break; + } } } @@ -300,44 +316,44 @@ class AdvancedFilter { case 'OR': case '|': case '||': - { - const op1 = commands[i - 1]; - const op2 = commands[i + 1]; - commands[i] = { $or: [op1, op2] }; - commands.splice(i - 1, 1); - commands.splice(i, 1); + { + const op1 = commands[i - 1]; + const op2 = commands[i + 1]; + commands[i] = { $or: [op1, op2] }; + commands.splice(i - 1, 1); + commands.splice(i, 1); //changed = true; - i--; - break; - } + i--; + break; + } case 'and': case 'And': case 'AND': case '&': case '&&': - { - const op1 = commands[i - 1]; - const op2 = commands[i + 1]; - commands[i] = { $and: [op1, op2] }; - commands.splice(i - 1, 1); - commands.splice(i, 1); + { + const op1 = commands[i - 1]; + const op2 = commands[i + 1]; + commands[i] = { $and: [op1, op2] }; + commands.splice(i - 1, 1); + commands.splice(i, 1); //changed = true; - i--; - break; - } + i--; + break; + } case 'not': case 'Not': case 'NOT': case '!': - { - const op1 = commands[i + 1]; - commands[i] = { $not: op1 }; - commands.splice(i + 1, 1); + { + const op1 = commands[i + 1]; + commands[i] = { $not: op1 }; + commands.splice(i + 1, 1); //changed = true; - i--; - break; - } + i--; + break; + } } } |