window.afterPageUpdate = function($target, info, options) { window.isDropdown = false; window.lineCount = 1; window.checkedList = window.initCheckedList(); window.chartList = []; for(key in chartTypeList) { chartList.push({value: key, text: chartTypeList[key]}); } window.filterChecked = {}; if(viewType == 'single') { var metricCurrent = $('.metric-tree .metric-current'); if(metricCurrent.length) metricCurrent[0].scrollIntoView({block: 'center', inline: 'start' }) } if(viewType == 'multiple') { window.renderCheckedLabel(); $(window).on('resize', window.renderCheckedLabel); } window.addTitle2Star(); window.addDivider(); window.initFilterPanel(); } window.initCheckedList = function() { if(viewType == 'multiple' && (typeof window.checkedList !== 'undefined' && Array.isArray(window.checkedList) && window.checkedList.length > 1)) { return window.checkedList; } else { return [{id:current.id + '', name:current.name}]; } } window.addTitle2Star = function() { $('.metric-collect').attr('title', collectStar); } window.addDivider = function() { let features = $('#featureBar .nav-feature').find('li.nav-item'); let lastItem = features[features.length - 1]; $(lastItem).addClass('divider-before'); } /* 事件处理函数。 */ window.handleCheckboxChange = function($el) { $el = $($el); var isChecked = $el.is(":checked"); var value = $el.val(); var text = $el.next().text(); if(!isChecked && window.checkedList.length == 1) { $el.prop('checked', true); return; } if(isChecked && window.checkedList.length >= 10) { $el.prop('checked', false); return messagerWarning(maxSelectMsg.replace('%s', maxSelectNum)); } window.updateCheckAction(value, text, isChecked); } window.handleNavMenuClick = function($el) { var scope = $el.attr('id'); window.ajaxGetMetrics(scope, '', function(total){ window.deactiveNavMenu(); window.hideFilterPanel(); window.resetFilterPanel(); $el.addClass('active'); $el.append(`${total}`); }) } window.handleFilterCheck = function() { window.updateFilterCheck(); } window.handleFilterToggle = function($el) { toggleSearchBtn(); $('.filter-panel').toggleClass('hidden'); } window.handleFilterClearItem = function($el) { $el = $($el); if(!$el.length) return; var $checkboxList = $el.closest('.panel').find('.panel-body .check-list-inline .checkbox-primary'); $checkboxList.each(function(index, elem){ $(elem).find('input').prop('checked', false); }); window.updateFilterCheck(); } window.handleFilterClearAll = function($el) { $el = $($el); if(!$el.length) return; var $checkboxList = $el.closest('.panel').find('.panel-body .check-list-inline .checkbox-primary'); $checkboxList.each(function(index, elem){ $(elem).find('input').prop('checked', false); }); window.updateFilterCheck(); } window.handleFilterClick = function() { var filterBase64 = btoa(JSON.stringify(window.filterChecked)); if(viewType == 'multiple') { window.ajaxGetMetrics('filter', filterBase64, function(total) { window.deactiveNavMenu(); $('.side-title').text(filterLang.filterTotal.replace('%s', total)); }); return; } loadPage($.createLink('metric', 'preview', 'scope=filter&viewType=' + viewType + '&metricID=0&filtersBase64=' + filterBase64)); } window.handleChartTypeChange = function(metricID, viewType = 'single') { if(viewType == 'single') { var chartType = $('[name=chartType]').val(); } else { var chartType = $('#metricBox' + metricID).find('[name=chartType]').val(); } var $form = $('#queryForm' + metricID); var formData = window.getFormData($form); $.post($.createLink('metric', 'ajaxGetEchartsOptions', 'metricID=' + metricID + '&chartType=' + chartType), formData, function(resp) { var options = JSON.parse(resp); if(!options) return; window.renderChart(metricID, viewType, options); }); } window.handleRemoveLabel = function(id) { var checkedItem = window.checkedList.find(function(checked){return checked.id == id}); if(!checkedItem) return; window.updateCheckAction(checkedItem.id, checkedItem.name, false); } window.handleDateLabelClick = function(evt) { $form = $(evt).closest('form'); $form.find('.query-date button.btn').removeClass('selected'); $form.find('.query-date-picker input[name="dateBegin"]').zui('datepicker').$.setValue(''); $form.find('.query-date-picker input[name="dateEnd"]').zui('datepicker').$.setValue(''); $(evt).addClass('selected'); } window.handleCalcDateClick = function(evt) { $form = $(evt).closest('form'); $form.find('.query-calc-date button.btn').removeClass('selected'); $(evt).addClass('selected'); } window.handleDatePickerChange = function(evt) { $form = $(evt).closest('form'); var dateBegin = $form.find('.query-date-picker input[name="dateBegin"]').zui('datepicker').$.value; var dateEnd = $form.find('.query-date-picker input[name="dateEnd"]').zui('datepicker').$.value; if(dateBegin.length && dateEnd.length) { $form.find('.query-date button.btn').removeClass('selected'); } } /* 事件处理函数结束。 */ window.isMetricChecked = function(id) { return window.checkedList.filter(function(metric){return metric.id == id}).length != 0; } window.updateCheckList = function(id, name, isChecked) { if(isChecked) { return window.checkedList.push({id: id, name: name}); } window.checkedList = window.checkedList.filter(function(item){return item.id != id}); } window.updateCheckAction = function(id, name, isChecked) { window.updateCheckList(id, name, isChecked); window.updateCheckbox(id, isChecked); window.renderCheckedLabel(); window.updateMetricBoxs(id, isChecked); } window.ajaxGetMetrics = function(scope, filters = '', callback) { $.get($.createLink('metric', 'ajaxGetMetrics', 'scope=' + scope + '&filters=' + filters), function(resp){ var metrics = JSON.parse(resp); var total = metrics.length; var checked = window.checkedList.map(obj => obj.id).join(','); var url = $.createLink('metric', 'ajaxGetMetricSideTree', 'scope=' + scope + '&checkedList=' + checked + '&filters=' + filters); $('.side .metric-tree').empty(); loadTarget(url, '.side .metric-tree'); if(typeof callback == 'function') callback(total); }); } window.updateFilterCheck = function() { var selector = '.filter-panel .panel-body .check-list-inline .checkbox-primary input:checked'; window.filterChecked = {'scope': [], 'object': [], 'purpose': []}; var hasChecked = false; $(selector).each(function(index, elem){ var name = $(elem).attr('name'); var value = $(elem).val(); window.filterChecked[name].push(value); hasChecked = true; }); if(!hasChecked) { $('.filter-btn .common').removeClass('hidden'); $('.filter-btn .checked').addClass('hidden'); return; } $('.filter-btn .common').addClass('hidden'); $('.filter-btn .checked').removeClass('hidden'); var checkedInfo = filterLang.checkedInfo; checkedInfo = checkedInfo.replace('%s', window.filterChecked.scope.length); checkedInfo = checkedInfo.replace('%s', window.filterChecked.object.length); checkedInfo = checkedInfo.replace('%s', window.filterChecked.purpose.length); $('.filter-btn .checked').text(checkedInfo); } window.resetFilterPanel = function() { var $checkboxList = $('.filter-panel .panel').find('.panel-body .check-list-inline .checkbox-primary'); $checkboxList.each(function(index, elem){ $(elem).find('input').prop('checked', false); }); window.updateFilterCheck(); $('.side-title').text(metricListLang); } window.initFilterPanel = function() { if(!$('.filter-panel').length) return; $('#mainMenu').after($('.filter-panel')); toggleSearchBtn(true); if(scope == 'filter') { toggleSearchBtn(false); $('.filter-panel').removeClass('hidden'); window.updateFilterCheck(); } else { window.hideFilterPanel(); } } window.getMetricRecordType = function(recordRow) { if(!recordRow) return false; var type = []; if(recordRow.scope) type.push('scope'); if(recordRow.date) type.push('date'); if(type.length == 0) type.push('system'); return type.join('-'); } window.renderChart = function(metricID, viewType, options) { var $currentBox = $('#metricBox' + metricID); if(viewType == 'single') $currentBox = $('.table-and-chart-single'); if(!$currentBox.find('.chart').length) return; var classes = viewType == 'single' ? 'chart chart-single' : 'chart chart-multiple'; $currentBox.find('.chart').remove(); $currentBox.find('.chart-side').append('
'); window.renderEchart($currentBox.find('.chart')[0], options); } window.renderEchart = function($obj, option) { $.getLib(config.webRoot + 'js/echarts/echarts.common.min.js', {root: false}, function() { var myChart = echarts.init($obj); option && myChart.setOption(option); }); } window.setDropDown = function() { var $drop = $('.dropdown-icon'); $drop.toggleClass('rotate'); if($drop.hasClass('rotate')) { window.isDropdown = true; window.unfoldContent(); } else { window.isDropdown = false; window.foldContent(); } } window.unfoldContent = function() { var $content = $('.checked-content'); var contentHeight = 48 + (window.lineCount - 1) * 40; $content.height(contentHeight); window.setMultiTableHeight(contentHeight); setTimeout(function(){ $content.find('.gray-next').addClass('gray-visible'); $content.find('.gray-next').removeClass('gray-hidden'); }, 300); } window.foldContent = function() { var $content = $('.checked-content'); var contentHeight = 48; $content.height(contentHeight); window.setMultiTableHeight(contentHeight); $content.find('.gray-next').addClass('gray-hidden'); $content.find('.gray-next').removeClass('gray-visible'); } window.updateMetricBoxs = function(id, isChecked) { if(!isChecked) { $('#metricBox' + id).remove(); $('.table-and-charts').first().find('.metric-name').removeClass('metric-name-notfirst'); } else { window.appendMetricBox(id); } } /** * 多选添加一个度量项到展示区。 * Add a metricBox. * * @access public * @return void */ window.appendMetricBox = function(id, mode = 'add') { var url = $.createLink('metric', 'ajaxGetMultipleMetricBox', 'metricID=' + id); var metricDom = $('