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

Reply via email to