Procházet zdrojové kódy

impl onTerminateForExport websocket event

Yuki Takei před 6 roky
rodič
revize
f52d0f063f

+ 15 - 6
src/client/js/components/Admin/Export/ExportPage.jsx

@@ -58,16 +58,29 @@ class ExportPage extends React.Component {
   setupWebsocketEventHandler() {
     const socket = this.props.websocketContainer.getWebSocket();
 
+    // websocket event
     socket.on('admin:onProgressForExport', ({ currentCount, totalCount, progressList }) => {
       const isExporting = currentCount !== totalCount;
       this.setState({ isExporting, progressList });
     });
 
-    socket.on('admin:onTerminateForExport', ({ currentCount, totalCount, progressList }) => {
+    // websocket event
+    socket.on('admin:onTerminateForExport', ({ zipFileStats }) => {
       this.setState({
         isExporting: false,
         isExported: true,
-        progressList,
+        zipFileStats,
+      });
+
+      // TODO: toastSuccess, toastError
+      toastr.success(undefined, 'New Exported Data is added', {
+        closeButton: true,
+        progressBar: true,
+        newestOnTop: false,
+        showDuration: '100',
+        hideDuration: '100',
+        timeOut: '1200',
+        extendedTimeOut: '150',
       });
     });
   }
@@ -154,10 +167,6 @@ class ExportPage extends React.Component {
 
     return (
       <Fragment>
-        <div className="alert alert-warning">
-          <i className="icon-exclamation"></i> { t('export_management.beta_warning') }
-        </div>
-
         <h2>{t('Export Data')}</h2>
 
         <button type="button" className="btn btn-default" onClick={this.openExportModal}>{t('export_management.create_new_exported_data')}</button>

+ 5 - 6
src/server/service/export.js

@@ -293,12 +293,7 @@ class ExportService {
     };
 
     // send event (in progress in global)
-    if (currentCount !== totalCount) {
-      this.adminEvent.emit('onProgressForExport', data);
-    }
-    else {
-      this.adminEvent.emit('onTerminateForExport', data);
-    }
+    this.adminEvent.emit('onProgressForExport', data);
   }
 
   /**
@@ -347,6 +342,10 @@ class ExportService {
 
     logger.info(`zipped growi data into ${zipFile} (${archive.pointer()} bytes)`);
 
+    // send terminate event
+    const { zipFileStats } = await this.getStatus();
+    this.adminEvent.emit('onTerminateForExport', { zipFileStats });
+
     // delete json files
     for (const { from } of configs) {
       fs.unlinkSync(from);