class Campaigns { constructor(campaigns) { this.campaigns = campaigns.sort((a,b) => a.id - b.id); } set current_campaign(campaign_id) { this.current = this.campaign(campaign_id); } get campaign_name() { return this.current.id + ' | ' + this.current.name; } get banners() { return this.current.banners || []; } get emails() { return this.current.emails || []; } get texts() { return this.current.texts || []; } get files() { return this.current.files || []; } get numbers() { return this.current.numbers || []; } get links() { let landing_page = {name: "Main Redirector", link: this.current.landing_page}; let links = this.current.links.map(l => { return {"name": l.name, "link": l.url} }); if(this.current.landing_page) links.unshift(landing_page); return links; } campaign(campaign_id) { return this.campaigns.find(campaign => campaign.id == campaign_id); } banner(banner_id) { return this.banners.find(banner => banner.id == banner_id); } email(email_id) { return this.emails.find(email => email.id == email_id); } text(text_id) { return this.texts.find(text => text.id == text_id); } file(file_id) { return this.files.find(file => file.id == file_id); } link(link_id) { return this.links.find(link => link.id == link_id); } }