PageSourceSearch

https://www.sellersprite.com/assets-v2/js/keywords-miner-en.js?v202609241633

js sellersprite.com collected 2026-09-24 09:26:29 UTC 29,104 bytes, 738 lines download raw bytes

1function getLocaleString(val){
2    if(val || 0 == val) return val.toLocaleString();
3    return  '';
4}
5
6function initTableChart(ele) {
7    var text = $(ele).attr('data-y'), dataWeek = $(ele).attr('data-key')||false, $that = $(ele), dataType = $(ele).attr('data-type') || false;
8    if ($that.parent().parent().css('display') === 'none'){
9        return;
10    }
11    if (text == null || text == '' || text == '[]') return;
12    var ar = eval(text), xdata = [], ydata = [],Lastweekrank=[], element = jQuery($(this));
13    let max = 0;
14    for (var i = 0; i < ar.length; i++) {
15        if(max < ar[i]['y']){
16            max = ar[i]['y']
17        }
18    }
19    for (var i = 0; i < ar.length; i++) {
20        let y1 =  dataWeek? (max - ar[i]['y'] +1):ar[i]['y'];
21        xdata.push(ar[i]['x']);
22        ydata.push(y1);
23        if(dataWeek){
24            Lastweekrank.push({
25                valueLast:ar[i]['valueLast']*1,
26                valueGrowth:ar[i]['valueGrowth']*1,
27                growthRate:ar[i]['growthRate']*1
28            })
29        }
30    }
31    if (xdata.length < 2) return;
32
33    var c = $that[0];
34    c.style.width = '120px';
35    c.style.height = '64px';
36    if (c.hasAttribute('_echarts_instance_')){
37        return;
38    }
39    var myChart = echarts.init(c);
40    option = {
41        tooltip: {trigger: 'axis', formatter:function(params){
42                var t = params[0].axisValue;
43                var dateExp = /[0-9]{4}[0-9]{2}/g;
44                if (t && dateExp.test(t.trim())) {
45                    if (dataWeek && dataType) {
46                        if (dataType == 'W') {
47                            t = dataWeek ? dataPickWeeklyDataMiner(t) : moment(t.trim(), 'YYYYMM').format('YYYY.MM');
48                        } else {
49                            t = moment(t.trim(), 'YYYYMM').format('YYYY.MM');
50                        }
51
52                    } else {
53                        t = dataWeek? dataPickWeeklyDataMiner(t):moment(t.trim(), 'YYYYMM').format('YYYY.MM');
54                    }
55                    
56                }
57                var c1 = Customer.color[0];
58                var c2 = Customer.color[1];
59                var v1 = dataWeek? Customer.getToolTipValue(max - params[0].data + 1) : Customer.getToolTipValue(params[0].data);
60                var  v2 = params[0].dataIndex && params[0].dataIndex >= 1 && ydata[params[0].dataIndex - 1] !== 0 ? Math.ceil(((params[0].data - ydata[params[0].dataIndex-1])/ydata[params[0].dataIndex-1])*100).toFixed(0): '--';
61                if(v2 && v2 != '--') v2 = v2 + '%';
62                if(dataWeek){
63                    let axisIndex = params[0].dataIndex;
64                    let valueLast = Lastweekrank[axisIndex]['valueLast']?Customer.getToolTipValue(Lastweekrank[axisIndex]['valueLast']):'--';
65                    let valueGrowth = Lastweekrank[axisIndex]['valueGrowth']?(Lastweekrank[axisIndex]['valueGrowth'] == -1 ? -1 : Customer.getToolTipValue(Lastweekrank[axisIndex]['valueGrowth'])):0;
66                    let  growthRate = Lastweekrank[axisIndex]['growthRate'];
67                    let thisWeek = dataType == 'W'?"Current Week's Ranking":"Current Month's Ranking";
68                    let lastWeek = dataType == 'W'?"Previous Week's Ranking":"Previous Month's Ranking";
69                    if (growthRate && growthRate != '--') growthRate = (growthRate*100).toFixed(0) + '%';
70                    
71                    return '<div class="my-tooltip pt-2 pb-2 plr-1" style="min-width:300px">' +
72                    '<div class="mb-2">' + t + '</div>' +
73                    '<div>' + '<div class="my-tooltip-mark1" style="background-color:' + c1 + ' "></div>' + '<span>'+ thisWeek +'</span>' + '<span class="my-tooltip-value">' + v1 + '</span>' + '</div>'
74                    +'<div>'  + '<div class="my-tooltip-mark1" style="background-color:' + c2 + ' "></div>' + '<span>'+ lastWeek +'</span>' + '<span class="my-tooltip-value">' + valueLast + '</span>' + '</div>'
75                    +'<div>' + '<div class="my-tooltip-mark1" style="background-color:' + Customer.color[2] + ' "></div>' +'<span>Rank Change</span>' + '<span class="my-tooltip-value">' + valueGrowth + '('+ growthRate +')' + '</span>' + '</div>'
76                    + '</div>';
77                    
78                }else{
79                        return '<div class="my-tooltip">' +
80                        '<div>' + t + '</div>' +
81                        '<div>' + '<div class="my-tooltip-mark1" style="background-color:' + c1 + ' "></div>' + '<span>Searches</span>' + '<span class="my-tooltip-value">' + v1 + '</span>' + '</div>' +
82                        '<div>' + '<div class="my-tooltip-mark2" style="background-color:' + c2 + ' "></div>' + '<span>Growth Rate</span>' + '<span class="my-tooltip-value">' + v2 + '</span>' + '</div>'
83                        + '</div>';
84                    }
85            }},
86        color: ["#F0A751"],
87        xAxis: {
88            show: false,
89            type: 'category',
90            data: xdata
91        },
92        yAxis: {
93            type: 'value',
94            show: false,
95            boundaryGap: ['1%', '1%']
96        },
97        series: [{
98            data: ydata,
99            symbol: 'none',
100            type: 'line',
101            lineStyle: {width:1},
102            areaStyle: {
103                normal: {
104                    color: new echarts.graphic.LinearGradient(
105                        0, 0, 0, 1,
106                        [
107                            {offset: 0, color: '#FDE1C6'},
108                            {offset: 0.4, color: '#FDE1C6'},
109                            {offset: 1, color: '#FEEEE0'}
110                        ]
111                    )
112                }
113            }
114        }]
115    };
116
117    myChart.setOption(option);
118    $that.parent("td").removeClass("echart-line-isLoaing")
119}
120function dataPickWeeklyDataMiner(data){
121    let netDataYear = moment(data, 'YYYYMMDD').subtract('days', 6);
122    let netData =  moment(data, 'YYYYMMDD');
123    let week = netData.format('W');
124    let newDataString = 'Week ' + (week.length == 1?('0' + week):week) + '. ' + netDataYear.format('YYYY') + netDataYear.format('(MM/DD') + '~' + netData.format('MM/DD
124)');
125    return  newDataString;
126}
127function _formatMonth(data) {
128    var format =  data.map(function (item) {
129        return item.substring(0, 4) + '-' + item.substring(item.length - 3, item.length - 1);
130    });
131    return format;
132}
133function _countGreyMonth(data) {
134    var format = _formatMonth(data);
135    for(var i=0;i<format.length;i++){
136        var month = parseInt(format[i].replace('-',''));
137        if(month >= 201903){
138            return i;
139        }
140    }
141    return 26;
142}
143var __ModuleTrend = {
144    __market: null,
145    __keywords: null,
146    __yearly: !1 || localStorage.getItem('SellerSprite.ModuleTrend') == 'Y',
147    setYearlyShown: function (_y) {
148        this.__yearly = !!_y;
149        localStorage.setItem('SellerSprite.ModuleTrend', _y ? 'Y' : 'N')
150},
151    __echarts: null,
152    __colors:['#FFAE2D','#5FB0FF','#6EC952','#909CF7','#FF8C45','#44CAF6','#A9E025','#B593EB','#FB7A7A','#61A1FA','#6CE5C2','#FC81B4','#59EBEA','#7CE599'],
153    /**
154     * 列表里面的缩略图
155     */
156    _fInitTableChart: function () {
157        $(".morris-table-inline").each(function () {
158            var window_height = $(window).height();
159            var top = $(this).height() + $(this).offset().top - $(document).scrollTop();
160            if (top >= 0 && top <= window_height) {
161                initTableChart(this);
162            }
163        });
164        $(window).scroll(function () {
165            $(".morris-table-inline").each(function () {
166                var window_height = $(window).height();
167                var top = $(this).height() + $(this).offset().top - $(document).scrollTop();
168                if (top >= 0 && top <= window_height) {
169                    initTableChart(this);
170                }
171            });
172        })
173    },
174
175    _fRedrawChart: function (_x, _searches, _purchases, _rates) {
176        let AreaColor = __ModuleTrend.getBackGroundColor(_x);
177         // 2021年7月后则不展示购买量和购买率
178         let timeIndexEnd = 0;//_x.findIndex(time => time === '2021年07月');
179        var opt = {
180            tooltip: {
181                axisPointer: {
182                    type: 'cross',
183                    label: {
184                        backgroundColor: 'rgba(0, 0, 0, .7)',
185                        formatter: axisPointerFormatter,
186                    }
187                },
188                trigger: 'axis',
189                formatter: function (params) {
190                    if (params.length < 1) return null;
191                        let  axisValueItem = moment(params[0].axisValue.replace('年','-').replace('月',''),'YYYY-MM').format('MMM YYYY') ;
192                        let tooltipHtml = "";
193                        params.forEach(function (item,index) {
194                            tooltipHtml += '<div><div class="'+ (index == 0 ? "my-tooltip-mark1" : "my-tooltip-mark2") + '" style="background-color:' + item.color + ' "></div>' + '<span>' + item.seriesName + '</span>' + '<span class="my-tooltip-value">' + (item.value == null?'--':(item.seriesName == 'Purchase Rate'? item.value + '%' :getLocaleString(item.value))) + '</span></div>'
195                        });
196                        var _html = '<div class="my-tooltip tooltip-long-title"><div>'+ axisValueItem + '</div>' + tooltipHtml + '</div>';
197                        return _html;
198                }
199            },
200            color: __ModuleTrend.__colors,
201            legend: {
202                data: [{
203                        name: 'Purchase'
204                    }, {
205                        name: 'Searches'
206                    }, {
207                        name: 'Purchase Rate'
208                    }
209                ],
210                selected: {
211                    'Purchase': false,
212                    'Searches': true,
213                    'Purchase Rate': false
214                },
215                selectedMode: true,
216                x: 'center', y: 'bottom'
217            },
218            grid: {
219                top: '15%',
220                left: '4%',
221                right: '5%',
222                bottom: '15%',
223                containLabel: true
224            },
225            xAxis: {
226                type: 'category',
227                data: _formatMonth(_x),
228                splitLine: {
229                    show: true,
230                    lineStyle: {
231                        color: ['#eee'],
232                        width: 1,
233                        type: 'dotted'
234                    }
235                },
236                axisLabel: {
237                    color: "#8b93a6",
238                    margin: 15,
239                    rotate: 60
240                },
241                axisLine: {
242                    lineStyle: {
243                        color: "#e5e5e5"
244                    }
245                },
246                splitArea: {                // 分隔区域
247                    interval: function (index) {
248                        if (index) {
249                            return true;
250                        }
251                    },
252                    show:true,
253                    areaStyle: {        // 属性areaStyle(详见areaStyle)控制区域样式
254                        color: AreaColor
255                    }
256                }
257            },
258            yAxis: [
259                {
260                    name: 'Searches',
261                    type: 'value',
262                    axisLabel: {
263                        color: __ModuleTrend.__colors[0]
264                    },
265                    splitLine: {
266                        lineStyle: {
267                            type: "dotted",
268                            color: "#e5e9f2"
269                        }
270                    },
271                    axisLine: {
272                        lineStyle: {
273                            color: __ModuleTrend.__colors[0]
274                        }
275                    }
276                },
277                {
278                    name: 'Purchase Rate',
279                    type: 'value',
280                    splitLine: {
281                        show: true,
282                        lineStyle: {
283                            color: ['#eee'],
284                            width: 1,
285                            type: 'dotted'
286                        }
287                    },
288                    axisLabel: {
289                        formatter: '{value}%',
290                        color: __ModuleTrend.__colors[2],
291                        margin: 15
292                    },
293                    axisLine: {
294                        lineStyle: {
295                            color: __ModuleTrend.__colors[2]
296                        }
297                    },
298                    inverse: !1
299                }
300            ],
301            visualMap:{
302                show: false,
303                dimension: 0,
304                seriesIndex: 2,
305                pieces: [
306                    {
307                        lt: _countGreyMonth(_x),
308                        color: __ModuleTrend.__colors[2]
309                    },
310                    {
311                        gte: _countGreyMonth(_x),
312                        lt: _x.length,
313                        // color: '#AAAFB5'
314                        color: __ModuleTrend.__colors[2]
315
316                    }
317                ]
318            },
319            series: [
320                {
321                    name: 'Searches',
322                    type: 'bar',
323                    barWidth: '40%',
324                    data: _searches,
325                    yAxisIndex: 0
326                },
327                {
328                    name: 'Purchase',
329                    type: 'line',
330                    smooth: !0,
331                    data: timeIndexEnd>0?_purchases.fill(null,timeIndexEnd):_purchases,
332                    yAxisIndex: 0,
333                    itemStyle:{
334                        normal:{
335                            lineStyle:{
336                                width:2
337                            }
338                        },
339                        emphasis:{
340                            lineStyle:{
341                                width:3
342                            }
343                        }
344                    }
345                },
346                {
347                    name: 'Purchase Rate',
348                    type: 'line',
349                    smooth: !0,
350                    data: timeIndexEnd>0?_rates.fill(null,timeIndexEnd):_rates,
351                    yAxisIndex: 1,
352                    itemStyle:{
353                        normal:{
354                            lineStyle:{
355                                width:2
356                            }
357                        },
358                        emphasis:{
359                            lineStyle:{
360                                width:3
361                            }
362                        }
363                    }
364                }
365            ]
366        };
367
368        var c = $('#module-trend-chart')[0];
369        c.style.width = ($('#module-trend').width() - 160) + 'px';
370        c.style.height = 350 + 'px';
371        this.__echarts && this.__echarts.dispose();
372        this.__echarts = echarts.init(c);
373        this.__echarts.setOption(opt, true);
374        Customer.closeChartLoading(this.__echarts);
375    },
376
377    _fRedrawYearChart: function (_x, legend_data, _series) {
378        var en_x = [];
379        for(var i in _x){
380            if(i){
381                en_x.push(moment().month(parseInt(i.replace('月',''))).locale('en').format('MMMM'));
382            }else{
383                en_x.push(i);
384            }
385        }
386        _x = en_x;
387        var opt = {
388            tooltip: {
389                axisPointer: {
390                    type: 'cross',
391                    label: {
392                        backgroundColor: 'rgba(0, 0, 0, .7)',
393                        formatter: axisPointerFormatter,
394                    }
395                },
396                trigger: 'axis',
397                formatter: function (params) {
398                    let htmlCotent='<div class="my-tooltip">' +
399                    '<div>Searches: ' + params[0].axisValue + '</div>'
400                    params.forEach(element => {
401                        '<div>' + '<div class="my-tooltip-mark1" style="background-color:' + element.color + ' "></div>' + '<span>' +element.seriesName + '</span>' + '<span class="my-tooltip-value">' + getLocaleString(element.value) + '</span>' + '</div>'
402                    });
403                    htmlCotent+= '</div>'
404                    return htmlCotent
405                }
406            },
407            color: __ModuleTrend.__colors,
408            legend: {
409                data: legend_data,
410                itemGap: 5,
411                bottom: 10
412            },
413            grid: {
414                top: '15%',
415                left: '4%',
416                right: '4%',
417                bottom: '15%',
418                containLabel: true
419            },
420            xAxis: {
421                type: 'category',
422
423                data: _x,
424                splitLine: {
425                    show: true,
426                    lineStyle: {
427                        color: ['#eee'],
428                        width: 1,
429                        type: 'dotted'
430                    }
431                },
432                axisLabel: {
433                    color: "#8b93a6",
434                    margin: 15
435                },
436                axisLine: {
437                    lineStyle: {
438                        color: "#e5e5e5"
439                    }
440                }
441            },
442            yAxis: {
443                name: 'Searches',
444                type: 'value',
445                splitLine: {
446                    show: true,
447                    lineStyle: {
448                        color: ['#eee'],
449                        width: 1,
450                        type: 'dotted'
451                    }
452                },
453                axisLabel: {
454                    color: "#8b93a6",
455                    margin: 15
456                },
457                axisLine: {
458                    lineStyle: {
459                        color: "#e6e6e6"
460                    }
461                }
462            },
463            series: _series
464        };
465
466        var c = $('#module-trend-chart')[0];
467        c.style.width = ($('#module-trend').width() - 160) + 'px';
468        c.style.height = 350 + 'px';
469        this.__echarts && this.__echarts.dispose();
470        this.__echarts = echarts.init(c);
471        this.__echarts.setOption(opt, true);
472        Customer.closeChartLoading(this.__echarts);
473    },
474
475    _fParseResponseData: function (_data) {
476        var x = [], searches = [], purchases = [], rates = [], that = this;
477        for (var i in _data) {
478            var obj = _data[i];
479            switch (obj.key) {
480                case 'time':
481                    x = obj.data;
482                    break;
483                case 'search':
484                    searches = obj.data;
485                    break;
486                case 'purchase':
487                    purchases = obj.data;
488                    break;
489                case 'rate':
490                    rates = obj.data;
491                    break;
492                default:
493                    break;
494            }
495        }
496
497        that._fRedrawChart(x, searches, purchases, rates);
498    },
499
500    _fParseYearResponseData: function (_data) {
501        var legend_data = [],
502            series = [],
503            x = [];
504        for (var i in _data) {
505            var obj = _data[i];
506            if (obj.key !== 'time') {
507                legend_data.push({
508                    name: obj.key + ''
509                });
510                series.push({
511                    name: obj.key + '',
512                    type: 'line',
513                    smooth: !0,
514                    data: obj.data
515                });
516            } else {
517                x = obj.data;
518            }
519        }
520        legend_data.sort(function (o1, o2) {return parseInt(o1.name) - parseInt(o2.name)});
521
522        this._fRedrawYearChart(x, legend_data, series);
523    },
524
525    _fShowMonthlyChart: function () {
526        var that = this;
527        $.getJSON('/v2/keyword/history-trend-month/' + that.__market + '?q=' + that.__keywords, function (data) {
528            if (data == null) return false;
529
530            that._fParseResponseData(data);
531        });
532    },
533
534    _fShowYearChart: function () {
535        var that = this;
536        $.getJSON('/v2/keyword/history-trend/' + that.__market + '?q=' + that.__keywords, function (data) {
537            if (data == null) return false;
538
539            that._fParseYearResponseData(data);
540        });
541    },
542    getBackGroundColor:function (data,year) {
543        var colors = [];
544        year=year?year:false
545        if (data == undefined) {
546            return colors;
547        }
548        colors = year?['rgba(250,250,250,0)','rgba(250,250,250,0)']:[];
549        let normal = 'rgba(250,250,250,0)',first = 'rgba(245,247,250,1)';
550        for (var i = 0; i < data.length; i++) {
551            let item = data[i].length<4?data[i].split("月")[0]:data[i].split("年")[1];
552            if (item==1||item=="01月") {
553                colors.push(first)
554            } else {
555                colors.push(normal)
556            }
557        }
558        return colors;
559    },
560    on: function () {
561        var that = this;
562        that._fInitTableChart();
563
564        // 导出到excel
565        $('#list-export').click(function () {
566            let export_remain_num = $(this).attr('export_remain_num');
567            if(export_remain_num <= 0){
568               return;
569            }
570            //减少导出次数
571            reduceTheNumberOfExport($(this));
572            //减少导出次数
573
574            var $form = $('#form-condition-search'),
575                _search = $form.attr('action');
576            var usestatic = $form.find('input[name="usestatic"]').val();
577            var action = '/v2/keyword/list-export';
578            if('R' == usestatic && !$('#weekly-research').val()){
579                action = '/v2/keyword/list-export-research';
580                if(window.localStorage.getItem('export-3rd-picture')=='true'){
581                    $form.find('input[name="exportGkImages"]').val(true);
582                }else{
583                    $form.find('input[name="exportGkImages"]').val(false);
584                }
585            }else if ($('#weekly-research').val() == 'W'){
586                action = '/v2/keyword-research-weekly/list-export-research';
587            }
588            $form.attr('action', action);
589            $form.submit();
590            setTimeout(function () {
591                $form.attr('action', _search);
592            }, 200);
593        });
594        $('#list-export-dynamic').click(function () {
595            let export_remain_num = $(this).attr('export_remain_num');
596            if(export_remain_num <= 0){
597               return;
598            }
599            //减少导出次数
600            reduceTheNumberOfExport($(this));
601            //减少导出次数
602
603            var $form = $('#form-condition-search'),
604                _search = $form.attr('action');
605            $form.attr('action', '/v2/keyword/list-export-dynamic');
606            $form.submit();
607            setTimeout(function () {
608                $form.attr('action', _search);
609            }, 200);
610        });
611        // 相关关键词
612        $('#list-export-efficacy').click(function () {
613            let export_remain_num = $(this).attr('export_remain_num');
614            if(export_remain_num <= 0){
615                return;
616            }
617            //减少导出次数
618            reduceTheNumberOfExport($(this));
619            //减少导出次数
620
621            var $form = $('#form-condition-search'),
622                _search = $form.attr('action');
623            $form.attr('action', '/v2/keyword-linked/export');
624            $form.submit();
625            setTimeout(function () {
626                $form.attr('action', _search);
627            }, 200);
628        });
629        // 图表数据
630        $('a[data-action=btn-show-keyword-trend-chart]').click(function () {
631            var _k =$(this).parent().is(".isloadig-more-trlist")?$(this).parent().attr('data-keyword'): $(this).attr('data-keyword'), _m = $(this).parent().is(".isloadig-more-trlist")?$(this).parent().attr('data-station'):$(this).attr('data-station'), $that = $(this);
632            that.__keywords = _k;
633            that.__market = (_m == 'COM' ? 'US' : _m == 'UK'?'GB':_m);
634            $that.parent().is(".action-span-tooltip")?$that.parent().popover('hide'):$that.popover('hide');
635            $that.parent().is(".action-span-tooltip")?$that.parent().tooltip('hide'):$that.tooltip('hide');;
636
637            var selector = '#module-trend #module-trend-chart-container';
638            $(selector).empty();
639            $("#tpl-module-keywords-trend").tmpl({'keywords': _k,'station':that.__market, '_checked': that.__yearly}).appendTo(selector);
640            $(selector).find('[type=checkbox]').unbind().click(function () {
641                that.setYearlyShown($(this).prop('checked'));
642                 //显示图表加载中
643                 Customer.showChartLoading(that.__echarts,'module-trend-chart');
644                 that.__yearly ? that._fShowYearChart() : that._fShowMonthlyChart();
645
646            });
647
648            Customer.showChartLoading(that.__echarts,'module-trend-chart');
649            that.__yearly ? that._fShowYearChart() : that._fShowMonthlyChart();
650
651        });
652    },
653    addEvent:function (){
654        var that = this;
655        $("a[data-action=btn-show-keyword-trend-chart-new]").off("
655click")
656        setTimeout(() => {
657            $.HSCore.components.HSUnfold.init($('[data-unfold-target]'));
658            $("a[data-action=btn-show-keyword-trend-chart-new]").on("click",function () {
659          
660                var _k =$(this).parent().is(".isloadig-more-trlist")?$(this).parent().attr('data-keyword'): $(this).attr('data-keyword'), _m = $(this).parent().is(".isloadig-more-trlist")?$(this).parent().attr('data-station'):$(this).attr('data-station'), $that = $(this);
661                that.__keywords = _k;
662                that.__market = (_m == 'COM' ? 'US' : _m == 'UK'?'GB':_m);
663                $that.parent().is(".action-span-tooltip")?$that.parent().popover('hide'):$that.popover('hide');
664                $that.parent().is(".action-span-tooltip")?$that.parent().tooltip('hide'):$that.tooltip('hide');;
665    
666                var selector = '#module-trend #module-trend-chart-container';
667                $(selector).empty();
668                $("#tpl-module-keywords-trend").tmpl({'keywords': _k,'station':that.__market, '_checked': that.__yearly}).appendTo(selector);
669    
670                $(selector).find('[type=checkbox]').unbind().click(function () {
671                    that.setYearlyShown($(this).prop('checked'));
672                    //显示图表加载中
673                    Customer.showChartLoading(that.__echarts,'module-trend-chart');
674                    that.__yearly ? that._fShowYearChart() : that._fShowMonthlyChart();
675                });
676    
677                //显示图表加载中
678                Customer.showChartLoading(that.__echarts,'module-trend-chart');
679                that.__yearly ? that._fShowYearChart() : that._fShowMonthlyChart();
680            })
681        }, 100);
682    }
683};
684window.ModuleKeywordsTrend = __ModuleTrend;
685
686$(function (){
687    $('#async-list-export').bind('click', function(){
688        let export_remain_num = $(this).attr('export_remain_num');
689        if(export_remain_num <= 0){
690            return
691        }
692        let $that = $(this);
693        $that.popover('hide');
694        downloadExportCapabilities(this);
695    });
696
697    function downloadExportCapabilities(that){
698        let $that = $(that);
699        $that.popover('hide');
700        $that.addClass("active").attr('disabled',true);
701        //减少导出次数
702        let exportAction = $that.attr('data-action');
703        let $form = $('#form-condition-search');
704        let serializeData = $form.serializeArray();
705        $.ajax({
706            type: 'post',
707            url: exportAction,
708            data: serializeData,
709            dataType: 'json',
710            success: function (result) {
711                if(result.code == "OK"){
712                    //减少导出次数
713                    $("#warm-modal-delete-modal").modal("show");
714                    reduceTheNumberOfExport($that);
715                }else{
716                    swal({
717                        title: 'Export has failed',
718                        text: result.message || 'You are trying too often, please try again later!',
719                        type: 'error',
720                        showConfirmButton:true,
721                        confirmButtonText:'YES'
722                    });
723                }
724                $that.removeClass("active").attr('disabled',false);
725            },
726            error: function (error) {
727                $that.removeClass("active").attr('disabled',false);
728                swal({
729                    title: 'Export has failed',
730                    text: error.message || 'You are trying too often, please try again later!',
731                    type: 'error',
732                    showConfirmButton:false,
733                    timer:2000
734                });
735            }
736        });
737    }
738})

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.