Calling super? on Inheritable Project script

Is there a way to call the original script method in an Inheritable Project after you have overridden the resource? Usually in OO you can just call super.MethodName, however this doesn’t work in Ignition.

No, overriding is replacing in Ignition’s project inheritance.

So there is no way to access the original method once you do an override?

No. If you still need to call that method from a child project then maybe it shouldn’t be an override?

So there really isn’t TRUE inheritance in Ignition… it’s just a copy… and overriding is really replacing.

It’s not inheritance for the scripting system, it’s inheritance for the project system, which knows nothing about what the contents of resources are or if there should be special behavior like the ability to call a parent script.

2 Likes

So we really need to be prefixing the names objects (scripts, views and what not) in the parent (global) project with something like “Parent” or “Global” so we don’t collide on existing object in the Child project and also so we can reference the Parent project objects.

Yes, that is one way to handle it. That was actually forced in 7.9 in the shared.* scripts. V8 is more powerful with inheritance and multi-level inheritance, but this is a side effect of that flexibility.

We are looking into implementing a crude dependency management system to copy shared resources into the project to avoid using inheritance and keep projects more self contained and have our DevOps process the dependencies on deployment.