PageSourceSearch

https://sellersprite.ai/assets-v2/customer/customer.js?v202609241633

js sellersprite.ai collected 2026-09-24 13:05:08 UTC 25,995 bytes, 719 lines download raw bytes

1moment.locale('jp',{
2    months:  '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
3    monthsShort:  '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
4    weekdays:  '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
5    weekdaysShort:  '日曜_月曜_火曜_水曜_木曜_金曜_土曜'.split('_'),
6    weekdaysMin:  '日_月_火_水_木_金_土'.split('_'),
7    longDateFormat:  {
8        LT:  'HH:mm',
9        LTS:  'HH:mm:ss',
10        L:  'YYYY-MM-DD',
11        LL:  'YYYY年MM月DD日',
12        LLL:  'YYYY年MM月DD日Ah点mm分',
13        LLLL:  'YYYY年MM月DD日ddddAh点mm分',
14        l:  'YYYY-M-D',
15        ll:  'YYYY年M月D日',
16        lll:  'YYYY年M月D日  HH:mm',
17        llll:  'YYYY年M月D日dddd  HH:mm'
18    },
19    meridiemParse:  /凌晨朝|午前|正午|午後|夜/,
20    meridiemHour:  function  (hour,  meridiem)  {
21        if  (hour  ===  12)  {
22            hour  =  0;
23        }
24        if  (meridiem  ===  '凌晨'  ||  meridiem  ===  '朝'  ||
25            meridiem  ===  '午前')  {
26            return  hour;
27        }
27  else  if  (meridiem  ===  '午後'  ||  meridiem  ===  '夜')  {
28            return  hour  +  12;
29        }  else  {
30            //    '正午'
31            return  hour  >=  11  ?  hour  :  hour  +  12;
32        }
33    },
34    meridiem:  function  (hour,  minute,  isLower)  {
35        var  hm  =  hour  *  100  +  minute;
36        if  (hm  <  600)  {
37            return  '凌晨';
38        }  else  if  (hm  <  900)  {
39            return  '朝';
40        }  else  if  (hm  <  1130)  {
41            return  '午前';
42        }  else  if  (hm  <  1230)  {
43            return  '正午';
44        }  else  if  (hm  <  1800)  {
45            return  '午後';
46        }  else  {
47            return  '夜';
48        }
49    },
50    calendar:  {
51        sameDay:  '[本日]LT',
52        nextDay:  '[明日]LT',
53        nextWeek:  '[下]ddddLT',
54        lastDay:  '[昨日]LT',
55        lastWeek:  '[上]ddddLT',
56        sameElse:  'L'
57    },
58    dayOfMonthOrdinalParse:  /\d{1,2}(日|月|週)/,
59    ordinal:  function  (number,  period)  {
60        switch  (period)  {
61            case  'd':
62            case  'D':
63            case  'DDD':
64                return  number  +  '日';
65            case  'M':
66                return  number  +  '月';
67            case  'w':
68            case  'W':
69                return  number  +  '週';
70            default:
71                return  number;
72        }
73    },
74    relativeTime:{
75        future:  '%s内',
76        past:  '%s前',
77        s:  '何秒',
78        ss:  '%d秒',
79        m:  '1分',
80        mm:  '%d分',
81        h:  '1時間',
82        hh:  '%d時間',
83        d:  '1日間',
84        dd:  '%d日間',
85        M:  '1ヶ月間',
86        MM:  '%dヶ月間',
87        y:  '1年間',
88        yy:  '%d年間'
89    },
90    week:  {
91        dow:  1,
92        doy:  4
93    }
94});
95
96moment.locale('zh-cn',{
97    months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
98    monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
99    weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
100    weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
101    weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
102    longDateFormat: {
103        LT: 'HH:mm',
104        LTS: 'HH:mm:ss',
105        L: 'YYYY-MM-DD',
106        LL: 'YYYY年MM月DD日',
107        LLL: 'YYYY年MM月DD日Ah点mm分',
108        LLLL: 'YYYY年MM月DD日ddddAh点mm分',
109        l: 'YYYY-M-D',
110        ll: 'YYYY年M月D日',
111        lll: 'YYYY年M月D日 HH:mm',
112        llll: 'YYYY年M月D日dddd HH:mm'
113    },
114    meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
115    meridiemHour: function (hour, meridiem) {
116        if (hour === 12) {
117            hour = 0;
118        }
119        if (meridiem === '凌晨' || meridiem === '早上' ||
120            meridiem === '上午') {
121            return hour;
122        } else if (meridiem === '下午' || meridiem === '晚上') {
123            return hour + 12;
124        } else {
125            // '中午'
126            return hour >= 11 ? hour : hour + 12;
127        }
128    },
129    meridiem: function (hour, minute, isLower) {
130        var hm = hour * 100 + minute;
131        if (hm < 600) {
132            return '凌晨';
133        } else if (hm < 900) {
134            return '早上';
135        } else if (hm < 1130) {
136            return '上午';
137        } else if (hm < 1230) {
138            return '中午';
139        } else if (hm < 1800) {
140            return '下午';
141        } else {
142            return '晚上';
143        }
144    },
145    calendar: {
146        sameDay: '[今天]LT',
147        nextDay: '[明天]LT',
148        nextWeek: '[下]ddddLT',
149        lastDay: '[昨天]LT',
150        lastWeek: '[上]ddddLT',
151        sameElse: 'L'
152    },
153    dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
154    ordinal: function (number, period) {
155        switch (period) {
156            case 'd':
157            case 'D':
158            case 'DDD':
159                return number + '日';
160            case 'M':
161                return number + '月';
162            case 'w':
163            case 'W':
164                return number + '周';
165            default:
166                return number;
167        }
168    },
169    relativeTime: {
170        future: '%s内',
171        past: '%s前',
172        s: '几秒',
173        ss: '%d秒',
174        m: '1分钟',
175        mm: '%d分钟',
176        h: '1小时',
177        hh: '%d小时',
178        d: '1天',
179        dd: '%d天',
180        M: '1个月',
181        MM: '%d个月',
182        y: '1å¹´',
183        yy: '%då¹´'
184    },
185    week: {
186        // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
187        dow: 1, // Monday is the first day of the week.
188        doy: 4  // The week that contains Jan 4th is the first week of the year.
189    }
190});
191
192var Customer = (function(){
193
194    var __colors = ['#FFAE2D','#5FB0FF','#6EC952','#909CF7','#FF8C45','#44CAF6','#A9E025','#B593EB','#FB7A7A','#61A1FA','#6CE5C2','#FC81B4','#59EBEA','#7CE599'];
195
196    var __currencies = {
197        1: "$",
198        3: "£",
199        4: "€",
200        5: "€",
201        6: "ï¿¥",
202        7: "CDN$",
203        35691: "€",
204        44551: "€",
205        771770: "$",
206        44571: "₹",
207        111172: "$"
208    };
209
210    var closeSelfModal = function($modal){
211        // $modal.animate({'max-height':'5%'}, 'fast', function(){
212        //     $modal.removeClass('open');
213        //     $('.modal-backdrop').fadeOut('fast');
214        //     // $('html').css({'overflow-y':'auto'});
215        //     $modal.css({'max-height':'5%'});
216        //     $modal.removeClass('fast');
217        // });
218        $modal.removeClass('open');
219        Custombox.modal.closeAll();
220    };
221    var showSelfModal = function(id, maxHeight,opend_cb,closed_cb){
222        var $modal = $('#'+id);
223        if($modal.length > 0){
224            var eleHeight = '70%';
225            //如果需要去掉遮罩请放开
226            // $('.modal-backdrop').hide();
227
228            $modal.addClass('open');
229            $modal.find('.close').unbind('click');
230            $modal.find('.close').bind('click', function(){
231                closeSelfModal($modal);
232            });
233            $modal.find('button[data-dismiss="modal"]').unbind('click');
234            $modal.find('button[data-dismiss="modal"]').bind('click', function(){
235                closeSelfModal($modal);
236            });
237            if(maxHeight) eleHeight = maxHeight;
238            $modal.css({'max-height': eleHeight});
239            // $modal.modal('show');
240            //隐藏外部的滚动条
241            // $('html').css({'overflow-y':'hidden'});
242            // $('.modal-backdrop').show();
243            // $modal.animate({'max-height':eleHeight}, 'fast', function(){});
244
245            var overlay = {active: true, close: true, speedIn: 500, speedOut: 100};
246            if(opend_cb){
247                overlay['onComplete'] = opend_cb;
248            }
249            overlay['onClose'] = function () {
250                $('.self-modal').removeClass('open');
251                if(closed_cb) closed_cb();
252            };
253
254            var custom_box = new Custombox.modal({loader:{active: false}, overlay:overlay,content: {close: true,onClose:function(){$('.self-modal').removeClass('open');},positionY: 'bottom',target: '#'+id}, effect:'rotate', delay: 150, animateFrom:'bottom', animateTo:'top', speedIn: 500, speedOut: 100});
255            custom_box.open();
256            return custom_box;
257        }
258    };
259
260    var rigisterChartResize = function(chart, $parent){
261        $parent.unbind('resize');
262        $parent.bind('resize', function(){
263            setTimeout(function(){
264                chart.resize();
265            },100);
266        });
267    };
268
269    var commafyback = function commafyback(num) {
270        var x = num.split(',');
271        return parseFloat(x.join(""));
272    };
273
274    var commafy = function commafy(num, fixedNum) {
275        num = parseFloat(num);
276        if(fixedNum != 0 && !fixedNum) fixedNum = 2;
277        if(num || 0 == num){
278            num = num.toFixed(fixedNum) + '';
279            var re = /\d{1,3}(?=(\d{3})+(\.\d*)?$)/g;
280            num = num.replace(re, '$&,');
281
282            return num;
283        }
284
285        return ''
286    };
287    var commafyTail = function commafyTail(num, fixedNum) {
288        return commafy(num,fixedNum).replace('.00','');
289    };
290    var getToolTipValue = function(value){
291        var  v1 = 'N/A';
292        if(value&& -1 !== value){
293            //1位小数的情况
294            if((value + '').indexOf('.') >=0 && value.toString().split(".")[1].length == 1){
295                v1 = commafy(value, 1);
296            }else if((value + '').indexOf('.') >=0){
297                v1 = commafy(value, value.toString().split(".")[1].length);
298            } else{
299                v1 = commafy(value, 0);
300            }
301        }
302
303        return v1;
304    };
305    var formatEchartToolTip = function(params){
306        var value = params[0].name;
307        var t = "" + value;
308        var dateExp = /[0-9]{4}-[0-9]{2}-[0-9]{2}/g;
309        if(t && dateExp.test(t.trim())){
310            var mw;
311            if(GLOBAL_MOMENT_LANGUAGE){
312                mw = moment(t.trim(), 'YYYY-MM-DD').locale(GLOBAL_MOMENT_LANGUAGE).format('dddd');
313            }else{
314                mw = moment(t.trim(), 'YYYY-MM-DD').locale('zh-cn').format('ddd');
315            }
316            t = t + "(" + mw +  ")";
317        }
318        var len = params.length;
319        if (len === 0) {
320            return null;
321        } else if (len === 1) {
322            var c = params[0].color;
323            var  v1 = getToolTipValue(params[0].value);
324            return '<div class="my-tooltip">' +
325                '<div>' + t + '</div>' +
326                '<div>' + '<div class="my-tooltip-mark1" style="background-color: ' + c + '"></div>' + '<span>' + params[0].seriesName + '</span>' + '<span class="my-tooltip-value">' + v1 + '</span>' + '</div>'
327                + '</div>';
328        } else {
329            var c1 = params[0].color;
330            var c2 = params[1].color;
331            var  v1 = params[0].value < 5 && params[0].value ? '< 5' : getToolTipValue(params[0].value);
332            var  v2;
333            if (params[1].seriesName === "评分值") {
334              v2 = getToolTipValue(params[1].value);
335              v2 = isNaN(v2)?v2:Number(v2).toFixed(1);
336            } else {
337                v2 = getToolTipValue(params[1].value);
338            }
339            let tipsHtml = '<div class="my-tooltip">' +
340            '<div>' + t + '</div>' +
341            '<div>' + '<div class="my-tooltip-mark1" style="background-color:' + c1 + ' "></div>' + '<span>' + params[0].seriesName + '</span>' + '<span class="my-tooltip-value">' + v1 + '</span>' + '</div>' +
342            '<div>' + '<div class="my-tooltip-mark2" style="background-color:' + c2 + ' "></div>' + '<span>' + params[1].seriesName + '</span>' + '<span class="my-tooltip-value">' + v2 + '</span>' + '</div>';
343            if(len == 3){
344                tipsHtml += '<div>' + '<div class="my-tooltip-mark2" style="background-color:' + params[2].color + ' "></div>' + '<span>' + params[2].seriesName + '</span>' + '<span class="my-tooltip-value">' + getToolTipValue(Number(params[2].value).toFixed(0)); + '</span>' + '</div>'
345            }
346            tipsHtml += '</div>';
347            
348            return tipsHtml
349        }
350    };
351
352    var mapToArray = function(mapData){
353        var array = [];
354        for(var key in mapData){
355            array.push($.extend(true, {key:key}, mapData[key]));
356        }
357        return array;
358    };
359
360    var formatEchartToolTipV2 = function (params) {
361        var currency = __currencies[GLOBAL_MARKET_ID];
362        var t = "" + params[0].name;
363        var dateExp = /[0-9]{4}-[0-9]{2}-[0-9]{2}/g;
364        if(t && dateExp.test(t.trim())){
365            var mw;
366            if(GLOBAL_MOMENT_LANGUAGE){
367                mw = moment(t.trim(), 'YYYY-MM-DD').locale(GLOBAL_MOMENT_LANGUAGE).format('dddd');
368            }else{
369                mw = moment(t.trim(), 'YYYY-MM-DD').locale('zh-cn').format('ddd');
370            }
371            t = t + "(" + mw +  ")";
372        }
373        var result = t + "</br>";
374        params.forEach(function (item) {
375            result += item.marker + item.seriesName + " : <span style='display: inline-block;width: 100px;text-align: right'>" + currency + item.value +"</span></br>";
376        });
377        return result;
378    };
379
380    var formatEchartToolTipV3 = function(params){
381        var currency = __currencies[GLOBAL_MARKET_ID];
382        var value = params[0].name;
383        var t = "" + value;
384        var dateExp = /[0-9]{4}-[0-9]{2}-[0-9]{2}/g;
385        if(t && dateExp.test(t.trim())){
386            var mw;
387            if(GLOBAL_MOMENT_LANGUAGE){
388                mw = moment(t.trim(), 'YYYY-MM-DD').locale(GLOBAL_MOMENT_LANGUAGE).format('dddd');
389            }else{
390                mw = moment(t.trim(), 'YYYY-MM-DD').locale('zh-cn').format('ddd');
391            }
392            t = t + "(" + mw +  ")";
393        }
394        var len = params.length;
395        if (len === 0) {
396            return null;
397        } else if (len === 1) {
398            var c = params[0].color;
399            var v1 = getToolTipValue(params[0].value);
400            return '<div class="my-tooltip">' +
401                '<div>' + t + '</div>' +
402                '<div>' + '<div class="my-tooltip-mark1" style="background-color: ' + c + '"></div>' + '<span>' + params[0].seriesName + '</span>' + '<span class="my-tooltip-value">' + v1 + '</span>' + '</div>'
403                + '</div>';
404        } else {
405            var c1 = params[0].color;
406            var c2 = params[1].color;
407            var  v1 = (params[0].value < 5 && params[0].value && c1 == "#FFAE2D" && (params[0].seriesName == "Sales/M" || params[0].seriesName == "該当月売上" || params[0].seriesName == "当月销量")) ? '< 5' : getToolTipValue(params[0].value);
408            var  v2 = getToolTipValue(params[1].value);
409            if (v2 == 'N/A') currency = '';
410            return '<div class="my-tooltip">' +
411                '<div>' + t + '</div>' +
412                '<div>' + '<div class="my-tooltip-mark1" style="background-color:' + c1 + ' "></div>' + '<span>' + params[0].seriesName + '</span>' + '<span class="my-tooltip-value">' + v1 + '</span>' + '</div>' +
413                '<div>' + '<div class="my-tooltip-mark2" style="background-color:' + c2 + ' "></div>' + '<span>' + params[1].seriesName + '</span>' + '<span class="my-tooltip-value">' + currency + v2 + '</span>' + '</div>'
414                + '</div>';
415        }
416    };
417
418    var formatCurrency = function(num, fixedNum){
419        // var n = commafy(num,fixedNum) ? __currencies[GLOBAL_MARKET_ID] + '' + commafy(num,fixedNum) : 'N/A';
420
421        if (Number(GLOBAL_MARKET_ID) == 6) {
422            return commafy(num,fixedNum) ? commafy(num,fixedNum) + '円' : 'N/A';
423        }
424        var n = commafy(num,fixedNum) ? __currencies[GLOBAL_MARKET_ID] + '' + commafy(num,fixedNum) : 'N/A';
425        return n;
426    };
427
428    var showChartLoading = function(chart,chartId,mannualClose){
429        if(chart) chart.dispose();
430        var chartEle = document.getElementById(chartId);
431        //图表元素还未展示
432        if(!chartEle){
433            setTimeout(function(){
434                showChartLoading(chart,chartId);
435            },500);
436            return;
437        }
438        var chartInstance = echarts.init(chartEle, 'light');
439        let loadingText = "加载中...";
440        switch (GLOBAL_MOMENT_LANGUAGE) {
441            case "en":
442                loadingText = "Loading...";
443                break;
444            case "jp":
445                loadingText = "読み込み中...";
446                break;
447            default:
448                loadingText = "加载中...";
449                break;
450        }
451        chartInstance.showLoading({
452            text: '',
453            color: '#FFA750',
454            textColor: '#9FA3A8',
455            maskColor: 'rgba(255, 255, 255, 0.8)',
456            zlevel: 0
457        });
458        if(!mannualClose && chartInstance){
459            //定时关闭
460            setTimeout(function(){
461                chartInstance.hideLoading();
462            },3000);
463        }
464    };
465    var showChartLoadingFinished = function(chart,chartId,mannualClose){
466        if(chart) chart.dispose();
467        var chartEle = document.getElementById(chartId);
468        //图表元素还未展示
469        if(!chartEle){
470            setTimeout(function(){
471                showChartLoadingFinished(chart,chartId);
472            },500);
473            return;
474        }
475        var chartInstance = echarts.init(chartEle, 'light');
476        let loadingText = "加载中...";
477        switch (GLOBAL_MOMENT_LANGUAGE) {
478            case "en":
479                loadingText = "Loading...";
480                break;
481            case "jp":
482                loadingText = "読み込み中...";
483                break;
484            default:
485                loadingText = "加载中...";
486                break;
487        }
488        chartInstance.showLoading({
489            text: '',
490            color: '#FFA750',
491            textColor: '#9FA3A8',
492            maskColor: 'rgba(255, 255, 255, 0.8)',
493            zlevel: 0
494        });
495    };
496    var closeChartLoading = function(chart){
497        if(chart) chart.hideLoading();
498    };
499
500    var sizeOfInt = function(x){
501        var sizeTable = [9, 99, 999, 9999, 99999, 999999, 9999999, 99999999, 999999999, Math.floor(Number.MAX_VALUE)];
502        if(x || x >=0){
503            var intNumber = parseInt(x,10);
504            for(var i=0; ; i++){
505                if(intNumber <= sizeTable[i])
506                    return i + 1;
507            }
508        }
509    };
510    var getHighEvenNumber = function(numberValue){
511        var base = parseInt('' + (Math.pow(10,sizeOfInt(numberValue) -1)),10);
512        var delta = parseInt('' + (numberValue / base),10);
513        if ((delta & 1) == 1) {
514            ++delta;
515        }
516        return base * delta;
517    };
518    var getValueByKey = function(mapObjArray,key){
519        for(var i=0;i<mapObjArray.length;i++){
520            var map = mapObjArray[i];
521            if(map['key'] == key) return map['value'];
522        }
523
524        return 0;
525    };
526    var containsKey = function(mapObjArray,key){
527        for(var i=0;i<mapObjArray.length;i++){
528            var map = mapObjArray[i];
529            if(map['key'] && map['key'] == key) return true;
530        }
531
532        return false;
533    };
534    var putToMap = function(mapObjArray,obj){
535        for(var i=0;i<mapObjArray.length;i++){
536            var map = mapObjArray[i];
537            if(map['key'] == obj['key']) {
538                map['value'] = obj['value'];
539                return;
540            }
541        }
542        if(obj && obj.key >= 0) mapObjArray.push(obj)
543    };
544    //计算图表的步长
545    var calcChartStepSize = function(numberArray, stepNumber){
546        //最小步长
547        var MIN_CLUSTER_STEP = 10;
548        if(!stepNumber || stepNumber<= 0) stepNumber = 8;
549        var sumValue = 0;
550        var maxValue = 0;
551        var avgValue = 0;
552        for(var i=0;i < numberArray.length;i++){
553            var num = numberArray[i];
554            sumValue = sumValue + num;
555            if(num > maxValue) maxValue = num;
556        }
557        if(numberArray.length > 0) avgValue = sumValue / numberArray.length;
558        //参考步长
559        var step = getHighEvenNumber(avgValue) / (stepNumber /2);
560        if (step < MIN_CLUSTER_STEP) step = MIN_CLUSTER_STEP;
561        var map = [];
562
563        //初始化步长区间,数量统计默认设置为0
564        for (var i = 0; i <= maxValue / step; i++) {
565            var obj = {key:step * i,value:0};
566            putToMap(map,obj);
567        }
568        //统计区间分布计数
569        for(var i=0;i<numberArray.length;i++){
570            var d = numberArray[i];
571            if (d == 0) {
572                var obj = {key:0,value:getValueByKey(map,0) + 1};
573                putToMap(map,obj);
574                continue;
575            }
576            var key;
577            if (parseInt(d) == d && containsKey(map,parseInt(d))) {
578                key = parseInt(d) - step;
579            } else {
580                var c = parseInt(d.toFixed(parseInt('' + Math.floor(Math.log10(step)))));
581                key = c - parseInt('' + (c % step));
582            }
583            var obj = {key:key,value:getValueByKey(map,key) + 1};
584            putToMap(map,obj);
585        }
586        //过滤掉区间内无数据的步长值
587        var mapNew = [];
588        for(var i=0;i<map.length;i++){
589            var obj = map[i];
590            var objNew = {key:obj.key,value:obj.value};
591            if(objNew.value) putToMap(mapNew,objNew);
592        }
593        var mapLast,mapNeedSum;
594        //如果步长的个数超出则需要累加最小的步长
595        //这里使用两个升序来排列,先按照值(个数)排列再按照区间值排列
596        mapNew.sort(function(o1,o2){
597            var v1 = parseInt(o1.value);
598            var v2 = parseInt(o2.value);
599            if(v1 == v2) return o1.key - o1.key;
600            return v1 - v2;
601        });
602        //切片
603        var sliceNum = mapNew.length - stepNumber;
604        if(sliceNum > 0){
605            mapLast = mapNew.slice(sliceNum);
606            mapNeedSum = mapNew.slice(0, sliceNum);
607        }else{
608            mapLast = mapNew;
609            mapNeedSum = [];
610        }
611        mapLast.sort(function(o1,o2){
612            return o1.key - o2.key;
613        });
614        for(var i=0;i<mapNeedSum.length;i++){
615            var sumObj = mapNeedSum[i];
616            for(var j=0;j<mapLast.length;j++){
617                var newObj = mapLast[j];
618                if (sumObj.key <= newObj.key || j + 1 == mapLast.length) {
619                    newObj.value = parseInt(sumObj.value) + parseInt(newObj.value);
620                    break;
621                }
622            }
623        }
624
625        //按区间值从小到大的排序
626        mapLast.sort(function(o1,o2){
627            o1.key - o2.key;
628        });
629
630        return mapLast;
631    };
632
633    //计算价格图表步长
634    var calcPriceChartStepSize = function(numberArray){
635        //copy 避免影响
636        var map = calcChartStepSize(numberArray,null);
637        var collect = [];
638        for(var i=0;i<map.length;i++){
639            var obj = map[i];
640            var objNew = {key:obj.key,value:obj.value};
641            collect.push(objNew);
642        }
643
644        //slice
645        // var lastIndex = collect.length - 1;
646        // if (lastIndex > 4 && collect[lastIndex].value == 1 && collect[lastIndex - 1].value == 1) {
647        //     collect[lastIndex - 1].value = 1 << 1;
648        //     collect.splice(lastIndex -1, 1);
649        // }
650        collect.sort(function(o1,o2){
651            o1.key - o2.key;
652        });
653
654        return collect;
655    };
656    var dataArrsReplaceNone = function(arrs) {
657        if (!arrs) return arrs;
658        let datas = [];
659        for (let i of arrs) {
660            datas.push(i !== -1 ? i : null)
661        }
662        return datas;
663    };
664    var dataNAReplace = function (data,decimal) {
665        return data && data !== -1 ? Customer.commafyTail(data,decimal) : 'N/A';
666    };
667
668    var getUrlParam = function(name){
669        var query = window.location.search.substring(1);
670        var vars = query.split('&');
671        for (var i=0;i<vars.length;i++) {
672            var pair = vars[i].split('=');
673            if(pair[0] == name){return pair[1];}
674        }
675        return '';
676    };
677
678    return {
679        //底部弹窗实现,记得去掉dialog层的div
680        showSelfModal:showSelfModal,
681        closeSelfModal:closeSelfModal,
682        //chart resize 事件 废弃
683        rigisterChartResize:rigisterChartResize,
684        //将数字转化为千分位
685        commafy:commafy,
686        //去掉千分位
687        commafyback:commafyback,
688        commafyTail:commafyTail,
689        //自定义echarts tooltip
690        formatEchartToolTip:formatEchartToolTip,
691        //只有一条价格曲线加货币符号
692        formatEchartToolTipV2:formatEchartToolTipV2,
693        // 两条曲线,其中价格需要加上货币符号
694        formatEchartToolTipV3:formatEchartToolTipV3,
695        //map数据转array
696        mapToArray:mapToArray,
697        //ToolTip数值
698        getToolTipValue:getToolTipValue,
699        formatCurrency:formatCurrency,
700        //展示图表加载中
701        showChartLoading:showChartLoading,
702        showChartLoadingFinished:showChartLoadingFinished,
703        //关闭图表加载中
704        closeChartLoading:closeChartLoading,
705        //计算图表数值的步长
706        calcChartStepSize:calcChartStepSize,
707        //计算价格图表的步长
708        calcPriceChartStepSize:calcPriceChartStepSize,
709        //图表替换不可用的值使用Null占位
710        dataArrsReplaceNone:dataArrsReplaceNone,
711        //格式化图表为Null的点为N/A
712        dataNAReplace:dataNAReplace,
713        // 获取url中的参数
714        getUrlParam:getUrlParam,
715        //色值
716        color:__colors
717    };
718
719})();

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.