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);
}