import _ from 'lodash' /* eslint-disable max-len, */ // TODO: This file was created by bulk-decaffeinate. // Fix any style issues and re-enable lint. /* * decaffeinate suggestions: * DS102: Remove unnecessary code created because of implicit returns * DS207: Consider shorter variations of null checks * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md */ import App from '../../../base' import ColorManager from '../../colors/ColorManager' import displayNameForUser from '../util/displayNameForUser' const historyEntryController = function ($scope, $element, $attrs) { const ctrl = this // This method (and maybe the one below) will be removed soon. User details data will be // injected into the history API responses, so we won't need to fetch user data from other // local data structures. const _getUserById = id => _.find(ctrl.users, function (user) { const curUserId = (user != null ? user._id : undefined) || (user != null ? user.id : undefined) return curUserId === id }) ctrl.displayName = displayNameForUser ctrl.displayNameById = id => displayNameForUser(_getUserById(id)) ctrl.getProjectOpDoc = function (projectOp) { if (projectOp.rename != null) { return `${projectOp.rename.pathname} → ${projectOp.rename.newPathname}` } else if (projectOp.add != null) { return `${projectOp.add.pathname}` } else if (projectOp.remove != null) { return `${projectOp.remove.pathname}` } } ctrl.getUserCSSStyle = function (user) { const curUserId = (user != null ? user._id : undefined) || (user != null ? user.id : undefined) const hue = ColorManager.getHueForUserId(curUserId) || 100 if (ctrl.isEntrySelected() || ctrl.isEntryHoverSelected()) { return { color: '#FFF' } } else { return { color: `hsl(${hue}, 70%, 50%)` } } } ctrl.isEntrySelected = function () { if (ctrl.rangeSelectionEnabled) { return ( ctrl.entry.toV <= ctrl.selectedHistoryRange.toV && ctrl.entry.fromV >= ctrl.selectedHistoryRange.fromV ) } else { return ctrl.entry.toV === ctrl.selectedHistoryVersion } } ctrl.isEntryHoverSelected = function () { return ( ctrl.rangeSelectionEnabled && ctrl.entry.toV <= ctrl.hoveredHistoryRange.toV && ctrl.entry.fromV >= ctrl.hoveredHistoryRange.fromV ) } ctrl.onDraggingStart = () => { ctrl.historyEntriesList.onDraggingStart() } ctrl.onDraggingStop = (isValidDrop, boundary) => ctrl.historyEntriesList.onDraggingStop(isValidDrop, boundary) ctrl.onDrop = boundary => { if (boundary === 'toV') { $scope.$applyAsync(() => ctrl.historyEntriesList.setRangeToV(ctrl.entry.toV) ) } else if (boundary === 'fromV') { $scope.$applyAsync(() => ctrl.historyEntriesList.setRangeFromV(ctrl.entry.fromV) ) } } ctrl.onOver = boundary => { if (boundary === 'toV') { $scope.$applyAsync(() => ctrl.historyEntriesList.setHoveredRangeToV(ctrl.entry.toV) ) } else if (boundary === 'fromV') { $scope.$applyAsync(() => ctrl.historyEntriesList.setHoveredRangeFromV(ctrl.entry.fromV) ) } } ctrl.$onInit = () => { ctrl.$entryEl = $element.find('> .history-entry') ctrl.$entryDetailsEl = $element.find('.history-entry-details') ctrl.$toVHandleEl = $element.find('.history-entry-toV-handle') ctrl.$fromVHandleEl = $element.find('.history-entry-fromV-handle') ctrl.historyEntriesList.onEntryLinked(ctrl.entry, ctrl.$entryEl) } } export default App.component('historyEntry', { bindings: { entry: '<', currentUser: '<', users: '<', rangeSelectionEnabled: '<', isDragging: '<', selectedHistoryVersion: '