Thanks all for approval. I will start work on it. Regards, -- Amardeep Singh Jhajj www.hotwaxsystems.com
On Tue, Jun 28, 2016 at 11:51 AM, Jacques Le Roux < jacques.le.r...@les7arts.com> wrote: > Fair enough, +1 > > Jacques > > > > Le 28/06/2016 à 07:59, Taher Alkhateeb a écrit : > >> +1 on approach >> On Jun 28, 2016 8:53 AM, "Pranay Pandey" <pranay.pan...@hotwaxsystems.com >> > >> wrote: >> >> +1 Amardeep, mentioned approach is looking reasonable to me. >>> >>> Best regards, >>> >>> Pranay Pandey >>> HotWax Systems >>> http://www.hotwaxsystems.com/ >>> >>> On Tue, Jun 28, 2016 at 11:21 AM, Amardeep Singh Jhajj < >>> amardeep.jh...@hotwaxsystems.com> wrote: >>> >>> Hello Jacques, >>>> >>>> Making branch is a good idea to handle regressions but I would prefer to >>>> work in trunk itself. Here are the things we should consider before >>>> creating new branch: >>>> >>>> 1. Branch can be abandoned, I would prefer to have code changes in trunk >>>> >>> in >>> >>>> proper steps instead of merging the complete branch work later in trunk. >>>> 2. Currently, lot of changes is coming in trunk, so different branch >>>> need >>>> to updated regularly. Its also an additional work. >>>> >>>> To avoid regressions, we can do our work in granular level tasks for >>>> various functionality (wherever needed) and proper testing steps will be >>>> there. The code changes will only be committed after thorough testing. >>>> >>>> First, I would like to start with cleanup of inline javascripts so that >>>> >>> all >>> >>>> javascript code will only in js files which helps us to follow best >>>> practices of javascript. >>>> Here is the steps can be taken to do it: >>>> >>>> 1. Start with one component. For example: Accounting. >>>> 2. Pick its various functionality one by one where javascript is added >>>> inline. >>>> 3. Do cleanup in it. >>>> 4. Do thorough testing for it with testing steps over ticket. >>>> >>>> Once the all cleanup (inline js cleanup) is done, we would have >>>> >>> javascript >>> >>>> files for further work. We can further break the js work by >>>> functionality >>>> (if needed) for improvements. >>>> >>>> The above process will assure us that nothing will break. I will not >>>> work >>>> on this effort alone, the team of developers having two or more year >>>> experience in javascript will work with me. >>>> >>>> I will create the parent ticket for selenium tests as well and we will >>>> >>> see >>> >>>> how we can work on it. >>>> >>>> Thanks & Regards >>>> -- >>>> Amardeep Singh Jhajj >>>> www.hotwaxsystems.com >>>> >>>> On Sat, Jun 25, 2016 at 1:06 PM, Jacques Le Roux < >>>> jacques.le.r...@les7arts.com> wrote: >>>> >>>> Hi Amardeep, >>>>> >>>>> What I mean is we should be cautious. Hence the suggestion to create a >>>>> branch for the refactoring. And to benefit from this opportunity to put >>>>> some Selenium tests related with js (eg: calendar - could also use >>>>> >>>> HTML5 >>> >>>> now -, autocompletion, lookups, dependent dropdowns). That would be a >>>>> >>>> start >>>> >>>>> for Selenium, no needs to have tons of it. A Jira subtask would be >>>>> >>>> perfect. >>>> >>>>> Hope I'm clearer >>>>> >>>>> Thanks >>>>> >>>>> Jacques >>>>> >>>>> >>>>> >>>>> Le 24/06/2016 à 15:53, Amardeep Singh Jhajj a écrit : >>>>> >>>>> Thanks all for approval. >>>>>> >>>>>> Thanks Taher and Deepak for valuable suggestions. I will think on >>>>>> >>>>> them. >>> >>>> Jacques, >>>>>> >>>>>> I am bit confused by your reply, could you please elaborate your >>>>>> >>>>> point. >>> >>>> Regards, >>>>>> -- >>>>>> Amardeep Singh Jhajj >>>>>> >>>>>> >>>>>> On Fri, Jun 24, 2016 at 4:17 PM, Jacques Le Roux < >>>>>> jacques.le.r...@les7arts.com> wrote: >>>>>> >>>>>> Amardeep, >>>>>> >>>>>>> I agree with your points, I'd just request that we do that in a >>>>>>> >>>>>> branch >>> >>>> with a load of UI tests (good occasion to use Selenium). >>>>>>> Our js code is complex and fragile, I think notably at the global >>>>>>> variables in fieldlookup.js and selectall.js which are maybe hard to >>>>>>> avoid. >>>>>>> IMO those files are the main pains. >>>>>>> >>>>>>> Thanks >>>>>>> >>>>>>> Jacques >>>>>>> >>>>>>> >>>>>>> >>>>>>> Le 24/06/2016 à 09:20, Amardeep Singh Jhajj a écrit : >>>>>>> >>>>>>> Hello everyone, >>>>>>> >>>>>>>> Currently, OFBiz javascript code (except third party libraries) is >>>>>>>> >>>>>>> not >>> >>>> written with the best practices which can cause following problems - >>>>>>>> >>>>>>>> 1. Increases the code maintenance effort. >>>>>>>> 2. Impact page performance. >>>>>>>> 3. Present not good examples to new contributors which leads to C/P >>>>>>>> >>>>>>> to >>> >>>> various areas of js code. >>>>>>>> >>>>>>>> Here are things we should do for cleanup and improvements in js >>>>>>>> >>>>>>> code. >>> >>>> 1. Remove unused javascript code and files if any. >>>>>>>> 2. Use best practices for javascript coding to improve performance >>>>>>>> >>>>>>> (I >>> >>>> have >>>>>>>> listed some of it below). >>>>>>>> 3. Move utility js functions to one js file. >>>>>>>> 4. Remove deprecated code and use latest. For ex: We are still using >>>>>>>> "language='javascript'" attribute at script tag which is deprecated >>>>>>>> >>>>>>> a >>> >>>> years >>>>>>>> ago. >>>>>>>> 5. js should be loaded at bottom of the page, currently its in >>>>>>>> >>>>>>> Header. >>> >>>> Its >>>>>>>> a tedious task now to move it into footer because we have lot of js >>>>>>>> >>>>>>> code >>>> >>>>> inline in ftls. >>>>>>>> 6. js should not be written inline, it should be enough generic to >>>>>>>> >>>>>>> be >>> >>>> in >>>> >>>>> minimum number of files and have generic code for doing the common >>>>>>>> >>>>>>> set >>> >>>> of >>>>>>>> operations over DOM. >>>>>>>> 7. Currently our macros of rendering pages has inline scripts, they >>>>>>>> >>>>>>> can >>>> >>>>> be >>>>>>>> moved to one macrorenderer.js with generic code as we can use >>>>>>>> >>>>>>> classes, >>> >>>> ids >>>>>>>> and data-attributes for doing any operation over html DOM. >>>>>>>> 8. After all cleanup work, we can think of build tool (like grunt) >>>>>>>> >>>>>>> for >>> >>>> various javascript build tasks (minification, concatenation of >>>>>>>> >>>>>>> files) >>> >>>> if >>>> >>>>> needed. Its just a thought. >>>>>>>> >>>>>>>> I know its a huge effort and need to be done carefully. So before >>>>>>>> >>>>>>> doing >>>> >>>>> any >>>>>>>> major changes, I would like to start work with first 4 points. >>>>>>>> >>>>>>>> Here is the list of some best practices to start with: >>>>>>>> >>>>>>>> 1. Use [] Instead of New Array() >>>>>>>> 2. Long list of variables? Omit the "Var" keyword and use commas >>>>>>>> instead. >>>>>>>> 3. Reduce global variables >>>>>>>> 4. Use explicit blocks >>>>>>>> 5. Start blocks on the same line >>>>>>>> 6. Always, Always Use Semicolons - Having said that, this is a very >>>>>>>> >>>>>>> bad >>>> >>>>> practice that can potentially lead to much bigger, and harder to >>>>>>>> >>>>>>> find, >>> >>>> issues. >>>>>>>> 7. Optimize loops. Avoid calculating the length of array in for loop >>>>>>>> iteration. >>>>>>>> 8. Avoid multiple redundant jQuery DOM manupulation by saving >>>>>>>> >>>>>>> reference >>>> >>>>> to >>>>>>>> any object. >>>>>>>> 9. Try to use meaningful comments. >>>>>>>> 10. Many more. >>>>>>>> >>>>>>>> Here are some links of best practices information- >>>>>>>> >>>>>>>> https://www.w3.org/wiki/JavaScript_best_practices >>>>>>>> >>>>>>>> http://www.codeproject.com/Articles/580165/JavaScript-Best-Practices >>> >>>> https://developer.yahoo.com/performance/rules.html >>>>>>>> >>>>>>>> If everyone agrees, I would like to start on this work. >>>>>>>> >>>>>>>> Please let me know your thoughts on it. >>>>>>>> >>>>>>>> Thanks and Regards >>>>>>>> -- >>>>>>>> Amardeep Singh Jhajj >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >