%PDF- %PDF-
Direktori : /proc/self/root/home/bitrix/www/bitrix/components/bitrix/report.list/templates/.default/ |
Current File : //proc/self/root/home/bitrix/www/bitrix/components/bitrix/report.list/templates/.default/script.js |
BX.namespace('BX.Report'); BX.Report.ReportListClass = (function () { var ReportListClass = function(parameters) { this.ajaxUrl = '/bitrix/components/bitrix/report.list/ajax.php'; this.jsClass = parameters.jsClass; this.containerId = parameters.containerId; this.editUrl = parameters.editUrl; this.deleteUrl = parameters.deleteUrl; this.copyUrl = parameters.copyUrl; this.deleteConfirmUrl = parameters.deleteConfirmUrl; this.ownerId = parameters.ownerId; this.sessionError = Boolean(parameters.sessionError); this.destFormName = parameters.destFormName || 'report-list-destFormName'; this.init(); }; ReportListClass.prototype.init = function() { var menuButton = BX.findChildren( BX(this.containerId), { tagName:'a', className:'reports-menu-button' }, true); for(var i = 0; i < menuButton.length; i++) { BX.bind(menuButton[i], 'click', BX.delegate(function(e) { this.showMenu(e); }, this)); } if(this.sessionError) { BX.Report.showModalWithStatusAction({ status: 'error', message: BX('report-list-error').innerHTML }); } }; ReportListClass.prototype.showMenu = function(e) { BX.PreventDefault(e); var i = 0; var element = BX.proxy_context; var sid = element.id.substr(4); var pos = sid.indexOf('d'); var markDefault = (pos < 0) ? 0 : parseInt(sid.substr(pos+1)); var RID = parseInt((pos > 0) ? sid.substr(0,pos) : sid); var editUrl = this.editUrl.replace('REPORT_ID', RID); var deleteUrl = this.deleteUrl.replace('REPORT_ID', RID); var copyUrl = this.copyUrl.replace('REPORT_ID', RID); var menuItems = []; var access = false, accessMark ='', listAccessMark = ['r', 'e', 'f']; for(var k = 0; listAccessMark.length > k; k++) { var position = sid.indexOf(listAccessMark[k]); if(position > 0) { accessMark = sid.slice(position); access = true; break; } } menuItems[i++] = { text : BX.message('REPORT_COPY_SHORT'), title : BX.message('REPORT_COPY_FULL'), className : 'reports-menu-popup-item-copy', href: copyUrl }; menuItems[i++] = { text : BX.message('REPORT_EXPORT_SHORT'), title : BX.message('REPORT_EXPORT_FULL'), className : 'reports-menu-popup-item-export', onclick: 'BX.Report["'+this.jsClass+'"].export("'+RID+'");' }; if(access) { switch (accessMark) { case 'r': break; case 'e': menuItems[i++] = { text : BX.message('REPORT_EDIT_SHORT'), title : BX.message('REPORT_EDIT_FULL'), className : 'reports-menu-popup-item-edit', href: editUrl }; break; case 'f': menuItems[i++] = { text : BX.message('REPORT_EDIT_SHORT'), title : BX.message('REPORT_EDIT_FULL'), className : 'reports-menu-popup-item-edit', href: editUrl }; menuItems[i++] = { text : BX.message('REPORT_DELETE_SHORT'), title : BX.message('REPORT_DELETE_FULL'), className : 'reports-menu-popup-item-delete', href: deleteUrl, onclick: BX.delegate(function(e){ this.confirmReportDelete(RID); BX.PreventDefault(e); }, this) }; break; } } else { if (markDefault === 0) { menuItems[i++] = { text : BX.message('REPORT_EDIT_SHORT'), title : BX.message('REPORT_EDIT_FULL'), className : 'reports-menu-popup-item-edit', href: editUrl }; menuItems[i++] = { text : BX.message('REPORT_SHARING_SHORT'), title : BX.message('REPORT_SHARING_FULL'), className : 'reports-menu-popup-item-sharing', onclick: 'BX.Report["'+this.jsClass+'"].sharing("'+RID+'");' }; } menuItems[i++] = { text : BX.message('REPORT_DELETE_SHORT'), title : BX.message('REPORT_DELETE_FULL'), className : 'reports-menu-popup-item-delete', href: deleteUrl, onclick: BX.delegate(function(e){ this.confirmReportDelete(RID); BX.PreventDefault(e); }, this) }; } BX.PopupMenu.show(RID, element, menuItems, {}); }; ReportListClass.prototype.confirmReportDelete = function(id) { var href = this.deleteConfirmUrl.replace('REPORT_ID', id); if(confirm(BX.message('REPORT_DELETE_CONFIRM'))) { var form = BX.create('form', { attrs: {method:'post'} }); form.action = href; form.appendChild(BX.create('input', { attrs: { type:'hidden', name:'csrf_token', value:BX.message('bitrix_sessid') } })); document.body.appendChild(form); BX.submit(form); } }; var entityToNewShared = {}; var loadedReadOnlyEntityToNewShared = {}; var maxAccessName = ''; ReportListClass.prototype.sharing = function(reportId) { entityToNewShared = {}; loadedReadOnlyEntityToNewShared = {}; BX.PopupMenu.destroy(reportId); BX.Report.modalWindowLoader( BX.Report.addToLinkParam(this.ajaxUrl, 'action', 'showSharing'), { id: 'report_show_sharing_'+reportId, responseType: 'json', postData: { reportId: reportId }, afterSuccessLoad: BX.delegate(function(response) { if(response.status != 'success') { response.errors = response.errors || [{}]; BX.Report.showModalWithStatusAction({ status: 'error', message: response.errors.pop().message }); } var objectOwner = { name: response.owner.name, avatar: response.owner.avatar, link: response.owner.link }; maxAccessName = response.owner.access; BX.Report.modalWindow({ modalId: 'bx-report-sharing-'+reportId, title: BX.message('REPORT_LIST_SHARING_TITLE_POPUP'), contentClassName: '', contentStyle: {}, events: { onAfterPopupShow: BX.delegate(function () { BX.addCustomEvent('onChangeRightOfSharing', BX.proxy(this.onChangeRightOfSharing, this)); for (var i in response.members) { if (!response.members.hasOwnProperty(i)) { continue; } entityToNewShared[response.members[i].entityId] = { item: { id: response.members[i].entityId, name: response.members[i].name, avatar: response.members[i].avatar }, type: response.members[i].type, right: response.members[i].right }; } BX.SocNetLogDestination.init({ name : this.destFormName, searchInput : BX('feed-add-post-destination-input'), bindMainPopup : { 'node': BX('feed-add-post-destination-container'), 'offsetTop' : '5px', 'offsetLeft': '15px' }, bindSearchPopup : { 'node': BX('feed-add-post-destination-container'), 'offsetTop' : '5px', 'offsetLeft': '15px' }, callback : { select : BX.proxy(this.onSelectDestination, this), unSelect : BX.proxy(this.onUnSelectDestination, this), openDialog : BX.proxy(this.onOpenDialogDestination, this), closeDialog : BX.proxy(this.onCloseDialogDestination, this), openSearch : BX.proxy(this.onOpenSearchDestination, this), closeSearch : BX.proxy(this.onCloseSearchDestination, this) }, items: response.destination.items, itemsLast: response.destination.itemsLast, itemsSelected : response.destination.itemsSelected }); var BXSocNetLogDestinationFormName = this.destFormName; BX.bind(BX('feed-add-post-destination-container'), 'click', function(e){ BX.SocNetLogDestination.openDialog(BXSocNetLogDestinationFormName); BX.PreventDefault(e); }); BX.bind(BX('feed-add-post-destination-input'), 'keyup', BX.proxy(this.onKeyUpDestination, this)); BX.bind(BX('feed-add-post-destination-input'), 'keydown', BX.proxy(this.onKeyDownDestination, this)); }, this), onPopupClose: BX.delegate(function () { if(BX.SocNetLogDestination && BX.SocNetLogDestination.isOpenDialog()) { BX.SocNetLogDestination.closeDialog() } BX.removeCustomEvent('onChangeRightOfSharing', BX.proxy(this.onChangeRightOfSharing, this)); BX.proxy_context.destroy(); }, this) }, content: [ BX.create('div', { props: { className: 'bx-report-popup-content' }, children: [ BX.create('table', { props: { className: 'bx-report-popup-shared-people-list' }, children: [ BX.create('thead', { html: '<tr>'+ '<td class="bx-report-popup-shared-people-list-head-col1">' +BX.message('REPORT_LIST_SHARING_OWNER')+'</td></tr>' }), BX.create('tr', { html: '<tr>' + '<td class="bx-report-popup-shared-people-list-col1" ' + 'style="border-bottom: none;">' + '<a class="bx-report-filepage-used-people-link" href="' + objectOwner.link + '">' + '<span class="bx-report-filepage-used-people-avatar" ' + 'style="background-image: url(' + objectOwner.avatar + ');">'+ '</span>'+BX.util.htmlspecialchars(objectOwner.name)+'</a></td></tr>' }) ] }), BX.create('table', { props: { id: 'bx-report-popup-shared-people-list', className: 'bx-report-popup-shared-people-list', style: 'display:none;' }, children: [ BX.create('thead', { html: '<tr>' + '<td class="bx-report-popup-shared-people-list-head-col1">' +BX.message('REPORT_LIST_SHARING_NAME_RIGHTS_USER') +'</td>'+ '<td class="bx-report-popup-shared-people-list-head-col2">' +BX.message('REPORT_LIST_SHARING_NAME_RIGHTS')+ '</td><td class="bx-report-popup-shared-people-list-head-col3">'+ '</td></tr>' }) ] }), BX.create('div', { props: { id: 'feed-add-post-destination-container', className: 'feed-add-post-destination-wrap' }, children: [ BX.create('span', { props: { className: 'feed-add-post-destination-item' } }), BX.create('span', { props: { id: 'feed-add-post-destination-input-box', className: 'feed-add-destination-input-box' }, style: { background: 'transparent' }, children: [ BX.create('input', { props: { type: 'text', value: '', id: 'feed-add-post-destination-input', className: 'feed-add-destination-inp' } }) ] }), BX.create('a', { props: { href: '#', id: 'bx-destination-tag', className: 'feed-add-destination-link' }, style: { background: 'transparent' }, text: BX.message('REPORT_LIST_SHARING_NAME_ADD_RIGHTS_USER'), events: { click: BX.delegate(function () { }, this) } }) ] }) ] }) ], buttons: [ BX.create('a', { text: BX.message('REPORT_LIST_BTN_SAVE'), props: { className: 'bx-report-btn bx-report-btn-big bx-report-btn-green' }, events: { click: BX.delegate(function () { BX.Report.ajax({ method: 'POST', dataType: 'json', url: BX.Report.addToLinkParam( this.ajaxUrl, 'action', 'changeSharing'), data: { reportId: reportId, entityToNewShared: entityToNewShared }, onsuccess: BX.delegate(function (response) { if (!response) return; BX.Report.showModalWithStatusAction(response); }, this) }); BX.PopupWindowManager.getCurrentPopup().close(); }, this) } }), BX.create('a', { text: BX.message('REPORT_LIST_BTN_CLOSE'), props: { className: 'bx-report-btn bx-report-btn-big bx-report-btn-transparent' }, events: { click: function () { BX.PopupWindowManager.getCurrentPopup().close(); } } }) ] }); }, this) } ); }; ReportListClass.prototype.onSelectDestination = function(item, type, search) { entityToNewShared[item.id] = entityToNewShared[item.id] || {}; BX.Report.appendNewShared({ maxAccessName: maxAccessName, readOnly: !!loadedReadOnlyEntityToNewShared[item.id], destFormName: this.destFormName, item: item, type: type, right: entityToNewShared[item.id].right }); entityToNewShared[item.id] = { item: item, type: type, right: entityToNewShared[item.id].right || 'access_read' }; BX.Report.show(BX('bx-report-popup-shared-people-list')); }; ReportListClass.prototype.onUnSelectDestination = function (item, type, search) { var entityId = item.id; if(!!loadedReadOnlyEntityToNewShared[entityId]) { return false; } delete entityToNewShared[entityId]; var child = BX.findChild(BX('bx-report-popup-shared-people-list'), {attribute: {'data-dest-id': '' + entityId + ''}}, true); if (child) { BX.remove(child); } if(BX.Report.isEmptyObject(entityToNewShared)) { BX.Report.hide(BX('bx-report-popup-shared-people-list')); } }; ReportListClass.prototype.onOpenDialogDestination = function() { BX.style(BX('feed-add-post-destination-input-box'), 'display', 'inline-block'); BX.style(BX('bx-destination-tag'), 'display', 'none'); BX.focus(BX('feed-add-post-destination-input')); if(BX.SocNetLogDestination.popupWindow) BX.SocNetLogDestination.popupWindow.adjustPosition({ forceTop: true }); }; ReportListClass.prototype.onCloseDialogDestination = function() { var input = BX('feed-add-post-destination-input'); if (!BX.SocNetLogDestination.isOpenSearch() && input && input.value.length <= 0) { BX.style(BX('feed-add-post-destination-input-box'), 'display', 'none'); BX.style(BX('bx-destination-tag'), 'display', 'inline-block'); } }; ReportListClass.prototype.onOpenSearchDestination = function() { if(BX.SocNetLogDestination.popupSearchWindow) BX.SocNetLogDestination.popupSearchWindow.adjustPosition({ forceTop: true }); }; ReportListClass.prototype.onCloseSearchDestination = function() { var input = BX('feed-add-post-destination-input'); if (!BX.SocNetLogDestination.isOpenSearch() && input && input.value.length > 0) { BX.style(BX('feed-add-post-destination-input-box'), 'display', 'none'); BX.style(BX('bx-destination-tag'), 'display', 'inline-block'); BX('feed-add-post-destination-input').value = ''; } }; ReportListClass.prototype.onKeyUpDestination = function (event) { var BXSocNetLogDestinationFormName = this.destFormName; if (event.keyCode == 16 || event.keyCode == 17 || event.keyCode == 18 || event.keyCode == 20 || event.keyCode == 244 || event.keyCode == 224 || event.keyCode == 91) return false; if (event.keyCode == 13) { BX.SocNetLogDestination.selectFirstSearchItem(BXSocNetLogDestinationFormName); return BX.PreventDefault(event); } if (event.keyCode == 27) { BX('feed-add-post-destination-input').value = ''; } else { BX.SocNetLogDestination.search( BX('feed-add-post-destination-input').value, true, BXSocNetLogDestinationFormName); } if (BX.SocNetLogDestination.sendEvent && BX.SocNetLogDestination.isOpenDialog()) BX.SocNetLogDestination.closeDialog(); if (event.keyCode == 8) { BX.SocNetLogDestination.sendEvent = true; } return BX.PreventDefault(event); }; ReportListClass.prototype.onKeyDownDestination = function (event) { var BXSocNetLogDestinationFormName = this.destFormName; if (event.keyCode == 8 && BX('feed-add-post-destination-input').value.length <= 0) { BX.SocNetLogDestination.sendEvent = false; BX.SocNetLogDestination.deleteLastItem(BXSocNetLogDestinationFormName); } return true; }; ReportListClass.prototype.onChangeRightOfSharing = function(entityId, taskName) { if(entityToNewShared[entityId]) { entityToNewShared[entityId].right = taskName; } }; ReportListClass.prototype.filterUser = function(userData, object) { if(!userData) return; var ownerId = object.searchInput.getAttribute('id').replace('filter_search_', ''); var table = document.querySelector('#reports-company-'+ownerId), listItem = table.querySelectorAll('tr:nth-child(n+2)'), user = Object.keys(userData); this.showAllItem(ownerId); for(var i = 0; i < listItem.length; i++) { var createdBy = listItem[i].getAttribute('data-item'); if(createdBy !== user[0]) { BX.Report.hide(listItem[i]); } } BX('filter-delete-user-'+ownerId).style.visibility = 'visible'; }; ReportListClass.prototype.showAllItem = function(ownerId) { var table = document.querySelector('#reports-company-'+ownerId), listItem = table.querySelectorAll('tr:nth-child(n+2)'); for(var i = 0; i < listItem.length; i++) { BX.Report.show(listItem[i]); } }; ReportListClass.prototype.clearSelectUser = function(ownerId) { BX('filter_search_'+ownerId).value = ''; BX('filter_data_'+ownerId).value = ''; var object = 'filter_'+ownerId; BX.ReportUserSearchPopup.items[object]._currentUser = ''; BX('filter-delete-user-'+ownerId).style.visibility = ''; this.showAllItem(ownerId); }; ReportListClass.prototype.export = function(reportId) { var form = BX.create('form', { props: { method: 'POST' }, children: [ BX.create('input', { props: { type: 'hidden', name: 'sessid', value: BX.bitrix_sessid() } }), BX.create('input', { props: { type: 'text', name: 'EXPORT_REPORT', value: BX.util.htmlspecialchars(reportId) } }) ] }); BX.PopupMenu.currentItem.popupWindow.close(); document.body.appendChild(form); BX.submit(form); }; ReportListClass.prototype.import = function() { var content = BX.create('div', { props: { className: 'bx-report-popup-content bx-report-popup-content-import' }, children: [ BX.create('form', { props: { id: 'report-import-form', method: 'POST', enctype: 'multipart/form-data' }, children: [ BX.create('input', { props: { type: 'hidden', name: 'sessid', value: BX.bitrix_sessid() } }), BX.create('input', { props: { type: 'hidden', name: 'IMPORT_REPORT', value: '1' } }), BX.create('span', { props: { className: 'bx-report-description-import' }, text: BX.message('REPORT_IMPORT_DESCRIPTION') }), BX.create('span', { props: { className: 'file-wrapper' }, children: [ BX.create('span', { props: { className: 'bx-report-input-file' }, children: [ BX.create('span', { props: { className: 'webform-small-button bx-report-small-button' }, text: BX.message('REPORT_IMPORT_BUTTON_TEXT') }), BX.create('input', { props: { type: 'file', name: 'IMPORT_REPORT_FILE' } }) ] }), BX.create('span', { props: { className: 'fileformlabel bx-report-input-file-name' } }) ] }) ] }) ] }); var uploadedFile = false, uploadedFileExt = true; BX.Report.modalWindow({ modalId: 'bx-report-popup', contentClassName: 'bx-report-popup-content-import', title: BX.message('REPORT_IMPORT_TITLE'), overlay: false, autoHide: true, contentStyle: { width: '420px' }, content: [content], events : { onPopupClose : function() { }, onAfterPopupShow : function(popup) { var title = BX.findChild( popup.contentContainer, {className: 'bx-report-popup-title'}, true); if (title) { title.style.cursor = 'move'; BX.bind(title, 'mousedown', BX.proxy(popup._startDrag, popup)); } var wrappers = document.getElementsByClassName('bx-report-input-file'); for (var i = 0; i < wrappers.length; i++) { var inputs = wrappers[i].getElementsByTagName('input'); for (var j = 0; j < inputs.length; j++) { inputs[j].onchange = getName; } } function getName () { uploadedFileExt = true; uploadedFile = true; var str = this.value, i; if (str.lastIndexOf('\\')) i = str.lastIndexOf('\\')+1; else i = str.lastIndexOf('/')+1; str = str.slice(i); if(this.value.split('.').pop() !== 'csv') uploadedFileExt = false; this.parentNode.parentNode.getElementsByClassName('fileformlabel')[0].style.color = ''; var uploaded = this.parentNode.parentNode.getElementsByClassName('fileformlabel')[0]; uploaded.innerHTML = str; } } }, buttons: [ BX.create('a', { text : BX.message('REPORT_LIST_BTN_SAVE'), props: { className: 'webform-small-button webform-small-button-accept' }, events : { click : BX.delegate(function (e) { var fileNameSpan = BX('bx-report-popup').getElementsByClassName('fileformlabel')[0]; if(uploadedFile && uploadedFileExt) BX('report-import-form').submit(); else fileNameSpan.style.color = 'red'; if(!uploadedFile) fileNameSpan.innerHTML = BX.message('REPORT_IMPORT_ERROR_UPLOADED_FILE'); if(!uploadedFileExt) fileNameSpan.innerHTML = BX.message('REPORT_IMPORT_ERROR_FILE_EXT'); }, this) } }), BX.create('a', { text : BX.message('REPORT_LIST_BTN_CLOSE'), props: { className: 'webform-small-button webform-button-cancel' }, events : { click : BX.delegate(function (e) { BX.PopupWindowManager.getCurrentPopup().close(); }, this) } }) ] }); }; return ReportListClass; })();