mirror of https://github.com/nocodb/nocodb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
4.7 KiB
138 lines
4.7 KiB
import Vue from 'vue' |
|
import device from '../mixins/device'; |
|
|
|
Vue.mixin(device); |
|
|
|
export default async ({store}) => { |
|
|
|
function getListener(binding) { |
|
return function (e) { |
|
if (store.state.windows.isGaEnabled || store.state.windows.isComp) { |
|
const cat = window.location.hash.replace(/\d+\/(?=dashboard)/, ''); |
|
const action = binding.value && binding.value[0]; |
|
const label = binding.value && binding.value[1]; |
|
try { |
|
if (store.state.windows.isComp) { |
|
ga('send', 'event', `${store.state.windows.isComp}\\${cat}`, action, label); |
|
} |
|
ga('send', 'event', cat, action, label); |
|
} catch (e) { |
|
console.log('GA Error') |
|
} |
|
} |
|
}; |
|
} |
|
|
|
Vue.directive('ge', { |
|
bind: function (el, binding, vnode) { |
|
if (vnode.componentInstance) { |
|
vnode.componentInstance.$on('click', getListener(binding)); |
|
} else { |
|
el.addEventListener('click', getListener(binding)); |
|
} |
|
} |
|
}) |
|
|
|
|
|
Vue.directive('xc-ver-resize', { |
|
bind: (el, bindings, vnode) => { |
|
// el.style.position = !el.style.position || el.style.position === 'static' ? 'relative' : el.style.position; |
|
let resizer = document.createElement('div'); |
|
resizer.className = 'resizer'; |
|
resizer.style.position = 'absolute'; |
|
resizer.style.height = '100%'; |
|
resizer.style.width = '3px'; |
|
resizer.style.top = '0'; |
|
resizer.style.right = '-1px'; |
|
resizer.style.zIndex = '999'; |
|
|
|
el.appendChild(resizer); |
|
resizer.addEventListener('mousedown', initDrag, false); |
|
|
|
let startX, startY, startWidth; |
|
|
|
function initDrag(e) { |
|
document.body.style.cursor = 'col-resize'; |
|
resizer.classList.add('primary'); |
|
startX = e.clientX; |
|
startY = e.clientY; |
|
startWidth = parseInt(document.defaultView.getComputedStyle(el).width, 10); |
|
// startHeight = parseInt(document.defaultView.getComputedStyle(p).height, 10); |
|
document.documentElement.addEventListener('mousemove', doDrag, false); |
|
document.documentElement.addEventListener('mouseup', stopDrag, false); |
|
} |
|
|
|
let width; |
|
const emit = (vnode, name, data) => { |
|
const handlers = (vnode.data && vnode.data.on) || |
|
(vnode.componentOptions && vnode.componentOptions.listeners); |
|
|
|
if (handlers && handlers[name]) { |
|
handlers[name].fns(data); |
|
} |
|
} |
|
|
|
function doDrag(e) { |
|
width = (startWidth + e.clientX - startX) + 'px'; |
|
el.style.maxWidth = el.style.minWidth = el.style.width = width; |
|
emit(vnode, 'xcresizing'); |
|
// |
|
// p.style.height = (startHeight + e.clientY - startY) + 'px'; |
|
} |
|
|
|
function stopDrag(e) { |
|
resizer.classList.remove('primary'); |
|
document.body.style.cursor = ''; |
|
document.documentElement.removeEventListener('mousemove', doDrag, false); |
|
document.documentElement.removeEventListener('mouseup', stopDrag, false); |
|
emit(vnode, 'xcresize', width); |
|
emit(vnode, 'xcresized'); |
|
} |
|
} |
|
}) |
|
|
|
} |
|
/** |
|
* @copyright Copyright (c) 2021, Xgene Cloud Ltd |
|
* |
|
* @author Naveen MR <oof1lab@gmail.com> |
|
* @author Pranav C Balan <pranavxc@gmail.com> |
|
* |
|
* @license GNU AGPL version 3 or any later version |
|
* |
|
* This program is free software: you can redistribute it and/or modify |
|
* it under the terms of the GNU Affero General Public License as |
|
* published by the Free Software Foundation, either version 3 of the |
|
* License, or (at your option) any later version. |
|
* |
|
* This program is distributed in the hope that it will be useful, |
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
* GNU Affero General Public License for more details. |
|
* |
|
* You should have received a copy of the GNU Affero General Public License |
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
* |
|
*/ |
|
/** |
|
* @copyright Copyright (c) 2021, Xgene Cloud Ltd |
|
* |
|
* @author Naveen MR <oof1lab@gmail.com> |
|
* @author Pranav C Balan <pranavxc@gmail.com> |
|
* |
|
* @license GNU AGPL version 3 or any later version |
|
* |
|
* This program is free software: you can redistribute it and/or modify |
|
* it under the terms of the GNU Affero General Public License as |
|
* published by the Free Software Foundation, either version 3 of the |
|
* License, or (at your option) any later version. |
|
* |
|
* This program is distributed in the hope that it will be useful, |
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
* GNU Affero General Public License for more details. |
|
* |
|
* You should have received a copy of the GNU Affero General Public License |
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
* |
|
*/
|
|
|