Coder Social home page Coder Social logo

kvision-examples's Introduction

KVision examples

A set of examples for KVision framework.

Mini template

A minimal KVision application with simplified build configuration. A perfect project for quick start.

Template

An application template. It does nothing, but includes all dependencies to develop KVision applications with all supported components (including unit tests). A perfect starting point for a new application.

See live demo

Hello World

A very simple application with almost no optional modules.

See live demo

Showcase

A simple application presenting all main features of KVision framework.

See live demo

Address book

An address book application presenting a classic CRUD project with Material-like CSS template from Bootswatch.

See live demo

Address book with Tabulator

An address book application rewritten with a Tabulator module.

See live demo

Desktop

A very simple desktop with four mini applications - a calculator, a text editor, a paint program and a web browser.

See live demo

Pokedex PWA

The list of Pokémon with live search, build with Redux module. It's also a fully compatible PWA.

See live demo

TodoMVC

A complete implementation of TodoMVC demo application.

See live demo

TodoMVC-Ballast

A complete implementation of TodoMVC demo application developed with Ballast application state management framework.

Onsen UI Kitchen Sink

An example mobile application created with KVision's bindings for Onsen UI library. It's an almost 1 to 1 rewrite of an official Vue Kitchen Sink example. It presents how to use all Onsen UI visual components with fully type-safe Kotlin API and DSL builders.

See live demo with iOS platform

See live demo with Android platform

Patternfly demo

A demo application created with Patternfly UI toolkit. It shows how to create KVision application with a modern design system alternative to Bootstrap. The application is heavily inspired by Patternfly Kotlin project.

See live demo

Fomantic-UI demo

A demo application created with Fomantic-UI toolkit. It shows how to create KVision application with a modern design system alternative to Bootstrap. It also presents state management based on Kotlin flows (using both StateFlow and SharedFlow).

See live demo

Address book - fullstack

A complete, fullstack address book application. It presents an innovative way to build fullstack applications with KVision and Ktor, Jooby, Spring Boot, Javalin, Vert.x or Micronaut frameworks. KVision closely integrates the client and the server side of the project with a shared data model and fully type-safe connectivity between both sides (based on automatically generated routings and JSON-RPC endpoints). The example project utilizes:

  • H2 SQL database (local) or PostgreSQL database (configured on Heroku)
  • Exposed Kotlin SQL library for database connectivity (used in Ktor, Javalin and Vert.x versions)
  • Spring Data R2DBC with Kotlin Coroutines extensions (used in Spring Boot and Micronaut version)
  • Kwery ORM for database connectivity (used in Jooby version)
  • Pac4J security engine for authentication and profile management (used in Jooby version)

The architecture of the project is heavily based on Kotlin coroutines, wrapping asynchronous client-server calls into easy-to-read synchronous-like code.

Number converter - fullstack

A simple application to convert integer numbers to words by using JVM Tradukisto library.

Encoder - fullstack

A simple application to encode the given text, based on the overview chapter from the KVision guide.

Tweets - fullstack

A simple, multiplatform, message board application based on websocket communication.

Template - fullstack

A fullstack application template (versions for all supported frameworks). A starting point for a new application.

Simple MPP - fullstack

A fullstack MPP application created without KVision, but using kvision-remote module for server-side connectivity. It's based on an official Ktor MPP example.

Template - Electron

An application template for Electron framework. It shows how to build cross-platform (Windows, Linux, MacOS), desktop applications with KVision and Kotlin.

Template - Apache Cordova

An application template for Apache Cordova framework. It shows how to build mobile (Android, iOS), hybrid applications with KVision and Kotlin.

kvision-examples's People

Contributors

jschneider avatar rjaros avatar robert-cronin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kvision-examples's Issues

Hello World failing to build

Working on upgrading my project, starting with the examples to make sure I have versions right. Build fails on a new clone:

Downloading https://services.gradle.org/distributions/gradle-7.4.2-all.zip
...............10%...............20%...............30%...............40%...............50%................60%...............70%...............80%...............90%...............100%

Welcome to Gradle 7.4.2!

Here are the highlights of this release:
 - Aggregated test and JaCoCo reports
 - Marking additional test source directories as tests in IntelliJ
 - Support for Adoptium JDKs in Java toolchains

For more details see https://docs.gradle.org/7.4.2/release-notes.html

Starting a Gradle Daemon (subsequent builds will be faster)

> Task :kotlinNpmInstall
warning "workspace-aggregator-3be5cd72-4774-4d32-ba6a-39689469066f > kvision-js-ir > [email protected]" has unmet peer dependency "webpack@^5.0.0".
warning "workspace-aggregator-3be5cd72-4774-4d32-ba6a-39689469066f > kvision-js-ir > [email protected]" has unmet peer dependency "webpack@^5.0.0".
warning "workspace-aggregator-3be5cd72-4774-4d32-ba6a-39689469066f > kvision-js-ir > [email protected]" has unmet peer dependency "webpack@^5.0.0".
warning "workspace-aggregator-3be5cd72-4774-4d32-ba6a-39689469066f > kvision-js-ir > @rjaros/gettext.js > @rjaros/[email protected]" has unmet peer dependency "commander@^6.0.0".
warning "workspace-aggregator-3be5cd72-4774-4d32-ba6a-39689469066f > kvision-js-ir > @rjaros/gettext.js > @rjaros/[email protected]" has unmet peer dependency "[email protected]".
warning "workspace-aggregator-3be5cd72-4774-4d32-ba6a-39689469066f > kvision-js-ir > @rjaros/gettext.js > @rjaros/[email protected]" has unmet peer dependency "[email protected]".
warning Ignored scripts due to flag.

> Task :compileTestKotlinJs FAILED
e: /home/rfirmin/code/kvision-examples/helloworld/src/test/kotlin/test/com/example/HelloworldSpec.kt: (16, 27): Using 'document: Document' is an error. This API is moved to another package, use 'kotlinx.browser.document' instead.

Use rootProject in NodeJsRootPlugin.apply(rootProject)

When integrating the sample projects in own projects (as sub project), there are strange error messges ("check failed").
This can be fixed by calling NodeJsRootPlugin.apply(rootProject) with the rootProject instead of the project.

While it works for the examples, some users might be surprised when using the templates in their own hierarchy.

template-electron errors

Hello!

I am trying to run "template-electron" . Only the "bundleApp" works normally

"run"
main.bundle.js:1757 Uncaught ReferenceError: require is not defined
at Object.events (main.bundle.js:1757)
at webpack_require (main.bundle.js:1841)
at fn (main.bundle.js:2040)
at eval (emitter.js?4985:1)
at Object.../../node_modules/webpack/hot/emitter.js (main.bundle.js:1331)
at webpack_require (main.bundle.js:1841)
at fn (main.bundle.js:2040)
at eval (reloadApp.js:5)
at Module.../../node_modules/webpack-dev-server/client/utils/reloadApp.js (main.bundle.js:1300)
at webpack_require (main.bundle.js:1841)

"runApp"
Uncaught TypeError: Cannot read properties of undefined (reading 'BrowserWindow')
at jf.start_sv8swh_k$ (main.bundle.js:2)
at jf.Di.start_9m4gm1_k$ (main.bundle.js:2)
at Mi (main.bundle.js:2)
at Bi.invoke_xfv2uo_k$ (main.bundle.js:2)
at HTMLDocument. (main.bundle.js:2)

Classes in build/generated-src not regenerated automatically

Steps to reproduce:

  • Checkout template-fullstack-ktor
  • ./gradlew clean build
  • --> fails with test compile error
  • delete tests: rm src/frontendTest/kotlin/test/ -R
  • ./gradlew build
  • --> build successfully
  • rm build/generated-src/ -R
  • ./gradlew build
  • --> Compile error related to the missing classes
  • ./gradlew clean build somehow seems to fix this issue again

Addressbook fullstack ktor example - hot reload support?

Hi! Firstly, thank you for KVision. I've readed about it on r/Kotlin, and right now I want to try it in one in-game community web-site and its admin UI.

I'm using addressbook-fullstack-ktor as the reference point, but when I'm using frontendRun task I don't see how page changes after I change the code in frontendMain.

I've readed about Hot Module Replacement in documentation, but when I overrided start(state: Map<String, Any>) nothing's changed, I still need to re-run frontendRun task.

So, is it possible to include hot reload in KVision ktor example? Or it's just I don't understand HMR concepts?

Address book - fullstack ktor

ERROR Application - Unhandled: POST - /kv/routeAddressServiceManager0
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of io.ktor.http.Parameters (no Creators, like default construct, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
at [Source: (InputStreamReader); line: 1, column: 1]
at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:67)

Startup problem with addressbook-fullstack-ktor

When I run the server and client for addressbook-fullstack-ktor, I get this stacktrace on the server during startup:

[2021-08-23 18:18:56,823]-[eventLoopGroupProxy-4-1] ERROR Application - Unhandled: POST - /kv/routeAddressServiceManager0 kotlinx.serialization.json.internal.JsonDecodingException: Expected start of the array '[', but had 'EOF' instead JSON input: {"id":1,"method":"/kv/routeAddressServiceManager0","params":["null","\"all\"","\"FN\""]} at kotlinx.serialization.json.internal.JsonExceptionsKt.JsonDecodingException(JsonExceptions.kt:24) at kotlinx.serialization.json.internal.JsonExceptionsKt.JsonDecodingException(JsonExceptions.kt:32) at kotlinx.serialization.json.internal.JsonLexer.fail(JsonLexer.kt:493) at kotlinx.serialization.json.internal.JsonLexer.fail(JsonLexer.kt:215) at kotlinx.serialization.json.internal.JsonLexer.unexpectedToken(JsonLexer.kt:198) at kotlinx.serialization.json.internal.JsonLexer.consumeNextToken(JsonLexer.kt:188) at kotlinx.serialization.json.internal.StreamingJsonDecoder.beginStructure(StreamingJsonDecoder.kt:37) at kotlinx.serialization.internal.AbstractPolymorphicSerializer.deserialize(AbstractPolymorphicSerializer.kt:130) at kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:63) at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:32) at kotlinx.serialization.json.Json.decodeFromString(Json.kt:100) at io.ktor.serialization.SerializationConverter.convertForReceive(SerializationConverter.kt:161) at io.ktor.features.ContentNegotiation$Feature$install$3.invokeSuspend(ContentNegotiation.kt:224) at io.ktor.features.ContentNegotiation$Feature$install$3.invoke(ContentNegotiation.kt) at io.ktor.features.ContentNegotiation$Feature$install$3.invoke(ContentNegotiation.kt) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:248) at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:116) at io.ktor.util.pipeline.SuspendFunctionGun.execute(SuspendFunctionGun.kt:136) at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:79) at io.ktor.request.ApplicationReceiveFunctionsKt.receive(ApplicationReceiveFunctions.kt:116) at io.ktor.request.ApplicationReceiveFunctionsKt.receiveOrNull(ApplicationReceiveFunctions.kt:135) at io.ktor.auth.FormAuthKt$form$1.invokeSuspend(FormAuth.kt:175) at io.ktor.auth.FormAuthKt$form$1.invoke(FormAuth.kt) at io.ktor.auth.FormAuthKt$form$1.invoke(FormAuth.kt) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:248) at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:116) at io.ktor.util.pipeline.SuspendFunctionGun.execute(SuspendFunctionGun.kt:136) at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:79) at io.ktor.auth.Authentication.processAuthentication(Authentication.kt:235) at io.ktor.auth.Authentication.access$processAuthentication(Authentication.kt:19) at io.ktor.auth.Authentication$interceptPipeline$2.invokeSuspend(Authentication.kt:125) at io.ktor.auth.Authentication$interceptPipeline$2.invoke(Authentication.kt) at io.ktor.auth.Authentication$interceptPipeline$2.invoke(Authentication.kt) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:248) at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:116) at io.ktor.util.pipeline.SuspendFunctionGun.execute(SuspendFunctionGun.kt:136) at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:79) at io.ktor.routing.Routing.executeResult(Routing.kt:155) at io.ktor.routing.Routing.interceptor(Routing.kt:39) at io.ktor.routing.Routing$Feature$install$1.invokeSuspend(Routing.kt:107) at io.ktor.routing.Routing$Feature$install$1.invoke(Routing.kt) at io.ktor.routing.Routing$Feature$install$1.invoke(Routing.kt) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:248) at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:116) at io.ktor.features.ContentNegotiation$Feature$install$1.invokeSuspend(ContentNegotiation.kt:145) at io.ktor.features.ContentNegotiation$Feature$install$1.invoke(ContentNegotiation.kt) at io.ktor.features.ContentNegotiation$Feature$install$1.invoke(ContentNegotiation.kt) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:248) at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:116) at io.ktor.features.CallLogging$Feature$install$2.invokeSuspend(CallLogging.kt:139) at io.ktor.features.CallLogging$Feature$install$2.invoke(CallLogging.kt) at io.ktor.features.CallLogging$Feature$install$2.invoke(CallLogging.kt) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:248) at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:116) at io.ktor.util.pipeline.SuspendFunctionGun.execute(SuspendFunctionGun.kt:136) at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:79) at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$2.invokeSuspend(DefaultEnginePipeline.kt:127) at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$2.invoke(DefaultEnginePipeline.kt) at io.ktor.server.engine.DefaultEnginePipelineKt$defaultEnginePipeline$2.invoke(DefaultEnginePipeline.kt) at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:248) at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:116) at io.ktor.util.pipeline.SuspendFunctionGun.execute(SuspendFunctionGun.kt:136) at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:79) at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1.invokeSuspend(NettyApplicationCallHandler.kt:123) at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1.invoke(NettyApplicationCallHandler.kt) at io.ktor.server.netty.NettyApplicationCallHandler$handleRequest$1.invoke(NettyApplicationCallHandler.kt) at kotlinx.coroutines.intrinsics.UndispatchedKt.startCoroutineUndispatched(Undispatched.kt:55) at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:112) at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126) at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56) at kotlinx.coroutines.BuildersKt.launch(Unknown Source) at io.ktor.server.netty.NettyApplicationCallHandler.handleRequest(NettyApplicationCallHandler.kt:43) at io.ktor.server.netty.NettyApplicationCallHandler.channelRead(NettyApplicationCallHandler.kt:34) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:61) at io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:370) at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.ktor.server.netty.EventLoopGroupProxy$Companion.create$lambda-1$lambda-0(NettyApplicationEngine.kt:251) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.base/java.lang.Thread.run(Thread.java:832)

Spring boot addressbook error

Trying to run application always throws following error

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'initializer' defined in com.example.KVApplication: Invocation of init method failed; nested exception is org.springframework.data.r2dbc.connectionfactory.init.CannotReadScriptException: Cannot read SQL script from class path resource [schema.sql]; nested exception is java.io.FileNotFoundException: class path resource [schema.sql] cannot be opened because it does not exist at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796) ~[spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:595) ~[spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) ~[spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:893) ~[spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:879) ~[spring-context-5.2.7.RELEASE.jar:5.2.7.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551) ~[spring-context-5.2.7.RELEASE.jar:5.2.7.RELEASE] at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:62) ~[spring-boot-2.3.1.RELEASE.jar:2.3.1.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758) [spring-boot-2.3.1.RELEASE.jar:2.3.1.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750) [spring-boot-2.3.1.RELEASE.jar:2.3.1.RELEASE] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.3.1.RELEASE.jar:2.3.1.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-2.3.1.RELEASE.jar:2.3.1.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) [spring-boot-2.3.1.RELEASE.jar:2.3.1.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.3.1.RELEASE.jar:2.3.1.RELEASE] at com.example.MainKt.main(Main.kt:36) [main/:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_201] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_201] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_201] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_201] at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) [spring-boot-devtools-2.3.1.RELEASE.jar:2.3.1.RELEASE] Caused by: org.springframework.data.r2dbc.connectionfactory.init.CannotReadScriptException: Cannot read SQL script from class path resource [schema.sql]; nested exception is java.io.FileNotFoundException: class path resource [schema.sql] cannot be opened because it does not exist at org.springframework.data.r2dbc.connectionfactory.init.ScriptUtils.lambda$executeSqlScript$1(ScriptUtils.java:463) ~[spring-data-r2dbc-1.1.1.RELEASE.jar:1.1.1.RELEASE] at reactor.core.publisher.Mono.lambda$onErrorMap$29(Mono.java:3271) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.Mono.lambda$onErrorResume$31(Mono.java:3361) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:88) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onError(FluxHandleFuseable.java:213) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.FluxContextStart$ContextStartSubscriber.onError(FluxContextStart.java:110) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onError(FluxMapFuseable.java:326) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onError(FluxFilterFuseable.java:375) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.MonoCollect$CollectSubscriber.onError(MonoCollect.java:143) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.Operators.error(Operators.java:196) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.FluxUsing.subscribe(FluxUsing.java:78) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.Mono.subscribe(Mono.java:4219) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:441) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onSubscribe(FluxConcatMap.java:211) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:161) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:86) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.MonoFromFluxOperator.subscribe(MonoFromFluxOperator.java:81) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.MonoUsingWhen$ResourceSubscriber.onNext(MonoUsingWhen.java:192) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:73) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:73) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:121) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1782) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.MonoSupplier.subscribe(MonoSupplier.java:61) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.Mono.subscribe(Mono.java:4219) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:97) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.MonoFlatMap$FlatMapMain.onError(MonoFlatMap.java:165) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onError(FluxMapFuseable.java:134) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:185) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2344) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.request(FluxHandleFuseable.java:243) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:162) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.MonoFlatMap$FlatMapMain.onSubscribe(MonoFlatMap.java:103) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onSubscribe(FluxMapFuseable.java:90) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onSubscribe(FluxHandleFuseable.java:148) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.MonoCurrentContext.subscribe(MonoCurrentContext.java:35) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.Mono.subscribe(Mono.java:4219) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.MonoUsingWhen.subscribe(MonoUsingWhen.java:96) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.Mono.subscribe(Mono.java:4219) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.Mono.block(Mono.java:1678) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at org.springframework.data.r2dbc.connectionfactory.init.ConnectionFactoryInitializer.execute(ConnectionFactoryInitializer.java:107) ~[spring-data-r2dbc-1.1.1.RELEASE.jar:1.1.1.RELEASE] at org.springframework.data.r2dbc.connectionfactory.init.ConnectionFactoryInitializer.afterPropertiesSet(ConnectionFactoryInitializer.java:91) ~[spring-data-r2dbc-1.1.1.RELEASE.jar:1.1.1.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1855) ~[spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1792) ~[spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE] ... 22 common frames omitted Suppressed: java.lang.Exception: #block terminated with an error at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:99) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] at reactor.core.publisher.Mono.block(Mono.java:1679) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] ... 26 common frames omitted Caused by: java.io.FileNotFoundException: class path resource [schema.sql] cannot be opened because it does not exist at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:180) ~[spring-core-5.2.7.RELEASE.jar:5.2.7.RELEASE] at org.springframework.core.io.AbstractResource.readableChannel(AbstractResource.java:149) ~[spring-core-5.2.7.RELEASE.jar:5.2.7.RELEASE] at org.springframework.core.io.AbstractFileResolvingResource.readableChannel(AbstractFileResolvingResource.java:220) ~[spring-core-5.2.7.RELEASE.jar:5.2.7.RELEASE] at reactor.core.publisher.FluxUsing.subscribe(FluxUsing.java:75) ~[reactor-core-3.3.6.RELEASE.jar:3.3.6.RELEASE] ... 54 common frames omitted

I assume its some pathing issue, but i havent changed or messed around with any classpaths, i tryed to point the main class to schema.sql but i always have same issue.

(Using windows btw)

Compile Error in tests (ktor fullstack example)

When checking out the example and running "./gradlew build" I get these compile errors:

e: /tmp/a/kvision-examples/template-fullstack-ktor/src/frontendTest/kotlin/test/com/example/AppSpec.kt: (3, 28): Unresolved reference: test
e: /tmp/a/kvision-examples/template-fullstack-ktor/src/frontendTest/kotlin/test/com/example/AppSpec.kt: (7, 17): Unresolved reference: SimpleSpec

It seems the class "pl.treksoft.kvision.test.SimpleSpec" can not be found (missing dependency?)

Having problems run examples localy

I have downloaded examples repo and trying to run todo example by calliing: gradlew.bat -t run in my Windows 10 machine. Seems some dependency cannot be downloaded see traceback below. I tried for showcase example also and it failed on some other dependency. Any idea whats wrong here?

npm ERR! notarget No matching version found for [email protected]
npm ERR! notarget In most cases you or one of your dependencies are requesting
npm ERR! notarget a package version that doesn't exist.
npm ERR! notarget
npm ERR! notarget It was specified as a dependency of 'build'
npm ERR! notarget

Fo showcase example I'm getting:
pm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/kvision-richtext - Not found
npm ERR! 404
npm ERR! 404 '[email protected]' is not in the npm registry.

Tabs, Tables and Scrollbars

Hi,
I have a layout with a fixed NavBar at the top (menu), one at the bottom (status) and in between a TabPanel. Tabs have 'tables' and with both DataContainer as well as Tabulators I get scrollbars for the TabPanel when tables exceed the available space (AsIs). What I would like to have is scrollbars for the tables (ToBe), see sample layout below.

Thanks in advance -j
BTW: it looks like https://rjaros.github.io/kvision-examples/addressbook/ stoped working.

AsIs
+----------------------------------+
|MenuBar                           |
+-----+----------------------------^
|Tab1 | Tab2 | Tab...              H
|     +----------------------------H
| Table                            H
+ +------------------------------+ H
| |TH1 | TH2 | TH... |           | H
+ +------------------------------+ H
| |TR1                           | H
| |TR2                           | H
| |TR...                         | H
| +------------------------------+ H
+----------------------------------v
|StatusBar                         |
+----------------------------------+

ToBe
+----------------------------------+
|MenuBar                           |
+-----+----------------------------+
|Tab1 | Tab2 | Tab...              |
|     +----------------------------+
| Table                            |
+ +------------------------------+ |
| |TH1 | TH2 | TH... |           | |
+ +------------------------------^ |
| |TR1                           H |
| |TR2                           H |
| |TR...                         H |
| +------------------------------v |
+----------------------------------+
|StatusBar                         |
+----------------------------------+

[usage] Binding to multiple attributes of object

I have been trying to get my head around binding and one thing I can't seem to figure out is how to bind a content to more than one var/val

Suppose the following

object FormsModel {
    val valueOne = ObservableValue<Double>(180.00)
    val valueTwo = ObservableValue<Double>(0.28)
}

I know I can bind using

bind(FormsModel.valueOne) {
                            value = it
                        }

However I can really seem to understand how could I for example bind to FormsModel instead. (TBH I tried getting my head around Kotlin's documentation and it isn't clear to me either...)

Gradle continuous run don't work in most of the examples

Steps:
1.Download examples
2.Open one of them
3.Run with ./gradlew -t run

Some of them works like intended - desktop or mini-template runs for me without problem/

In comparison with - addressbook-fullstack-spring-boot/addressbook-fullstack-ktor/template-fullstack-ktor I get this:
Task 'run' not found in root project 'template-fullstack-ktor'.

Build failures

I cloned the examples and wanted to try them out. Unfortunately the builds fail.

I tried building template-fullstack-jooby and addressbook-fullstack-jooby. Both fail when executing gradew jar.

I do not have NodeJS installed. Also the documentation at https://kvision.gitbook.io/kvision-guide/part-1-fundamentals/setting-up claims that NodeJS would be installed by Gradle.

Java is OpneJDK 11.0.2

> gradlew jar

> Configure project :
Kotlin Multiplatform Projects are an experimental feature.

> Task :frontendProcessResources FAILED
Converted messages-en.po to messages-en.json

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':frontendProcessResources'.
> A problem occurred starting process 'command 'node''

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1s
7 actionable tasks: 3 executed, 4 up-to-date

[template-fullstack-javalin] connection refused

Hi,

When i start 'template-fullstack-javalin' project, i get this message :

<e> [webpack-dev-server] [HPM] Error occurred while proxying request 192.168.1.34:3000/kv/routePingServiceManager0 to http://localhost:8080/ [ECONNREFUSED] (https://nodejs.org/api/errors.html#errors_common_system_errors)

can you help me ?

thanks

Logging defaults on full-stack ktor example explicitly filter out error messages

This bit of the logback.xml file has the effect of explicitly filtering out errors from the logs.

        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>

It also filters out warnings too. That doesn't seem like a sensible default. Maybe it should be changed to allow info, warn, and error by default?

Example with sourcemaps?

HI, I wonder if you have an example that has sourcemaps enabled?
I just fail to set it up.

I tried adding source-map-loader as an devDependency, but it fails to resolve:

Error: Cannot find module '/home/thomas/projects/eiswind/hellonewjs2/build/node_modules/source-map-loader/index.js!/home/thomas/projects/eiswind/hellonewjs2/build/node_modules/bootstrap-webpack/bootstrap.config.js'
    at Function.Module._resolveFilename 

npm ERR! 404 Not Found: [email protected]

When I download the template build field with this?

Task :npm-install
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\kvision-bootstrap <<===>> G:\App Code\Web-Journey\kvision get-start\temp
late\build\node_modules_imported\kvision-bootstrap
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\kvision-select <<===>> G:\App Code\Web-Journey\kvision get-start\templat
e\build\node_modules_imported\kvision-select
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\kvision-datetime <<===>> G:\App Code\Web-Journey\kvision get-start\templ
ate\build\node_modules_imported\kvision-datetime
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\kvision-spinner <<===>> G:\App Code\Web-Journey\kvision get-start\templa
te\build\node_modules_imported\kvision-spinner
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\kvision-richtext <<===>> G:\App Code\Web-Journey\kvision get-start\templ
ate\build\node_modules_imported\kvision-richtext
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\kvision-upload <<===>> G:\App Code\Web-Journey\kvision get-start\templat
e\build\node_modules_imported\kvision-upload
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\kvision-handlebars <<===>> G:\App Code\Web-Journey\kvision get-start\tem
plate\build\node_modules_imported\kvision-handlebars
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\kvision-i18n <<===>> G:\App Code\Web-Journey\kvision get-start\template
build\node_modules_imported\kvision-i18n
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\kvision-datacontainer <<===>> G:\App Code\Web-Journey\kvision get-start
template\build\node_modules_imported\kvision-datacontainer
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\kvision-dialog <<===>> G:\App Code\Web-Journey\kvision get-start\templat
e\build\node_modules_imported\kvision-dialog
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\kvision-tabulator <<===>> G:\App Code\Web-Journey\kvision get-start\temp
late\build\node_modules_imported\kvision-tabulator
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\kvision-redux <<===>> G:\App Code\Web-Journey\kvision get-start\template
\build\node_modules_imported\kvision-redux
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\kvision-chart <<===>> G:\App Code\Web-Journey\kvision get-start\template
\build\node_modules_imported\kvision-chart
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\kvision-pace <<===>> G:\App Code\Web-Journey\kvision get-start\template
build\node_modules_imported\kvision-pace
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\kvision-moment <<===>> G:\App Code\Web-Journey\kvision get-start\templat
e\build\node_modules_imported\kvision-moment
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\kvision <<===>> G:\App Code\Web-Journey\kvision get-start\template\build
\node_modules_imported\kvision
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\kotlin-redux <<===>> G:\App Code\Web-Journey\kvision get-start\template
build\node_modules_imported\kotlin-redux
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\kotlinx-serialization-kotlinx-serialization-runtime <<===>> G:\App Code
Web-Journey\kvision get-start\template\build\node_modules_imported\kotlinx-serialization-kotlinx-serialization-runtime
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\navigo-kotlin <<===>> G:\App Code\Web-Journey\kvision get-start\template
\build\node_modules_imported\navigo-kotlin
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\jquery-kotlin <<===>> G:\App Code\Web-Journey\kvision get-start\template
\build\node_modules_imported\jquery-kotlin
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\kotlinx-coroutines-core <<===>> G:\App Code\Web-Journey\kvision get-star
t\template\build\node_modules_imported\kotlinx-coroutines-core
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\kotlin-extensions <<===>> G:\App Code\Web-Journey\kvision get-start\temp
late\build\node_modules_imported\kotlin-extensions
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\kotlin <<===>> G:\App Code\Web-Journey\kvision get-start\template\build
node_modules_imported\kotlin
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\snabbdom-kotlin <<===>> G:\App Code\Web-Journey\kvision get-start\templa
te\build\node_modules_imported\snabbdom-kotlin
Junction created for G:\App Code\Web-Journey\kvision get-start\template\build\node_modules\kotlin-test <<===>> G:\App Code\Web-Journey\kvision get-start\template\b
uild\node_modules_imported\kotlin-test
npm WARN deprecated [email protected]: this package is now deprecated
npm WARN deprecated [email protected]: Package no longer supported. Contact [email protected] for more info.
npm ERR! code E404
npm ERR! 404 Not Found: [email protected]

npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\mahmo\AppData\Roaming\npm-cache_logs\2019-09-28T10_35_55_134Z-debug.log

Task :npm-install FAILED

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':npm-install'.

npm install failed (exit code = 1)

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 45s
3 actionable tasks: 3 executed

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.