Browse Source

1. add input cache for datax task (#2034)

2. add cache for codemirror component, include python, shell and sql task.
zhukai 5 years ago
parent
commit
3186545da1

+ 48 - 1
dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/datax.vue

@@ -232,6 +232,8 @@
        * Processing code highlighting
        */
       _handlerEditor () {
+        this._destroyEditor()
+
         // editor
         editor = codemirror('code-sql-mirror', {
           mode: 'sql',
@@ -249,9 +251,34 @@
         // Monitor keyboard
         editor.on('keypress', this.keypress)
 
+        editor.on('changes', () => {
+          this._cacheParams()
+        })
+
         editor.setValue(this.sql)
 
         return editor
+      },
+      _cacheParams () {
+        this.$emit('on-cache-params', {
+          dsType: this.dsType,
+          dataSource: this.rtDatasource,
+          dtType: this.dtType,
+          dataTarget: this.rtDatatarget,
+          sql: editor?editor.getValue():'',
+          targetTable: this.targetTable,
+          jobSpeedByte: this.jobSpeedByte * 1024,
+          jobSpeedRecord: this.jobSpeedRecord,
+          preStatements: this.preStatements,
+          postStatements: this.postStatements
+        });
+      },
+      _destroyEditor () {
+         if (editor) {
+          editor.toTextArea() // Uninstall
+          editor.off($('.code-sql-mirror'), 'keypress', this.keypress)
+          editor.off($('.code-sql-mirror'), 'changes', this.changes)
+        }
       }
     },
     created () {
@@ -286,7 +313,27 @@
         editor.off($('.code-sql-mirror'), 'keypress', this.keypress)
       }
     },
-    computed: {},
+    watch: {
+      //Watch the cacheParams
+      cacheParams (val) {
+        this._cacheParams();
+      }
+    },
+    computed: {
+      cacheParams () {
+        return {
+          dsType: this.dsType,
+          dataSource: this.rtDatasource,
+          dtType: this.dtType,
+          dataTarget: this.rtDatatarget,
+          targetTable: this.targetTable,
+          jobSpeedByte: this.jobSpeedByte * 1024,
+          jobSpeedRecord: this.jobSpeedRecord,
+          preStatements: this.preStatements,
+          postStatements: this.postStatements
+        }
+      }
+    },
     components: { mListBox, mDatasource, mLocalParams, mStatementList, mSelectInput }
   }
 </script>

+ 29 - 5
dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/python.vue

@@ -129,6 +129,8 @@
        * Processing code highlighting
        */
       _handlerEditor () {
+        this._destroyEditor()
+
         // editor
         editor = codemirror('code-python-mirror', {
           mode: 'python',
@@ -143,26 +145,45 @@
           }
         }
 
+        this.changes = () => {
+          this._cacheParams()
+        }
+
         // Monitor keyboard
         editor.on('keypress', this.keypress)
 
+        editor.on('changes', this.changes)
+
         editor.setValue(this.rawScript)
 
         return editor
+      },
+      _cacheParams () {
+        this.$emit('on-cache-params', {
+          resourceList: this.cacheResourceList,
+          localParams: this.localParams,
+          rawScript: editor ? editor.getValue() : ''
+        });
+      },
+      _destroyEditor () {
+         if (editor) {
+          editor.toTextArea() // Uninstall
+          editor.off($('.code-python-mirror'), 'keypress', this.keypress)
+          editor.off($('.code-python-mirror'), 'changes', this.changes)
+        }
       }
     },
     watch: {
       //Watch the cacheParams
       cacheParams (val) {
-        this.$emit('on-cache-params', val);
+        this._cacheParams()
       }
     },
     computed: {
       cacheParams () {
         return {
           resourceList: this.cacheResourceList,
-          localParams: this.localParams,
-          rawScript: editor ? editor.getValue() : ''
+          localParams: this.localParams
         }
       }
     },
@@ -193,8 +214,11 @@
       }, 200)
     },
     destroyed () {
-      editor.toTextArea() // Uninstall
-      editor.off($('.code-python-mirror'), 'keypress', this.keypress)
+      if (editor) {
+        editor.toTextArea() // Uninstall
+        editor.off($('.code-python-mirror'), 'keypress', this.keypress)
+        editor.off($('.code-python-mirror'), 'changes', this.changes)
+      }
     },
     components: { mLocalParams, mListBox, mResources }
   }

+ 26 - 3
dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/shell.vue

@@ -163,6 +163,8 @@
        * Processing code highlighting
        */
       _handlerEditor () {
+        this._destroyEditor()
+
         // editor
         editor = codemirror('code-shell-mirror', {
           mode: 'shell',
@@ -177,25 +179,45 @@
           }
         }
 
+        this.changes = () => {
+          this._cacheParams()
+        }
+
         // Monitor keyboard
         editor.on('keypress', this.keypress)
+
+        editor.on('changes', this.changes)
+
         editor.setValue(this.rawScript)
 
         return editor
+      },
+      _cacheParams () {
+        this.$emit('on-cache-params', {
+          resourceList: this.cacheResourceList,
+          localParams: this.localParams,
+          rawScript: editor ? editor.getValue() : ''
+        });
+      },
+      _destroyEditor () {
+         if (editor) {
+          editor.toTextArea() // Uninstall
+          editor.off($('.code-sql-mirror'), 'keypress', this.keypress)
+          editor.off($('.code-sql-mirror'), 'changes', this.changes)
+        }
       }
     },
     watch: {
       //Watch the cacheParams
       cacheParams (val) {
-        this.$emit('on-cache-params', val);
+        this._cacheParams()
       }
     },
     computed: {
       cacheParams () {
         return {
           resourceList: this.cacheResourceList,
-          localParams: this.localParams,
-          rawScript: editor ? editor.getValue() : ''
+          localParams: this.localParams
         }
       }
     },
@@ -229,6 +251,7 @@
       if (editor) {
         editor.toTextArea() // Uninstall
         editor.off($('.code-shell-mirror'), 'keypress', this.keypress)
+        editor.off($('.code-shell-mirror'), 'changes', this.changes)
       }
     },
     components: { mLocalParams, mListBox, mResources, mScriptBox }

+ 42 - 2
dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sql.vue

@@ -318,6 +318,8 @@
        * Processing code highlighting
        */
       _handlerEditor () {
+        this._destroyEditor()
+
         // editor
         editor = codemirror('code-sql-mirror', {
           mode: 'sql',
@@ -332,9 +334,15 @@
           }
         }
 
+        this.changes = () => {
+          this._cacheParams()
+        }
+
         // Monitor keyboard
         editor.on('keypress', this.keypress)
 
+        editor.on('changes', this.changes)
+
         editor.setValue(this.sql)
 
         return editor
@@ -351,6 +359,38 @@
           this.receivers = res.receivers && res.receivers.split(',') || []
           this.receiversCc = res.receiversCc && res.receiversCc.split(',') || []
         })
+      },
+      _cacheParams () {
+        this.$emit('on-cache-params', {
+          type: this.type,
+          datasource: this.rtDatasource,
+          sql: editor ? editor.getValue() : '',
+          udfs: this.udfs,
+          sqlType: this.sqlType,
+          title: this.title,
+          receivers: this.receivers.join(','),
+          receiversCc: this.receiversCc.join(','),
+          showType: (() => {
+
+            let showType = this.showType
+            if (showType.length === 2 && showType[0] === 'ATTACHMENT') {
+              return [showType[1], showType[0]].join(',')
+            } else {
+              return showType.join(',')
+            }
+          })(),
+          localParams: this.localParams,
+          connParams: this.connParams,
+          preStatements: this.preStatements,
+          postStatements: this.postStatements
+        });
+      },
+      _destroyEditor () {
+         if (editor) {
+          editor.toTextArea() // Uninstall
+          editor.off($('.code-sql-mirror'), 'keypress', this.keypress)
+          editor.off($('.code-sql-mirror'), 'changes', this.changes)
+        }
       }
     },
     watch: {
@@ -373,7 +413,7 @@
       },
       //Watch the cacheParams
       cacheParams (val) {
-        this.$emit('on-cache-params', val);
+        this._cacheParams()
       }
     },
     created () {
@@ -418,6 +458,7 @@
       if (editor) {
         editor.toTextArea() // Uninstall
         editor.off($('.code-sql-mirror'), 'keypress', this.keypress)
+        editor.off($('.code-sql-mirror'), 'changes', this.changes)
       }
     },
     computed: {
@@ -425,7 +466,6 @@
         return {
           type: this.type,
           datasource: this.rtDatasource,
-          sql: editor ? editor.getValue() : '',
           udfs: this.udfs,
           sqlType: this.sqlType,
           title: this.title,