Jelajahi Sumber

HUE-8768 [editor] Extract notebook and snippet ajax calls to ApiHelper

Johan Ahlen 6 tahun lalu
induk
melakukan
e75178afe5

+ 95 - 0
desktop/core/src/desktop/js/api/apiHelper.js

@@ -1861,6 +1861,101 @@ class ApiHelper {
     return new CancellablePromise(deferred, undefined, cancellablePromises);
   }
 
+  clearNotebookHistory(options) {
+    const data = {
+      notebook: options.notebookJson,
+      doc_type: options.docType,
+      is_notification_manager: options.isNotificationManager
+    };
+    return this.simplePost('/notebook/api/clear_history', data);
+  }
+
+  closeNotebook(options) {
+    const data = {
+      notebook: options.notebookJson,
+      editorMode: options.editorMode
+    };
+    return this.simplePost('/notebook/api/notebook/close', data);
+  }
+
+  createSession(options) {
+    const data = {
+      notebook: options.notebookJson,
+      session: options.sessionJson,
+      cluster: options.clusterJson
+    };
+    return this.simplePost('/notebook/api/create_session', data);
+  }
+
+  checkStatus(options) {
+    const data = {
+      notebook: options.notebookJson
+    };
+    return this.simplePost('/notebook/api/check_status', data);
+  }
+
+  getExternalStatement(options) {
+    const data = {
+      notebook: options.notebookJson,
+      snippet: options.snippetJson
+    };
+    return this.simplePost('/notebook/api/get_external_statement', data);
+  }
+
+  fetchResultSize(options) {
+    const data = {
+      notebook: options.notebookJson,
+      snippet: options.snippetJson
+    };
+    return this.simplePost('/notebook/api/fetch_result_size', data);
+  }
+
+  statementRisk(options) {
+    const data = {
+      notebook: options.notebookJson,
+      snippet: options.snippetJson
+    };
+    return this.simplePost('/notebook/api/optimizer/statement/risk', data);
+  }
+
+  getLogs(options) {
+    const data = {
+      notebook: options.notebookJson,
+      snippet: options.snippetJson,
+      from: options.from,
+      jobs: options.jobsJson,
+      full_log: options.fullLog
+    };
+    return this.simplePost('/notebook/api/get_logs', data);
+  }
+
+  statementCompatibility(options) {
+    const data = {
+      notebook: options.notebookJson,
+      snippet: options.snippetJson,
+      sourcePlatform: options.sourcePlatform,
+      targetPlatform: options.targetPlatform
+    };
+    return this.simplePost('/notebook/api/optimizer/statement/compatibility', data);
+  }
+
+  statementSimilarity(options) {
+    const data = {
+      notebook: options.notebookJson,
+      snippet: options.snippetJson,
+      sourcePlatform: options.sourcePlatform
+    };
+    return this.simplePost('/notebook/api/optimizer/statement/similarity', data);
+  }
+
+  saveNotebook(options) {
+    const data = {
+      notebook: options.notebookJson,
+      editorMode: options.editorMode
+    };
+    return this.simplePost('/notebook/api/notebook/save', data);
+  }
+
   /**
    *
    * @param {ExecutableStatement} executable

+ 37 - 42
desktop/core/src/desktop/js/apps/notebook2/notebook.js

@@ -307,14 +307,13 @@ class Notebook {
   clearHistory() {
     const self = this;
     hueAnalytics.log('notebook', 'clearHistory');
-    $.post(
-      '/notebook/api/clear_history',
-      {
-        notebook: komapping.toJSON(self.getContext(), NOTEBOOK_MAPPING),
-        doc_type: self.selectedSnippet(),
-        is_notification_manager: self.parentVm.isNotificationManager()
-      },
-      () => {
+    apiHelper
+      .clearNotebookHistory({
+        notebookJson: komapping.toJSON(self.getContext(), NOTEBOOK_MAPPING),
+        docType: self.selectedSnippet(),
+        isNotificationManager: self.parentVm.isNotificationManager()
+      })
+      .then(() => {
         self.history.removeAll();
         if (self.isHistory()) {
           self.id(null);
@@ -323,12 +322,12 @@ class Notebook {
             self.parentVm.URLS.editor + '?type=' + self.parentVm.editorType()
           );
         }
-      }
-    ).fail(xhr => {
-      if (xhr.status !== 502) {
-        $(document).trigger('error', xhr.responseText);
-      }
-    });
+      })
+      .fail(xhr => {
+        if (xhr.status !== 502) {
+          $(document).trigger('error', xhr.responseText);
+        }
+      });
     $(document).trigger('hideHistoryModal');
   }
 
@@ -343,8 +342,8 @@ class Notebook {
   close() {
     const self = this;
     hueAnalytics.log('notebook', 'close');
-    $.post('/notebook/api/notebook/close', {
-      notebook: komapping.toJSON(self, NOTEBOOK_MAPPING),
+    apiHelper.closeNotebook({
+      notebookJson: komapping.toJSON(self, NOTEBOOK_MAPPING),
       editorMode: self.parentVm.editorMode()
     });
   }
@@ -405,14 +404,13 @@ class Notebook {
       }
     };
 
-    $.post(
-      '/notebook/api/create_session',
-      {
-        notebook: komapping.toJSON(self.getContext(), NOTEBOOK_MAPPING),
-        session: komapping.toJSON(session), // e.g. {'type': 'pyspark', 'properties': [{'name': driverCores', 'value', '2'}]}
-        cluster: komapping.toJSON(compute ? compute : '')
-      },
-      data => {
+    apiHelper
+      .createSession({
+        notebookJson: komapping.toJSON(self.getContext(), NOTEBOOK_MAPPING),
+        sessionJson: komapping.toJSON(session), // e.g. {'type': 'pyspark', 'properties': [{'name': driverCores', 'value', '2'}]}
+        clusterJson: komapping.toJSON(compute ? compute : '')
+      })
+      .then(data => {
         if (data.status === 0) {
           komapping.fromJS(data.session, {}, session);
           if (self.getSession(session.type()) == null) {
@@ -432,8 +430,7 @@ class Notebook {
         } else {
           fail(data.message);
         }
-      }
-    )
+      })
       .fail(xhr => {
         if (xhr.status !== 502) {
           fail(xhr.responseText);
@@ -718,13 +715,12 @@ class Notebook {
       self.parentVm.editorMode() ||
       (self.isPresentationMode() && self.parentVm.editorType() !== 'notebook'); // Editor should not convert to Notebook in presentation mode
 
-    $.post(
-      '/notebook/api/notebook/save',
-      {
-        notebook: komapping.toJSON(cp, NOTEBOOK_MAPPING),
+    apiHelper
+      .saveNotebook({
+        notebookJson: komapping.toJSON(cp, NOTEBOOK_MAPPING),
         editorMode: editorMode
-      },
-      data => {
+      })
+      .then(data => {
         if (data.status === 0) {
           self.id(data.id);
           self.isSaved(true);
@@ -782,12 +778,12 @@ class Notebook {
         } else {
           $(document).trigger('error', data.message);
         }
-      }
-    ).fail(xhr => {
-      if (xhr.status !== 502) {
-        $(document).trigger('error', xhr.responseText);
-      }
-    });
+      })
+      .fail(xhr => {
+        if (xhr.status !== 502) {
+          $(document).trigger('error', xhr.responseText);
+        }
+      });
   }
 
   saveDefaultUserProperties(session) {
@@ -857,10 +853,9 @@ class Notebook {
       .slice(0, 25);
 
     const updateHistoryCall = item => {
-      $.post('/notebook/api/check_status', {
-        notebook: komapping.toJSON({ id: item.uuid() })
-      })
-        .done(data => {
+      apiHelper
+        .checkStatus({ notebookJson: komapping.toJSON({ id: item.uuid() }) })
+        .then(data => {
           const status =
             data.status === -3
               ? 'expired'

+ 59 - 74
desktop/core/src/desktop/js/apps/notebook2/snippet.js

@@ -1024,15 +1024,12 @@ class Snippet {
           return true;
         });
         if (unknownResponse) {
-          lastComplexityRequest = $.ajax({
-            type: 'POST',
-            url: '/notebook/api/optimizer/statement/risk',
-            timeout: 30000, // 30 seconds
-            data: {
-              notebook: komapping.toJSON(self.parentNotebook.getContext(), NOTEBOOK_MAPPING),
-              snippet: komapping.toJSON(self.getContext())
-            },
-            success: data => {
+          lastComplexityRequest = apiHelper
+            .statementRisk({
+              notebookJson: komapping.toJSON(self.parentNotebook.getContext(), NOTEBOOK_MAPPING),
+              snippetJson: komapping.toJSON(self.getContext())
+            })
+            .then(data => {
               knownResponses.unshift({
                 hash: hash,
                 data: data
@@ -1041,11 +1038,10 @@ class Snippet {
                 knownResponses.pop();
               }
               handleRiskResponse(data);
-            },
-            always: () => {
+            })
+            .always(() => {
               changeSubscription.dispose();
-            }
-          });
+            });
         }
       };
 
@@ -1163,13 +1159,12 @@ class Snippet {
       self.parentNotebook.isExecutingAll(false);
     } else {
       self.statusForButtons(STATUS_FOR_BUTTONS.canceling);
-      $.post(
-        '/notebook/api/cancel_statement',
-        {
-          notebook: komapping.toJSON(self.parentNotebook.getContext(), NOTEBOOK_MAPPING),
-          snippet: komapping.toJSON(self.getContext())
-        },
-        data => {
+      apiHelper
+        .cancelNotebookStatement({
+          notebookJson: komapping.toJSON(self.parentNotebook.getContext(), NOTEBOOK_MAPPING),
+          snippetJson: komapping.toJSON(self.getContext())
+        })
+        .then(data => {
           self.statusForButtons(STATUS_FOR_BUTTONS.canceled);
           if (data.status === 0) {
             self.status(STATUS.canceled);
@@ -1177,8 +1172,7 @@ class Snippet {
           } else {
             self.handleAjaxError(data);
           }
-        }
-      )
+        })
         .fail(xhr => {
           if (xhr.status !== 502) {
             $(document).trigger('error', xhr.responseText);
@@ -1561,13 +1555,12 @@ class Snippet {
 
   fetchResultSize(n, query_id) {
     const self = this;
-    $.post(
-      '/notebook/api/fetch_result_size',
-      {
-        notebook: komapping.toJSON(self.parentNotebook.getContext(), NOTEBOOK_MAPPING),
-        snippet: komapping.toJSON(self.getContext())
-      },
-      data => {
+    apiHelper
+      .fetchResultSize({
+        notebookJson: komapping.toJSON(self.parentNotebook.getContext(), NOTEBOOK_MAPPING),
+        snippetJson: komapping.toJSON(self.getContext())
+      })
+      .then(data => {
         if (query_id === self.parentNotebook.id()) {
           // If still on the same result
           if (data.status === 0) {
@@ -1584,8 +1577,7 @@ class Snippet {
             //$(document).trigger("error", data.message);
           }
         }
-      }
-    );
+      });
   }
 
   format() {
@@ -1641,13 +1633,12 @@ class Snippet {
   getExternalStatement() {
     const self = this;
     self.externalStatementLoaded(false);
-    $.post(
-      '/notebook/api/get_external_statement',
-      {
-        notebook: komapping.toJSON(self.parentNotebook.getContext(), NOTEBOOK_MAPPING),
-        snippet: komapping.toJSON(self.getContext())
-      },
-      data => {
+    apiHelper
+      .getExternalStatement({
+        notebookJson: komapping.toJSON(self.parentNotebook.getContext(), NOTEBOOK_MAPPING),
+        snippetJson: komapping.toJSON(self.getContext())
+      })
+      .then(data => {
         if (data.status === 0) {
           self.externalStatementLoaded(true);
           self.statement_raw(data.statement);
@@ -1655,22 +1646,20 @@ class Snippet {
         } else {
           self.handleAjaxError(data);
         }
-      }
-    );
+      });
   }
 
   getLogs() {
     const self = this;
-    return $.post(
-      '/notebook/api/get_logs',
-      {
-        notebook: komapping.toJSON(self.parentNotebook.getContext(), NOTEBOOK_MAPPING),
-        snippet: komapping.toJSON(self.getContext()),
+    apiHelper
+      .getLogs({
+        notebookJson: komapping.toJSON(self.parentNotebook.getContext(), NOTEBOOK_MAPPING),
+        snippetJson: komapping.toJSON(self.getContext()),
         from: self.result.logLines,
-        jobs: komapping.toJSON(self.jobs, { ignore: ['percentJob'] }),
-        full_log: self.result.logs
-      },
-      data => {
+        jobsJson: komapping.toJSON(self.jobs, { ignore: ['percentJob'] }),
+        fullLog: self.result.logs
+      })
+      .then(data => {
         if (data.status === 1) {
           // Append errors to the logs
           data.status = 0;
@@ -1733,13 +1722,13 @@ class Snippet {
         } else {
           self.handleAjaxError(data);
         }
-      }
-    ).fail((xhr, textStatus) => {
-      if (xhr.status !== 502) {
-        $(document).trigger('error', xhr.responseText || textStatus);
-      }
-      self.status(STATUS.failed);
-    });
+      })
+      .fail((xhr, textStatus) => {
+        if (xhr.status !== 502) {
+          $(document).trigger('error', xhr.responseText || textStatus);
+        }
+        self.status(STATUS.failed);
+      });
   }
 
   getPigParameters() {
@@ -1813,22 +1802,20 @@ class Snippet {
     const self = this;
     hueAnalytics.log('notebook', 'get_query_similarity');
 
-    $.post(
-      '/notebook/api/optimizer/statement/similarity',
-      {
-        notebook: komapping.toJSON(self.parentNotebook.getContext(), NOTEBOOK_MAPPING),
-        snippet: komapping.toJSON(self.getContext()),
+    apiHelper
+      .statementSimilarity({
+        notebookJson: komapping.toJSON(self.parentNotebook.getContext(), NOTEBOOK_MAPPING),
+        snippetJson: komapping.toJSON(self.getContext()),
         sourcePlatform: self.type()
-      },
-      data => {
+      })
+      .then(data => {
         if (data.status === 0) {
           // eslint-disable-next-line no-restricted-syntax
           console.log(data.statement_similarity);
         } else {
           $(document).trigger('error', data.message);
         }
-      }
-    );
+      });
   }
 
   guessMetaField(field) {
@@ -2157,15 +2144,14 @@ class Snippet {
     self.hasSuggestion(null);
     const positionStatement = self.positionStatement();
 
-    self.lastCompatibilityRequest = $.post(
-      '/notebook/api/optimizer/statement/compatibility',
-      {
-        notebook: komapping.toJSON(self.parentNotebook.getContext(), NOTEBOOK_MAPPING),
-        snippet: komapping.toJSON(self.getContext()),
+    self.lastCompatibilityRequest = apiHelper
+      .statementCompatibility({
+        notebookJson: komapping.toJSON(self.parentNotebook.getContext(), NOTEBOOK_MAPPING),
+        snippetJson: komapping.toJSON(self.getContext()),
         sourcePlatform: self.compatibilitySourcePlatform().value,
         targetPlatform: self.compatibilityTargetPlatform().value
-      },
-      data => {
+      })
+      .then(data => {
         if (data.status === 0) {
           self.aceErrorsHolder([]);
           self.aceWarningsHolder([]);
@@ -2203,8 +2189,7 @@ class Snippet {
         } else {
           $(document).trigger('error', data.message);
         }
-      }
-    )
+      })
       .fail(xhr => {
         if (xhr.status !== 502) {
           $(document).trigger('error', xhr.responseText);