%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/components/bitrix/report.construct/templates/admin/ |
Current File : //home/bitrix/www/bitrix/components/bitrix/report.construct/templates/admin/template.php |
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); if (!empty($arResult['ERROR'])) { echo $arResult['ERROR']; return false; } if (!empty($arResult['FORM_ERROR'])) { ?> <font color='red'><?=$arResult['FORM_ERROR']?></font><br/><br/> <? } $GLOBALS['APPLICATION']->SetAdditionalCSS('/bitrix/js/report/css/report.css'); $GLOBALS['APPLICATION']->AddHeadScript('/bitrix/js/report/construct.js'); CJSCore::Init(array('date', 'access')); ?> <!-- Redefinition of some styles --> <style type="text/css"> #sale-report-construct-buttons-block { padding-top: 18px; } .reports-filter-quan-item {height: 30px;} .reports-filter-quan-item .reports-checkbox { margin: 0;} .reports-filter-block { width: 800px; } .report-filter-calendar { margin-left: 4px; } .reports-forming-column { height: 38px; padding-top: 0px; } .reports-add-col-button-down, .reports-add-col-button-up, .reports-checkbox { vertical-align: middle; margin-top: 8px; padding: 0;} /* grouping */ .reports-grouping-checkbox, .reports-grouping-subtotal-checkbox { display:inline-block; margin-right:6px; position:relative; vertical-align:middle; } .reports-grouping-header { padding: 0 0 15px 42px; font-size: 0px; position: relative; } .reports-image-arrow-bottom1 { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEU\ gAAAAcAAAAVCAIAAAAFLmMUAAAABnRSTlMA/wD/AP83WBt9AAAARElEQVQYle2RwQ3AMAgDQ8Rkt\ zes5j5QaaREygK918kyH2OSxoa3ZWYJ4GsFKJn7+Z9eUpPUyxbAHMusn+slItrt+LcH3bElmA5AL\ PgAAAAASUVORK5CYII=") no-repeat scroll 0 0 transparent; } .reports-image-arrow-bottom2 { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEU\ gAAAIEAAAAVCAIAAADuNRpSAAAABnRSTlMA/wD/AP83WBt9AAAAe0lEQVRYhe3ZQQqAMAwAwVZ8W\ R7er8VDpVIfkBXcOfVYuhAh9sxsQp30BX5qjDEPEWEDTETMw8HeQ80GX2ADng14NuDZgGcDng14N\ uDZgPfsKtYGQ8W2fdHaYKiSs4hnA17PzNeXwIlU7Gj7oxug3j2L5tMbANH9n4y7AHQnFgWuXmHqA\ AAAAElFTkSuQmCC") no-repeat scroll 0 0 transparent; } .reports-checkbox-g-arrow-bottom { display: block; height: 21px; width: 7px; position: absolute; bottom: 0; left: 32px; } .reports-checkbox-gs-arrow-bottom { display: block; height: 21px; width: 129px; position: absolute; bottom: 0; left: 51px; } .reports-grouping-header-title { color:#a6a6a6; line-height:11px; font-size:11px; width: 130px; display: inline-block; position: relative; margin-right: 10px; } /*.reports-filter-item { height: 30px; }*/ .reports-filter-butt-wrap { top: 3px; } .reports-filter-butt-wrap .reports-checkbox { margin-top: 0px; } .reports-filter-item-name { width: 160px; vertical-align: top; margin-top: 1px; } .reports-filter-item select { vertical-align: top; } .reports-sort-column { margin-bottom: 15px; } .reports-add-col-title { height: 16px; padding-top: 3px; } .reports-add-col-tit-prcnt, .reports-add-col-tit-edit, .reports-add-col-tit-prcnt-close, .reports-add-col-tit-remove { top: 4px; } .reports-add-col-title { height: 32px; } .reports-add-col-select.reports-add-col-select-calc { position: relative; top: -5px; } .reports-add-col-title { top: 10px; } .reports-add-col-tit-text { margin-right: 5px; } .reports-add-col-input input { position: relative; top: -5px; } .reports-add-col-inp-title { top: -17px; } .reports-add-col-select-prcnt, .reports-add-col-select-prcnt-by { position: relative; top: -5px; } .reports-limit-res-select-lable { margin-right: 5px; margin-left: 5px; } table.edit-table div {font-size:14px;} .reports-list-table th { font: 14px Arial,Helvetica,sans-serif; } .filter-field-date-combobox .filter-date-interval{display:none;} .filter-field-date-combobox span.filter-date-interval-hellip{display:none;} .filter-field-date-combobox .filter-date-interval-after{display:inline;} .filter-field-date-combobox .filter-date-interval-before{display:inline;} .filter-field-date-combobox .filter-date-interval-after.filter-date-interval-before{display:block;margin-top:0.5em;} .filter-field-date-combobox .filter-date-interval-after.filter-date-interval-before span.filter-date-interval-hellip{display:inline-block;margin:0;} .filter-field-date-combobox .filter-date-interval-to{display:none;} .filter-field-date-combobox .filter-date-interval-from{display:none;} .filter-field-date-combobox .filter-date-interval-after .filter-date-interval-to{display:inline;} .filter-field-date-combobox .filter-date-interval-before .filter-date-interval-from{display:inline;} .filter-field-date-combobox .filter-day-interval {display:none;} .filter-field-date-combobox .filter-day-interval-selected {display:inline;} .webform-content { padding: 7px 20px 15px 16px; } .pagetitle-wrap { margin: 0px -3px 0px -1px; min-height: 30px; padding: 0px 0px 4px 4px; position: relative; } .pagetitle { color: rgb(85, 85, 85); font-size: 30px; margin: -2px 0px 0px; padding: 0px; font-weight: normal; text-shadow: 0px 1px 0px rgb(255, 255, 255); } .pagetitle-menu { right: 5px; top: 0px; position: absolute; z-index: 2; } .adm-filter-box-sizing { width: auto; } .reports-title-label { padding-top: 20px; } #bx-admin-prefix .popup-window-close-icon { background-color: inherit; right: 0; top: 0; } </style> <script type="text/javascript"> initReportControls(); BX.message({'REPORT_DEFAULT_TITLE': '<?=CUtil::JSEscape(GetMessage('REPORT_DEFAULT_TITLE'))?>'}); BX.message({'REPORT_ADD': '<?=CUtil::JSEscape(GetMessage('REPORT_ADD'))?>'}); BX.message({'REPORT_CANCEL': '<?=CUtil::JSEscape(GetMessage('REPORT_CANCEL'))?>'}); BX.message({'REPORT_PRCNT_VIEW_IS_NOT_AVAILABLE': '<?=CUtil::JSEscape(GetMessage('REPORT_PRCNT_VIEW_IS_NOT_AVAILABLE'))?>'}); BX.message({'REPORT_PRCNT_BUTTON_TITLE': '<?=CUtil::JSEscape(GetMessage('REPORT_PRCNT_BUTTON_TITLE'))?>'}); </script> <!-- The form is defined in a body of administrative page --> <?php echo bitrix_sessid_post('csrf_token')?> <div class="reports-constructor"> <div class="adm-filter-wrap"> <? $_title = ''; if (!empty($arResult['report']['TITLE'])) $_title = $arResult['report']['TITLE']; ?> <div class="adm-input-wrap"> <div class="reports-title-label"><?=GetMessage('REPORT_TITLE')?></div> <input style="padding-left: 5px; padding-right: 5px;" class="adm-input" type="text" id="reports-new-title" name="report_title" value="<?=htmlspecialcharsbx($_title)?>" /> <div class="reports-title-label"><?=GetMessage('REPORT_DESCRIPTION')?></div> <div style="padding-left: 0px; padding-right: 10px;"> <textarea rows="5" style="padding-left: 5px; padding-right: 5px; width: 100%;" name="report_description"><?=htmlspecialcharsbx($arResult['report']['DESCRIPTION'])?></textarea> </div> </div> <?php /* Site option */ ?> <? if (isset($arParams['F_SALE_SITE'])): ?> <div class="reports-title-label"><?=GetMessage('SALE_REPORT_SITE')?></div> <div class="adm-filter-alignment adm-calendar-block"> <div class="adm-filter-box-sizing"> <?php $selected = $arParams['F_SALE_SITE']; $siteList = call_user_func(array($arParams['REPORT_HELPER_CLASS'], 'getSiteList')); ?> <span class="adm-select-wrap"> <select class="adm-select" id="sale-site-filter" name="F_SALE_SITE"> <? foreach($siteList as $kLID => $vSiteName): ?> <option <?php if ($kLID==$selected) echo 'selected="1"'; ?>value="<?=htmlspecialcharsbx($kLID)?>"><?=htmlspecialcharsbx($vSiteName)?></option> <? endforeach; ?> </select> </span> </div> </div> <? endif; ?> <div class="reports-title-label"><?=GetMessage('REPORT_PERIOD')?></div> <? $_date_from = ''; $_date_to = ''; if ($arResult["preSettings"]["period"]['type'] == 'interval') { $_date_from = ConvertTimeStamp($arResult["preSettings"]["period"]['value'][0], 'SHORT'); $_date_to = ConvertTimeStamp($arResult["preSettings"]["period"]['value'][1], 'SHORT'); } else if ($arResult["preSettings"]["period"]['type'] == 'before') { $_date_from = ConvertTimeStamp($arResult["preSettings"]["period"]['value'], 'SHORT'); } else if ($arResult["preSettings"]["period"]['type'] == 'after') { $_date_to = ConvertTimeStamp($arResult["preSettings"]["period"]['value'], 'SHORT'); } ?> <!-- stub --> <div style="display: none;"> <select id="task-interval-filter"> <option value="" selected></option> </select> <span class="filter-date-interval"></span> <span class="filter-day-interval"> </span> </div> <!-- period --> <div class="adm-filter-alignment adm-calendar-block"> <div class="adm-filter-box-sizing"> <!-- period select --> <span class="adm-select-wrap adm-calendar-period"> <select onchange="OnReportIntervalChange(this)" name="F_DATE_TYPE" id="report-interval-filter" class="adm-select adm-calendar-period"> <?php foreach($arResult['periodTypes'] as $key):?> <option value="<?=htmlspecialcharsbx($key)?>"<?=($key == $arResult["preSettings"]["period"]['type']) ? ' selected' : ''?>><?=GetMessage('REPORT_CALEND_'.ToUpper(htmlspecialcharsbx($key)))?></option> <?php endforeach;?> </select> </span> <!-- filter date from --> <div style="display: none;" class="adm-input-wrap adm-calendar-inp adm-calendar-first"> <input type="text" value="<?=$_date_from?>" size="10" name="F_DATE_FROM" id="REPORT_INTERVAL_F_DATE_FROM" class="adm-input adm-calendar-from"> <img onclick="BX.calendar({node:this, field:'REPORT_INTERVAL_F_DATE_FROM', form: '', bTime: false, bHideTime: false});" title="<?php echo GetMessage("TASKS_PICK_DATE")?>" class="adm-calendar-icon"> </div> <!-- filter separator --> <span style="display: none;" class="adm-calendar-separate"></span> <!-- filter date to --> <div style="display: none;" class="adm-input-wrap adm-calendar-second"> <input type="text" value="<?=$_date_to?>" size="10" name="F_DATE_TO" id="REPORT_INTERVAL_F_DATE_TO" class="adm-input adm-calendar-to"> <img onclick="BX.calendar({node:this, field:'REPORT_INTERVAL_F_DATE_TO', form: '', bTime: false, bHideTime: false});" title="<?php echo GetMessage("TASKS_PICK_DATE")?>" class="adm-calendar-icon"> </div> <!-- days field --> <div style="display: none;" class="adm-input-wrap filter-day-interval"> <span class="<?php if ($arResult["preSettings"]["period"]['type'] == "days"): ?>filter-day-interval-selected<?php endif; ?>"> <input type="text" size="5" class="filter-date-days" value="<?php echo $arResult["preSettings"]["period"]['type'] == "days" ? $arResult["preSettings"]["period"]['value'] : ""?>" name="F_DATE_DAYS"/> </span> <span> <?php echo GetMessage("REPORT_CALEND_REPORT_DAYS")?></span> </div> </div> </div> <script type="text/javascript"> function OnReportIntervalChange(select) { var filterSelectContainer = BX.findParent(select); var filterDateFrom = BX.findNextSibling(filterSelectContainer, {'tag':'div', 'className': 'adm-calendar-first'}); var filterDateSeparator = BX.findNextSibling(filterDateFrom, {'tag':'span', 'className': 'adm-calendar-separate'}); var filterDateTo = BX.findNextSibling(filterDateSeparator, {'tag':'div', 'className': 'adm-calendar-second'}); var filterDays = BX.findNextSibling(filterDateTo, {'tag':'div', 'className': 'filter-day-interval'}); filterDateFrom.style.display = 'none'; filterDateSeparator.style.display = 'none'; filterDateTo.style.display = 'none'; filterDays.style.display = 'none'; if (select.value == "interval") { filterDateFrom.style.display = 'inline-block'; filterDateSeparator.style.display = 'inline-block'; filterDateTo.style.display = 'inline-block'; } else if(select.value == "before") filterDateTo.style.display = 'inline-block'; else if(select.value == "after") filterDateFrom.style.display = 'inline-block'; else if(select.value == "days") filterDays.style.display = 'inline-block'; } BX.ready(function() { OnReportIntervalChange(BX('report-interval-filter')); }); </script> </div> <!-- select --> <div class="reports-content-block-disabled-style" id='report_columns_list'> <span class="reports-content-block-title"><?=GetMessage('REPORT_COLUMNS')?></span> <div class="reports-add-columns-block" id="reports-add-columns-block"> <div class="reports-grouping-header"> <span class="reports-checkbox-g-arrow-bottom reports-image-arrow-bottom1"></span> <span class="reports-grouping-header-title"><?=GetMessage('REPORT_GROUP_RESULT_BY_COLUMN')?></span> <span class="reports-checkbox-gs-arrow-bottom reports-image-arrow-bottom2"></span> <span class="reports-grouping-header-title"><?=GetMessage('REPORT_GROUP_RESULT_SUBTOTAL')?></span> </div> <div id="reports-forming-column-example" style="display: none"> <input type="hidden" name="report_select_columns[%s][name]" /> <span class="reports-add-col-checkbox"> <input type="checkbox" class="reports-checkbox"/> </span><span class="reports-grouping-checkbox"> <input type="checkbox" class="reports-checkbox" /> </span><span class="reports-grouping-subtotal-checkbox"> <input type="checkbox" class="reports-checkbox" /> </span><span class="reports-add-col-buttons-bl"> <span class="reports-add-col-button-down"></span><span class="reports-add-col-button-up"></span> </span><span class="reports-add-col-title"><span class="reports-add-col-tit-text"></span><span class="reports-add-col-input"><input type="text" name="report_select_columns[%s][alias]"/><span class="reports-add-col-inp-title"><?=GetMessage('REPORT_NEW_COLUMN_TITLE')?></span></span><span class="reports-add-col-tit-prcnt" title="<?=GetMessage('REPORT_PRCNT_BUTTON_TITLE')?>"></span><span class="reports-add-col-tit-edit" title="<?=GetMessage('REPORT_CHANGE_COLUMN_TITLE')?>"></span><span class="reports-add-col-tit-remove" title="<?=GetMessage('REPORT_REMOVE_COLUMN')?>"></span></span> </div> <div class="reports-add-column" id="reports-add-column-block"> <span class="reports-checkbox-arrow"></span> <span class="reports-checkbox-title"><?=GetMessage('REPORT_CALC_COLUMN')?></span><span class="reports-add-column-link reports-dashed" id="reports-add-select-column-button"><?=GetMessage('REPORT_ADD_SELECT_COLUMN')?></span> </div> </div> <?php /* use columns selection of price types */ ?> <?php if (call_user_func(array($arParams['REPORT_HELPER_CLASS'], 'getOwnerId')) === 'sale_SaleProduct'): ?> <div class="reports-filter-quan-item"> <input type="checkbox" <?=($arResult['preSettings']['helper_spec']['ucspt'] === true)?'checked="checked" ':''?> class="reports-checkbox" id="report-helper-spec-ucspt" name="helper_spec_ucspt" /> <span class="reports-limit-res-select-lable"> <label for="report-helper-spec-ucspt"><?=GetMessage('REPORT_HELPER_SPEC_UCSPT')?></label> </span> </div> <?php endif; ?> <div class="reports-sort-column"> <span class="reports-content-block-title"><?=GetMessage('REPORT_SORT_BY_SELECT_COLUMN')?></span><select class="reports-sort-select" id="reports-sort-select" name="reports_sort_select"><option value="_">_</option></select> <select name="reports_sort_type_select" id="reports-sort-type-select" class="reports-sort-type-select"><option value="ASC"><?=GetMessage('REPORT_SORT_TYPE_ASC')?></option><option value="DESC"><?=GetMessage('REPORT_SORT_TYPE_DESC')?></option></select> </div> <script type="text/javascript"> BX.ready(function() { GLOBAL_REPORT_SELECT_COLUMN_COUNT = 0; <? foreach ($arResult['preSettings']['select'] as $num => $selElem): ?> addSelectColumn(BX.findChild( BX('reports-add_col-popup-cont'), {tag:'input', attr:{type:'checkbox', name:'<?=CUtil::JSEscape($selElem['name'])?>'}}, true ), '<?=strlen($selElem['aggr']) ? CUtil::JSEscape($selElem['aggr']) : ''?>', '<?=strlen($selElem['alias']) ? CUtil::JSEscape($selElem['alias']) : ''?>', <?=$num?>, <?=($selElem['grouping']) ? 'true' : 'false'?>, <?=($selElem['grouping_subtotal']) ? 'true' : 'false'?>); <? endforeach; ?> <? foreach ($arResult['preSettings']['select'] as $num => $selElem): ?> <? if (strlen($selElem['prcnt'])): ?> setPrcntView(<?=$num?>, '<?=CUtil::JSEscape($selElem['prcnt'])?>'); <? endif; ?> <? endforeach; ?> <? if (array_key_exists("sort", $arResult["preSettings"])): ?> // add default sort setSelectValue(BX('reports-sort-select'), '<?=CUtil::JSEscape($arResult["preSettings"]['sort'])?>'); <? endif; ?> <? if (array_key_exists("sort_type", $arResult["preSettings"])): ?> // add default sort setSelectValue(BX('reports-sort-type-select'), '<?=CUtil::JSEscape($arResult["preSettings"]['sort_type'])?>'); <? endif; ?> startSubFilterRestore(); }); </script> </div> <!-- filters --> <div class="webform-additional-fields"> <div class="reports-content-block-disabled-style"> <span class="reports-content-block-title reports-title-filter"><?=GetMessage('REPORT_FILTER')?></span> <div class="reports-filter-block"> <div class="reports-limit-results" id="reports-filter-base-andor-selector"> <span class="reports-limit-res-select-lable"><?=GetMessage('REPORT_RESULT_LIMIT_BY')?></span><select filterId="0" class="reports-limit-res-select"> <option value="AND"><?=GetMessage('REPORT_ANDOR_AND')?></option> <option value="OR"><?=GetMessage('REPORT_ANDOR_OR')?></option> </select><span class="reports-limit-res-select-lable" id="reports-filter-base-andor-selector-text-and"><?=GetMessage('REPORT_RESULT_LIMIT_CONDITIONS')?></span><span class="reports-limit-res-select-lable" id="reports-filter-base-andor-selector-text-or" style="display: none;"><?=GetMessage('REPORT_RESULT_LIMIT_CONDITION')?></span> </div> <div id="reports-filter-item-example" style="display: none;"> <span class="reports-filter-item-name"><span class="reports-dashed"><?=GetMessage('REPORT_CHOOSE_FIELD')?></span></span><span class="reports-filter-butt-wrap"><span class="reports-filter-del-item"><i></i></span><span class="reports-filter-add-item"><i></i></span><span class="reports-filter-and-or"><span class="reports-filter-and-or-text"><?=GetMessage('REPORT_ANDOR')?></span><i></i></span><input type="checkbox" class="reports-checkbox" name="changeable" checked /></span> </div> <div id="reports-filter-andor-container-example" style="display: none" class="reports-filter-andor-container"> <div class="reports-filter-andor-item"> <select style="width: 80px;"> <option value="AND"><?=GetMessage('REPORT_ANDOR_ALL')?></option> <option value="OR"><?=GetMessage('REPORT_ANDOR_ANY')?></option> </select> <span class="reports-limit-res-select-lable reports-limit-res-select-lable-and"><?=GetMessage('REPORT_ANDOR_ALL_LABEL')?></span><span class="reports-limit-res-select-lable reports-limit-res-select-lable-or" style="display: none;"><?=GetMessage('REPORT_ANDOR_ANY_LABEL')?></span><span class="reports-filter-butt-wrap"><span class="reports-filter-del-item"><i></i></span><span class="reports-filter-add-item"><i></i></span><span class="reports-filter-and-or"><span class="reports-filter-and-or-text"><?=GetMessage('REPORT_ANDOR')?></span><i></i></span><input type="checkbox" class="reports-checkbox" disabled/></span> </div> </div> <div class="reports-filter-andor-container" id="reports-filter-columns-container"></div> <div class="reports-filter-checkbox-title"> <span class="reports-filter-checkbox-arrow"></span> <span class="reports-filter-checkbox-tit-text"><?=GetMessage('REPORT_CHANGE_FILTER_IN_VIEW')?></span> </div> </div> <script type="text/javascript"> var GLOBAL_REPORT_FILTER_COUNT = 1; var GLOBAL_REPORT_GROUPING_COLUMNS_COUNT = 0; var GLOBAL_PRE_FILTERS = null; <? if (!empty($arResult["preSettings"]["filter"])): ?> var GLOBAL_PRE_FILTERS = <?=CUtil::PhpToJSObject($arResult["preSettings"]["filter"])?>; <? endif; ?> BX.ready(function() { <? if (!empty($arResult["preSettings"]["limit"])): ?> // add default limit setReportLimit(true, '<?=$arResult["preSettings"]["limit"]?>'); <? endif; ?> <? if ($arResult["preSettings"]["grouping_mode"] === true): ?> enableReportLimit(false); <? endif; ?> }); </script> <div class="reports-filter-quan-item"> <input type="checkbox" class="reports-checkbox" id="report-filter-limit-checkbox"/> <span class="reports-limit-res-select-lable"><label for="report-filter-limit-checkbox"><?=GetMessage('REPORT_RESULT_LIMIT')?></label></span> <input type="text" class="reports-filter-quan-inp" id="report-filter-limit-input" name="report_filter_limit" disabled/> </div> <div class="reports-filter-quan-item"> <input type="checkbox" <?=($arResult['preSettings']['red_neg_vals'] === true)?'checked="checked" ':''?> class="reports-checkbox" id="report-negative-values-red-checkbox" name="report_red_neg_vals"/> <span class="reports-limit-res-select-lable"> <label for="report-negative-values-red-checkbox"><?=GetMessage('REPORT_NEGATIVE_VALUES_RED')?></label> </span> </div> <div class="reports-filter-quan-item" style="margin-top: 10px;"> <input type="checkbox" <?=($arResult['preSettings']['mobile']['enabled'] === true)?'checked="checked" ':''?> class="reports-checkbox" id="report-mobile-settings" name="report_mobile_enabled"/> <span class="reports-limit-res-select-lable"> <label for="report-mobile-settings"><?=GetMessage('REPORT_MOBILE_SETTINGS')?></label> </span> </div> </div> <div class="webform-corners-bottom"> <div class="webform-left-corner"></div> <div class="webform-right-corner"></div> </div> </div> <!-- preview --> <div class="reports-preview-table-report" id="reports-preview-table-report"> <span class="reports-prev-table-title"><?=GetMessage('REPORT_SCHEME_PREVIEW')?></span> <div class="reports-list"> <div class="reports-list-left-corner"></div> <div class="reports-list-right-corner"></div> <table cellspacing="0" class="report-list-table"> <tr> <th></th> </tr> </table> </div> </div> <!-- chart configuration --> <?php if ($arParams['USE_CHART']): ?> <style type="text/css"> .report-chart-add-ycolumn { display: none; float: left; position: relative; top: 0px; left: 0px; width: 10px; height: 10px; padding: 3px 3px 3px 3px; margin-left: 4px; background: url("/bitrix/js/report/css/images/sprites.png") -119px -3px no-repeat; cursor: pointer; } .report-chart-add-ycolumn-dummy { float: left; position: relative; top: 0px; left: 0px; width: 10px; height: 10px; padding: 3px 3px 3px 3px; margin-left: 4px; } .report-chart-remove-ycolumn { display: none; float: right; position: relative; top: 0px; right: 0px; width: 10px; height: 10px; padding: 3px 3px 3px 3px; cursor: pointer; } .report-chart-remove-ycolumn-dummy { float: right; position: relative; top: 0px; right: 0px; width: 10px; height: 10px; padding: 3px 3px 3px 3px; } .report-chart-span-minus { display: block; position: relative; top: 4px; width: 10px; height: 2px; background: url("/bitrix/js/report/css/images/sprites.png") -122px 0 no-repeat; cursor: pointer; } .report-chart-remove-ycolumn-bottom { float: left; left: 0; margin-left: 4px; right: auto; } .report-chart-add-ycolumn:hover { background-color: #C0C0C0; } .report-chart-remove-ycolumn:hover { background-color: #C0C0C0; } .report-chart-last-ycolumn-block:hover td .report-chart-add-ycolumn, .report-chart-last-ycolumn-block:hover td .report-chart-remove-ycolumn {display: block;} .report-chart-select-col {float: left; width: 100%;} #report-chart-config {padding-top: 20px;} #report-chart-switch {margin: 12px 0 12px 0;} #report-chart-params div {margin-bottom: 20px; padding: 4px 0;} #report-chart-display-checkbox {vertical-align: middle;} #report-chart-switch label {vertical-align: middle;} </style> <script type="text/javascript"> var GLOBAL_BX_REPORT_USING_CHARTS = true; </script> <?php $fDisplayChart = $arResult['preSettings']['chart']['display']; ?> <div id="report-chart-config"> <div id="report-chart-switch" class="reports-content-block-title<?php echo ($fDisplayChart)?' reports-title-filter':''; ?>"> <input id="report-chart-display-checkbox" type="checkbox"<?php echo ($fDisplayChart)?' checked':''; ?> name="display_chart"/> <label for="report-chart-display-checkbox"><?php echo htmlspecialcharsbx(GetMessage('REPORT_CHART_DISPLAY')); ?></label> </div> <div id="report-chart-params"<?php echo ($fDisplayChart)?'':' style="display: none;"'; ?>> <div> <span><label class="reports-title-label" for="report-chart-type"><?php echo htmlspecialcharsbx(GetMessage('REPORT_CHART_TYPE_LABEL_TEXT').':'); ?></label></span> <span> <select id="report-chart-type" name="chart_type"> <?php $bSelectFirst = true; $chartTypeSetting = $arResult['preSettings']['chart']['type']; if ($chartTypeSetting !== null) { $chartTypeIds = array(); foreach ($arResult['chartTypes'] as $chartTypeInfo) $chartTypeIds[] = $chartTypeInfo['id']; if (in_array($chartTypeSetting, $chartTypeIds)) $bSelectFirst = false; } ?> <?php $i = 0; foreach($arResult['chartTypes'] as $chartType): ?> <option value="<?=htmlspecialcharsbx($chartType['id'])?>"<?php if (($i++ === 0 && $bSelectFirst) || $chartType['id'] == $chartTypeSetting) echo 'selected="selected"'; ?>> <?=htmlspecialcharsbx($chartType['name'])?> </option> <?php endforeach; ?> </select> </span> </div> <table> <tr> <td><label class="reports-title-label" for="report-chart-args"><?php echo htmlspecialcharsbx(GetMessage('REPORT_CHART_LABEL_TEXT_ARGS').':'); ?></label></td> <td> <select id="report-chart-args" class="report-chart-select-col" name="chart_x"></select> </td> <td> <span class="report-chart-remove-ycolumn-dummy"></span> <span class="report-chart-add-ycolumn-dummy"></span> </td> </tr> <?php $yColumnsMaxNumber = 10; $yColumns = $arResult['preSettings']['chart']['y_columns']; $yColumnLastIndex = 0; $yColumnsLabelText = GetMessage('REPORT_CHART_LABEL_TEXT_VALUES'); if (is_array($yColumns)) { $n = count($yColumns); if ($n > 1) $yColumnLastIndex = $n - 1; } ?> <?php for ($i = 0; $i <= $yColumnLastIndex; $i++): ?> <tr<?php if ($yColumnLastIndex === $i) echo ' id="report-chart-last-ycolumn-block" class="report-chart-last-ycolumn-block"'; ?>> <td> <label class="reports-title-label"<?php echo ' for="report-chart-values['.$i.']"'; ?>><?php echo htmlspecialcharsbx($yColumnsLabelText.(($yColumnLastIndex > 0) ? ' ('.($i+1).')' : '').':'); ?> </label> </td> <td> <select<?php echo ' id="report-chart-values['.$i.']"'; ?> class="report-chart-select-col"<?php echo ' name="chart_y['.$i.']"'; ?>></select> </td> <td></td> </tr> <?php endfor; // for ($i = 1; $i <= $yColumnLastIndex; $i++): ?> </table> </div> <!-- add y column prototype --> <span id="report-chart-add-ycolumn-proto" class="report-chart-add-ycolumn" title="<?=htmlspecialcharsbx(GetMessage('REPORT_CHART_ADD_COL_LABEL_TITLE'))?>"></span> <!-- remove y column prototype --> <span id="report-chart-remove-ycolumn-proto" class="report-chart-remove-ycolumn" title="<?=htmlspecialcharsbx(GetMessage('REPORT_CHART_REMOVE_COL_LABEL_TITLE'))?>"> <span class="report-chart-span-minus"></span> </span> </div> <script type="text/javascript"> BX.ready(function () { var i, colId, match; var xColumnIndex = null, yColumnsIndexes = []; <?php $xColumnIndex = $arResult['preSettings']['chart']['x_column']; $yColumnsIndexes = $arResult['preSettings']['chart']['y_columns']; if ($xColumnIndex !== null && is_array($yColumnsIndexes) && count($yColumnsIndexes) > 0) { echo 'xColumnIndex = '.CUtil::JSEscape($xColumnIndex).';'.PHP_EOL; foreach ($yColumnsIndexes as $k => $v) { echo "\t\t".'yColumnsIndexes['.CUtil::JSEscape(intval($k)).'] = '.CUtil::JSEscape(intval($v)).';'. PHP_EOL; } } ?> var xSelect = BX('report-chart-args'); if (xSelect) if (xColumnIndex !== null) setSelectValue(xSelect, xColumnIndex); var ySelects = BX.findChildren(BX('report-chart-params'), {'tag': 'select', attr: {name: /chart_y\[\d+\]/}}, true); for (i in ySelects) { if (match = /\[(\d+)\]/.exec(ySelects[i].name)) { colId = match[1]; if (colId !== null && yColumnsIndexes[colId] !== null) setSelectValue(ySelects[i], yColumnsIndexes[colId]); } } var chartCheckbox = BX('report-chart-display-checkbox'); if (chartCheckbox) { BX.bind(chartCheckbox, 'click', function () { var chartSwitchBlock = BX('report-chart-switch'); var chartParamsBlock = BX('report-chart-params'); if (chartSwitchBlock) { if (this.checked) BX.addClass(chartSwitchBlock, 'reports-title-filter'); else BX.removeClass(chartSwitchBlock, 'reports-title-filter'); } if (chartParamsBlock) { if (this.checked) chartParamsBlock.style.display = ''; else chartParamsBlock.style.display = 'none'; } }); } // create "report-chart-add-ycolumn" if needed chartCreateYColumnSpanAdd(); // create "report-chart-remove-ycolumn" if needed chartCreateYColumnSpanRemove(); // chart type processing BX.bind(BX('report-chart-type'), 'change', chartOnChangeType); chartOnChangeType(); }); function chartCreateYColumnSpanAdd() { var lastYcolumnBlock, container, ySelect, blockIndex; var addYColumnSpan = BX('report-chart-add-ycolumn'); if (!addYColumnSpan) { lastYcolumnBlock = BX('report-chart-last-ycolumn-block'); if (lastYcolumnBlock) { ySelect = BX.findChildren(lastYcolumnBlock, {tag: 'select', 'className': 'report-chart-select-col'}, true); if (ySelect) { container = BX.findNextSibling(ySelect[0].parentNode, {tag: 'td'}); if (container) { blockIndex = chartGetStringIndex(ySelect[0].id); if (blockIndex < <?=CUtil::JSEscape($yColumnsMaxNumber - 1)?>) { addYColumnSpan = BX.clone(BX('report-chart-add-ycolumn-proto'), true); addYColumnSpan.id = 'report-chart-add-ycolumn'; container.appendChild(addYColumnSpan); BX.bind(addYColumnSpan, 'click', chartOnClickAddYcolumn); } } } } } } function chartCreateYColumnSpanRemove() { var lastYcolumnBlock, container, ySelect, blockIndex; var removeYColumnSpan = BX('report-chart-remove-ycolumn'); if (!removeYColumnSpan) { lastYcolumnBlock = BX('report-chart-last-ycolumn-block'); if (lastYcolumnBlock) { ySelect = BX.findChildren(lastYcolumnBlock, {tag: 'select', 'className': 'report-chart-select-col'}, true); if (ySelect) { container = BX.findNextSibling(ySelect[0].parentNode, {tag: 'td'}); if (container) { blockIndex = chartGetStringIndex(ySelect[0].id); if (blockIndex > 0) { removeYColumnSpan = BX.clone(BX('report-chart-remove-ycolumn-proto'), true); removeYColumnSpan.id = 'report-chart-remove-ycolumn'; if (blockIndex === <?=CUtil::JSEscape($yColumnsMaxNumber - 1)?>) BX.addClass(removeYColumnSpan, 'report-chart-remove-ycolumn-bottom'); container.appendChild(removeYColumnSpan); BX.bind(removeYColumnSpan, 'click', chartOnClickRemoveYcolumn); } } } } } } function chartOnClickAddYcolumn() { var container, block, blockCopy; var labelNode, labelText, selectNode, plusSpan, minusSpan; var prevLabelNode, prevLabelText; var blockIndex = null; block = this.parentNode.parentNode; if (block) { container = block.parentNode; chartRemoveWithClearId('report-chart-add-ycolumn'); chartRemoveWithClearId('report-chart-remove-ycolumn'); blockCopy = BX.clone(block); labelNode = BX.findChildren(blockCopy, {tag: 'label', 'className': 'reports-title-label'}, true); if (labelNode) { labelNode[0].setAttribute('for', chartIncStringIndex(labelNode[0].getAttribute('for'))); selectNode = BX.findChildren(blockCopy, {tag: 'select', 'className': 'report-chart-select-col'}, true); if (selectNode) { blockIndex = chartGetStringIndex(selectNode[0].id) + 1; selectNode[0].id = chartIncStringIndex(selectNode[0].id); selectNode[0].name = chartIncStringIndex(selectNode[0].name); } } if (blockIndex != null) { chartSetYColumnLabelText(labelNode[0], true, blockIndex + 1); if (blockIndex === 1) { prevLabelNode = BX.findChildren(block, {tag: 'label', 'className': 'reports-title-label'}, true); if (prevLabelNode) chartSetYColumnLabelText(prevLabelNode[0], true, blockIndex); } BX.removeClass(block, 'report-chart-last-ycolumn-block'); block.id = null; blockCopy.id = 'report-chart-last-ycolumn-block'; container.appendChild(blockCopy); chartCreateYColumnSpanAdd(); chartCreateYColumnSpanRemove(); } } } function chartRemoveWithClearId(id) { if (id) { var el = BX(id); if (el) { el.id = null; BX.remove(el); } } } function chartOnClickRemoveYcolumn() { var container, block, prevBlock; var labelNode, labelText, selectNode, blockIndex; block = this.parentNode.parentNode; prevBlock = BX.findPreviousSibling(block, {tag: block.tagName}) if (block && prevBlock) { container = block.parentNode; chartRemoveWithClearId('report-chart-add-ycolumn'); chartRemoveWithClearId('report-chart-remove-ycolumn'); labelNode = BX.findChildren(prevBlock, {tag: 'label', 'className': 'reports-title-label'}, true); if (labelNode) { selectNode = BX.findChildren(prevBlock, {tag: 'select', 'className': 'report-chart-select-col'}, true); if (selectNode) blockIndex = chartGetStringIndex(selectNode[0].id); } if (blockIndex != null) { if (blockIndex === 0) chartSetYColumnLabelText(labelNode[0]); BX.removeClass(block, 'report-chart-last-ycolumn-block'); block.id = null; BX.remove(block); prevBlock.id = 'report-chart-last-ycolumn-block'; BX.addClass(prevBlock, 'report-chart-last-ycolumn-block'); chartCreateYColumnSpanAdd(); chartCreateYColumnSpanRemove(); } } } function chartGetStringIndex(str) { var match; var index = null; newStr = null; if (match = /\[(\d+)\]/.exec(str)) index = match[1]; return parseInt(index); } function chartIncStringIndex(str) { var match, newStr; newStr = null; if (match = /\[(\d+)\]/.exec(str)) { newStr = match.input.substr(0, match.index)+'['+(++match[1])+']'+ match.input.substr(match.index+match[0].length); } return newStr; } function chartGetYColTypes() { return {<?php echo PHP_EOL; $i = 0; $li = count($arResult['chartTypes']) - 1; foreach ($arResult['chartTypes'] as $chartType) { echo "\t\t\t'".CUtil::JSEscape($chartType['id']).'\' : ['; $j = 0; foreach ($chartType['value_types'] as $v) echo (($j++ > 0)?',':'').'\''.CUtil::JSEscape($v).'\''; echo ']'.(($i++ < $li)?',':'').PHP_EOL; } ?> }; } function chartOnChangeType() { var chartTypeSelect; <?php // In this call selection lists of columns of values will be reformed. // It allows to filter types of sampled columns of values depending on chart type without use of a // special function. ?> rebuildSortSelect(); chartTypeSelect = BX('report-chart-type'); if (chartTypeSelect) chartSetYColumnStyle(chartTypeSelect.value === 'pie'); } function chartSetYColumnStyle(single) { var labels, index, container, params; single = !!single; params = BX('report-chart-params'); if (params) { labels = BX.findChildren(params, {tag: 'label', attr: {for: /report-chart-values\[\d\]/}}, true); if (labels.length > 1) { for (var i in labels) { index = chartGetStringIndex(labels[i].getAttribute('for')); if (index === 0) chartSetYColumnLabelText(labels[i], !single, index + 1); else { container = labels[i].parentNode.parentNode; if (container) container.style.display = (single) ? 'none' : ''; } } } else { container = labels[0].parentNode.parentNode; if (container) { if (single) BX.removeClass(container, 'report-chart-last-ycolumn-block'); else BX.addClass(container, 'report-chart-last-ycolumn-block'); } } } } function chartSetYColumnLabelText(label, indexed, index) { var labelText; if (!label) return; indexed = !!indexed; if (indexed && index == null) return; index = parseInt(index); labelText = '<?=CUtil::JSEscape($yColumnsLabelText)?>' + ((indexed) ? ' (' + index + ')' : '') + ':'; label.innerHTML = labelText; } </script> <?php endif; // if ($arParams['USE_CHART']): ?> </div> <!-- add select column popup --> <div class="reports-add_col-popup-cont" id="reports-add_col-popup-cont" style="display:none;"> <div class="reports-add_col-popup-title"> <?=GetMessage('REPORT_POPUP_COLUMN_TITLE'.'_'.call_user_func(array($arParams['REPORT_HELPER_CLASS'], 'getOwnerId')))?> </div> <div class="popup-window-hr popup-window-buttons-hr"><i></i></div> <div class="reports-add_col-popup"> <?=call_user_func(array($arParams['REPORT_HELPER_CLASS'], 'buildHTMLSelectTreePopup'), $arResult['fieldsTree'])?> </div> </div> <!-- choose filter column popup --> <div class="reports-add_col-popup-cont reports-add_filcol-popup-cont" id="reports-add_filcol-popup-cont" style="display:none;"> <div class="reports-add_col-popup-title"> <?=GetMessage('REPORT_POPUP_FILTER_TITLE'.'_'.call_user_func(array($arParams['REPORT_HELPER_CLASS'], 'getOwnerId')))?> </div> <div class="popup-window-hr popup-window-buttons-hr"><i></i></div> <div class="reports-add_col-popup"> <?=call_user_func(array($arParams['REPORT_HELPER_CLASS'], 'buildHTMLSelectTreePopup'), $arResult['fieldsTree'], true)?> </div> </div> <!-- percent view examples --> <div id="report-select-prcnt-examples" style="display: none"> <select class="reports-add-col-select-prcnt" style="margin-left: 4px; display: none;" disabled> <option value="self_column"><?=GetMessage('REPORT_PRCNT_BY_COLUMN')?></option> <option value="other_field"><?=GetMessage('REPORT_PRCNT_BY_FIELD')?></option> </select> <select class="reports-add-col-select-prcnt-by" style="margin-left: 4px; display: none;" disabled> </select> </div> <!-- select calc examples --> <div id="report-select-calc-examples" style="display: none"> <? foreach($arResult['calcVariations'] as $key => $values): ?> <select id="report-select-calc-<?=$key?>" disabled> <? foreach ($values as $v): ?> <option value="<?=htmlspecialcharsbx($v)?>"><?=GetMessage('REPORT_SELECT_CALC_VAR_'.htmlspecialcharsbx($v))?></option> <? endforeach; ?> </select> <? endforeach; ?> </div> <!-- filter compare examples --> <div id="report-filter-compare-examples" style="display: none"> <? foreach($arResult['compareVariations'] as $key => $values): ?> <select id="report-filter-compare-<?=htmlspecialcharsbx($key)?>" class="report-filter-compare-<?=htmlspecialcharsbx($key)?>"> <? foreach ($values as $v): ?> <option value="<?=$v?>"><?=GetMessage('REPORT_FILTER_COMPARE_VAR_'.$v)?></option> <? endforeach; ?> </select> <? endforeach; ?> </div> <!-- filter value control examples --> <div id="report-filter-value-control-examples" style="display: none"> <span name="report-filter-value-control-integer"> <input type="text" name="value" /> </span> <span name="report-filter-value-control-float"> <input type="text" name="value" /> </span> <span name="report-filter-value-control-string"> <input type="text" name="value" /> </span> <span name="report-filter-value-control-boolean"> <select class="report-filter-select" name="value"> <option value=""><?=GetMessage('REPORT_IGNORE_FILTER_VALUE')?></option> <option value="true"><?=GetMessage('REPORT_BOOLEAN_VALUE_TRUE')?></option> <option value="false"><?=GetMessage('REPORT_BOOLEAN_VALUE_FALSE')?></option> </select> </span> <span name="report-filter-value-control-datetime" class="report-filter-calendar"> <input type="text" class="reports-filter-input" name="value" /><img alt="img" class="reports-filt-calen-img" src="/bitrix/js/main/core/images/calendar-icon.gif" /> </span> </div>