/** * Creates an observable build job. */ function Job(data) { this.number = ko.observable(data.number); this.commit = ko.observable(data.commit); this.started_at = ko.observable(data.started_at); this.finished_at = ko.observable(data.finished_at); this.exit_code = ko.observable(data.exit_code); this.status = ko.observable(data.status); this.environment = ko.observable(data.environment); } /** * Creates an observable build. */ function Build(data) { this.number = ko.observable(data.number); this.commit = ko.observable(data.commit); this.branch = ko.observable(data.branch); this.author = ko.observable(data.author); this.message = ko.observable(data.message); this.status = ko.observable(data.status); this.event = ko.observable(data.event); this.started_at = ko.observable(data.started_at); this.finished_at = ko.observable(data.finished_at); } /** * Creates an observable repository. */ function Repo(data) { this.full_name = ko.observable(data.full_name); this.owner = ko.observable(data.owner); this.name = ko.observable(data.name); this.private = ko.observable(data.private); this.trusted = ko.observable(data.trusted); this.timeout = ko.observable(data.timeout); this.avatar_url = ko.observable(data.avatar_url); this.clone_url = ko.observable(data.clone_url); this.link_url = ko.observable(data.link_url); this.starred = ko.observable(data.starred || false); this.events = ko.observable(data.events); this.hook = ko.observable(new Hook(data)); } /** * Compares two repository objects by name. Used to sort * a list of repositories. */ function RepoCompare(a, b) { return a.full_name().toLowerCase() > b.full_name().toLowerCase() ? 1 : -1; } /** * Creates an observable object that stores a list of hook event * types (push, pull request, etc) and true or false if enabled. */ function Hook(repo) { var data = { "pull_request" : repo.events.indexOf("pull_request") !== -1, "push" : repo.events.indexOf("push") !== -1, "tag" : repo.events.indexOf("tag") !== -1, "deploy" : repo.events.indexOf("deploy") !== -1 }; this.pull_request = ko.observable(data.pull_request); this.push = ko.observable(data.push); this.tag = ko.observable(data.tag); this.deploy = ko.observable(data.deploy); } /** * Creates an observable user. */ function User(data) { this.login = ko.observable(data.login); this.email = ko.observable(data.email); this.avatar_url = ko.observable(data.avatar_url); this.active = ko.observable(data.active); this.admin = ko.observable(data.admin); } /** * Compares two user objects by login. Used to sort * a list of users. */ function UserCompare(a, b) { return a.login().toLowerCase() > b.login().toLowerCase() ? 1 : -1; }