constructor()

in public/src/js/widgets/columns/story-package.js [11:98]


    constructor(params, element) {
        super(params, element);

        const packageId = params.column.config();
        this.front = ko.observable(packageId);
        this.previousFront = packageId;
        this.collection = ko.observable();
        this.mode = ko.observable('live');
        this.maxArticlesInHistory = 5;
        this.controlsVisible = ko.observable(false);

        this.subscribeOn(this.front, this.onFrontChange);

        this.setFront = id => this.front(id);

        this.isControlsVisible = ko.observable(true);

        this.uiOpenArticle = ko.observable();

        this.listenOn(mediator, 'ui:open', (element, article, front) => {
            if (front !== this) {
                return;
            }
            this.uiOpenArticle(article);
        });

        this.listenOn(mediator, 'delete:package', function(storyPackageId) {
            var existingPackages = this.baseModel.latestPackages();
            if (this.front() === storyPackageId) {
                this.front(null);
                this.collection(null);
            }
            var index = _.findIndex(existingPackages, existingPackage => existingPackage.id === storyPackageId);
            if (index !== -1) {
                existingPackages.splice(index, 1);
                this.baseModel.latestPackages(existingPackages);
            }
        });

        this.listenOn(mediator, 'update:package', function(storyPackage) {
            var existingPackages = this.baseModel.latestPackages();
            const index = _.findIndex(existingPackages, existingPackage => existingPackage.id === storyPackage.id);
            if (index !== -1) {
                existingPackages[index] = storyPackage;
            } else {
                existingPackages.push(storyPackage);
            }
            this.baseModel.latestPackages(existingPackages);
        });

        this.listenOn(mediator, 'find:package', function(storyPackage) {

            var existingPackages = this.baseModel.latestPackages();

            if (_.every(existingPackages, existingPackage => {
                return existingPackage.id !== storyPackage.id;
            })) {
                var packageDate = new Date(storyPackage.meta.lastModify());
                var packageIndex = _.findIndex(existingPackages, existingPackage => new Date(existingPackage.lastModify) < packageDate);

                var newPackage = {
                    id: storyPackage.id,
                    name: storyPackage.meta.name()
                };

                if (packageIndex > -1) {
                    existingPackages.splice(packageIndex, 0, newPackage);
                } else {
                    existingPackages.push(newPackage);
                }
            }
            this.baseModel.latestPackages(existingPackages);
            this.onFrontChange(storyPackage.id);
        });

        this.subscribeOn(this.column.config, newConfig => {
            if (newConfig !== this.front()) {
                this.front(newConfig);
            }
        });

        this.setIntervals = [];
        this.setTimeouts = [];
        this.refreshCollections(CONST.collectionsPollMs || 60000);
        this.refreshRelativeTimes(CONST.pubTimeRefreshMs || 60000);

        this.load(packageId);
    }