/**
 * Initialise changelog table for releases and prereleases
 * @param {string} selector - The element selector to initialise the app.
 * @param {string} repo - Repository to load from, in the format user/repo.
 */
export default function(selector, repo) {
    new Vue({
        el: selector,
        data: {
            url: `https://api.github.com/repos/${repo}/releases`,
            releases: [],
            prereleases: [],
            error: false
        },
        beforeMount() {
            fetch(this.url)
                .then(res => res.json())
                .then(json => this.$_update(json))
                .catch(err => { this.error = true });
        },
        updated() {
            window.dispatchEvent(new Event('resize'));  // scroll position for progress
        },
        methods: {
            $_update(json) {
                const allReleases = Object.values(json)
                    .filter(release => release.name)
                    .map(release => ({
                        title: (release.name.split(': ').length == 2) ? release.name.split(': ')[1] : release.name,
                        url: release.html_url,
                        date: release.published_at.split('T')[0],
                        tag: release.tag_name,
                        pre: release.prerelease
                    }));
                this.releases = allReleases.filter(release => !release.pre);
                this.prereleases = allReleases.filter(release => release.pre);
            }
        }
    });
}