tree 00532d309bbe95d4bf20769204ac557c6523ff5f
parent b9ffe9f5a77852144a22447a485be10197158aa7
author Xialijun <constanine@163.com> 1621996497 +0800
committer GitHub <noreply@github.com> 1621996497 +0800
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJgrbPRCRBK7hj4Ov3rIwAA3mcIAFrvp97U7EquKqEdV83swpbS
 A/lAQJo9cLRI2ufRzlEZx5FhKNSBilA2mGb8pTUd9EM/lx6M95Mp50bK8jM5fXCX
 uAh+U9Onv6Y6RZ/B/gkcXcUUKZVvj3pgWDJy1TSAuynNIE39/Y1MM0b3/jaRNKiq
 6ILv6pNRZ7dtnjns5jbEJD3nfzMiYYOK4ycqbsUTjnDeoj6EU1JiyxMCrAh9ZA7V
 zo6rJypz4Wr5tBaQCfFmW6o++Tc++oHYVB5NekjHBUuZfgZeGXMOkIeCV24fbBwE
 KIG3kBbTYYf17e7JREhgAioeIvEgID6xBa1O94ZjvwfSFhYpalutPbiY19cE+hs=
 =zL5m
 -----END PGP SIGNATURE-----
 

Feat: Add a function which show the statistics infomation during the trace query  (#488)

* add new tag to render statistics data info

* import statistice-bulleted.svg into index.ts to show svg on tag's button

* 1.add the table header into statistics render;2.add locale word in i18n file;3.init statistics function

* make statistics render work success

* modify statistice compute function to work correctly

* show the target of modify

* remove folder of new_issue which boken coding guidelines

* statistics render needn't to handleSelectSpan

* statistics-bulleted.svg add apache2.0-license

* 1.en.ts add statistics locale_en word;2.common/index.ts need line breaks to fix check;3.accept suggest to place statistics button on most the right side

* Eliminate useless functions

* Remove more useless functions

* Add the SumTime column to the statistics table

* The statistical table modifies the column name. Modify column sort

* Extract public file. Modify statistics table location

* Restores a function that was accidentally deleted

* Add sorting function to statistics table

* 1.merge statistics compoents into trace-item.vue,trac-container.vue and reuse by vue's parametererr

* Merge duplicate components.

* after merge trace-header' vue component,think different component has itself triggers,so function of mounted need tthe judge of parametertype

* Fixed data statistics error.

* use 'const' instead of 'let',Optimize the code for use 'a || b' not if else, anddelete no use code

* 1.change *.vue file, replace <script type=js> with  <script type=ts>;2.Integrate code and extract common methods with function changetree is add to trace-util.ts and it provide common funtion to trace-*.vue

* 1.fix tslint check bug,2 Accept Fine0830' suggestion use return in trace-container.vue

* replace svg with rk-icon

* change function public to private

* fix the bug which infinite recursion of oneself

* 1.change script's code of rk-page.vue with ts, 2.fix bug which cause vue's warnning: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop’s value. Prop being mutated: “'currentPage'

* fix statistics calculation bug,group by endpointname + type, and data sources consider the whole tree structures not just level 1 children

Co-authored-by: lys <yanshan16@163.com>
Co-authored-by: 吴晟 Wu Sheng <wu.sheng@foxmail.com>
Co-authored-by: Qiuxia Fan <fine0830@outlook.com>