> > It is not simple like using "isInput" OK :-) then how about
var isSudharmasVeryComplexLogic = ... // true or false then you don't need any logic in the HBS. Just kidding... well... kinda, but not really. The idea of a view-model is that, it is already processed enough, so it can be rendered without any extra logic. Can you give a small sample of the use-case where you need to "compare by values *inside *the template"? On Thu, Jun 16, 2016 at 7:22 AM, Sudharma Subasinghe <[email protected]> wrote: > Hi Manuranga, > > It is not simple like using "isInput", "isTextArea" for my scenario, as it > is needed to compare by values inside the template. But HBS does not > provide comparing using values inside if-else conditions. So have to > implement Handlebar helper to support that logic. Is it okay to implement a > HBS helper to use with view model? > > On Wed, Jun 15, 2016 at 8:35 PM, Manuranga Perera <[email protected]> wrote: > >> Hi Sudarma, Hemika, >> I have started documenting these practices [1] >> Please point me to any problem arias and your personal finding that you >> think are import, so I can add them to the doc. >> >> >> [1] https://docs.wso2.com/display/UUF100/Code+Review >> >> On Wed, Jun 15, 2016 at 11:01 AM, Manuranga Perera <[email protected]> wrote: >> >>> Hi Sudharma, >>> In your case, please try to make a view-model, and actually render the >>> view-model using HBS the normal way. >>> >>> func onRequest(){ >>> var myForm = ...; // eg: [{"name": "string"}, {"id": "number" }] >>> ... >>> >>> return toViewModel(myForm); >>> } >>> >>> func toViewModel(formModel){ >>> var viewModel = {element: []}; >>> for (var key in formModel) { >>> if(...){ >>> ... >>> viewModel.elements.push(...) >>> } >>> } >>> return viewModel; // eg: {"element: [{"isInput":true,"id":"name", >>> "label": "Name", "type", "text"}, ...]} >>> } >>> >>> >>> <form> >>> {{each element}} >>> {{#if isInput}} >>> <label for="{{id}}">{{label}}</label> >>> <input type="{{type}}" id="{{id}}"> >>> {{/if}} >>> {{#if isTextAria}} >>> ... >>> {{/if}} >>> ... >>> {{/each}} >>> </form> >>> >>> >>> Hi Sajith,Rasika, >>> >>> We may need to "bake-in" the idea of a view-model to the framework. >>> >>> On Mon, Jun 13, 2016 at 7:24 AM, Sudharma Subasinghe <[email protected] >>> > wrote: >>> >>>> There was a case to generate dynamic form using string such as >>>> "<div>.....</div>" and I had to use {{{ }}} to generate the form >>>> dynamically. >>>> >>>> Hence need a function to resolve this also. >>>> >>>> On Fri, Jun 10, 2016 at 9:07 PM, Ayoma Wijethunga <[email protected]> >>>> wrote: >>>> >>>>> +1 for not using "{{{". >>>>> >>>>> We will further check on adding such patterns ("{{{ * }}}") in planned >>>>> Jenkins based automated security scans (static code analysis). >>>>> >>>>> On Fri, Jun 10, 2016 at 8:47 PM, SajithAR Ariyarathna < >>>>> [email protected]> wrote: >>>>> >>>>>> +1 for abandoning "{{{" >>>>>> >>>>>> toClent("fromBackend.protocols", protocols); >>>>>> >>>>>> We can implement this in the next milestone. >>>>>> >>>>>> On Fri, Jun 10, 2016 at 8:12 PM, Manuranga Perera <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> These are mistakes we have already made in our old systems, let's >>>>>>> not repeat them >>>>>>> >>>>>>> 1) Please DO NOT use "{{{", it introduces SECURITY VULNERABILITIES, >>>>>>> Sajith,Rasika we need to introduce a new function. Don't even tell >>>>>>> people about "{{{" >>>>>>> in backend JS, Hemika should be able to do the following >>>>>>> >>>>>>> toClent("fromBackend.protocols", protocols); >>>>>>> >>>>>>> and in frontend, he should be able to just >>>>>>> console.log(fromBackend.protocols) and see the json >>>>>>> Given the cost of this kind of vulnerabilities, I don't think we >>>>>>> should even do this as a temp solution. We should safe stringify before >>>>>>> sending, view source of gmail and search "var GLOBALS" and you see >>>>>>> how safe json stringify works. ALL non-alpha-numeric has to be encoded >>>>>>> with >>>>>>> \x. Not just " but things like < , which are normally considered safe in >>>>>>> json, has to be encoded [1]. >>>>>>> >>>>>>> 2) We shouldn't manually iterating to convert to JSON. This just >>>>>>> adds unnecessary boilerplate work dev has to do. If we implement (1) we >>>>>>> don't need this for now. So we can discuss this later. But also see [2] >>>>>>> >>>>>>> [1] see "JavaScript Encoding" in >>>>>>> https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet#Output_Encoding_Rules_Summary >>>>>>> [2] >>>>>>> http://mail.openjdk.java.net/pipermail/nashorn-dev/2013-September/002013.html >>>>>>> >>>>>>> On Fri, Jun 10, 2016 at 4:46 AM, Hemika Kodikara <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> Also please note that I used JSON.stringify method in server side >>>>>>>> js. >>>>>>>> >>>>>>>> Hemika Kodikara >>>>>>>> Software Engineer >>>>>>>> WSO2 Inc. >>>>>>>> lean . enterprise . middleware >>>>>>>> http://wso2.com >>>>>>>> >>>>>>>> Mobile : +94777688882 >>>>>>>> >>>>>>>> On Fri, Jun 10, 2016 at 2:13 PM, Hemika Kodikara <[email protected]> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> Thanks Rasika for the solution. >>>>>>>>> >>>>>>>>> In the client side JS, have the following code : >>>>>>>>> >>>>>>>>> <script type="text/javascript"> >>>>>>>>> var protocols = *{{{protocols}}}*; >>>>>>>>> $.each(protocols, function(index, value) { >>>>>>>>> >>>>>>>>> $('#queue-subscription-protocols').append($('<option>').text(value).attr('value', >>>>>>>>> index)); >>>>>>>>> }); >>>>>>>>> </script> >>>>>>>>> >>>>>>>>> Have to use 3 curly braces. >>>>>>>>> >>>>>>>>> Regards, >>>>>>>>> Hemika >>>>>>>>> >>>>>>>>> Hemika Kodikara >>>>>>>>> Software Engineer >>>>>>>>> WSO2 Inc. >>>>>>>>> lean . enterprise . middleware >>>>>>>>> http://wso2.com >>>>>>>>> >>>>>>>>> Mobile : +94777688882 >>>>>>>>> >>>>>>>>> On Fri, Jun 10, 2016 at 2:00 PM, Hemika Kodikara <[email protected]> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Hi Milinda, >>>>>>>>>> >>>>>>>>>> It is not a string array, its actually java objects that is there. >>>>>>>>>> >>>>>>>>>> Hi Sajith, >>>>>>>>>> >>>>>>>>>> I modified the nashorn script as following : >>>>>>>>>> >>>>>>>>>> var onRequest = function (context) { >>>>>>>>>> var protocols = >>>>>>>>>> callOSGiService("org.wso2.andes.kernel.Andes", >>>>>>>>>> "getSupportedProtocols", []); >>>>>>>>>> var protocolStrings = []; >>>>>>>>>> for each (var item in protocols) { >>>>>>>>>> protocolStrings.push(item.toString()); >>>>>>>>>> } >>>>>>>>>> >>>>>>>>>> // var protocolsJson = JSON.stringify(protocolStrings); >>>>>>>>>> return {"protocols" : protocolStrings}; >>>>>>>>>> }; >>>>>>>>>> >>>>>>>>>> I am assigning the "protocols" json value to a javascript >>>>>>>>>> variable in the client-side as following : >>>>>>>>>> >>>>>>>>>> var protocols =* {{protocols}}*; >>>>>>>>>> $.each(protocols, function(index, value) { >>>>>>>>>> >>>>>>>>>> ('#queue-subscription-protocols').append($('<option>').text(value).attr('value', >>>>>>>>>> index)); >>>>>>>>>> }); >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> But I am getting the following errors when rendered the >>>>>>>>>> page(client side js) : >>>>>>>>>> >>>>>>>>>> var protocols = [object Array]; <-- Syntax error >>>>>>>>>> >>>>>>>>>> When I use JSON.stringify in server side js, I get the following >>>>>>>>>> output : >>>>>>>>>> >>>>>>>>>> var protocols = >>>>>>>>>> ["AMQP-0-10","MQTT-default","AMQP-0-91","AMQP-8-0","AMQP-0-9"]; >>>>>>>>>> <-- Unexpected token & >>>>>>>>>> >>>>>>>>>> Any Idea ? >>>>>>>>>> >>>>>>>>>> Regards, >>>>>>>>>> Hemika >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Hemika Kodikara >>>>>>>>>> Software Engineer >>>>>>>>>> WSO2 Inc. >>>>>>>>>> lean . enterprise . middleware >>>>>>>>>> http://wso2.com >>>>>>>>>> >>>>>>>>>> Mobile : +94777688882 >>>>>>>>>> >>>>>>>>>> On Fri, Jun 10, 2016 at 12:51 PM, Milinda Perera < >>>>>>>>>> [email protected]> wrote: >>>>>>>>>> >>>>>>>>>>> Hi Hemika, >>>>>>>>>>> >>>>>>>>>>> If AMQP-0-10, MQTT-default, AMQP-0-91, AMQP-8-0, AMQP-0-9 are >>>>>>>>>>> strings, following should work >>>>>>>>>>> >>>>>>>>>>> JSON.parse("[\"AMQP-0-10\", \"MQTT-default\", \"AMQP-0-91\", >>>>>>>>>>> \"AMQP-8-0\", \"AMQP-0-9\"]") >>>>>>>>>>> >>>>>>>>>>> Accroding to [1] within array " A *value* can be a *string* in >>>>>>>>>>> double quotes, or a *number*, or true or false or null, or an >>>>>>>>>>> *object* or an *array*. These structures can be nested." >>>>>>>>>>> >>>>>>>>>>> [1] http://www.json.org/ >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> Mili >>>>>>>>>>> >>>>>>>>>>> On Fri, Jun 10, 2016 at 12:33 PM, Hemika Kodikara < >>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi All, >>>>>>>>>>>> >>>>>>>>>>>> I am invoking the callOSGiService method in nashorn to get a >>>>>>>>>>>> list of protocols thats in andes of MB. >>>>>>>>>>>> >>>>>>>>>>>> I am getting the following output after invoking the >>>>>>>>>>>> callOSGiService : >>>>>>>>>>>> [AMQP-0-10, MQTT-default, AMQP-0-91, AMQP-8-0, AMQP-0-9] >>>>>>>>>>>> >>>>>>>>>>>> But need to convert it into a javascript array(Probably a >>>>>>>>>>>> String array). Need to bind it to a dropdown(select element). >>>>>>>>>>>> >>>>>>>>>>>> I tried JSON.parse, but getting the following errors : >>>>>>>>>>>> >>>>>>>>>>>> jjs> JSON.parse("[AMQP-0-10, MQTT-default, AMQP-0-91, AMQP-8-0, >>>>>>>>>>>> AMQP-0-9]"); >>>>>>>>>>>> <shell>:1 SyntaxError: Invalid JSON: <json>:1:1 Expected json >>>>>>>>>>>> literal but found ident >>>>>>>>>>>> [AMQP-0-10, MQTT-default, AMQP-0-91, AMQP-8-0, AMQP-0-9] >>>>>>>>>>>> ^ >>>>>>>>>>>> >>>>>>>>>>>> jjs> JSON.parse([AMQP-0-10, MQTT-default, AMQP-0-91, AMQP-8-0, >>>>>>>>>>>> AMQP-0-9]); >>>>>>>>>>>> ECMAScript Exception: SyntaxError: <shell>:1:28 Expected an >>>>>>>>>>>> operand but found default >>>>>>>>>>>> JSON.parse([AMQP-0-10, MQTT-default, AMQP-0-91, AMQP-8-0, >>>>>>>>>>>> AMQP-0-9]); >>>>>>>>>>>> ^ >>>>>>>>>>>> >>>>>>>>>>>> My OSGi method returns a Set<ProtocolType>. >>>>>>>>>>>> >>>>>>>>>>>> How can I achieve this ? >>>>>>>>>>>> >>>>>>>>>>>> Regards, >>>>>>>>>>>> Hemika >>>>>>>>>>>> >>>>>>>>>>>> Hemika Kodikara >>>>>>>>>>>> Software Engineer >>>>>>>>>>>> WSO2 Inc. >>>>>>>>>>>> lean . enterprise . middleware >>>>>>>>>>>> http://wso2.com >>>>>>>>>>>> >>>>>>>>>>>> Mobile : +94777688882 >>>>>>>>>>>> >>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>> Dev mailing list >>>>>>>>>>>> [email protected] >>>>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Milinda Perera >>>>>>>>>>> Software Engineer; >>>>>>>>>>> WSO2 Inc. http://wso2.com , >>>>>>>>>>> Mobile: (+94) 714 115 032 >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> With regards, >>>>>>> *Manu*ranga Perera. >>>>>>> >>>>>>> phone : 071 7 70 20 50 >>>>>>> mail : [email protected] >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Sajith Janaprasad Ariyarathna >>>>>> Software Engineer; WSO2, Inc.; http://wso2.com/ >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Ayoma Wijethunga >>>>> Software Engineer >>>>> Platform Security Team >>>>> WSO2, Inc.; http://wso2.com >>>>> lean.enterprise.middleware >>>>> >>>>> Mobile : +94 (0) 719428123 <+94+(0)+719428123> >>>>> Blog : http://www.ayomaonline.com >>>>> LinkedIn: https://www.linkedin.com/in/ayoma >>>>> >>>>> _______________________________________________ >>>>> Dev mailing list >>>>> [email protected] >>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>> >>>>> >>>> >>>> >>>> -- >>>> Sudharma Subasinghe, >>>> Software Engineer, >>>> WSO2 Inc. >>>> Email: [email protected] <[email protected]> >>>> Mobile : +94 710 565 157 <%2B94%20718%20210%20200> >>>> >>> >>> >>> >>> -- >>> With regards, >>> *Manu*ranga Perera. >>> >>> phone : 071 7 70 20 50 >>> mail : [email protected] >>> >> >> >> >> -- >> With regards, >> *Manu*ranga Perera. >> >> phone : 071 7 70 20 50 >> mail : [email protected] >> > > > > -- > Sudharma Subasinghe, > Software Engineer, > WSO2 Inc. > Email: [email protected] <[email protected]> > Mobile : +94 710 565 157 <%2B94%20718%20210%20200> > -- With regards, *Manu*ranga Perera. phone : 071 7 70 20 50 mail : [email protected]
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
