attachListeners()

in public/lib/filters-service.js [15:167]


            attachListeners() {
                var self = this;
                $rootScope.$on('filtersChanged.prodOffice', function(event, data) {
                    self.update('prodOffice', data);
                    $rootScope.$broadcast('getContent');
                });

                $rootScope.$on('filtersChanged.content-type', function(event, data) {
                    self.update('content-type', data);
                    $rootScope.$broadcast('getContent');
                });

                $rootScope.$on('filtersChanged.article-format', function(event, data) {
                    self.update('article-format', data);
                    $rootScope.$broadcast('getContent');
                });

                $rootScope.$on('filtersChanged.atom-type', function(event, data) {
                    self.update('atom-type', data);
                    $rootScope.$broadcast('getContent');
                });

                $rootScope.$on('filtersChanged.section', function(event, data) {
                    self.update('section', data);
                    $rootScope.$broadcast('getContent');
                });

                $rootScope.$on('filtersChanged.state', function(event, data) {
                    self.update('state', data);
                    $rootScope.$broadcast('getContent');
                });

                $rootScope.$on('filtersChanged.status', function(event, data) {
                    self.update('status', data);
                    $rootScope.$broadcast('getContent');
                });

                $rootScope.$on('filtersChanged.flags', function(event, data) {
                    self.update('flags', data);
                    $rootScope.$broadcast('getContent');
                });

                $rootScope.$on('filtersChanged.deadline', function (event, data) {
                    self.update('deadline', data);
                    $rootScope.$broadcast('getContent');
                });

                $rootScope.$on('filtersChanged.created', function(event, data) {
                    self.update('created', data);
                    $rootScope.$broadcast('getContent');
                });

                $rootScope.$on('filtersChanged.desk', function(event, data) {
                    if (data !== -1) {
                        self.update('desk',  data);
                    } else {
                        self.update('desk',  null);
                    }

                    // Desk ignored so no need to request content
                });

                $rootScope.$on('filtersChanged.touched', function(event, data) {
                    self.update('touched', data);
                    $rootScope.$broadcast('getContent');
                });

                $rootScope.$on('filtersChanged.assigneeEmail', function(event, data) {
                    self.update('assigneeEmail', data);
                    $rootScope.$broadcast('getContent');
                });

                $rootScope.$on('filtersChanged.trashed', function(event, data) {
                    self.update('trashed', data);
                    $rootScope.$broadcast('getContent');
                });

                var keywords = {
                    "type"       : "content-type",
                    "status"     : "status",
                    "state"      : "state",
                    "who"        : "assignee",
                    "assignee"   : "assignee",
                    "assignedto" : "assignee"
                };

                var savedFilters = null;

                function enterSearchMode(data) {
                    savedFilters = _.clone(self.filters);
                    self.clearAll(true, true);
                    $rootScope.$broadcast("search-mode.enter");
                }

                function exitSearchMode(data) {
                    self.clearAll(true, true);
                    if(savedFilters != null) {
                        _.forOwn(savedFilters,
                                 (value, key) => self.update(key, value));
                    }
                    $rootScope.$broadcast("search-mode.exit");
                }

                $rootScope.$on('filtersChanged.freeText', function(event, data) {
                    var newValue = data.newValue;
                    var oldValue = data.oldValue;

                    if(oldValue == null && newValue != null) {
                        enterSearchMode(data);
                    } else if(newValue == null && oldValue != null) {
                        exitSearchMode(data);
                    }

                    if(newValue != null) {
                        var rest =
                            newValue.replace(/\s*([A-Za-z-]+):(\S+)\s*/g, (match, field, value) => {
                                if(_.has(keywords, field)) {
                                    self.update(keywords[field], value, true, true);
                                }
                                return "";
                            });
                        self.update('text', rest, true, true);
                    } else {
                        self.update('text', null, true, true);
                    }
                    $rootScope.$broadcast('getContent');
                });

                $rootScope.$on('filtersChanged.incopy', function(event, data) {
                    self.update('incopy', data);
                    $rootScope.$broadcast('getContent');
                });

                $rootScope.$on('filtersChanged.view', function(event, data) {
                    self.update('view', data);
                    $rootScope.$broadcast('getContent');
                });

                $rootScope.$on('filtersChanged.hasPrintInfo', function(event, data) {
                    self.update('hasPrintInfo', data);
                    $rootScope.$broadcast('getContent');
                });

                $rootScope.$on('filtersChanged.hasMainMedia', function(event, data) {
                    self.update('hasMainMedia', data);
                    $rootScope.$broadcast('getContent');
                });

                $rootScope.$on('filtersChanged.rights', function(event, data) {
                  self.update('rights', data);
                  $rootScope.$broadcast('getContent');
                });
            }