aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobbie Cronin <robert.cronin@uqconnect.edu.au>2019-06-26 12:42:55 +0800
committerGitHub <noreply@github.com>2019-06-26 12:42:55 +0800
commitd20bc8739b1ad58c1222d63258f01ef9e9d34064 (patch)
tree078b87746de4a305452224de39272529def43679
parent97d136f14f086cf457453f1c94da1ecdae835234 (diff)
parent1f5742bebbafbe20a9d7527794798db7ebe5ab98 (diff)
downloadkvision-d20bc8739b1ad58c1222d63258f01ef9e9d34064.tar.gz
kvision-d20bc8739b1ad58c1222d63258f01ef9e9d34064.tar.bz2
kvision-d20bc8739b1ad58c1222d63258f01ef9e9d34064.zip
Merge pull request #2 from rjaros/master
pull version 0.0.37
-rw-r--r--Module.md8
-rw-r--r--README.md3
-rw-r--r--build.gradle3
-rw-r--r--detekt.yml241
-rw-r--r--gradle.properties18
-rw-r--r--kvision-modules/kvision-datetime/webpack.config.d/css.js2
-rw-r--r--kvision-modules/kvision-moment/src/main/kotlin/pl/treksoft/kvision/KVManagerMoment.kt1
-rw-r--r--kvision-modules/kvision-moment/src/main/kotlin/pl/treksoft/kvision/moment/Moment.kt1
-rw-r--r--kvision-modules/kvision-pace/build.gradle4
-rw-r--r--kvision-modules/kvision-pace/src/main/kotlin/pl/treksoft/kvision/KVManagerPace.kt8
-rw-r--r--kvision-modules/kvision-pace/src/main/kotlin/pl/treksoft/kvision/pace/Pace.kt174
-rw-r--r--kvision-modules/kvision-pace/webpack.config.d/css.js2
-rw-r--r--kvision-modules/kvision-redux/src/main/kotlin/pl/treksoft/kvision/redux/ReduxStore.kt30
-rw-r--r--kvision-modules/kvision-redux/src/test/kotlin/test/pl/treksoft/kvision/redux/ReduxStoreSpec.kt19
-rw-r--r--kvision-modules/kvision-redux/src/test/kotlin/test/pl/treksoft/kvision/redux/StateBindingSpec.kt2
-rw-r--r--kvision-modules/kvision-richtext/webpack.config.d/css.js2
-rw-r--r--kvision-modules/kvision-select/webpack.config.d/css.js2
-rw-r--r--kvision-modules/kvision-spinner/webpack.config.d/css.js2
-rw-r--r--kvision-modules/kvision-tabulator/build.gradle2
-rw-r--r--kvision-modules/kvision-tabulator/src/main/kotlin/pl/treksoft/kvision/tabulator/Options.kt535
-rw-r--r--kvision-modules/kvision-tabulator/src/main/kotlin/pl/treksoft/kvision/tabulator/Tabulator.kt137
-rw-r--r--kvision-modules/kvision-tabulator/webpack.config.d/css.js2
-rw-r--r--kvision-modules/kvision-upload/webpack.config.d/css.js2
-rw-r--r--kvision-modules/kvision-upload/webpack.config.d/file.js6
-rw-r--r--src/main/kotlin/pl/treksoft/kvision/core/Widget.kt10
-rw-r--r--src/main/kotlin/pl/treksoft/kvision/dropdown/ContextMenu.kt22
26 files changed, 747 insertions, 491 deletions
diff --git a/Module.md b/Module.md
index ece5b49f..682b2c77 100644
--- a/Module.md
+++ b/Module.md
@@ -15,6 +15,10 @@ Full-featured chart component based on chart.js library.
Kotlin bindings for chart.js API.
+# Package pl.treksoft.kvision.cordova
+
+Kotlin bindings for core Apache Cordova API.
+
# Package pl.treksoft.kvision.data
Base component and container class with data binding support for observable data model.
@@ -81,6 +85,10 @@ Classes supporting general purpose Bootstrap modals with convenient helpers for
Bootstrap navbar components.
+# Package pl.treksoft.kvision.pace
+
+Automatic progress bar module.
+
# Package pl.treksoft.kvision.panel
Rich set of container classes, supporting both simple use cases and sophisticated layouts (including CSS flexbox,
diff --git a/README.md b/README.md
index 3721118d..2c44b394 100644
--- a/README.md
+++ b/README.md
@@ -39,6 +39,8 @@ allows to build full-stack, multiplatform applications with shared common code.
- [Tabulator](http://tabulator.info/)
- [Redux](https://redux.js.org/)
- [Navigo](https://github.com/krasimir/navigo)
+ - [Moment.js](https://momentjs.com/)
+ - [Pace](https://github.hubspot.com/pace/docs/welcome/)
- Includes sophisticated layout containers, including CSS flexbox, CSS grid and Bootstrap responsive 12 columns grid.
- Includes convenient forms implementation, with support for many different input components and easy to use validation.
@@ -48,6 +50,7 @@ allows to build full-stack, multiplatform applications with shared common code.
- Type-safe REST connectivity.
- Innovative integration interface for [Ktor](https://ktor.io), [Jooby](https://jooby.org) and [Spring Boot](https://spring.io/projects/spring-boot) frameworks on the server side,
including support for type-safe websockets connections.
+- Support for building hybrid mobile applications with [Apache Cordova](https://cordova.apache.org/).
- Support for building cross-platform, desktop applications with [Electron](https://electronjs.org).
- KVision applications are built with [Gradle](https://gradle.org/) with support for Webpack's [Hot Module Replacement (HMR)](https://webpack.js.org/concepts/hot-module-replacement/) and
[Kotlin JavaScript DCE (dead code elimination)](https://kotlinlang.org/docs/reference/javascript-dce.html).
diff --git a/build.gradle b/build.gradle
index 1c77ff6e..180406e4 100644
--- a/build.gradle
+++ b/build.gradle
@@ -13,7 +13,6 @@ buildscript {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}"
classpath "org.jetbrains.kotlin:kotlin-serialization:${kotlinVersion}"
classpath "org.jetbrains.kotlin:kotlin-frontend-plugin:${frontendPluginVersion}"
- classpath "gradle.plugin.io.gitlab.arturbosch.detekt:detekt-gradle-plugin:${detektVersion}"
classpath "org.jetbrains.dokka:dokka-gradle-plugin:${dokkaVersion}"
classpath "io.spring.gradle:dependency-management-plugin:${dependencyManagementPluginVersion}"
}
@@ -21,6 +20,7 @@ buildscript {
plugins {
id "com.jfrog.bintray" version "1.7.3"
+ id "io.gitlab.arturbosch.detekt" version "1.0.0-RC14"
}
configure(allprojects - project(':kvision-modules')) {
@@ -172,6 +172,7 @@ dokka {
'kvision-modules/kvision-redux/src/main/kotlin',
'kvision-modules/kvision-moment/src/main/kotlin',
'kvision-modules/kvision-tabulator/src/main/kotlin',
+ 'kvision-modules/kvision-pace/src/main/kotlin',
'kvision-modules/kvision-remote/src/main/kotlin',
'kvision-modules/kvision-select-remote/src/main/kotlin',
'kvision-modules/kvision-common/src/main/kotlin',
diff --git a/detekt.yml b/detekt.yml
index 889dba9c..14960490 100644
--- a/detekt.yml
+++ b/detekt.yml
@@ -1,24 +1,3 @@
-autoCorrect: true
-failFast: false
-
-test-pattern: # Configure exclusions for test sources
- active: true
- patterns: # Test file regexes
- - '.*/test/.*'
- - '.*Test.kt'
- - '.*Spec.kt'
- exclude-rule-sets:
- - 'comments'
- exclude-rules:
- - 'NamingRules'
- - 'WildcardImport'
- - 'MagicNumber'
- - 'MaxLineLength'
- - 'LateinitUsage'
- - 'StringLiteralDuplication'
- - 'SpreadOperator'
- - 'TooManyFunctions'
-
build:
maxIssues: 10
weights:
@@ -45,22 +24,16 @@ console-reports:
# - 'FindingsReport'
# - 'BuildFailureReport'
-output-reports:
- active: true
- exclude:
- # - 'HtmlOutputReport'
- # - 'PlainOutputReport'
- # - 'XmlOutputReport'
-
comments:
active: true
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
CommentOverPrivateFunction:
active: false
CommentOverPrivateProperty:
active: false
EndOfSentenceFormat:
active: false
- endOfSentenceFormat: ([.?!][ \t\n\r\f<])|([.?!]$)
+ endOfSentenceFormat: ([.?!][ \t\n\r\f<])|([.?!:]$)
UndocumentedPublicClass:
active: false
searchInNestedClass: true
@@ -83,18 +56,20 @@ complexity:
active: true
threshold: 10
ignoreSingleWhenExpression: false
+ ignoreSimpleWhenEntries: false
LabeledExpression:
active: false
+ ignoredLabels: ""
LargeClass:
active: true
- threshold: 150
+ threshold: 600
LongMethod:
- active: true
- threshold: 20
+ active: false
+ threshold: 60
LongParameterList:
- active: true
+ active: false
threshold: 6
- ignoreDefaultParameters: true
+ ignoreDefaultParameters: false
MethodOverloading:
active: false
threshold: 6
@@ -103,23 +78,28 @@ complexity:
threshold: 4
StringLiteralDuplication:
active: false
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
threshold: 3
ignoreAnnotation: true
excludeStringsWithLessThan5Characters: true
ignoreStringsRegex: '$^'
TooManyFunctions:
active: true
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
thresholdInFiles: 11
thresholdInClasses: 11
thresholdInInterfaces: 11
thresholdInObjects: 11
thresholdInEnums: 11
+ ignoreDeprecated: false
+ ignorePrivate: false
+ ignoreOverridden: false
empty-blocks:
active: true
EmptyCatchBlock:
active: true
- allowedExceptionNameRegex: "^(ignore|expected).*"
+ allowedExceptionNameRegex: "^(_|(ignore|expected).*)"
EmptyClassBlock:
active: true
EmptyDefaultConstructor:
@@ -134,6 +114,7 @@ empty-blocks:
active: true
EmptyFunctionBlock:
active: true
+ ignoreOverriddenFunctions: false
EmptyIfBlock:
active: true
EmptyInitBlock:
@@ -154,6 +135,7 @@ exceptions:
methodNames: 'toString,hashCode,equals,finalize'
InstanceOfCheckForException:
active: false
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
NotImplementedDeclaration:
active: false
PrintStackTrace:
@@ -164,6 +146,7 @@ exceptions:
active: false
SwallowedException:
active: false
+ ignoredExceptionTypes: 'InterruptedException,NumberFormatException,ParseException,MalformedURLException'
ThrowingExceptionFromFinally:
active: false
ThrowingExceptionInMain:
@@ -175,6 +158,7 @@ exceptions:
active: false
TooGenericExceptionCaught:
active: true
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
exceptionNames:
- ArrayIndexOutOfBoundsException
- Error
@@ -184,6 +168,7 @@ exceptions:
- IndexOutOfBoundsException
- RuntimeException
- Throwable
+ allowedExceptionNameRegex: "^(_|(ignore|expected).*)"
TooGenericExceptionThrown:
active: true
exceptionNames:
@@ -192,27 +177,144 @@ exceptions:
- Throwable
- RuntimeException
+formatting:
+ active: true
+ android: false
+ autoCorrect: true
+ ChainWrapping:
+ active: true
+ autoCorrect: true
+ CommentSpacing:
+ active: true
+ autoCorrect: true
+ Filename:
+ active: true
+ FinalNewline:
+ active: true
+ autoCorrect: true
+ ImportOrdering:
+ active: false
+ Indentation:
+ active: true
+ autoCorrect: true
+ indentSize: 4
+ continuationIndentSize: 4
+ MaximumLineLength:
+ active: true
+ maxLineLength: 120
+ ModifierOrdering:
+ active: true
+ autoCorrect: true
+ NoBlankLineBeforeRbrace:
+ active: true
+ autoCorrect: true
+ NoConsecutiveBlankLines:
+ active: true
+ autoCorrect: true
+ NoEmptyClassBody:
+ active: true
+ autoCorrect: true
+ NoItParamInMultilineLambda:
+ active: false
+ NoLineBreakAfterElse:
+ active: true
+ autoCorrect: true
+ NoLineBreakBeforeAssignment:
+ active: true
+ autoCorrect: true
+ NoMultipleSpaces:
+ active: true
+ autoCorrect: true
+ NoSemicolons:
+ active: true
+ autoCorrect: true
+ NoTrailingSpaces:
+ active: true
+ autoCorrect: true
+ NoUnitReturn:
+ active: true
+ autoCorrect: true
+ NoUnusedImports:
+ active: true
+ autoCorrect: true
+ NoWildcardImports:
+ active: true
+ autoCorrect: true
+ PackageName:
+ active: true
+ autoCorrect: true
+ ParameterListWrapping:
+ active: true
+ autoCorrect: true
+ indentSize: 4
+ SpacingAroundColon:
+ active: true
+ autoCorrect: true
+ SpacingAroundComma:
+ active: true
+ autoCorrect: true
+ SpacingAroundCurly:
+ active: true
+ autoCorrect: true
+ SpacingAroundKeyword:
+ active: true
+ autoCorrect: true
+ SpacingAroundOperators:
+ active: true
+ autoCorrect: true
+ SpacingAroundParens:
+ active: true
+ autoCorrect: true
+ SpacingAroundRangeOperator:
+ active: true
+ autoCorrect: true
+ StringTemplate:
+ active: true
+ autoCorrect: true
+
naming:
active: true
ClassNaming:
active: true
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
classPattern: '[A-Z$][a-zA-Z0-9$]*'
+ ConstructorParameterNaming:
+ active: true
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
+ parameterPattern: '[a-z][A-Za-z0-9]*'
+ privateParameterPattern: '[a-z][A-Za-z0-9]*'
+ excludeClassPattern: '$^'
EnumNaming:
active: true
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
enumEntryPattern: '^[A-Z][_a-zA-Z0-9]*'
ForbiddenClassName:
active: false
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
forbiddenName: ''
FunctionMaxLength:
active: false
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
maximumFunctionNameLength: 30
FunctionMinLength:
active: false
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
minimumFunctionNameLength: 3
FunctionNaming:
active: true
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
functionPattern: '^([a-z$][a-zA-Z$0-9]*)|(`.*`)$'
excludeClassPattern: '$^'
+ ignoreOverridden: true
+ FunctionParameterNaming:
+ active: true
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
+ parameterPattern: '[a-z][A-Za-z0-9]*'
+ excludeClassPattern: '$^'
+ ignoreOverriddenFunctions: true
+ InvalidPackageDeclaration:
+ active: false
+ rootPackage: ''
MatchingDeclarationName:
active: true
MemberNameEqualsClassName:
@@ -220,33 +322,46 @@ naming:
ignoreOverriddenFunction: true
ObjectPropertyNaming:
active: true
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
+ constantPattern: '[A-Za-z][_A-Za-z0-9]*'
propertyPattern: '[A-Za-z][_A-Za-z0-9]*'
+ privatePropertyPattern: '(_)?[A-Za-z][_A-Za-z0-9]*'
PackageNaming:
active: true
- packagePattern: '^[a-z]+(\.[a-z][a-z0-9]*)*$'
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
+ packagePattern: '^[a-z]+(\.[a-z][A-Za-z0-9]*)*$'
TopLevelPropertyNaming:
active: true
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
constantPattern: '[A-Z][_A-Z0-9]*'
- propertyPattern: '[a-z][A-Za-z\d]*'
- privatePropertyPattern: '(_)?[a-z][A-Za-z0-9]*'
+ propertyPattern: '[A-Za-z][_A-Za-z0-9]*'
+ privatePropertyPattern: '_?[A-Za-z][_A-Za-z0-9]*'
VariableMaxLength:
active: false
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
maximumVariableNameLength: 64
VariableMinLength:
active: false
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
minimumVariableNameLength: 1
VariableNaming:
active: true
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
variablePattern: '[a-z][A-Za-z0-9]*'
privateVariablePattern: '(_)?[a-z][A-Za-z0-9]*'
excludeClassPattern: '$^'
+ ignoreOverridden: true
performance:
active: true
+ ArrayPrimitive:
+ active: false
ForEachOnRange:
active: true
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
SpreadOperator:
active: true
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
UnnecessaryTemporaryInstantiation:
active: true
@@ -268,8 +383,13 @@ potential-bugs:
active: false
LateinitUsage:
active: false
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
excludeAnnotatedProperties: ""
ignoreOnClassesPattern: ""
+ MissingWhenCase:
+ active: false
+ RedundantElseInWhen:
+ active: false
UnconditionalJumpStatementInLoop:
active: false
UnreachableCode:
@@ -290,16 +410,26 @@ style:
DataClassContainsFunctions:
active: false
conversionFunctionPrefix: 'to'
+ DataClassShouldBeImmutable:
+ active: false
EqualsNullCall:
active: false
+ EqualsOnSignatureLine:
+ active: false
+ ExplicitItLambdaParameter:
+ active: false
ExpressionBodySyntax:
active: false
+ includeLineWrapping: false
ForbiddenComment:
active: true
values: 'TODO:,FIXME:,STOPSHIP:'
ForbiddenImport:
active: false
imports: ''
+ ForbiddenVoid:
+ active: false
+ ignoreOverridden: false
FunctionOnlyReturningConstant:
active: false
ignoreOverridableFunction: true
@@ -309,19 +439,24 @@ style:
maxJumpCount: 1
MagicNumber:
active: true
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
ignoreNumbers: '-1,0,1,2'
- ignoreHashCodeFunction: false
+ ignoreHashCodeFunction: true
ignorePropertyDeclaration: false
ignoreConstantDeclaration: true
ignoreCompanionObjectPropertyDeclaration: true
ignoreAnnotation: false
ignoreNamedArgument: true
ignoreEnums: false
+ ignoreRanges: false
+ MandatoryBracesIfStatements:
+ active: false
MaxLineLength:
active: true
maxLineLength: 120
- excludePackageStatements: false
- excludeImportStatements: false
+ excludePackageStatements: true
+ excludeImportStatements: true
+ excludeCommentStatements: false
MayBeConst:
active: false
ModifierOrder:
@@ -338,6 +473,8 @@ style:
active: false
OptionalWhenBraces:
active: false
+ PreferToOverPairSyntax:
+ active: false
ProtectedMemberInFinalClass:
active: false
RedundantVisibilityModifierRule:
@@ -346,6 +483,8 @@ style:
active: true
max: 2
excludedFunctions: "equals"
+ excludeLabeled: false
+ excludeReturnFromLambda: true
SafeCast:
active: true
SerialVersionUIDInSerializableClass:
@@ -357,23 +496,43 @@ style:
max: 2
TrailingWhitespace:
active: false
+ UnderscoresInNumericLiterals:
+ active: false
+ acceptableDecimalLength: 5
UnnecessaryAbstractClass:
active: false
+ excludeAnnotatedClasses: "dagger.Module"
+ UnnecessaryApply:
+ active: false
UnnecessaryInheritance:
active: false
+ UnnecessaryLet:
+ active: false
UnnecessaryParentheses:
active: false
UntilInsteadOfRangeTo:
active: false
UnusedImports:
active: false
+ UnusedPrivateClass:
+ active: false
UnusedPrivateMember:
active: false
+ allowedNames: "(_|ignored|expected|serialVersionUID)"
+ UseCheckOrError:
+ active: false
UseDataClass:
active: false
excludeAnnotatedClasses: ""
+ UseRequire:
+ active: false
+ UselessCallOnNotNull:
+ active: false
UtilityClassWithPublicConstructor:
active: false
+ VarCouldBeVal:
+ active: false
WildcardImport:
active: true
+ excludes: "**/test/**,**/androidTest/**,**/*.Test.kt,**/*.Spec.kt,**/*.Spek.kt"
excludeImports: 'java.util.*,kotlinx.android.synthetic.*'
diff --git a/gradle.properties b/gradle.properties
index e51a8eb4..78a4d488 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,23 +1,23 @@
group=pl.treksoft
-version=0.0.36
-kotlinVersion=1.3.31
+version=0.0.37
+kotlinVersion=1.3.40
javaVersion=1.8
-coroutinesVersion=1.2.1
-serializationVersion=0.11.0
+coroutinesVersion=1.2.2
+serializationVersion=0.11.1
frontendPluginVersion=0.0.45
dokkaVersion=0.9.18
-detektVersion=1.0.0.RC9.2
+detektVersion=1.0.0-RC14
junitVersion=4.12
joobyVersion=1.6.0
-springBootVersion=2.1.4.RELEASE
-ktorVersion=1.1.4
+springBootVersion=2.1.6.RELEASE
+ktorVersion=1.2.2
guiceVersion=4.2.2
pac4jVersion=3.5.0
dependencyManagementPluginVersion=1.0.4.RELEASE
-jacksonModuleKotlinVersion=2.9.8
+jacksonModuleKotlinVersion=2.9.9
jqueryKotlinVersion=0.0.4
snabbdomKotlinVersion=0.1.1
navigoKotlinVersion=0.0.3
kotlinObservableVersion=0.0.4
nodeKtVersion=0.1.0
-kotlinReduxVersion=4.0.0-pre.70-kotlin-1.3.21
+kotlinReduxVersion=4.0.0-pre.73-kotlin-1.3.40
diff --git a/kvision-modules/kvision-datetime/webpack.config.d/css.js b/kvision-modules/kvision-datetime/webpack.config.d/css.js
new file mode 100644
index 00000000..5d710d35
--- /dev/null
+++ b/kvision-modules/kvision-datetime/webpack.config.d/css.js
@@ -0,0 +1,2 @@
+config.module.rules.push({ test: /\.css$/, loader: "style-loader!css-loader" });
+
diff --git a/kvision-modules/kvision-moment/src/main/kotlin/pl/treksoft/kvision/KVManagerMoment.kt b/kvision-modules/kvision-moment/src/main/kotlin/pl/treksoft/kvision/KVManagerMoment.kt
index 0000db83..330d818d 100644
--- a/kvision-modules/kvision-moment/src/main/kotlin/pl/treksoft/kvision/KVManagerMoment.kt
+++ b/kvision-modules/kvision-moment/src/main/kotlin/pl/treksoft/kvision/KVManagerMoment.kt
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2017-present Robert Jaros
+ * Copyright (c) 2019-present Robert Cronin
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/kvision-modules/kvision-moment/src/main/kotlin/pl/treksoft/kvision/moment/Moment.kt b/kvision-modules/kvision-moment/src/main/kotlin/pl/treksoft/kvision/moment/Moment.kt
index 39e7c2dc..5f21bfe2 100644
--- a/kvision-modules/kvision-moment/src/main/kotlin/pl/treksoft/kvision/moment/Moment.kt
+++ b/kvision-modules/kvision-moment/src/main/kotlin/pl/treksoft/kvision/moment/Moment.kt
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2017-present Robert Jaros
+ * Copyright (c) 2019-present Robert Cronin
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
diff --git a/kvision-modules/kvision-pace/build.gradle b/kvision-modules/kvision-pace/build.gradle
index d577df20..238f9efa 100644
--- a/kvision-modules/kvision-pace/build.gradle
+++ b/kvision-modules/kvision-pace/build.gradle
@@ -4,6 +4,10 @@ kotlinFrontend {
npm {
dependency("pace-progressbar", "1.0.8")
+ devDependency("karma", "3.1.4")
+ devDependency("karma-chrome-launcher", "2.2.0")
+ devDependency("karma-webpack", "3.0.5")
+ devDependency("qunit", "2.8.0")
}
} \ No newline at end of file
diff --git a/kvision-modules/kvision-pace/src/main/kotlin/pl/treksoft/kvision/KVManagerPace.kt b/kvision-modules/kvision-pace/src/main/kotlin/pl/treksoft/kvision/KVManagerPace.kt
index 38a83fb5..9678d1fa 100644
--- a/kvision-modules/kvision-pace/src/main/kotlin/pl/treksoft/kvision/KVManagerPace.kt
+++ b/kvision-modules/kvision-pace/src/main/kotlin/pl/treksoft/kvision/KVManagerPace.kt
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2017-present Robert Jaros
+ * Copyright (c) 2019-present Robert Cronin
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -26,10 +27,13 @@ internal val kVManagerPaceInit = KVManagerPace.init()
/**
* Internal singleton object which initializes and configures KVision Moment module.
*/
+@Suppress("EmptyCatchBlock", "TooGenericExceptionCaught")
internal object KVManagerPace {
- fun init() {}
+ fun init() {
+ }
private val pace = try {
require("pace-progressbar").default
- } catch (e: Throwable) {}
+ } catch (e: Throwable) {
+ }
}
diff --git a/kvision-modules/kvision-pace/src/main/kotlin/pl/treksoft/kvision/pace/Pace.kt b/kvision-modules/kvision-pace/src/main/kotlin/pl/treksoft/kvision/pace/Pace.kt
index a5d80908..d5c77534 100644
--- a/kvision-modules/kvision-pace/src/main/kotlin/pl/treksoft/kvision/pace/Pace.kt
+++ b/kvision-modules/kvision-pace/src/main/kotlin/pl/treksoft/kvision/pace/Pace.kt
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2017-present Robert Jaros
+ * Copyright (c) 2019-present Robert Cronin
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -22,108 +23,125 @@
package pl.treksoft.kvision.pace
-import pl.treksoft.kvision.require
-import pl.treksoft.kvision.utils.obj
import org.w3c.dom.events.Event
import org.w3c.dom.get
+import pl.treksoft.kvision.require
+import pl.treksoft.kvision.utils.obj
import kotlin.browser.window
-class PaceAjaxOptions(trackMethods:Array<dynamic>? = null,
- trackWebSockets:Boolean? = null,
- ignoreURLs:Array<dynamic>? = null) {
+class PaceAjaxOptions(
+ trackMethods: Array<dynamic>? = null,
+ trackWebSockets: Boolean? = null,
+ ignoreURLs: Array<dynamic>? = null
+) {
internal var paceAjaxOptionsJs: dynamic = obj {
- if (trackMethods != null) { this.trackMethods = trackMethods }
- if (trackWebSockets != null) { this.trackWebSockets = trackWebSockets }
- if (ignoreURLs != null) { this.ignoreURLs = ignoreURLs }
+ if (trackMethods != null) {
+ this.trackMethods = trackMethods
+ }
+ if (trackWebSockets != null) {
+ this.trackWebSockets = trackWebSockets
+ }
+ if (ignoreURLs != null) {
+ this.ignoreURLs = ignoreURLs
+ }
}
}
-class PaceElementsOptions(minSamples:Int? = null,
- selectors:Array<dynamic>? = null) {
+class PaceElementsOptions(
+ minSamples: Int? = null,
+ selectors: Array<dynamic>? = null
+) {
internal var paceElementsOptionsJs: dynamic = obj {
- if (minSamples != null) { this.minSamples = minSamples }
- if (selectors != null) { this.selectors = selectors }
+ if (minSamples != null) {
+ this.minSamples = minSamples
+ }
+ if (selectors != null) {
+ this.selectors = selectors
+ }
}
}
-class PaceEventLagOptions(minSamples:Int? = null,
- sampleCount:Int? = null,
- lagThreshold:Int? = null) {
+class PaceEventLagOptions(
+ minSamples: Int? = null,
+ sampleCount: Int? = null,
+ lagThreshold: Int? = null
+) {
internal var paceEventLagOptionsJs: dynamic = obj {
- if (minSamples != null) { this.minSamples = minSamples }
- if (sampleCount != null) { this.sampleCount = sampleCount }
- if (lagThreshold != null) { this.lagThreshold = lagThreshold }
+ if (minSamples != null) {
+ this.minSamples = minSamples
+ }
+ if (sampleCount != null) {
+ this.sampleCount = sampleCount
+ }
+ if (lagThreshold != null) {
+ this.lagThreshold = lagThreshold
+ }
}
}
class PaceOptions(
- ajax:PaceAjaxOptions? = null,
- catchupTime:Int? = null,
- easeFactor:Double? = null,
- elements:PaceElementsOptions? = null,
- eventLag:PaceEventLagOptions? = null,
- ghostTime:Int? = null,
- initialRate:Double? = null,
- maxProgressPerFrame:Int? = null,
- minTime:Int? = null,
- restartOnPushState:Boolean? = null,
- restartOnRequestAfter:Double? = null,
- startOnPageLoad:Boolean? = null,
- target:String? = null
+ ajax: PaceAjaxOptions? = null,
+ catchupTime: Int? = null,
+ easeFactor: Double? = null,
+ elements: PaceElementsOptions? = null,
+ eventLag: PaceEventLagOptions? = null,
+ ghostTime: Int? = null,
+ initialRate: Double? = null,
+ maxProgressPerFrame: Int? = null,
+ minTime: Int? = null,
+ restartOnPushState: Boolean? = null,
+ restartOnRequestAfter: Double? = null,
+ startOnPageLoad: Boolean? = null,
+ target: String? = null
) {
internal var paceOptionsJs: dynamic = obj {
- if (ajax != null) { this.ajax = ajax.paceAjaxOptionsJs }
- if (catchupTime != null) { this.catchupTime = catchupTime }
- if (easeFactor != null) { this.easeFactor = easeFactor }
- if (elements != null) { this.elements = elements.paceElementsOptionsJs }
- if (eventLag != null) { this.eventLag = eventLag.paceEventLagOptionsJs }
- if (ghostTime != null) { this.ghostTime = ghostTime }
- if (initialRate != null) { this.initialRate = initialRate }
- if (maxProgressPerFrame != null) { this.maxProgressPerFrame = maxProgressPerFrame }
- if (minTime != null) { this.minTime = minTime }
- if (restartOnPushState != null) { this.restartOnPushState = restartOnPushState }
- if (restartOnRequestAfter != null) { this.restartOnRequestAfter = restartOnRequestAfter }
- if (startOnPageLoad != null) { this.startOnPageLoad = startOnPageLoad }
- if (target != null) { this.target = target }
+ if (ajax != null) {
+ this.ajax = ajax.paceAjaxOptionsJs
+ }
+ if (catchupTime != null) {
+ this.catchupTime = catchupTime
+ }
+ if (easeFactor != null) {
+ this.easeFactor = easeFactor
+ }
+ if (elements != null) {
+ this.elements = elements.paceElementsOptionsJs
+