+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 > > >>>> > > >>>> > > >>>> > > > > > >