|
@@ -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}"`,
|
|
|
+ );
|
|
|
+ },
|
|
|
},
|
|
|
];
|
|
|
},
|