|
|
|
@ -47,6 +47,14 @@ BlazeComponent.extendComponent({ |
|
|
|
|
this.resultsCount = 0; |
|
|
|
|
this.totalHits = 0; |
|
|
|
|
this.queryErrors = null; |
|
|
|
|
this.colorMap = null; |
|
|
|
|
// this.colorMap = {};
|
|
|
|
|
// for (const color of Boards.simpleSchema()._schema['labels.$.color']
|
|
|
|
|
// .allowedValues) {
|
|
|
|
|
// this.colorMap[TAPi18n.__(`color-${color}`)] = color;
|
|
|
|
|
// }
|
|
|
|
|
// // eslint-disable-next-line no-console
|
|
|
|
|
// console.log('colorMap:', this.colorMap);
|
|
|
|
|
Meteor.subscribe('setting'); |
|
|
|
|
if (Session.get('globalQuery')) { |
|
|
|
|
this.searchAllBoards(Session.get('globalQuery')); |
|
|
|
@ -103,7 +111,15 @@ BlazeComponent.extendComponent({ |
|
|
|
|
messages.push({ tag: 'list-title-not-found', value: list }); |
|
|
|
|
}); |
|
|
|
|
this.queryErrors.notFound.labels.forEach(label => { |
|
|
|
|
messages.push({ tag: 'label-not-found', value: label }); |
|
|
|
|
const color = TAPi18n.__(`color-${label}`); |
|
|
|
|
if (color) { |
|
|
|
|
messages.push({ |
|
|
|
|
tag: 'label-color-not-found', |
|
|
|
|
value: color, |
|
|
|
|
}); |
|
|
|
|
} else { |
|
|
|
|
messages.push({ tag: 'label-not-found', value: label }); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
this.queryErrors.notFound.users.forEach(user => { |
|
|
|
|
messages.push({ tag: 'user-username-not-found', value: user }); |
|
|
|
@ -126,6 +142,7 @@ BlazeComponent.extendComponent({ |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
searchAllBoards(query) { |
|
|
|
|
query = query.trim(); |
|
|
|
|
this.query.set(query); |
|
|
|
|
|
|
|
|
|
this.resetSearch(); |
|
|
|
@ -134,43 +151,24 @@ BlazeComponent.extendComponent({ |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
this.searching.set(true); |
|
|
|
|
|
|
|
|
|
// eslint-disable-next-line no-console
|
|
|
|
|
// console.log('query:', query);
|
|
|
|
|
|
|
|
|
|
this.searching.set(true); |
|
|
|
|
|
|
|
|
|
if (!this.colorMap) { |
|
|
|
|
this.colorMap = {}; |
|
|
|
|
for (const color of Boards.simpleSchema()._schema['labels.$.color'] |
|
|
|
|
.allowedValues) { |
|
|
|
|
this.colorMap[TAPi18n.__(`color-${color}`)] = color; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const reOperator1 = /^((?<operator>\w+):|(?<abbrev>[#@]))(?<value>\w+)(\s+|$)/; |
|
|
|
|
const reOperator2 = /^((?<operator>\w+):|(?<abbrev>[#@]))(?<quote>["']*)(?<value>.*?)\k<quote>(\s+|$)/; |
|
|
|
|
const reText = /^(?<text>\S+)(\s+|$)/; |
|
|
|
|
const reQuotedText = /^(?<quote>["'])(?<text>\w+)\k<quote>(\s+|$)/; |
|
|
|
|
|
|
|
|
|
const colorMap = {}; |
|
|
|
|
colorMap[TAPi18n.__('color-black')] = 'black'; |
|
|
|
|
colorMap[TAPi18n.__('color-blue')] = 'blue'; |
|
|
|
|
colorMap[TAPi18n.__('color-crimson')] = 'crimson'; |
|
|
|
|
colorMap[TAPi18n.__('color-darkgreen')] = 'darkgreen'; |
|
|
|
|
colorMap[TAPi18n.__('color-gold')] = 'gold'; |
|
|
|
|
colorMap[TAPi18n.__('color-gray')] = 'gray'; |
|
|
|
|
colorMap[TAPi18n.__('color-green')] = 'green'; |
|
|
|
|
colorMap[TAPi18n.__('color-indigo')] = 'indigo'; |
|
|
|
|
colorMap[TAPi18n.__('color-lime')] = 'lime'; |
|
|
|
|
colorMap[TAPi18n.__('color-magenta')] = 'magenta'; |
|
|
|
|
colorMap[TAPi18n.__('color-mistyrose')] = 'mistyrose'; |
|
|
|
|
colorMap[TAPi18n.__('color-navy')] = 'navy'; |
|
|
|
|
colorMap[TAPi18n.__('color-orange')] = 'orange'; |
|
|
|
|
colorMap[TAPi18n.__('color-paleturquoise')] = 'paleturquoise'; |
|
|
|
|
colorMap[TAPi18n.__('color-peachpuff')] = 'peachpuff'; |
|
|
|
|
colorMap[TAPi18n.__('color-pink')] = 'pink'; |
|
|
|
|
colorMap[TAPi18n.__('color-plum')] = 'plum'; |
|
|
|
|
colorMap[TAPi18n.__('color-purple')] = 'purple'; |
|
|
|
|
colorMap[TAPi18n.__('color-red')] = 'red'; |
|
|
|
|
colorMap[TAPi18n.__('color-saddlebrown')] = 'saddlebrown'; |
|
|
|
|
colorMap[TAPi18n.__('color-silver')] = 'silver'; |
|
|
|
|
colorMap[TAPi18n.__('color-sky')] = 'sky'; |
|
|
|
|
colorMap[TAPi18n.__('color-slateblue')] = 'slateblue'; |
|
|
|
|
colorMap[TAPi18n.__('color-white')] = 'white'; |
|
|
|
|
colorMap[TAPi18n.__('color-yellow')] = 'yellow'; |
|
|
|
|
|
|
|
|
|
const operatorMap = {}; |
|
|
|
|
operatorMap[TAPi18n.__('operator-board')] = 'boards'; |
|
|
|
|
operatorMap[TAPi18n.__('operator-board-abbrev')] = 'boards'; |
|
|
|
@ -222,8 +220,8 @@ BlazeComponent.extendComponent({ |
|
|
|
|
if (op in operatorMap) { |
|
|
|
|
let value = m.groups.value; |
|
|
|
|
if (operatorMap[op] === 'labels') { |
|
|
|
|
if (value in colorMap) { |
|
|
|
|
value = colorMap[value]; |
|
|
|
|
if (value in this.colorMap) { |
|
|
|
|
value = this.colorMap[value]; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
params[operatorMap[op]].push(value); |
|
|
|
@ -357,6 +355,14 @@ BlazeComponent.extendComponent({ |
|
|
|
|
return text; |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
labelColors() { |
|
|
|
|
return Boards.simpleSchema()._schema['labels.$.color'].allowedValues.map( |
|
|
|
|
color => { |
|
|
|
|
return { color, name: TAPi18n.__(`color-${color}`) }; |
|
|
|
|
}, |
|
|
|
|
); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
events() { |
|
|
|
|
return [ |
|
|
|
|
{ |
|
|
|
@ -364,6 +370,11 @@ BlazeComponent.extendComponent({ |
|
|
|
|
evt.preventDefault(); |
|
|
|
|
this.searchAllBoards(evt.target.searchQuery.value); |
|
|
|
|
}, |
|
|
|
|
'click .js-palette-color'(evt) { |
|
|
|
|
this.query.set( |
|
|
|
|
`${this.query.get()} label:"${evt.currentTarget.textContent}"`, |
|
|
|
|
); |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
]; |
|
|
|
|
}, |
|
|
|
|