1 include "Simantics/DB"
\r
2 include "Simantics/Ontologies"
\r
3 include "Simantics/Variables"
\r
4 include "Spreadsheet/All"
\r
6 createSCLQueryAction :: Resource -> <Proc> ()
\r
7 createSCLQueryAction res = do
\r
8 syncWrite (\() -> createSCLQueryDefault res)
\r
11 createSCLQueryTypeAction :: Resource -> <Proc> ()
\r
12 createSCLQueryTypeAction res = do
\r
13 syncWrite (\() -> createSCLQueryTypeDefault res)
\r
16 createSCLQueryDefault :: Resource -> Resource -> <WriteGraph> Resource
\r
17 createSCLQueryDefault library queryType = createSCLQuery library queryType $ findFreshEscapedName "Query" library
\r
19 createSCLQuery :: Resource -> Resource -> String -> <WriteGraph> Resource
\r
20 createSCLQuery library queryType name = do
\r
22 module = newResource ()
\r
23 claim module L0.InstanceOf queryType
\r
24 claimRelatedValue module L0.HasName name
\r
25 claim module L0.PartOf library
\r
26 sheet = createSheet module "Sheet"
\r
27 range = createRange sheet SHEET.ExpressionRange "Range1" "queryCells $ sheetQueryValue self input"
\r
28 addCommentMetadata ("Created SCL Query " + name)
\r
31 createSCLQueryTypeDefault :: Resource -> <WriteGraph> Resource
\r
32 createSCLQueryTypeDefault library = createSCLQueryType library $ findFreshEscapedName "QueryType" library
\r
34 createSCLQueryType :: Resource -> String -> <WriteGraph> Resource
\r
35 createSCLQueryType library name = do
\r
37 queryType = newResource ()
\r
38 claim queryType L0.Inherits MOD.SCLQuery
\r
39 claimRelatedValue queryType L0.HasName name
\r
40 claimAssertion MOD.SCLQuery.values $ createSCLValueIndependent MOD.SCLQuery.Value "[]"
\r
41 claim queryType L0.PartOf library
\r
42 addCommentMetadata ("Created SCL Query Type " + name)
\r
45 queryValue :: Variable -> Variable -> <ReadGraph> a
\r
46 queryValue variable input = do
\r
47 untypedValue $ browse (makeProxyVariable variable input) "#values"
\r
49 sheetQueryVariable :: Variable -> Variable -> <ReadGraph> Variable
\r
50 sheetQueryVariable self input = do
\r
51 query = variableParent $ proxyVariableBase self
\r
52 makeProxyVariable query input
\r
54 sheetQueryValue :: Variable -> Variable -> <ReadGraph> a
\r
55 sheetQueryValue self input = do
\r
56 var = sheetQueryVariable self input
\r
57 untypedValue $ browse var "#values"
\r
59 importJava "org.simantics.db.layer0.variable.ProxyVariables" where
\r
60 inputVariable :: Variable -> <ReadGraph> Variable
\r
61 sessionVariable :: Variable -> <ReadGraph> Variable
\r
62 proxyVariableBase :: Variable -> <ReadGraph> Variable
\r
63 makeProxyVariable :: Variable -> Variable -> <ReadGraph> Variable
\r