Quellcode durchsuchen

Increase script text box to zoom in and fix log loading #1547 、#1247 (#1604)

* Increase script text box to zoom in and fix log loading

* Timing operation adds default value for start and end dates
break60 vor 5 Jahren
Ursprung
Commit
779decc96d

+ 4 - 4
dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/log.vue

@@ -257,8 +257,8 @@
       _rtParam () {
         return {
           taskInstId: this.stateId || this.logId,
-          skipLineNum: parseInt(`${this.loadingIndex ? this.loadingIndex + '0000' : 0}`),
-          limit: parseInt(`${this.loadingIndex ? this.loadingIndex + 1 : 1}0000`)
+          skipLineNum: parseInt(`${this.loadingIndex ? this.loadingIndex + '000' : 0}`),
+          limit: parseInt(`${this.loadingIndex ? this.loadingIndex + 1 : 1}000`)
         }
       }
     },
@@ -316,7 +316,7 @@
           }
           .refresh-log {
             >i {
-              font-size: 24px;
+              font-size: 20px;
               vertical-align: middle;
               transform: scale(1);
             }
@@ -353,7 +353,7 @@
             font-weight: bold;
             resize:none;
             line-height: 1.6;
-            padding: 6px;
+            padding: 0px;
           }
         }
       }

+ 124 - 0
dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/scriptBox.vue

@@ -0,0 +1,124 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+<template>
+  <div class="script-model">
+    <m-list-box>
+      <div slot="content">
+        <div class="from-mirror1">
+          <textarea
+            id="code-shell-mirror1"
+            name="code-shell-mirror1"
+            style="opacity: 0">
+          </textarea>
+        </div>
+      </div>
+    </m-list-box>
+    <a class="ans-modal-box-close">
+      <i class="ans-icon-min" @click="closeModal"></i>
+    </a>
+  </div>
+</template>
+<script>
+  import _ from 'lodash'
+  import i18n from '@/module/i18n'
+  import mListBox from './listBox'
+  import disabledState from '@/module/mixin/disabledState'
+  import codemirror from '@/conf/home/pages/resource/pages/file/pages/_source/codemirror'
+
+  let editor
+
+  export default {
+    name: 'shell',
+    data () {
+      return {
+        // script
+        rawScript: '',
+      }
+    },
+    mixins: [disabledState],
+    props: {
+      item: String
+    },
+    methods: {
+      /**
+       * Processing code highlighting
+       */
+      _handlerEditor () {
+        // editor
+        let self =this
+        editor = codemirror('code-shell-mirror1', {
+          mode: 'shell',
+          readOnly: this.isDetails
+        })
+        editor.on("change",function(){
+          self.$emit('getSriptBoxValue',editor.getValue())
+        })
+
+        this.keypress = () => {
+          if (!editor.getOption('readOnly')) {
+            editor.showHint({
+              completeSingle: false
+            })
+          }
+        }
+
+        // Monitor keyboard
+        editor.on('keypress', this.keypress)
+
+        editor.setValue(this.rawScript)
+
+        return editor
+      },
+      closeModal() {
+        let self = this
+        self.$emit('closeAble')
+      }
+    },
+    watch: {},
+    created () {
+      let o = this.item
+
+      // Non-null objects represent backfill
+      if (!_.isEmpty(o)) {
+        this.rawScript = o
+      }
+    },
+    mounted () {
+      setTimeout(() => {
+        this._handlerEditor()
+      }, 200)
+    },
+    destroyed () {
+      if (editor) {
+        editor.toTextArea() // Uninstall
+        editor.off($('.code-shell-mirror1'), 'keypress', this.keypress)
+      }
+    },
+    components: { mListBox }
+  }
+</script>
+<style lang="scss" rel="stylesheet/scss" scope>
+  .script-model {
+    width:100%;
+  }
+  .from-mirror1 {
+    .CodeMirror {
+      min-height: 600px;
+      max-height: 700px;
+    }
+  }
+</style>

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

@@ -21,10 +21,13 @@
       <div slot="content">
         <div class="from-mirror">
           <textarea
-                  id="code-shell-mirror"
-                  name="code-shell-mirror"
-                  style="opacity: 0">
+            id="code-shell-mirror"
+            name="code-shell-mirror"
+            style="opacity: 0">
           </textarea>
+          <a class="ans-modal-box-max">
+            <i class="ans-icon-max" @click="setEditorVal"></i>
+          </a>
         </div>
       </div>
     </m-list-box>
@@ -55,6 +58,7 @@
   import _ from 'lodash'
   import i18n from '@/module/i18n'
   import mListBox from './_source/listBox'
+  import mScriptBox from './_source/scriptBox'
   import mResources from './_source/resources'
   import mLocalParams from './_source/localParams'
   import disabledState from '@/module/mixin/disabledState'
@@ -85,8 +89,37 @@
       _onLocalParams (a) {
         this.localParams = a
       },
+      setEditorVal() {
+        let self = this
+          let modal = self.$modal.dialog({
+            className: 'scriptModal',
+            closable: false,
+            showMask: true,
+            maskClosable: true,
+            onClose: function() {
+
+            },
+            render (h) {
+              return h(mScriptBox, {
+                on: {
+                  getSriptBoxValue (val) {
+                    editor.setValue(val)
+                  },
+                  closeAble () {
+                    // this.$modal.destroy()
+                    modal.remove()
+                  }
+                },
+                props: {
+                  item: editor.getValue()
+                }
+              })
+            }
+          })
+      },
       /**
        * return resourceList
+       * 
        */
       _onResourcesData (a) {
         this.resourceList = a
@@ -109,7 +142,6 @@
         if (!this.$refs.refLocalParams._verifProp()) {
           return false
         }
-
         // storage
         this.$emit('on-params', {
           resourceList: this.resourceList,
@@ -138,7 +170,6 @@
 
         // Monitor keyboard
         editor.on('keypress', this.keypress)
-
         editor.setValue(this.rawScript)
 
         return editor
@@ -176,6 +207,27 @@
         editor.off($('.code-shell-mirror'), 'keypress', this.keypress)
       }
     },
-    components: { mLocalParams, mListBox, mResources }
+    components: { mLocalParams, mListBox, mResources, mScriptBox }
   }
 </script>
+<style lang="scss" rel="stylesheet/scss" scope>
+  .scriptModal {
+    .ans-modal-box-content-wrapper {
+      width: 90%;
+      .ans-modal-box-close {
+        right: -12px;
+        top: -16px;
+        color: #fff;
+      }
+    }
+  }
+  .ans-modal-box-close {
+    z-index: 100;
+  }
+  .ans-modal-box-max {
+    position: absolute;
+    right: -12px;
+    top: -16px;
+  }
+  
+</style>

+ 16 - 0
dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/timing.vue

@@ -313,7 +313,23 @@
         this.crontab = this.item.crontab
       }
       if(this.type == 'timing') {
+        let date = new Date()
+        let year = date.getFullYear()
+        let month = date.getMonth() + 1
+        let day = date.getDate()
+        if (month < 10) {
+            month = "0" + month;
+        }
+        if (day < 10) {
+            day = "0" + day;
+        }
+        let startDate = year + "-" + month + "-" + day + ' ' + '00:00:00'
+        let endDate = (year+100) + "-" + month + "-" + day + ' ' + '00:00:00'
+        let times = []
+        times[0] = startDate
+        times[1] = endDate
         this.crontab = '0 0 * * * ? *'
+        this.scheduleTime = times
       }
       this.receivers = _.cloneDeep(this.receiversD)
       this.receiversCc = _.cloneDeep(this.receiversCcD)