瀏覽代碼

RPM manager - measurement graph popups (GP) behavior tweaks

Vijayakrishnan 2 年之前
父節點
當前提交
db7e116272
共有 1 個文件被更改,包括 101 次插入29 次删除
  1. 101 29
      resources/views/app/practice-management/rpm-manager/index.blade.php

+ 101 - 29
resources/views/app/practice-management/rpm-manager/index.blade.php

@@ -347,7 +347,19 @@
             }
 
             let popoverVisible = false,
-                popoverShowTimer = false;
+                wtPopoverVisibleForCM = false,
+                bpPopoverVisibleForCM = false,
+                wtPopoverShowTimer = false,
+                bpPopoverShowTimer = false,
+                wtPopoverHideTimer = false,
+                bpPopoverHideTimer = false;
+
+            function hideAllPopovers() {
+                $('.rpm-manager-popover').removeClass('show');
+                popoverVisible = false;
+                bpPopoverVisibleForCM = false;
+                wtPopoverVisibleForCM = false;
+            }
 
             function init() {
                 let parent = $('#practice-rpm-manager');
@@ -395,44 +407,99 @@
                 parent
                     .off('mouseenter', '.rpm-manager-weight-popover-trigger')
                     .on('mouseenter', '.rpm-manager-weight-popover-trigger', function() {
-                        if(popoverVisible) return false;
-                        if(popoverShowTimer) {
-                            clearTimeout(popoverShowTimer);
-                            popoverShowTimer = false;
+
+                        let cmUID = $(this).closest('tr').attr('data-care-month-uid');
+
+                        // if WT GP already visible for this care month, STOP
+                        if(wtPopoverVisibleForCM === cmUID) {
+                            console.log('Wt GP already visible for CM');
+                            return false;
+                        }
+                        else {
+                            hideAllPopovers();
                         }
-                        popoverShowTimer = setTimeout(() => {
+
+                        // cancel any existing timers
+                        if(wtPopoverShowTimer) { clearTimeout(wtPopoverShowTimer); wtPopoverShowTimer = false; }
+                        if(bpPopoverShowTimer) { clearTimeout(bpPopoverShowTimer); bpPopoverShowTimer = false; }
+
+                        wtPopoverShowTimer = setTimeout(() => {
                             $('.rpm-manager-popover').removeClass('show');
                             $('#rpm-manager-weight-popover-' + $(this).attr('data-uid')).addClass('show');
                             prepareMeasurementsPopover($(this).attr('data-uid'), 'weight');
                             popoverVisible = true;
+                            wtPopoverVisibleForCM = cmUID;
+                            bpPopoverVisibleForCM = false;
                         }, 500);
+
                         return false;
                     });
 
                 parent
                     .off('mouseenter', '.rpm-manager-bp-popover-trigger')
                     .on('mouseenter', '.rpm-manager-bp-popover-trigger', function() {
-                        if(popoverVisible) return false;
-                        if(popoverShowTimer) {
-                            clearTimeout(popoverShowTimer);
-                            popoverShowTimer = false;
+
+                        let cmUID = $(this).closest('tr').attr('data-care-month-uid');
+
+                        // if WT GP already visible for this care month, STOP
+                        if(bpPopoverVisibleForCM === cmUID) {
+                            console.log('BP GP already visible for CM');
+                            return false;
                         }
-                        popoverShowTimer = setTimeout(() => {
+                        else {
+                            // hide any currently displays popups immediately
+                            hideAllPopovers();
+                        }
+
+                        // cancel any existing timers
+                        if(bpPopoverShowTimer) { clearTimeout(bpPopoverShowTimer); bpPopoverShowTimer = false; }
+                        if(wtPopoverShowTimer) { clearTimeout(wtPopoverShowTimer); wtPopoverShowTimer = false; }
+
+                        bpPopoverShowTimer = setTimeout(() => {
                             $('.rpm-manager-popover').removeClass('show');
                             $('#rpm-manager-bp-popover-' + $(this).attr('data-uid')).addClass('show');
                             prepareMeasurementsPopover($(this).attr('data-uid'), 'bp');
                             popoverVisible = true;
+                            bpPopoverVisibleForCM = cmUID;
+                            wtPopoverVisibleForCM = false;
                         }, 500);
+
                         return false;
+
                     });
 
                 parent
-                    .off('mouseleave', '.rpm-manager-popover-trigger')
-                    .on('mouseleave', '.rpm-manager-popover-trigger', function() {
-                        if(popoverVisible) return false;
-                        if(popoverShowTimer) {
-                            clearTimeout(popoverShowTimer);
-                            popoverShowTimer = false;
+                    .off('mouseleave', '.rpm-manager-weight-popover-trigger')
+                    .on('mouseleave', '.rpm-manager-weight-popover-trigger', function() {
+                        if(wtPopoverVisibleForCM) {
+                            if(wtPopoverHideTimer) { clearTimeout(wtPopoverHideTimer); wtPopoverHideTimer = false; }
+                            wtPopoverHideTimer = setTimeout(() => {
+                                $('#rpm-manager-weight-popover-' + $(this).attr('data-uid')).removeClass('show');
+                                popoverVisible = false;
+                                wtPopoverVisibleForCM = false;
+                            }, 750);
+                        }
+                        else if(wtPopoverShowTimer) {
+                            clearTimeout(wtPopoverShowTimer);
+                            wtPopoverShowTimer = false;
+                        }
+                        return false;
+                    });
+
+                parent
+                    .off('mouseleave', '.rpm-manager-bp-popover-trigger')
+                    .on('mouseleave', '.rpm-manager-bp-popover-trigger', function() {
+                        if(bpPopoverVisibleForCM) {
+                            if(bpPopoverHideTimer) { clearTimeout(bpPopoverHideTimer); bpPopoverHideTimer = false; }
+                            bpPopoverHideTimer = setTimeout(() => {
+                                $('#rpm-manager-bp-popover-' + $(this).attr('data-uid')).removeClass('show');
+                                popoverVisible = false;
+                                bpPopoverVisibleForCM = false;
+                            }, 750);
+                        }
+                        else if(bpPopoverShowTimer) {
+                            clearTimeout(bpPopoverShowTimer);
+                            bpPopoverShowTimer = false;
                         }
                         return false;
                     });
@@ -441,12 +508,11 @@
                     .off('mousedown.discard-popover')
                     .on('mousedown.discard-popover', function(_e) {
                         if(!($(_e.target).closest('.rpm-manager-popover').length) && $('.rpm-manager-popover.show').length) {
-                            $('.rpm-manager-popover').removeClass('show');
-                            popoverVisible = false;
-                            if(popoverShowTimer) {
-                                clearTimeout(popoverShowTimer);
-                                popoverShowTimer = false;
-                            }
+                            setTimeout(() => {
+                                hideAllPopovers();
+                                if(bpPopoverShowTimer) { clearTimeout(bpPopoverShowTimer); bpPopoverShowTimer = false; }
+                                if(wtPopoverShowTimer) { clearTimeout(wtPopoverShowTimer); wtPopoverShowTimer = false; }
+                            }, 100);
                             return false;
                         }
                     });
@@ -455,12 +521,11 @@
                     .off('keydown.discard-bp-popover')
                     .on('keydown.discard-bp-popover', function(_e) {
                         if(_e.which === 27) {
-                            $('.rpm-manager-popover').removeClass('show');
-                            popoverVisible = false;
-                            if(popoverShowTimer) {
-                                clearTimeout(popoverShowTimer);
-                                popoverShowTimer = false;
-                            }
+                            setTimeout(() => {
+                                hideAllPopovers();
+                                if(bpPopoverShowTimer) { clearTimeout(bpPopoverShowTimer); bpPopoverShowTimer = false; }
+                                if(wtPopoverShowTimer) { clearTimeout(wtPopoverShowTimer); wtPopoverShowTimer = false; }
+                            }, 100);
                             return false;
                         }
                     });
@@ -486,6 +551,13 @@
                 parent
                     .off('click', '.rpm-manager-popover-trigger')
                     .on('click', '.rpm-manager-popover-trigger', function() {
+                        if(popoverVisible) {
+                            $('.rpm-manager-popover').removeClass('show');
+                            popoverVisible = false;
+                            bpPopoverVisibleForCM = false;
+                            wtPopoverVisibleForCM = false;
+                            return false;
+                        }
                         openDynamicStagPopup('/patients/view/' + $(this).attr('data-client-uid') + '/care-months/view/' + $(this).attr('data-uid'),
                             'care-month-dashboard-' + $(this).attr('data-client-uid'),
                             $(this).attr('data-cm-title'),