universe@184: /* universe@184: * Copyright 2021 Mike Becker. All rights reserved. universe@184: * universe@184: * Redistribution and use in source and binary forms, with or without universe@184: * modification, are permitted provided that the following conditions are met: universe@184: * universe@184: * 1. Redistributions of source code must retain the above copyright universe@184: * notice, this list of conditions and the following disclaimer. universe@184: * universe@184: * 2. Redistributions in binary form must reproduce the above copyright universe@184: * notice, this list of conditions and the following disclaimer in the universe@184: * documentation and/or other materials provided with the distribution. universe@184: * universe@184: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" universe@184: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE universe@184: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE universe@184: * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE universe@184: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL universe@184: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR universe@184: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER universe@184: * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, universe@184: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE universe@184: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. universe@184: */ universe@184: universe@184: package de.uapcore.lightpit.viewmodel universe@184: universe@184: import de.uapcore.lightpit.entities.* universe@184: universe@184: class ProjectInfo( universe@184: val project: Project, universe@184: /** universe@184: * List of versions, sorted by status descending. universe@184: */ universe@184: var versions: List, universe@184: var components: List, universe@184: var issueSummary: IssueSummary universe@184: ) { universe@201: val latestVersion = versions.firstOrNull { it.status.isReleased } universe@184: val nextVersion = versions.findLast { !it.status.isReleased } universe@184: } universe@184: universe@184: class ProjectsView( universe@184: val projects: List universe@184: ) : View() universe@184: universe@184: class ProjectDetails( universe@184: val projectInfo: ProjectInfo, universe@184: val issues: List, universe@184: val version: Version? = null, universe@184: val component: Component? = null universe@184: ) : View() { universe@184: val issueSummary = IssueSummary() universe@184: val versionInfo: VersionInfo? universe@184: universe@184: init { universe@184: issues.forEach(issueSummary::add) universe@184: versionInfo = version?.let { VersionInfo(it, issues) } universe@184: } universe@184: } universe@184: universe@184: class ProjectEditView( universe@184: val project: Project, universe@184: val users: List universe@184: ) : EditView()