diff options
author | AlexKlimenkov <shurick.klimenkov@gmail.com> | 2014-06-10 20:50:30 +0300 |
---|---|---|
committer | AlexKlimenkov <shurick.klimenkov@gmail.com> | 2014-06-10 20:50:30 +0300 |
commit | b5a0589955460a44c5428c4cb5429fcfce265d23 (patch) | |
tree | 87db58400a3e036de646fb630cbb358beeac3bc1 /codebase/sources/ext/dhtmlxscheduler_key_nav.js | |
parent | e2aaaef8540fabd0b5200a4959c269d6f1ae352e (diff) | |
download | scheduler-b5a0589955460a44c5428c4cb5429fcfce265d23.zip scheduler-b5a0589955460a44c5428c4cb5429fcfce265d23.tar.gz scheduler-b5a0589955460a44c5428c4cb5429fcfce265d23.tar.bz2 |
[update] version 4.1.0
Diffstat (limited to 'codebase/sources/ext/dhtmlxscheduler_key_nav.js')
-rw-r--r-- | codebase/sources/ext/dhtmlxscheduler_key_nav.js | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/codebase/sources/ext/dhtmlxscheduler_key_nav.js b/codebase/sources/ext/dhtmlxscheduler_key_nav.js new file mode 100644 index 0000000..33fb417 --- /dev/null +++ b/codebase/sources/ext/dhtmlxscheduler_key_nav.js @@ -0,0 +1,115 @@ +/* +dhtmlxScheduler v.4.1.0 Stardard + +This software is covered by GPL license. You also can obtain Commercial or Enterprise license to use it in non-GPL project - please contact sales@dhtmlx.com. Usage without proper license is prohibited. + +(c) Dinamenta, UAB. +*/ +//Initial idea and implementation by Steve MC +scheduler._temp_key_scope = function (){ + +scheduler.config.key_nav = true; + +var date; // used for copy and paste operations +var section; // used for copy and paste operations +var isCopy = null; + + +scheduler.attachEvent("onMouseMove", function(id,e){ + date = scheduler.getActionData(e).date; + section = scheduler.getActionData(e).section; +}); + +function clear_event_after(ev){ + delete ev.rec_type; delete ev.rec_pattern; + delete ev.event_pid; delete ev.event_length; +} +scheduler._make_pasted_event = function(ev){ + var event_duration = ev.end_date-ev.start_date; + + var copy = scheduler._lame_copy({}, ev); + clear_event_after(copy); + copy.start_date = new Date(date); + copy.end_date = new Date(copy.start_date.valueOf() + event_duration); + + if(section){ + var state = scheduler.getState().mode, + property = null; + + if(scheduler.matrix[state]){ + property = scheduler.matrix[state].y_property; + }else if(scheduler._props[state]){ + property = scheduler._props[state].property; + } + copy[property] = section; + } + return copy; +}; +scheduler._do_paste = function(is_copy, modified_ev, original_ev){ + scheduler.addEvent(modified_ev); + scheduler.callEvent("onEventPasted", [is_copy, modified_ev, original_ev]); +}; + +scheduler._is_key_nav_active = function(){ + if(this._is_initialized() && !this._is_lightbox_open() && this.config.key_nav){ + return true; + } + return false; +}; + +dhtmlxEvent(document,(_isOpera?"keypress":"keydown"),function(e){ + if(!scheduler._is_key_nav_active()) return true; + + e=e||event; + + if (e.keyCode == 37 || e.keyCode == 39) { // Left, Right arrows + e.cancelBubble = true; + + var next = scheduler.date.add(scheduler._date,(e.keyCode == 37 ? -1 : 1 ),scheduler._mode); + scheduler.setCurrentView(next); + return true; + } + + var select_id = scheduler._select_id; + if (e.ctrlKey && e.keyCode == 67) { // CTRL+C + if (select_id) { + scheduler._buffer_id = select_id; + isCopy = true; + scheduler.callEvent("onEventCopied", [scheduler.getEvent(select_id)]); + } + return true; + } + if (e.ctrlKey && e.keyCode == 88) { // CTRL+X + if (select_id) { + isCopy = false; + scheduler._buffer_id = select_id; + var ev = scheduler.getEvent(select_id); + scheduler.updateEvent(ev.id); + scheduler.callEvent("onEventCut", [ev]); + } + } + + if (e.ctrlKey && e.keyCode == 86) { // CTRL+V + var ev = scheduler.getEvent(scheduler._buffer_id); + if (ev) { + var new_ev = scheduler._make_pasted_event(ev); + if (isCopy) { + new_ev.id = scheduler.uid(); + scheduler._do_paste(isCopy, new_ev, ev); + } + else { // cut operation + var res = scheduler.callEvent("onBeforeEventChanged",[new_ev, e, false, ev]); + if (res) { + scheduler._do_paste(isCopy, new_ev, ev); + isCopy = true; // switch to copy after first paste operation + } + } + + } + return true; + } + +}); + +}; +scheduler._temp_key_scope(); |