Support for more removal
This commit is contained in:
parent
0bfef36559
commit
d0ddd54710
|
@ -60,6 +60,7 @@ fun EditionView(state: EditionState) = Row(Modifier.padding(0.dp)) {
|
||||||
groups,
|
groups,
|
||||||
idx.groupIdx(),
|
idx.groupIdx(),
|
||||||
{ toggle(it, Panel.Group) },
|
{ toggle(it, Panel.Group) },
|
||||||
|
{ state.delete(it) },
|
||||||
{ state.newGroup(it) }) { group, name ->
|
{ state.newGroup(it) }) { group, name ->
|
||||||
state.setGroupName(group, name)
|
state.setGroupName(group, name)
|
||||||
}
|
}
|
||||||
|
@ -79,7 +80,8 @@ fun EditionView(state: EditionState) = Row(Modifier.padding(0.dp)) {
|
||||||
Box(Modifier.weight(0.5f)) {
|
Box(Modifier.weight(0.5f)) {
|
||||||
StudentsWidget(
|
StudentsWidget(
|
||||||
state.course, state.edition, students, idx.studentIdx(), { toggle(it, Panel.Student) },
|
state.course, state.edition, students, idx.studentIdx(), { toggle(it, Panel.Student) },
|
||||||
available, { state.addToCourse(it) }
|
available, { state.addToCourse(it) },
|
||||||
|
{ state.delete(it) },
|
||||||
) { name, note, contact, addToEdition ->
|
) { name, note, contact, addToEdition ->
|
||||||
state.newStudent(name, contact, note, addToEdition)
|
state.newStudent(name, contact, note, addToEdition)
|
||||||
}
|
}
|
||||||
|
@ -91,6 +93,7 @@ fun EditionView(state: EditionState) = Row(Modifier.padding(0.dp)) {
|
||||||
solo,
|
solo,
|
||||||
idx.soloIdx(),
|
idx.soloIdx(),
|
||||||
{ toggle(it, Panel.Solo) },
|
{ toggle(it, Panel.Solo) },
|
||||||
|
{ state.delete(it) },
|
||||||
{ state.newSoloAssignment(it) }) { assignment, title ->
|
{ state.newSoloAssignment(it) }) { assignment, title ->
|
||||||
state.setSoloAssignmentTitle(assignment, title)
|
state.setSoloAssignmentTitle(assignment, title)
|
||||||
}
|
}
|
||||||
|
@ -160,7 +163,10 @@ fun <T> EditionSideWidget(
|
||||||
}
|
}
|
||||||
deleter?.let { d ->
|
deleter?.let { d ->
|
||||||
deleting?.let { x ->
|
deleting?.let { x ->
|
||||||
Dialog({ deleting = null }, DialogProperties()) {
|
DialogWindow(
|
||||||
|
onCloseRequest = { deleting = null },
|
||||||
|
state = rememberDialogState(size = DpSize(400.dp, 300.dp), position = WindowPosition(Alignment.Center))
|
||||||
|
) {
|
||||||
Surface(Modifier.width(400.dp).height(300.dp), tonalElevation = 5.dp) {
|
Surface(Modifier.width(400.dp).height(300.dp), tonalElevation = 5.dp) {
|
||||||
Box(Modifier.fillMaxSize().padding(10.dp)) {
|
Box(Modifier.fillMaxSize().padding(10.dp)) {
|
||||||
Column(Modifier.align(Alignment.Center)) {
|
Column(Modifier.align(Alignment.Center)) {
|
||||||
|
@ -181,11 +187,12 @@ fun <T> EditionSideWidget(
|
||||||
@Composable
|
@Composable
|
||||||
fun StudentsWidget(
|
fun StudentsWidget(
|
||||||
course: Course, edition: Edition, students: List<Student>, selected: Int?, onSelect: (Int) -> Unit,
|
course: Course, edition: Edition, students: List<Student>, selected: Int?, onSelect: (Int) -> Unit,
|
||||||
availableStudents: List<Student>, onImport: (List<Student>) -> Unit,
|
availableStudents: List<Student>, onImport: (List<Student>) -> Unit, deleter: (Student) -> Unit,
|
||||||
onAdd: (name: String, note: String, contact: String, addToEdition: Boolean) -> Unit
|
onAdd: (name: String, note: String, contact: String, addToEdition: Boolean) -> Unit
|
||||||
) = EditionSideWidget(
|
) = EditionSideWidget(
|
||||||
course, edition, "Student list (${students.size})", "students", "a student", students, selected, onSelect,
|
course, edition, "Student list (${students.size})", "students", "a student", students, selected, onSelect,
|
||||||
{ Text(it.name, Modifier.padding(5.dp)) }
|
{ Text(it.name, Modifier.padding(5.dp)) },
|
||||||
|
deleter = deleter
|
||||||
) { onExit ->
|
) { onExit ->
|
||||||
StudentDialog(course, edition, onExit, availableStudents, onImport, onAdd)
|
StudentDialog(course, edition, onExit, availableStudents, onImport, onAdd)
|
||||||
}
|
}
|
||||||
|
@ -291,11 +298,12 @@ fun StudentDialog(
|
||||||
@Composable
|
@Composable
|
||||||
fun GroupsWidget(
|
fun GroupsWidget(
|
||||||
course: Course, edition: Edition, groups: List<Group>, selected: Int?, onSelect: (Int) -> Unit,
|
course: Course, edition: Edition, groups: List<Group>, selected: Int?, onSelect: (Int) -> Unit,
|
||||||
onAdd: (name: String) -> Unit, onUpdate: (Group, String) -> Unit
|
deleter: (Group) -> Unit, onAdd: (name: String) -> Unit, onUpdate: (Group, String) -> Unit
|
||||||
) = EditionSideWidget(
|
) = EditionSideWidget(
|
||||||
course, edition, "Group list (${groups.size})", "groups", "a group", groups, selected, onSelect,
|
course, edition, "Group list (${groups.size})", "groups", "a group", groups, selected, onSelect,
|
||||||
{ Text(it.name, Modifier.padding(5.dp)) },
|
{ Text(it.name, Modifier.padding(5.dp)) },
|
||||||
{ current, onExit -> AddStringDialog("Group name", groups.map { it.name }, onExit, current.name) { onUpdate(current, it) } }
|
{ current, onExit -> AddStringDialog("Group name", groups.map { it.name }, onExit, current.name) { onUpdate(current, it) } },
|
||||||
|
deleter
|
||||||
) { onExit ->
|
) { onExit ->
|
||||||
AddStringDialog("Group name", groups.map { it.name }, onExit) { onAdd(it) }
|
AddStringDialog("Group name", groups.map { it.name }, onExit) { onAdd(it) }
|
||||||
}
|
}
|
||||||
|
@ -303,11 +311,12 @@ fun GroupsWidget(
|
||||||
@Composable
|
@Composable
|
||||||
fun AssignmentsWidget(
|
fun AssignmentsWidget(
|
||||||
course: Course, edition: Edition, assignments: List<SoloAssignment>, selected: Int?,
|
course: Course, edition: Edition, assignments: List<SoloAssignment>, selected: Int?,
|
||||||
onSelect: (Int) -> Unit, onAdd: (name: String) -> Unit, onUpdate: (SoloAssignment, String) -> Unit
|
onSelect: (Int) -> Unit, deleter: (SoloAssignment) -> Unit, onAdd: (name: String) -> Unit, onUpdate: (SoloAssignment, String) -> Unit
|
||||||
) = EditionSideWidget(
|
) = EditionSideWidget(
|
||||||
course, edition, "Assignment list", "assignments", "an assignment", assignments, selected, onSelect,
|
course, edition, "Assignment list", "assignments", "an assignment", assignments, selected, onSelect,
|
||||||
{ Text(it.name, Modifier.padding(5.dp)) },
|
{ Text(it.name, Modifier.padding(5.dp)) },
|
||||||
{ current, onExit -> AddStringDialog("Assignment title", assignments.map { it.name }, onExit, current.name) { onUpdate(current, it) } }
|
{ current, onExit -> AddStringDialog("Assignment title", assignments.map { it.name }, onExit, current.name) { onUpdate(current, it) } },
|
||||||
|
deleter
|
||||||
) { onExit ->
|
) { onExit ->
|
||||||
AddStringDialog("Assignment title", assignments.map { it.name }, onExit) { onAdd(it) }
|
AddStringDialog("Assignment title", assignments.map { it.name }, onExit) { onAdd(it) }
|
||||||
}
|
}
|
||||||
|
|
|
@ -139,6 +139,30 @@ class EditionState(val edition: Edition) {
|
||||||
groupAs.refresh()
|
groupAs.refresh()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun delete(s: Student) {
|
||||||
|
transaction {
|
||||||
|
EditionStudents.deleteWhere { studentId eq s.id }
|
||||||
|
GroupStudents.deleteWhere { studentId eq s.id }
|
||||||
|
IndividualFeedbacks.deleteWhere { studentId eq s.id }
|
||||||
|
}
|
||||||
|
students.refresh(); availableStudents.refresh()
|
||||||
|
}
|
||||||
|
fun delete(g: Group) {
|
||||||
|
transaction {
|
||||||
|
GroupFeedbacks.deleteWhere { groupId eq g.id }
|
||||||
|
IndividualFeedbacks.deleteWhere { groupId eq g.id }
|
||||||
|
GroupStudents.deleteWhere { groupId eq g.id }
|
||||||
|
g.delete()
|
||||||
|
}
|
||||||
|
groups.refresh(); groupAs.refresh()
|
||||||
|
}
|
||||||
|
fun delete(sa: SoloAssignment) {
|
||||||
|
transaction {
|
||||||
|
SoloFeedbacks.deleteWhere { soloAssignmentId eq sa.id }
|
||||||
|
sa.delete()
|
||||||
|
}
|
||||||
|
solo.refresh()
|
||||||
|
}
|
||||||
fun delete(ga: GroupAssignment) {
|
fun delete(ga: GroupAssignment) {
|
||||||
transaction {
|
transaction {
|
||||||
GroupFeedbacks.deleteWhere { groupAssignmentId eq ga.id }
|
GroupFeedbacks.deleteWhere { groupAssignmentId eq ga.id }
|
||||||
|
|
Loading…
Reference in New Issue