@@ -22,6 +22,12 @@ plugins.setConfigs("dashboards", {
2222
2323( function ( ) {
2424
25+ plugins . register ( "/master" , function ( ) {
26+ setTimeout ( ( ) => {
27+ require ( '../../../api/parts/jobs' ) . job ( 'dashboards:refreshDashboards' ) . replace ( ) . schedule ( 'every 5 minutes' ) ;
28+ } , 1000 ) ;
29+ } ) ;
30+
2531 /**
2632 * @api {get } /o/dashboards Get dashboard
2733 * @apiName GetDashboard
@@ -162,6 +168,11 @@ plugins.setConfigs("dashboards", {
162168 }
163169 }
164170
171+ if ( dashboard . refreshRate ) {
172+ dashboard . refreshRate = dashboard . refreshRate / 60 ; //Convert to minutes
173+ dashboard . use_refresh_rate = true ;
174+ }
175+
165176 if ( canSeeDashboardShares ( params . member , dashboard ) ) {
166177 parallelTasks . push ( fetchSharedUsersInfo . bind ( null , dashboard ) ) ;
167178 }
@@ -597,6 +608,19 @@ plugins.setConfigs("dashboards", {
597608 shareWith = params . qstring . share_with || "" ,
598609 copyDashId = params . qstring . copy_dash_id ;
599610
611+ var refreshRate = 0 ;
612+ if ( params . qstring . use_refresh_rate && params . qstring . use_refresh_rate !== "false" && params . qstring . refreshRate > 0 ) {
613+ try {
614+ refreshRate = parseInt ( params . qstring . refreshRate , 10 ) ;
615+ refreshRate = Math . max ( 5 , refreshRate ) * 60 ; //Convert to seconds
616+ }
617+ catch ( ex ) {
618+ refreshRate = 0 ;
619+ log . e ( "passed unexpected refresh rate" ) ;
620+ }
621+
622+ }
623+
600624 try {
601625 sharedEmailEdit = JSON . parse ( sharedEmailEdit ) ;
602626 }
@@ -711,6 +735,9 @@ plugins.setConfigs("dashboards", {
711735 theme : theme ,
712736 created_at : new Date ( ) . getTime ( )
713737 } ;
738+ if ( refreshRate > 0 ) {
739+ dashData . refreshRate = refreshRate ;
740+ }
714741
715742 var widgets = dataObj . newWidgetIds ;
716743 if ( widgets && widgets . length ) {
@@ -846,6 +873,19 @@ plugins.setConfigs("dashboards", {
846873 send_email_invitation = params . qstring . send_email_invitation ,
847874 memberId = params . member . _id + "" ;
848875
876+ var refreshRate = 0 ;
877+ if ( params . qstring . use_refresh_rate && params . qstring . use_refresh_rate !== "false" && params . qstring . refreshRate > 0 ) {
878+ try {
879+ refreshRate = parseInt ( params . qstring . refreshRate , 10 ) ;
880+ refreshRate = Math . max ( 5 , refreshRate ) * 60 ; //Convert to seconds
881+ }
882+ catch ( ex ) {
883+ refreshRate = 0 ;
884+ log . e ( "passed unexpected refresh rate" ) ;
885+ }
886+ }
887+
888+
849889 if ( ! dashboardId || dashboardId . length !== 24 ) {
850890 common . returnMessage ( params , 400 , 'Invalid parameter: dashboard_id' ) ;
851891 return true ;
@@ -972,12 +1012,19 @@ plugins.setConfigs("dashboards", {
9721012 changedFields . shared_user_groups_view = sharedUserGroupView ;
9731013 }
9741014 }
1015+ var unset = { shared_with_view : "" , shared_with_edit : "" } ;
1016+ if ( refreshRate && refreshRate > 0 && refreshRate !== dashboard . refreshRate ) {
1017+ changedFields . refreshRate = refreshRate ;
1018+ }
1019+ else if ( refreshRate === 0 ) {
1020+ unset . refreshRate = "" ; //unset refresh rate for dashboard
1021+ }
9751022
9761023 common . db . collection ( "dashboards" ) . update (
9771024 filterCond ,
9781025 {
9791026 $set : changedFields ,
980- $unset : { shared_with_view : "" , shared_with_edit : "" }
1027+ $unset : unset
9811028 } ,
9821029 async function ( e , res ) {
9831030 if ( ! e && res ) {
0 commit comments