controller: function()

in public/components/content-list-drawer/content-list-drawer.js [44:136]


        controller: function ($scope, $element) {

            $scope.legalValues = legalValues;
            $scope.pictureDeskValues = pictureDeskValues;

            var $parent = $element.parent();
            /**
             * Hide the drawer from view.
             * @returns {Promise}
             */
            this.hide = () => new Promise((resolve) => {
                if (this.isHidden()) {
                    return resolve();
                }

                $element.addClass(hiddenClass);

                $scope.contentList.selectedItem = null;
                $scope.assigneeImage = ' ';
                $parent.append($element);
                resolve();
            });


            /**
             * Shows the drawer.
             * @returns {Promise}
             */
            this.show = () => new Promise((resolve) => {
                if (!this.isHidden()) {
                    resolve();
                }

                $element.removeClass(hiddenClass);

                resolve();
            });


            /**
             * Shows a new contentItem moving the drawer to the row beneath its element.
             */
            this.showContent = (contentItem, $contentListItemElement, capiData) => {

                var self = this;

                return self.hide().then(() => {

                    $scope.$apply(() => {

                        $contentListItemElement.after($element);
                        delete $scope.bookSectionQuery;
                        delete $scope.plannedBookId;
                        delete $scope.plannedBookSectionId;
                        $scope.showBookTagPicker = false;
                        delete $scope.editedLongPlannedPrintLocationDescription;
                        delete $scope.candidateBookSections;

                        $scope.contentItem = contentItem;
                        $scope.plannedPublicationId
                        $scope.contentList.selectedItem = contentItem;
                        $scope.capiData = capiData;

                        $scope.currentDatePickerValue = $scope.contentItem.item.due ? $scope.contentItem.item.due : undefined;
                        $scope.currentPublicationDatePickerValue = $scope.contentItem.plannedNewspaperPublicationDate ? $scope.contentItem.plannedNewspaperPublicationDate : undefined;
                    });

                    return self.show();
                });
            };

            this.isHidden = () => $element.hasClass(hiddenClass);


            this.toggle = () => this.isHidden() ? this.show() : this.hide();


            /**
             * Toggles drawer display and can display a different contentItem
             * if one is already being displayed.
             */
            this.toggleContent = (contentItem, $contentListItemElement, capiData) => {

                var selectedItem = $scope.contentList.selectedItem;

                if (selectedItem && selectedItem.id !== contentItem.id) {
                    return this.hide().then(() => this.showContent(contentItem, $contentListItemElement, capiData));
                }

                return this.isHidden() ? this.showContent(contentItem, $contentListItemElement, capiData) : this.hide();
            };

        },