summaryrefslogtreecommitdiffstats
path: root/client/lib
diff options
context:
space:
mode:
Diffstat (limited to 'client/lib')
-rw-r--r--client/lib/escapeActions.js2
-rw-r--r--client/lib/filter.js25
-rw-r--r--client/lib/i18n.js29
-rw-r--r--client/lib/inlinedform.js4
-rw-r--r--client/lib/popup.js2
5 files changed, 42 insertions, 20 deletions
diff --git a/client/lib/escapeActions.js b/client/lib/escapeActions.js
index 49b80422..dc6b05b7 100644
--- a/client/lib/escapeActions.js
+++ b/client/lib/escapeActions.js
@@ -44,7 +44,7 @@ EscapeActions = {
executeLowest() {
return this._execute({
- multipleAction: false,
+ multipleActions: false,
});
},
diff --git a/client/lib/filter.js b/client/lib/filter.js
index 74305284..8129776b 100644
--- a/client/lib/filter.js
+++ b/client/lib/filter.js
@@ -63,6 +63,17 @@ class SetFilter {
this._dep.depend();
return { $in: this._selectedElements };
}
+
+ _getEmptySelector() {
+ this._dep.depend();
+ let includeEmpty = false;
+ this._selectedElements.forEach((el) => {
+ if (el === undefined) {
+ includeEmpty = true;
+ }
+ });
+ return includeEmpty ? { $eq: [] } : null;
+ }
}
// The global Filter object.
@@ -95,16 +106,26 @@ Filter = {
return {};
const filterSelector = {};
+ const emptySelector = {};
+ let includeEmptySelectors = false;
this._fields.forEach((fieldName) => {
const filter = this[fieldName];
- if (filter._isActive())
+ if (filter._isActive()) {
filterSelector[fieldName] = filter._getMongoSelector();
+ emptySelector[fieldName] = filter._getEmptySelector();
+ if (emptySelector[fieldName] !== null) {
+ includeEmptySelectors = true;
+ }
+ }
});
const exceptionsSelector = {_id: {$in: this._exceptions}};
this._exceptionsDep.depend();
- return {$or: [filterSelector, exceptionsSelector]};
+ if (includeEmptySelectors)
+ return {$or: [filterSelector, exceptionsSelector, emptySelector]};
+ else
+ return {$or: [filterSelector, exceptionsSelector]};
},
mongoSelector(additionalSelector) {
diff --git a/client/lib/i18n.js b/client/lib/i18n.js
index a03fb398..34a789e1 100644
--- a/client/lib/i18n.js
+++ b/client/lib/i18n.js
@@ -2,20 +2,19 @@
// the language reactively. If the user is not connected we use the language
// information provided by the browser, and default to english.
-Tracker.autorun(() => {
- const currentUser = Meteor.user();
- let language;
- if (currentUser) {
- language = currentUser.profile && currentUser.profile.language;
- } else {
- language = navigator.language || navigator.userLanguage;
- }
+Meteor.startup(() => {
+ Tracker.autorun(() => {
+ const currentUser = Meteor.user();
+ let language;
+ if (currentUser && currentUser.profile && currentUser.profile.language) {
+ language = currentUser.profile.language;
+ } else {
+ language = navigator.language || navigator.userLanguage;
+ }
- if (language) {
- TAPi18n.setLanguage(language);
-
- // XXX
- const shortLanguage = language.split('-')[0];
- T9n.setLanguage(shortLanguage);
- }
+ if (language) {
+ TAPi18n.setLanguage(language);
+ T9n.setLanguage(language);
+ }
+ });
});
diff --git a/client/lib/inlinedform.js b/client/lib/inlinedform.js
index 2732a2e3..56768a13 100644
--- a/client/lib/inlinedform.js
+++ b/client/lib/inlinedform.js
@@ -28,7 +28,9 @@ InlinedForm = BlazeComponent.extendComponent({
currentlyOpenedForm.set(null);
},
- open() {
+ open(evt) {
+ evt && evt.preventDefault();
+
// Close currently opened form, if any
EscapeActions.executeUpTo('inlinedForm');
this.isOpen.set(true);
diff --git a/client/lib/popup.js b/client/lib/popup.js
index 3166ca30..3658d883 100644
--- a/client/lib/popup.js
+++ b/client/lib/popup.js
@@ -75,7 +75,7 @@ window.Popup = new class {
// If there are no popup currently opened we use the Blaze API to render
// one into the DOM. We use a reactive function as the data parameter that
- // return the the complete along with its top element and depends on our
+ // return the complete along with its top element and depends on our
// internal dependency that is being invalidated every time the top
// element of the stack has changed and we want to update the popup.
//