Skip to content
This repository was archived by the owner on Mar 6, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/components/events/events-directive.tpl.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
<summary source="event" show-type="vm.showType"></summary>
</td>
<td class="hidden-xs" ng-click="vm.open(event.id, $event)">
<abbr ng-if="event.data.Name && event.data.Identity" title="{{::event.data.Name}} ({{::event.data.Identity}})" truncate overwrite-tooltip="false">{{::event.data.Name}}</abbr>
<span ng-if="!event.data.Name || !event.data.Identity" truncate>{{::(event.data.Name || event.data.Identity)}}</span>
<abbr ng-if="event.data.Name && event.data.Identity" title="{{::event.data.Name}} ({{::event.data.Identity}})" truncate overwrite-tooltip="false" ng-bind-template="{{::event.data.Name}}"></abbr>
<span ng-if="!event.data.Name || !event.data.Identity" truncate ng-bind-template="{{::(event.data.Name || event.data.Identity)}}"></span>
</td>
<td ng-click="vm.open(event.id, $event)">
<span ng-if="vm.hideSessionStartTime && event.data.Type === 'session'">--</span>
Expand Down
34 changes: 30 additions & 4 deletions src/components/truncate/truncate-directive.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,39 @@
return {
restrict: 'A',
link: function (scope, element, attrs) {
var el = angular.element(element);
var lines = attrs.lines || 1;

// workaround for single-line truncations so they don't cause height jittering
var defaultOverflow, defaultWhiteSpace, firstRender;
if (lines === 1) {
firstRender = true;
defaultOverflow = el.css('overflow');
defaultWhiteSpace = el.css('whitespace');
if (!defaultOverflow) defaultOverflow = "initial";
if (!defaultWhiteSpace) defaultWhiteSpace = "initial";
el.css('overflow', "hidden");
el.css('white-space', "nowrap");
}

// function to provide debounced truncation (useful so window resizing doesn't cause issues)
var truncate = debounce(function () {
angular.element(element).trunk8({ lines: attrs.lines || 1, tooltip: (attrs.overwriteTooltip !== undefined ? attrs.overwriteTooltip === true : true) });
}, 150);
if (firstRender) {
firstRender = false;
el.css('overflow', defaultOverflow);
el.css('white-space', defaultWhiteSpace);
}

el.trunk8({
lines: lines,
tooltip: (attrs.overwriteTooltip !== undefined ? attrs.overwriteTooltip === true : true),
});
}, 100);

// TODO: Fix this bug: http://branchandbound.net/blog/web/2013/08/some-angularjs-pitfalls/
var timeout = $timeout(truncate, 150);
// execute truncate after a short delay - this is so the browser can calculate the available width of the containing element.
var timeout = $timeout(truncate, 100);

// register for resize events as this is the only other time we may need to update
var window = angular.element($window);
window.bind('resize', truncate);

Expand Down