Github user Leemoonsoo commented on the pull request:

    https://github.com/apache/incubator-zeppelin/pull/740#issuecomment-190285327
  
    Hi @doanduyhai. Sorry for the late response. I've got some feedbacks here.
    
    ##### two different feature in a function.
    I think it's more clear to provide `z.runParagraph()` than 
`z.angularBind()` has flag of runParagraph.
    Having two different feature in a single function should be avoided.
    
    ##### passing paragraph id.
    It's passing paragraph id or ids using paragraph / paragraphs field in 
Parameters.
    I think it can be improved by considering two perspective. The First one is 
easy of use. User need to repeat paragraph id to series of z.angularBind() 
again and again. e.g.
    ```javascript
    z.angularBind('name1', value1, { paragraph : '20160126-153136_1060166247'})
    z.angularBind('name2', value2, { paragraph : '20160126-153136_1060166247'})
    z.angularBind('name3', value3, { paragraph : '20160126-153136_1060166247'})
    ...
    ```
    Second one is notebook portability, the code now depends on paragraph id 
and it's not portable anymore. If you export notebook and import notebook, the 
code will not work anymore unless user update all paragraph id in the code.
    
    Considering easy of use and notebook portability, i think following style 
of API would help.
    
    ```javascript
    // we can get paragraph id from any html element in the paragraph. 
    // This way, paragraph id is no longer hardcoded so notebook becomes more 
portable.
    var z = getZeppelinContext(htmlElement)     
    
    // user can avoid passing paragraph id repeatedly.
    z.angularBind('name1', value1)
    z.angularBind('name2', value2)
    z.angularBind('name3', value3)
    ```
    
    ##### front-end z.angularBind() call creates/updates angularObject into all 
interpreters binded.
    
    z.angularBind() updates angularObject of all interpreters binded.
    I think it should be update one interpreter who serves that particular 
paragraph.
    
    
    ##### Advantage of having API in both front-end, back-end side
    
    It's more general question. Basically, this PR brings the API that 
currently only back-end side provides.
    There can be Pros and Cons.
    Cons side, if user creates something that mixes both front-end side API and 
back-end side API at the same time, while front-end side(js in webbrowser) and 
back-end side (heterogeneous interpreters) runs asynchronously, i can easily 
imagine understanding behavior of those code will be really difficult.
    Not having front-end API will force user manage all angularObject in one 
side (back-end side), that will help simplicity of use.
    
    Could you explain advantage of having API in both front-end and back-end 
side ?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to