To make this JS snippet apply to all editors, find a suitable superclass
of these editors and attach ui:headIncludes to subscribe to the event.
For example, try teamwork:EditorApplications as the subject of
ui:headIncludes.
Holger
On 28/03/2017 1:19, Adam Kimball wrote:
Holger,
Thanks for the help. It makes sense that EditRule's don't have a page
context, I had a suspicion I was headed in the wrong direction.
As for your strategy, I look forward to trying it. Is our custom
evnui:Editor the same thing as an Application? I want to subscribe to
the change event across all projects (taxonomies and ontologies). The
comment in evnui:Editor suggests this is the taxonomy side only. If
it is only for taxonomies, what do I need to do to create a new
Application that respects this custom Editor?
Thanks!
Adam
------------------------------------------------------------------------
*From:* [email protected]
<[email protected]> on behalf of Holger Knublauch
<[email protected]>
*Sent:* Thursday, March 23, 2017 4:59:29 PM
*To:* [email protected]
*Subject:* Re: [topbraid-users] Invoking Javascript for an EditRule
Hi Adam,
edit rules are executed in their own little sandbox and do not produce
output. So you cannot use them to inject <script> tags into the result
page.
What I think you want to do is to add an event subscription to the
event org.topbraid.swa.change. In SWA (in your application if you have
any), this can be done similar to what swa:EditableGridGadget does:
<swa:Subscribe arg:code="swa.handleChangeForGrid(data, '{= ?gridId
}')" arg:event="org.topbraid.swa.change"/>
which amounts to a JavaScript call of swa.registerSubscription. This
gives you a JSON structure as data (inspect in the browser) with
pointers about which resources have been changed. You can then perform
side effects on the client.
HTH
Holger
On 24/03/2017 0:11, Adam Kimball wrote:
Hi all,
I am working on functionality that will notify dependent systems when
certain resources change in EVN. I've got the EditRule/CommitRule
sorting through the added/deleted graphs and now want to invoke a
javascript function for each one. A simplified snippet is:
<ui:group let:tagId="{= teamwork:currentTagId() }" let:teamGraph="{=
teamwork:currentTeamGraph() }">
<ui:if ui:condition="{= (!bound(?tagId)) && bound(?teamGraph) }">
<ui:call ui:template="hw-int-spin:ChangedAssetsTemplate" ui:varName="rs">
<ui:forEach ui:resultSet="{= ?rs }">
<ui:group let:x="{=
smf:trace("{?hw_resource}") }"/>
<script type="text/javascript">hw.notifyCacheOfChange('{=
?hw_resource }');</script>
</ui:forEach>
</ui:call>
</ui:if>
</ui:group>
The Javascript file that defines the function notifyCacheOfChange is
linked registered in ui:headIncludes via:
<ui:group>
<script src="{= ui:lib() }/hw/js/hw.js" type="text/javascript"/>
</ui:group>
Using my Javascript Console in Chrome, I see that the
hw.notifyCacheOfChange is in scope and evaluates (simple a
console.log). When I make an edit, I see the trace, but no invocations.
Further, I know the script tag approach is hideous.
It feels like I'm close but no dice yet.
Thanks for your time,
Adam
--
You received this message because you are subscribed to the Google
Group "TopBraid Suite Users", the topics of which include the
TopBraid Suite family of products and its base technologies such as
SPARQLMotion, SPARQL Web Pages and SPIN.
To post to this group, send email to [email protected]
---
You received this message because you are subscribed to the Google
Groups "TopBraid Suite Users" group.
To unsubscribe from this group and stop receiving emails from it,
send an email to [email protected]
<mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>.
--
You received this message because you are subscribed to the Google
Group "TopBraid Suite Users", the topics of which include the TopBraid
Suite family of products and its base technologies such as
SPARQLMotion, SPARQL Web Pages and SPIN.
To post to this group, send email to [email protected]
---
You received this message because you are subscribed to the Google
Groups "TopBraid Suite Users" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected]
<mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google
Group "TopBraid Suite Users", the topics of which include the TopBraid
Suite family of products and its base technologies such as
SPARQLMotion, SPARQL Web Pages and SPIN.
To post to this group, send email to [email protected]
---
You received this message because you are subscribed to the Google
Groups "TopBraid Suite Users" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected]
<mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Group "TopBraid
Suite Users", the topics of which include the TopBraid Suite family of products and
its base technologies such as SPARQLMotion, SPARQL Web Pages and SPIN.
To post to this group, send email to [email protected]
---
You received this message because you are subscribed to the Google Groups "TopBraid Suite Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.