-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
Vertial scroll duplex
- Loading branch information
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Large diffs are not rendered by default.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Large diffs are not rendered by default.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Large diffs are not rendered by default.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Large diffs are not rendered by default.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Large diffs are not rendered by default.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
{ | ||
"name": "le-angular-gantt", | ||
"version": "3.3.11", | ||
"version": "3.4.0", | ||
"description": "Gantt chart component for AngularJS", | ||
"author": "Rémi Alvergnat <[email protected]> (https://www.pragmasphere.com)", | ||
"contributors": [ | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
import $ from 'jquery' | ||
import { remove, throttle, debounce } from 'lodash' | ||
|
||
export default function () { | ||
'ngInject' | ||
return { | ||
restrict: 'A', | ||
require: '^ganttScrollManager', | ||
scope: { | ||
selector: '@' | ||
}, | ||
link: function (scope, element, attrs, ganttScrollManagerCtrl) { | ||
const el = (attrs.selector) | ||
? $(scope.selector) | ||
: $(element) | ||
|
||
bindings(el) | ||
ganttScrollManagerCtrl.registerAsVerticalScrollDuplexReceiver(el) | ||
|
||
function bindings (element) { | ||
element.scroll(scrollHandler) | ||
} | ||
|
||
function scrollHandler () { | ||
|
||
const isDuplexSending = ganttScrollManagerCtrl.isVerticalScrollDuplexSending() | ||
|
||
if (!isDuplexSending) { | ||
setAsSender() | ||
ganttScrollManagerCtrl.setVerticalScrollDuplexSending(true) | ||
|
||
const receivers = ganttScrollManagerCtrl.getVerticalScrollDuplexReceivers() | ||
|
||
receivers.forEach(receiver => { | ||
receiver.scrollTop(el.scrollTop()) | ||
}) | ||
|
||
ganttScrollManagerCtrl.setVerticalScrollDuplexSending(false) | ||
} | ||
} | ||
|
||
function setAsSender () { | ||
const sender = ganttScrollManagerCtrl.getVerticalScrollDuplexSender() | ||
const receivers = ganttScrollManagerCtrl.getVerticalScrollDuplexReceivers() | ||
|
||
if (sender === el) { | ||
return | ||
} | ||
|
||
if (sender) { | ||
unbindings(sender) | ||
ganttScrollManagerCtrl.registerAsVerticalScrollDuplexReceiver(sender) | ||
} | ||
|
||
remove(receivers, receiver => receiver === el) | ||
ganttScrollManagerCtrl.registerAsVerticalScrollDuplexSender(el) | ||
|
||
bindings(el) | ||
} | ||
|
||
function unbindings (element) { | ||
element.unbind('scroll', scrollHandler) | ||
} | ||
|
||
} | ||
} | ||
} |