@@ -9,7 +9,6 @@ var countlyModel = require("../../../../api/lib/countly.model.js"),
9
9
countlyCommon = require ( '../../../../api/lib/countly.common' ) ,
10
10
fetch = require ( "../../../../api/parts/data/fetch.js" ) ,
11
11
log = common . log ( 'dashboards:api' ) ,
12
- requestProcessor = require ( '../../../../api/utils/requestProcessor.js' ) ,
13
12
plugins = require ( "../../../pluginManager.js" ) ;
14
13
15
14
/** @lends module:api/parts/data/dashboard */
@@ -563,25 +562,28 @@ dashboard.fetchNoteData = async function(params, apps, widget) {
563
562
return widget ;
564
563
} ;
565
564
566
-
567
565
/**
568
566
* Remove deleted records from widgets
569
- *
570
- * @param {string } apiKey user's api key
567
+ * @param {object } params params object
571
568
* @param {object } matchOperator match operator for aggregation
569
+ * @param {object } db database object - if coming from script
572
570
* @returns {boolean } true if success
573
571
*/
574
- dashboard . removeDeletedRecordsFromWidgets = async function ( apiKey , matchOperator ) {
572
+ dashboard . removeDeletedRecordsFromWidgets = async function ( params , matchOperator , db ) {
575
573
try {
576
- if ( ! apiKey || ! matchOperator ) {
577
- log . e ( 'missing parameters for removeDeletedRecordsFromWidgets' , apiKey , matchOperator ) ;
574
+ if ( ! params || ! matchOperator ) {
575
+ log . e ( 'missing parameters for removeDeletedRecordsFromWidgets' , params , matchOperator ) ;
578
576
return false ;
579
577
}
580
578
581
579
if ( typeof matchOperator === 'string' ) {
582
580
matchOperator = JSON . parse ( matchOperator ) ;
583
581
}
584
582
583
+ if ( typeof db !== 'undefined' ) {
584
+ common . db = db ;
585
+ }
586
+
585
587
var pipeline = [
586
588
{
587
589
$match : matchOperator
@@ -614,22 +616,17 @@ dashboard.removeDeletedRecordsFromWidgets = async function(apiKey, matchOperator
614
616
log . e ( 'dashbordId or widgetId could not found in remove widget' ) ;
615
617
continue ;
616
618
}
617
- var params = {
618
- 'req' : {
619
- url : "/i/dashboards/remove-widget?dashboard_id=" + dashboardId + "&widget_id=" + widgetId + "&api_key=" + apiKey
620
- } ,
621
- //adding custom processing for API responses
622
- 'APICallback' : function ( err , responseData , headers , returnCode ) {
623
- if ( err ) {
624
- log . e ( 'Error while removing widget from dashboard' , err , responseData , headers , returnCode ) ;
625
- return false ;
619
+
620
+ await new Promise ( ( resolve , reject ) => {
621
+ dashboard . deleteWidget ( params , dashboardId , widgetId , function ( success ) {
622
+ if ( success ) {
623
+ resolve ( ) ;
626
624
}
627
625
else {
628
- return true ;
626
+ reject ( ) ;
629
627
}
630
- }
631
- } ;
632
- requestProcessor . processRequest ( params ) ;
628
+ } ) ;
629
+ } ) ;
633
630
}
634
631
return true ;
635
632
}
@@ -639,16 +636,34 @@ dashboard.removeDeletedRecordsFromWidgets = async function(apiKey, matchOperator
639
636
}
640
637
} ;
641
638
639
+ dashboard . deleteWidget = function ( params , dashboardId , widgetId , callback ) {
640
+ common . db . collection ( "dashboards" ) . update ( { _id : common . db . ObjectID ( dashboardId ) } , { $pull : { widgets : common . db . ObjectID ( widgetId ) } } , function ( dashboardErr ) {
641
+ if ( ! dashboardErr ) {
642
+ common . db . collection ( "widgets" ) . findAndModify ( { _id : common . db . ObjectID ( widgetId ) } , { } , { } , { remove : true } , function ( widgetErr , widgetResult ) {
643
+ if ( widgetErr || ! widgetResult || ! widgetResult . value ) {
644
+ common . returnMessage ( params , 500 , "Failed to remove widget" ) ;
645
+ callback ( false ) ;
646
+ }
647
+ else {
648
+ var logData = widgetResult . value ;
649
+ logData . dashboard = dashboard . name ;
642
650
643
- dashboard . callWidgetRecheck = function ( apiKey , matchOperator ) {
644
- return plugins . dispatch ( "/dashboard/clean-deleted-widgets" , {
645
- api_key : apiKey ,
646
- match : matchOperator
651
+ plugins . dispatch ( "/systemlogs" , { params : params , action : "widget_deleted" , data : logData } ) ;
652
+ plugins . dispatch ( "/dashboard/widget/deleted" , { params : params , widget : widgetResult . value } ) ;
653
+ common . returnMessage ( params , 200 , 'Success' ) ;
654
+ callback ( true ) ;
655
+ }
656
+ } ) ;
657
+ }
658
+ else {
659
+ common . returnMessage ( params , 500 , "Failed to remove widget" ) ;
660
+ callback ( false ) ;
661
+ }
647
662
} ) ;
648
663
} ;
649
664
650
665
plugins . register ( "/dashboard/clean-deleted-widgets" , async function ( ob ) {
651
- var response = await dashboard . removeDeletedRecordsFromWidgets ( ob . api_key , ob . match ) ;
666
+ var response = await dashboard . removeDeletedRecordsFromWidgets ( ob . params , ob . match ) ;
652
667
return response ;
653
668
} , true ) ;
654
669
0 commit comments