Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions client/src/main/kotlin/org/imdc/extensions/client/ClientHook.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@ package org.imdc.extensions.client

import com.inductiveautomation.ignition.client.model.ClientContext
import com.inductiveautomation.ignition.common.BundleUtil
import com.inductiveautomation.ignition.common.expressions.ExpressionFunctionManager
import com.inductiveautomation.ignition.common.licensing.LicenseState
import com.inductiveautomation.ignition.common.script.ScriptManager
import com.inductiveautomation.vision.api.client.AbstractClientModuleHook
import org.imdc.extensions.common.DatasetExtensions
import org.imdc.extensions.common.ExtensionDocProvider
import org.imdc.extensions.common.UtilitiesExtensions
import org.imdc.extensions.common.addPropertyBundle
import org.imdc.extensions.common.expressions.IsAvailableFunction

@Suppress("unused")
class ClientHook : AbstractClientModuleHook() {
Expand All @@ -31,4 +33,14 @@ class ClientHook : AbstractClientModuleHook() {
addScriptModule("system.project", ClientProjectExtensions(context), ExtensionDocProvider)
}
}

override fun configureFunctionFactory(factory: ExpressionFunctionManager) {
factory.apply {
addFunction(
IsAvailableFunction.NAME,
IsAvailableFunction.CATEGORY,
IsAvailableFunction(),
)
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package org.imdc.extensions.common.expressions

import com.inductiveautomation.ignition.common.expressions.Expression
import com.inductiveautomation.ignition.common.expressions.functions.AbstractFunction
import com.inductiveautomation.ignition.common.model.values.BasicQualifiedValue
import com.inductiveautomation.ignition.common.model.values.QualifiedValue
import com.inductiveautomation.ignition.common.model.values.QualityCode

class IsAvailableFunction : AbstractFunction() {
override fun validateNumArgs(num: Int): Boolean = num == 1
override fun execute(expressions: Array<out Expression>): QualifiedValue {
val qualifiedValue = expressions[0].execute()
val value =
qualifiedValue.quality.isNot(QualityCode.Bad_NotFound) && qualifiedValue.quality.isNot(QualityCode.Bad_Disabled)
return BasicQualifiedValue(value)
}

override fun getArgDocString(): String = "value"
override fun getFunctionDisplayName(): String = NAME
override fun getType(): Class<*> = Boolean::class.java

companion object {
const val NAME = "isAvailable"
const val CATEGORY = "Logic"
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.imdc.extensions.designer

import com.inductiveautomation.ignition.common.BundleUtil
import com.inductiveautomation.ignition.common.expressions.ExpressionFunctionManager
import com.inductiveautomation.ignition.common.licensing.LicenseState
import com.inductiveautomation.ignition.common.script.ScriptManager
import com.inductiveautomation.ignition.designer.model.AbstractDesignerModuleHook
Expand All @@ -9,6 +10,7 @@ import org.imdc.extensions.common.DatasetExtensions
import org.imdc.extensions.common.ExtensionDocProvider
import org.imdc.extensions.common.UtilitiesExtensions
import org.imdc.extensions.common.addPropertyBundle
import org.imdc.extensions.common.expressions.IsAvailableFunction

@Suppress("unused")
class DesignerHook : AbstractDesignerModuleHook() {
Expand All @@ -31,4 +33,14 @@ class DesignerHook : AbstractDesignerModuleHook() {
addScriptModule("system.project", DesignerProjectExtensions(context), ExtensionDocProvider)
}
}

override fun configureFunctionFactory(factory: ExpressionFunctionManager) {
factory.apply {
addFunction(
IsAvailableFunction.NAME,
IsAvailableFunction.CATEGORY,
IsAvailableFunction(),
)
}
}
}
12 changes: 12 additions & 0 deletions gateway/src/main/kotlin/org/imdc/extensions/gateway/GatewayHook.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.imdc.extensions.gateway

import com.inductiveautomation.ignition.common.BundleUtil
import com.inductiveautomation.ignition.common.expressions.ExpressionFunctionManager
import com.inductiveautomation.ignition.common.licensing.LicenseState
import com.inductiveautomation.ignition.common.script.ScriptManager
import com.inductiveautomation.ignition.gateway.model.AbstractGatewayModuleHook
Expand All @@ -9,6 +10,7 @@ import org.imdc.extensions.common.DatasetExtensions
import org.imdc.extensions.common.ExtensionDocProvider
import org.imdc.extensions.common.UtilitiesExtensions
import org.imdc.extensions.common.addPropertyBundle
import org.imdc.extensions.common.expressions.IsAvailableFunction

@Suppress("unused")
class GatewayHook : AbstractGatewayModuleHook() {
Expand All @@ -35,6 +37,16 @@ class GatewayHook : AbstractGatewayModuleHook() {
}
}

override fun configureFunctionFactory(factory: ExpressionFunctionManager) {
factory.apply {
addFunction(
IsAvailableFunction.NAME,
IsAvailableFunction.CATEGORY,
IsAvailableFunction(),
)
}
}

override fun isFreeModule(): Boolean = true
override fun isMakerEditionCompatible(): Boolean = true
}