]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network/scl/Simantics/District.scl
Select midpoint of network branches for flow velocity arrows.
[simantics/district.git] / org.simantics.district.network / scl / Simantics / District.scl
index b99442e6b0177c9e5e3c032c0ff42eadb029a1cf..2f46d361ded6b3eb212bec13d941e1dd6288b11a 100644 (file)
@@ -85,6 +85,15 @@ importJava "org.simantics.district.network.DistrictNetworkUtil" where
     createVertex :: Resource -> Vector Double -> Resource -> <WriteGraph, Proc> Resource
     createEdge :: Resource -> Resource -> <WriteGraph, Proc> Resource
 
     createVertex :: Resource -> Vector Double -> Resource -> <WriteGraph, Proc> Resource
     createEdge :: Resource -> Resource -> <WriteGraph, Proc> Resource
 
+"""
+Tries to look for the Resource representing the configuration component
+mapped to the specified district network diagram element.
+"""
+possibleMappedComponent :: Resource -> <ReadGraph> Maybe Resource
+possibleMappedComponent r = match possibleObject r DN.MappedComponent with
+    Nothing -> Nothing
+    Just me -> possibleObject me MOD.ElementToComponent
+
 """
 Tries to look for the Variable representing the configuration component
 mapped to the specified district network diagram element.
 """
 Tries to look for the Variable representing the configuration component
 mapped to the specified district network diagram element.
@@ -93,28 +102,49 @@ The variable returned is by default the active experiment context variable
 but if that is not available then a configuration context variable is returned.
 """
 possibleMappedComponentVariable :: Resource -> <ReadGraph> Maybe Variable
 but if that is not available then a configuration context variable is returned.
 """
 possibleMappedComponentVariable :: Resource -> <ReadGraph> Maybe Variable
-possibleMappedComponentVariable r = match possibleObject r DN.MappedComponent with
+possibleMappedComponentVariable r = match possibleMappedComponent r with
     Nothing -> Nothing
     Nothing -> Nothing
-    Just me -> match possibleObject me MOD.ElementToComponent with
-        Nothing -> Nothing
-        Just mc -> do
-            mcv = resourceVariable mc
-            match possibleActiveVariable mcv with
-                Nothing -> Just mcv
-                a       -> a
+    Just mc -> do
+        mcv = resourceVariable mc
+        match possibleActiveVariable mcv with
+            Nothing -> Just mcv
+            a       -> a
 
 """
 """
 
 """
 """
-possibleMappedComponentPropertyValue :: String -> Resource -> <ReadGraph> Maybe Double
+possibleMappedComponentPropertyValue :: Serializable a => Typeable a => String -> Resource -> <ReadGraph> Maybe a
 possibleMappedComponentPropertyValue propName r = match possibleMappedComponentVariable r with
     Nothing -> Nothing
     Just mv -> possiblePropertyValue mv propName
 
 """
 """
 possibleMappedComponentPropertyValue propName r = match possibleMappedComponentVariable r with
     Nothing -> Nothing
     Just mv -> possiblePropertyValue mv propName
 
 """
 """
-mappedComponentPropertyValue :: Double -> String -> Resource -> <ReadGraph> Double
+mappedComponentPropertyValue :: Serializable a => Typeable a => a -> String -> Resource -> <ReadGraph> a
 mappedComponentPropertyValue def propName r = match possibleMappedComponentVariable r with
     Nothing -> def
     Just mv -> match possiblePropertyValue mv propName with
         Nothing -> def
         Just v  -> v
 mappedComponentPropertyValue def propName r = match possibleMappedComponentVariable r with
     Nothing -> def
     Just mv -> match possiblePropertyValue mv propName with
         Nothing -> def
         Just v  -> v
+
+"""
+Returns possible district network element that is mapped to the
+specified model configuration component. The DN element is found
+using the following relation path:
+
+    domain model configuration component ---[MOD.ComponentToElement]---> domain model diagram element
+                                         ----[DN.MappedFromElement]----> district network diagram element
+"""
+possibleDNElementMappedToComponent :: Resource -> <ReadGraph> Maybe Resource
+possibleDNElementMappedToComponent mappedComponent = match possibleObject mappedComponent MOD.ComponentToElement with
+    Nothing      -> Nothing
+    Just element -> possibleObject element DN.MappedFromElement
+
+"""
+Returns all district network elements that are found to be mapped the
+specified mapped model configuration components by
+[possibleDNElementMappedToComponent](possibleDNElementMappedToComponent).
+
+The result list can be smaller than the input resource list, even empty.
+"""
+dnElementsMappedToComponents :: [Resource] -> <ReadGraph> [Resource]
+dnElementsMappedToComponents mappedComponents = mapMaybe possibleDNElementMappedToComponent mappedComponents