]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling/scl/Simantics/Subscription.scl
Merge branch 'feature/funcwrite'
[simantics/platform.git] / bundles / org.simantics.modeling / scl / Simantics / Subscription.scl
index 7adc20420b6e316a1f432d54953e92553ed1cfa2..01bc3f0580a4f366d8a85b00cdb5a322507831f5 100644 (file)
-import "Simantics/DB"\r
-import "Simantics/Variables"\r
-import "Simantics/Entity"\r
-import "Simantics/Model"\r
-import "http://www.simantics.org/Modeling-1.2" as MOD\r
-\r
-type Subscription = Resource\r
-type SubscriptionFolder = Resource\r
-\r
-importJava "org.simantics.modeling.subscription.SCLSubscription" where \r
-    @JavaName addSubscriptionItems\r
-    """\r
-Creates new Subscription with the given Variable under the given SubscriptionFolder.\r
-\r
-**Input 1:** Subscription folder in which subscription is wanbted to be created as **Resource**\r
-\r
-**Input 2:** Wanted module attribute from which subscription is to be created as **Variable**\r
-\r
-**Output:** The newly created subscription as **Resource**\r
-\r
-Example: Model contains two subscription folders called **Default** and **Pressure subscriptions of the model**. Let's fetch them and add one new subscription\r
-of module PO01 attribute PO11_PRESSURE to the latter folder.\r
-\r
-    import "Apros/Model"\r
-    import "Apros/Module"\r
-    import "Simantics/Diagram"\r
-    import "Apros/Variables"\r
-    import "Simantics/Subscription"\r
-    my_model = model "Model"\r
-    my_diagram = diagram my_model ["NewGenericDiagram"]\r
-    my_component = getComponent my_model "PO01"\r
-    my_variable_uri = stateVariableUri my_model my_diagram my_component "PO11_PRESSURE"\r
-    my_variable = getStateVariable my_variable_uri\r
-    my_subscription_folder_list = subscriptionFoldersOf my_model\r
-    my_subscription_folder_list\r
-    \r
-    > [#430091, #386608]\r
-    \r
-    print(labelOf(my_subscription_folder_list!0))\r
-\r
-    > Pressure subscriptions of the model\r
-\r
-    print(labelOf(my_subscription_folder_list!1))\r
-\r
-    > Default\r
-    \r
-    addSubscriptionInFolder (my_subscription_folder_list!0) my_variable\r
-\r
-    > #430094    \r
-    \r
-    """\r
-    addSubscriptionInFolder :: SubscriptionFolder -> Variable -> <WriteGraph> Subscription\r
-\r
-    @JavaName newSubscriptionItem\r
-    """\r
-Creates new Subscription with advanced options for user to define non-default parameters.\r
-\r
-**Input 1:** Wanted subscription folder as **Resource**\r
-\r
-**Input 2:** Wanted variable from which the subscription is done as **Variable**\r
-\r
-**Input 3:** Sampling interval as **Double**\r
-\r
-**Input 4:** Deadband as **Double**\r
-\r
-**Input 5:** Gain as **Double**\r
-\r
-**Input 6:** Bias as **Double**\r
-\r
-**Input 7:** Unit as **String**\r
-\r
-**Input 8:** Label as **String**\r
-\r
-**Output:** The newly created subscription as **Resource**\r
-    \r
-Example: Let's add a subscription of module **PO01** attribute **PO11_PRESSURE** to the default subscription folder. This point is \r
-located on diagram **NewGenericDiagram** in a model called **Model**. We want to have unit to be shown as bars, so lets define gain as **10**.\r
-Also lets define sampling interval to be **5 seconds** and label as **Pressure at point PO01**\r
-    \r
-    import "Apros/Model"\r
-    import "Apros/Module"\r
-    import "Simantics/Diagram"\r
-    import "Apros/Variables"\r
-    import "Simantics/Subscription"\r
-    my_model = model "Model"\r
-    my_diagram = diagram my_model ["NewGenericDiagram"]\r
-    my_component = getComponent my_model "PO01"\r
-    my_variable_uri = stateVariableUri my_model my_diagram my_component "PO11_PRESSURE"\r
-    my_variable = getStateVariable my_variable_uri\r
-    my_subscription_folder = defaultSubscriptionFolder my_model\r
-    newSubscription my_subscription_folder my_variable 5 0 10 0 "Bar" "Pressure at point PO01"\r
-\r
-    #430173\r
-    \r
-    """\r
-    newSubscription :: SubscriptionFolder -> Variable -> Double -> Double -> Double -> Double -> String -> String -> <WriteGraph> Subscription\r
-    \r
-    @JavaName addSubscriptionFolder\r
-    """\r
-Creates new SubscriptionFolder under the given Model. Parameter String defines the name of the folder.\r
-\r
-**Input 1:** Model in which new subscription folder is wanted to be created as **Model**\r
-\r
-**Input 2:** Wanted name for the new subscription folder as **String**\r
-\r
-**Output:** The newly created subscription folder as **Resource**\r
-\r
-Example:\r
-\r
-    import "Apros/Model"\r
-    import "Simantics/Subscription"\r
-    my_model = model "Model"\r
-    addSubscriptionFolder my_model "Pressure subscriptions of the model"\r
-\r
-    #430186\r
-    """\r
-    addSubscriptionFolder :: Model -> String -> <WriteGraph> SubscriptionFolder\r
-    \r
-    @JavaName defaultSubscriptionFolder\r
-    """\r
-Browses the given Model for its default SubscriptionFolder with name "Default" and then returns it. If folder is not found, returns a random SubscriptionFolder\r
-\r
-**Input 1:** Model which default subscription folder is wanted to be obtained as **Model**\r
-\r
-**Output:** The default subscription folder as **Resource**\r
-\r
-Example:\r
-\r
-    import "Apros/Model"\r
-    import "Simantics/Subscription"\r
-    my_model = model "Model"\r
-    defaultSubscriptionFolder my_model\r
-\r
-    #386608\r
-\r
-    """\r
-    defaultSubscriptionFolder :: Model -> <ReadGraph> SubscriptionFolder\r
-    \r
-    @JavaName getLabel\r
-    getSubscriptionLabel :: Subscription -> <ReadGraph> String\r
-\r
-"""\r
-Creates new Subscription with the given Variable to the Variables models default SubscriptionFolder.\r
-\r
-**Input 1:** Wanted module attribute from which subscription is to be created as **Variable**\r
-\r
-**Output:** The newly created subscription as **Resource**\r
-\r
-Example: create a subscription of module PO01 attribute PO11_PRESSURE to the default subscription folder with default options.\r
-\r
-    import "Apros/Model"\r
-    import "Apros/Module"\r
-    import "Simantics/Diagram"\r
-    import "Apros/Variables"\r
-    import "Simantics/Subscription"\r
-    my_model = model "Model"\r
-    my_diagram = diagram my_model ["NewGenericDiagram"]\r
-    my_component = getComponent my_model "PO01"\r
-    my_variable_uri = stateVariableUri my_model my_diagram my_component "PO11_PRESSURE"\r
-    my_variable = getStateVariable my_variable_uri\r
-    addSubscription my_variable\r
-    \r
-    #430121\r
-\r
-"""\r
-addSubscription :: Variable -> <WriteGraph,ReadGraph> Subscription\r
-addSubscription variable = do\r
-    model = modelOfVariable variable\r
-    default = defaultSubscriptionFolder model\r
-    addSubscriptionInFolder default variable\r
-\r
-"""\r
-Browses the given Model for its SubscriptionFolders and then returns them in a list.\r
-\r
-**Input 1:** Model which subscription folders are wanted as **Model**\r
-\r
-**Output:** List which elements are subscription folder **Resources**\r
-\r
-Example: Model contains two subscription folders called **Default** and **Pressure subscriptions of the model**. Let's fetch them and print out their names.\r
-\r
-    import "Apros/Model"\r
-    import "Simantics/Subscription"\r
-    my_model = model "Model"\r
-    my_subscription_folder_list = subscriptionFoldersOf my_model\r
-    my_subscription_folder_list\r
-\r
-    [#386608, #430189]\r
-\r
-    print(labelOf(my_subscription_folder_list!0))\r
-\r
-    Default\r
-\r
-    print(labelOf(my_subscription_folder_list!1))\r
-\r
-    Pressure subscriptions of the model\r
-\r
-"""\r
-subscriptionFoldersOf :: Model -> <ReadGraph> [SubscriptionFolder]\r
-subscriptionFoldersOf model = recurse (toResource model)\r
-  where\r
-    recurse r = do\r
-        cs = resourceChildrenOf r\r
-        folders = map fromResource $ filter isSubscriptionFolder cs\r
-        folders\r
-    isSubscriptionFolder r = isInstanceOf r MOD.Subscription\r
+import "Simantics/DB"
+import "Simantics/Variables"
+import "Simantics/Entity"
+import "Simantics/Model"
+import "http://www.simantics.org/Modeling-1.2" as MOD
+
+type Subscription = Resource
+type SubscriptionFolder = Resource
+
+importJava "org.simantics.modeling.subscription.SCLSubscription" where 
+    @JavaName addSubscriptionItems
+    """
+Creates new Subscription with the given Variable under the given SubscriptionFolder.
+
+**Input 1:** Subscription folder in which subscription is wanbted to be created as **Resource**
+
+**Input 2:** Wanted module attribute from which subscription is to be created as **Variable**
+
+**Output:** The newly created subscription as **Resource**
+
+Example: Model contains two subscription folders called **Default** and **Pressure subscriptions of the model**. Let's fetch them and add one new subscription
+of module PO01 attribute PO11_PRESSURE to the latter folder.
+
+    import "Apros/Model"
+    import "Apros/Module"
+    import "Simantics/Diagram"
+    import "Apros/Variables"
+    import "Simantics/Subscription"
+    my_model = model "Model"
+    my_diagram = diagram my_model ["NewGenericDiagram"]
+    my_component = getComponent my_model "PO01"
+    my_variable_uri = stateVariableUri my_model my_diagram my_component "PO11_PRESSURE"
+    my_variable = getStateVariable my_variable_uri
+    my_subscription_folder_list = subscriptionFoldersOf my_model
+    my_subscription_folder_list
+    
+    > [#430091, #386608]
+    
+    print(labelOf(my_subscription_folder_list!0))
+
+    > Pressure subscriptions of the model
+
+    print(labelOf(my_subscription_folder_list!1))
+
+    > Default
+    
+    addSubscriptionInFolder (my_subscription_folder_list!0) my_variable
+
+    > #430094    
+    
+    """
+    addSubscriptionInFolder :: SubscriptionFolder -> Variable -> <WriteGraph> Subscription
+
+    @JavaName newSubscriptionItem
+    """
+Creates new Subscription with advanced options for user to define non-default parameters.
+
+**Input 1:** Wanted subscription folder as **Resource**
+
+**Input 2:** Wanted variable from which the subscription is done as **Variable**
+
+**Input 3:** Sampling interval as **Double**
+
+**Input 4:** Deadband as **Double**
+
+**Input 5:** Gain as **Double**
+
+**Input 6:** Bias as **Double**
+
+**Input 7:** Unit as **String**
+
+**Input 8:** Label as **String**
+
+**Output:** The newly created subscription as **Resource**
+    
+Example: Let's add a subscription of module **PO01** attribute **PO11_PRESSURE** to the default subscription folder. This point is 
+located on diagram **NewGenericDiagram** in a model called **Model**. We want to have unit to be shown as bars, so lets define gain as **10**.
+Also lets define sampling interval to be **5 seconds** and label as **Pressure at point PO01**
+    
+    import "Apros/Model"
+    import "Apros/Module"
+    import "Simantics/Diagram"
+    import "Apros/Variables"
+    import "Simantics/Subscription"
+    my_model = model "Model"
+    my_diagram = diagram my_model ["NewGenericDiagram"]
+    my_component = getComponent my_model "PO01"
+    my_variable_uri = stateVariableUri my_model my_diagram my_component "PO11_PRESSURE"
+    my_variable = getStateVariable my_variable_uri
+    my_subscription_folder = defaultSubscriptionFolder my_model
+    newSubscription my_subscription_folder my_variable 5 0 10 0 "Bar" "Pressure at point PO01"
+
+    #430173
+    
+    """
+    newSubscription :: SubscriptionFolder -> Variable -> Double -> Double -> Double -> Double -> String -> String -> <WriteGraph> Subscription
+    
+    @JavaName addSubscriptionFolder
+    """
+Creates new SubscriptionFolder under the given Model. Parameter String defines the name of the folder.
+
+**Input 1:** Model in which new subscription folder is wanted to be created as **Model**
+
+**Input 2:** Wanted name for the new subscription folder as **String**
+
+**Output:** The newly created subscription folder as **Resource**
+
+Example:
+
+    import "Apros/Model"
+    import "Simantics/Subscription"
+    my_model = model "Model"
+    addSubscriptionFolder my_model "Pressure subscriptions of the model"
+
+    #430186
+    """
+    addSubscriptionFolder :: Model -> String -> <WriteGraph> SubscriptionFolder
+    
+    @JavaName defaultSubscriptionFolder
+    """
+Browses the given Model for its default SubscriptionFolder with name "Default" and then returns it. If folder is not found, returns a random SubscriptionFolder
+
+**Input 1:** Model which default subscription folder is wanted to be obtained as **Model**
+
+**Output:** The default subscription folder as **Resource**
+
+Example:
+
+    import "Apros/Model"
+    import "Simantics/Subscription"
+    my_model = model "Model"
+    defaultSubscriptionFolder my_model
+
+    #386608
+
+    """
+    defaultSubscriptionFolder :: Model -> <ReadGraph> SubscriptionFolder
+    
+    @JavaName getLabel
+    getSubscriptionLabel :: Subscription -> <ReadGraph> String
+
+"""
+Creates new Subscription with the given Variable to the Variables models default SubscriptionFolder.
+
+**Input 1:** Wanted module attribute from which subscription is to be created as **Variable**
+
+**Output:** The newly created subscription as **Resource**
+
+Example: create a subscription of module PO01 attribute PO11_PRESSURE to the default subscription folder with default options.
+
+    import "Apros/Model"
+    import "Apros/Module"
+    import "Simantics/Diagram"
+    import "Apros/Variables"
+    import "Simantics/Subscription"
+    my_model = model "Model"
+    my_diagram = diagram my_model ["NewGenericDiagram"]
+    my_component = getComponent my_model "PO01"
+    my_variable_uri = stateVariableUri my_model my_diagram my_component "PO11_PRESSURE"
+    my_variable = getStateVariable my_variable_uri
+    addSubscription my_variable
+    
+    #430121
+
+"""
+addSubscription :: Variable -> <WriteGraph,ReadGraph> Subscription
+addSubscription variable = do
+    model = modelOfVariable variable
+    default = defaultSubscriptionFolder model
+    addSubscriptionInFolder default variable
+
+"""
+Browses the given Model for its SubscriptionFolders and then returns them in a list.
+
+**Input 1:** Model which subscription folders are wanted as **Model**
+
+**Output:** List which elements are subscription folder **Resources**
+
+Example: Model contains two subscription folders called **Default** and **Pressure subscriptions of the model**. Let's fetch them and print out their names.
+
+    import "Apros/Model"
+    import "Simantics/Subscription"
+    my_model = model "Model"
+    my_subscription_folder_list = subscriptionFoldersOf my_model
+    my_subscription_folder_list
+
+    [#386608, #430189]
+
+    print(labelOf(my_subscription_folder_list!0))
+
+    Default
+
+    print(labelOf(my_subscription_folder_list!1))
+
+    Pressure subscriptions of the model
+
+"""
+subscriptionFoldersOf :: Model -> <ReadGraph> [SubscriptionFolder]
+subscriptionFoldersOf model = recurse model
+  where
+    recurse r = filter isSubscriptionFolder (children r)
+    isSubscriptionFolder r = isInstanceOf r MOD.Subscription