Я создаю простой пользовательский интерфейс в Kotlin / TornadoFX, который дает сводку состояния некоторых серверов. Для каждого сервера я отображаю имя сервера, статус и номер сборки. Некоторые из этих сборок - это ночные сборки основной ветки, а другие - тестовые сборки ветвей функций, созданных CI. В настоящее время эти поля являются SimpleStringProperty
значениями в моей модели MVC, которые я использую в пользовательском интерфейсе следующим образом:
// inside my View class
override val root = vbox {
text(model.nameProperty)
text(model.statusProperty)
text(model.buildNumberProperty)
}
Когда на сервере установлена тестовая сборка, я хочу, чтобы номер сборки имел гиперссылку на сводку сборки в нашем CI; для ночных сборок я хочу просто отобразить номер сборки без ссылки.
У меня есть две служебные функции, isTestBuild(buildNum: String): Boolean
и getTestBuildLink(buildNum: String): String?
, которые я могу использовать, но я не знаю, как их объединить со свойствами в моей модели для динамического обновления пользовательского интерфейса при изменении модели.
Если бы это были нормальные String
значения, я бы написал UI следующим образом:
// inside my View class
override val root = vbox {
text(model.name)
text(model.status)
if(isTestBuild(model.buildNumber)) {
hyperlink(model.buildNumber)
.action(openLink(getTestBuildLink(model.buildNumber))!!))
} else {
text(model.buildNumber)
}
}
Как составить свойства модели и эти функции, чтобы предоставить гиперссылку только для моих тестовых сборок и текст для ночных сборок?