diff --git a/.eslintignore b/.eslintignore
index e6529fc0..51525879 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -2,3 +2,4 @@ build/*.js
 src/assets
 public
 dist
+src
diff --git a/package.json b/package.json
index 3cb592c3..81fad796 100644
--- a/package.json
+++ b/package.json
@@ -53,6 +53,7 @@
     "dropzone": "5.5.1",
     "echarts": "4.2.1",
     "element-ui": "2.7.0",
+    "eslint": "^6.3.0",
     "file-saver": "2.0.1",
     "fuse.js": "3.4.4",
     "jquery": "^3.4.1",
@@ -93,10 +94,8 @@
     "chalk": "2.4.2",
     "chokidar": "2.1.5",
     "connect": "3.6.6",
-    "eslint": "5.15.3",
-    "eslint-plugin-vue": "5.2.2",
+    "eslint-plugin-vue": "^5.2.3",
     "html-webpack-plugin": "3.2.0",
-    "husky": "1.3.1",
     "lint-staged": "8.1.5",
     "mockjs": "1.0.1-beta3",
     "node-sass": "^4.9.0",
diff --git a/src/api/user.js b/src/api/user.js
index 45c13b4d..de6a6c82 100644
--- a/src/api/user.js
+++ b/src/api/user.js
@@ -27,7 +27,7 @@ export function sendAnalyzeRequest(token) {
   return request({
     url: '/testpredict',
     method: 'get',
-    baseURL: 'http://localhost:8888',
+    baseURL: 'http://localhost:8010',
     params: { token }
   })
 }
diff --git a/src/router/index.js b/src/router/index.js
index 110c0554..03e0093b 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -12,7 +12,7 @@ import chartsRouter from './modules/charts'
 import tableRouter from './modules/table'
 import nestedRouter from './modules/nested'
 
-/**
+/** 
  * Note: sub-menu only appear when route children.length >= 1
  * Detail see: https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html
  *
@@ -101,13 +101,27 @@ export const constantRoutes = [
     component: Layout,
     children: [
       {
-        path: 'haha',
-        component: ()=>import('@/views/Analyzing/analyzing'),
+        path: 'analyzing',
+        component: () => import('@/views/Analyzing/analyzing'),
         name: 'analyze',
         meta: { title: 'analyzing' }
       }
     ]
   },
+  {
+    path: '/plot',
+    //hidden: true,
+    component: Layout,
+
+    children: [
+      {
+        path: 'plot',
+        component: () => import('@/views/plot/index'),
+        name: 'plot',
+        meta: { title: 'plot' }
+      }
+    ]
+  },
   {
     path: '/documentation',
     component: Layout,
diff --git a/src/views/Analyzing/analyzing.vue b/src/views/Analyzing/analyzing.vue
index 6e162789..b1afc890 100644
--- a/src/views/Analyzing/analyzing.vue
+++ b/src/views/Analyzing/analyzing.vue
@@ -1,14 +1,12 @@
 <!-- <template>
 	<div class="progress">
 	 <div class="progress-bar progress-bar-striped progress-bar-animated" role="progressbar" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100" style="width: 75%"></div>
-	  <span>hhahahahahahah</span>
 	</div>
 </template>
 
-
 <script>
     export default {
-        
+
         data () {
             return {
                 msg: 'Hey Nic Raboy'
@@ -23,19 +21,15 @@
       <h1>Analyzing....</h1>
     </div>
 </template>
- 
+
 <script>
-  import Circle9 from 'vue-loading-spinner/src/components/Circle9'
-  
-  export default {
-  	name: 'analyze',
-    components: {
-      Circle9
-    }
-
+import Circle9 from 'vue-loading-spinner/src/components/Circle9'
+export default {
+  name: 'Analyze',
+  components: {
+    Circle9
   }
-
-
+}
 </script>
 
 <style scoped>
diff --git a/src/views/VueUploader/index.vue b/src/views/VueUploader/index.vue
index 705d4a5c..e634e537 100644
--- a/src/views/VueUploader/index.vue
+++ b/src/views/VueUploader/index.vue
@@ -1,309 +1,296 @@
 <template>
-<div class="example-full">
-  <button type="button" class="btn btn-danger float-right btn-is-option" @click.prevent="isOption = !isOption">
-    <i class="fa fa-cog" aria-hidden="true"></i>
-    Options
-  </button>
-  <h1 id="example-title" class="example-title">Data Uploader</h1>
+  <div class="example-full">
+    <button type="button" class="btn btn-danger float-right btn-is-option" @click.prevent="isOption = !isOption">
+      <i class="fa fa-cog" aria-hidden="true" />
+      Options
+    </button>
+    <h1 id="example-title" class="example-title">Data Uploader</h1>
 
-  <div v-show="$refs.upload && $refs.upload.dropActive" class="drop-active">
-    <h3>Drop files to upload</h3>
-  </div>
-  <div class="upload" v-show="!isOption">
-    <div class="table-responsive">
-      <table class="table table-hover">
-        <thead>
-          <tr>
-            <th>#</th>
-            <th>Thumb</th>
-            <th>Name</th>
-            <th>Size</th>
-            <th>Speed</th>
-            <th>Status</th>
-            <th>Action</th>
-          </tr>
-        </thead>
-        <tbody>
-          <tr v-if="!files.length">
-            <td colspan="7">
-              <div class="text-center p-5">
-                <h4>Drop files anywhere to upload<br/>or</h4>
-                <label :for="name" class="btn btn-lg btn-primary">Select Files</label>
-              </div>
-            </td>
-          </tr>
-          <tr v-for="(file, index) in files" :key="file.id">
-            <td>{{index}}</td>
-            <td>
-              <img v-if="file.thumb" :src="file.thumb" width="40" height="auto" />
-              <span v-else>No Image</span>
-            </td>
-            <td>
-              <div class="filename">
-                {{file.name}}
-              </div>
-              <div class="progress" v-if="file.active || file.progress !== '0.00'">
-                <div :class="{'progress-bar': true, 'progress-bar-striped': true, 'bg-danger': file.error, 'progress-bar-animated': file.active}" role="progressbar" :style="{width: file.progress + '%'}">{{file.progress}}%</div>
-              </div>
-            </td>
-            <td>{{file.size | formatSize}}</td>
-            <td>{{file.speed | formatSize}}</td>
-
-            <td v-if="file.error">{{file.error}}</td>
-            <td v-else-if="file.success">success</td>
-            <td v-else-if="file.active">active</td>
-            <td v-else></td>
-            <td>
-              <div class="btn-group">
-                <button class="btn btn-secondary btn-sm dropdown-toggle" type="button">
-                  Action
-                </button>
-                <div class="dropdown-menu">
-                  <a :class="{'dropdown-item': true, disabled: file.active || file.success || file.error === 'compressing'}" href="#" @click.prevent="file.active || file.success || file.error === 'compressing' ? false :  onEditFileShow(file)">Edit</a>
-                  <a :class="{'dropdown-item': true, disabled: !file.active}" href="#" @click.prevent="file.active ? $refs.upload.update(file, {error: 'cancel'}) : false">Cancel</a>
-
-                  <a class="dropdown-item" href="#" v-if="file.active" @click.prevent="$refs.upload.update(file, {active: false})">Abort</a>
-                  <a class="dropdown-item" href="#" v-else-if="file.error && file.error !== 'compressing' && $refs.upload.features.html5" @click.prevent="$refs.upload.update(file, {active: true, error: '', progress: '0.00'})">Retry upload</a>
-                  <a :class="{'dropdown-item': true, disabled: file.success || file.error === 'compressing'}" href="#" v-else @click.prevent="file.success || file.error === 'compressing' ? false : $refs.upload.update(file, {active: true})">Upload</a>
-
-                  <div class="dropdown-divider"></div>
-                  <a class="dropdown-item" href="#" @click.prevent="$refs.upload.remove(file)">Remove</a>
+    <div v-show="$refs.upload && $refs.upload.dropActive" class="drop-active">
+      <h3>Drop files to upload</h3>
+    </div>
+    <div v-show="!isOption" class="upload">
+      <div class="table-responsive">
+        <table class="table table-hover">
+          <thead>
+            <tr>
+              <th>#</th>
+              <th>Thumb</th>
+              <th>Name</th>
+              <th>Size</th>
+              <th>Speed</th>
+              <th>Status</th>
+              <th>Action</th>
+            </tr>
+          </thead>
+          <tbody>
+            <tr v-if="!files.length">
+              <td colspan="7">
+                <div class="text-center p-5">
+                  <h4>Drop files anywhere to upload<br>or</h4>
+                  <label :for="name" class="btn btn-lg btn-primary">Select Files</label>
                 </div>
-              </div>
-            </td>
-          </tr>
-        </tbody>
-      </table>
-    </div>
-    <div class="example-foorer">
-      <div class="footer-status float-right">
-        Drop: {{$refs.upload ? $refs.upload.drop : false}},
-        Active: {{$refs.upload ? $refs.upload.active : false}},
-        Uploaded: {{$refs.upload ? $refs.upload.uploaded : true}},
-        Drop active: {{$refs.upload ? $refs.upload.dropActive : false}}
-      </div>
-      <div class="btn-group">
-        <file-upload
-          class="btn btn-primary dropdown-toggle"
-          :post-action="postAction"
-          :put-action="putAction"
-          :extensions="extensions"
-          :accept="accept"
-          :multiple="multiple"
-          :directory="directory"
-          :size="size || 0"
-          :thread="thread < 1 ? 1 : (thread > 5 ? 5 : thread)"
-          :headers="headers"
-          :data="data"
-          :drop="drop"
-          :drop-directory="dropDirectory"
-          :add-index="addIndex"
-          v-model="files"
-          @input-filter="inputFilter"
-          @input-file="inputFile"
-          ref="upload">
-          <i class="fa fa-plus"></i>
-          Select
-        </file-upload>
-        <div class="dropdown-menu">
-          <label class="dropdown-item" :for="name">Add files</label>
-          <a class="dropdown-item" href="#" @click="onAddFolader">Add folder</a>
-          <a class="dropdown-item" href="#" @click.prevent="addData.show = true">Add data</a>
-        </div>
-      </div>
-      <button type="button" class="btn btn-success" v-if="!$refs.upload || !$refs.upload.active" @click.prevent="$refs.upload.active = true">
-        <i class="fa fa-arrow-up" aria-hidden="true"></i>
-        Start Upload 
-      </button>
-      <button type="button" class="btn btn-warning" v-if="!$refs.upload || !$refs.upload.active" @click.prevent="onSendAnalyzeRequest">
-        Analyze
-      </button>
-      <button type="button" class="btn btn-danger"  v-else @click.prevent="$refs.upload.active = false">
-        <i class="fa fa-stop" aria-hidden="true"></i>
-        Stop Upload
-      </button>
-    </div>
-  </div>
-
-
-
-
-
-  <div class="option" v-show="isOption">
-    <div class="form-group">
-      <label for="accept">Accept:</label>
-      <input type="text" id="accept" class="form-control" v-model="accept">
-      <small class="form-text text-muted">Allow upload mime type</small>
-    </div>
-    <div class="form-group">
-      <label for="extensions">Extensions:</label>
-      <input type="text" id="extensions" class="form-control" v-model="extensions">
-      <small class="form-text text-muted">Allow upload file extension</small>
-    </div>
-    <div class="form-group">
-      <label>PUT Upload:</label>
-      <div class="form-check">
-        <label class="form-check-label">
-          <input class="form-check-input" type="radio" name="put-action" id="put-action" value="" v-model="putAction"> Off
-        </label>
-      </div>
-      <div class="form-check">
-        <label class="form-check-label">
-          <input class="form-check-input" type="radio" name="put-action" id="put-action" value="/upload/put" v-model="putAction"> On
-        </label>
-      </div>
-      <small class="form-text text-muted">After the shutdown, use the POST method to upload</small>
-    </div>
-    <div class="form-group">
-      <label for="thread">Thread:</label>
-      <input type="number" max="5" min="1" id="thread" class="form-control" v-model.number="thread">
-      <small class="form-text text-muted">Also upload the number of files at the same time (number of threads)</small>
-    </div>
-    <div class="form-group">
-      <label for="size">Max size:</label>
-      <input type="number" min="0" id="size" class="form-control" v-model.number="size">
-    </div>
-    <div class="form-group">
-      <label for="minSize">Min size:</label>
-      <input type="number" min="0" id="minSize" class="form-control" v-model.number="minSize">
-    </div>
-    <div class="form-group">
-      <label for="autoCompress">Automatically compress:</label>
-      <input type="number" min="0" id="autoCompress" class="form-control" v-model.number="autoCompress">
-      <small class="form-text text-muted" v-if="autoCompress > 0">More than {{autoCompress | formatSize}} files are automatically compressed</small>
-      <small class="form-text text-muted" v-else>Set up automatic compression</small>
-    </div>
-
-    <div class="form-group">
-      <div class="form-check">
-        <label class="form-check-label">
-          <input type="checkbox" id="add-index" class="form-check-input" v-model="addIndex"> Start position to add
-        </label>
-      </div>
-      <small class="form-text text-muted">Add a file list to start the location to add</small>
-    </div>
-
-    <div class="form-group">
-      <div class="form-check">
-        <label class="form-check-label">
-          <input type="checkbox" id="drop" class="form-check-input" v-model="drop"> Drop
-        </label>
-      </div>
-      <small class="form-text text-muted">Drag and drop upload</small>
-    </div>
-    <div class="form-group">
-      <div class="form-check">
-        <label class="form-check-label">
-          <input type="checkbox" id="drop-directory" class="form-check-input" v-model="dropDirectory"> Drop directory
-        </label>
-      </div>
-      <small class="form-text text-muted">Not checked, filter the dragged folder</small>
-    </div>
-    <div class="form-group">
-      <div class="form-check">
-        <label class="form-check-label">
-          <input type="checkbox" id="upload-auto" class="form-check-input" v-model="uploadAuto"> Auto start
-        </label>
-      </div>
-      <small class="form-text text-muted">Automatically activate upload</small>
-    </div>
-    <div class="form-group">
-      <button type="button" class="btn btn-primary btn-lg btn-block" @click.prevent="isOption = !isOption">Confirm</button>
-    </div>
-  </div>
-
-
-
-
-
-  <div :class="{'modal-backdrop': true, 'fade': true, show: addData.show}"></div>
-  <div :class="{modal: true, fade: true, show: addData.show}" id="modal-add-data" tabindex="-1" role="dialog">
-    <div class="modal-dialog" role="document">
-      <div class="modal-content">
-        <div class="modal-header">
-          <h5 class="modal-title">Add data</h5>
-          <button type="button" class="close"  @click.prevent="addData.show = false">
-            <span>&times;</span>
-          </button>
-        </div>
-        <form @submit.prevent="onAddData">
-          <div class="modal-body">
-            <div class="form-group">
-              <label for="name">Name:</label>
-              <input type="text" class="form-control" required id="name"  placeholder="Please enter a file name" v-model="addData.name">
-              <small class="form-text text-muted">Such as <code>filename.txt</code></small>
-            </div>
-            <div class="form-group">
-              <label for="type">Type:</label>
-              <input type="text" class="form-control" required id="type"  placeholder="Please enter the MIME type" v-model="addData.type">
-              <small class="form-text text-muted">Such as <code>text/plain</code></small>
-            </div>
-            <div class="form-group">
-              <label for="content">Content:</label>
-              <textarea class="form-control" required id="content" rows="3" placeholder="Please enter the file contents" v-model="addData.content"></textarea>
-            </div>
-          </div>
-          <div class="modal-footer">
-            <button type="button" class="btn btn-secondary" @click.prevent="addData.show = false">Close</button>
-            <button type="submit" class="btn btn-primary">Save</button>
-          </div>
-        </form>
-      </div>
-    </div>
-  </div>
-
-
-
-
-
-
-  <div :class="{'modal-backdrop': true, 'fade': true, show: editFile.show}"></div>
-  <div :class="{modal: true, fade: true, show: editFile.show}" id="modal-edit-file" tabindex="-1" role="dialog">
-    <div class="modal-dialog modal-lg" role="document">
-      <div class="modal-content">
-        <div class="modal-header">
-          <h5 class="modal-title">Edit file</h5>
-          <button type="button" class="close"  @click.prevent="editFile.show = false">
-            <span>&times;</span>
-          </button>
-        </div>
-        <form @submit.prevent="onEditorFile">
-          <div class="modal-body">
-            <div class="form-group">
-              <label for="name">Name:</label>
-              <input type="text" class="form-control" required id="name"  placeholder="Please enter a file name" v-model="editFile.name">
-            </div>
-            <div class="form-group" v-if="editFile.show && editFile.blob && editFile.type && editFile.type.substr(0, 6) === 'image/'">
-              <label>Image: </label>
-              <div class="edit-image">
-                <img :src="editFile.blob" ref="editImage" />
-              </div>
-
-              <div class="edit-image-tool">
-                <div class="btn-group" role="group">
-                  <button type="button" class="btn btn-primary" @click="editFile.cropper.rotate(-90)" title="cropper.rotate(-90)"><i class="fa fa-undo" aria-hidden="true"></i></button>
-                  <button type="button" class="btn btn-primary" @click="editFile.cropper.rotate(90)"  title="cropper.rotate(90)"><i class="fa fa-repeat" aria-hidden="true"></i></button>
+              </td>
+            </tr>
+            <tr v-for="(file, index) in files" :key="file.id">
+              <td>{{ index }}</td>
+              <td>
+                <img v-if="file.thumb" :src="file.thumb" width="40" height="auto">
+                <span v-else>No Image</span>
+              </td>
+              <td>
+                <div class="filename">
+                  {{ file.name }}
                 </div>
-                <div class="btn-group" role="group">
-                  <button type="button" class="btn btn-primary" @click="editFile.cropper.crop()" title="cropper.crop()"><i class="fa fa-check" aria-hidden="true"></i></button>
-                  <button type="button" class="btn btn-primary" @click="editFile.cropper.clear()" title="cropper.clear()"><i class="fa fa-remove" aria-hidden="true"></i></button>
+                <div v-if="file.active || file.progress !== '0.00'" class="progress">
+                  <div :class="{'progress-bar': true, 'progress-bar-striped': true, 'bg-danger': file.error, 'progress-bar-animated': file.active}" role="progressbar" :style="{width: file.progress + '%'}">{{ file.progress }}%</div>
+                </div>
+              </td>
+              <td>{{ file.size | formatSize }}</td>
+              <td>{{ file.speed | formatSize }}</td>
+
+              <td v-if="file.error">{{ file.error }}</td>
+              <td v-else-if="file.success">success</td>
+              <td v-else-if="file.active">active</td>
+              <td v-else />
+              <td>
+                <div class="btn-group">
+                  <button class="btn btn-secondary btn-sm dropdown-toggle" type="button">
+                    Action
+                  </button>
+                  <div class="dropdown-menu">
+                    <a :class="{'dropdown-item': true, disabled: file.active || file.success || file.error === 'compressing'}" href="#" @click.prevent="file.active || file.success || file.error === 'compressing' ? false : onEditFileShow(file)">Edit</a>
+                    <a :class="{'dropdown-item': true, disabled: !file.active}" href="#" @click.prevent="file.active ? $refs.upload.update(file, {error: 'cancel'}) : false">Cancel</a>
+
+                    <a v-if="file.active" class="dropdown-item" href="#" @click.prevent="$refs.upload.update(file, {active: false})">Abort</a>
+                    <a v-else-if="file.error && file.error !== 'compressing' && $refs.upload.features.html5" class="dropdown-item" href="#" @click.prevent="$refs.upload.update(file, {active: true, error: '', progress: '0.00'})">Retry upload</a>
+                    <a v-else :class="{'dropdown-item': true, disabled: file.success || file.error === 'compressing'}" href="#" @click.prevent="file.success || file.error === 'compressing' ? false : $refs.upload.update(file, {active: true})">Upload</a>
+
+                    <div class="dropdown-divider" />
+                    <a class="dropdown-item" href="#" @click.prevent="$refs.upload.remove(file)">Remove</a>
+                  </div>
+                </div>
+              </td>
+            </tr>
+          </tbody>
+        </table>
+      </div>
+      <div class="example-foorer">
+        <div class="footer-status float-right">
+          Drop: {{ $refs.upload ? $refs.upload.drop : false }},
+          Active: {{ $refs.upload ? $refs.upload.active : false }},
+          Uploaded: {{ $refs.upload ? $refs.upload.uploaded : true }},
+          Drop active: {{ $refs.upload ? $refs.upload.dropActive : false }}
+        </div>
+        <div class="btn-group">
+          <file-upload
+            ref="upload"
+            v-model="files"
+            class="btn btn-primary dropdown-toggle"
+            :post-action="postAction"
+            :put-action="putAction"
+            :extensions="extensions"
+            :accept="accept"
+            :multiple="multiple"
+            :directory="directory"
+            :size="size || 0"
+            :thread="thread < 1 ? 1 : (thread > 5 ? 5 : thread)"
+            :headers="headers"
+            :data="data"
+            :drop="drop"
+            :drop-directory="dropDirectory"
+            :add-index="addIndex"
+            @input-filter="inputFilter"
+            @input-file="inputFile"
+          >
+            <i class="fa fa-plus" />
+            Select
+          </file-upload>
+          <div class="dropdown-menu">
+            <label class="dropdown-item" :for="name">Add files</label>
+            <a class="dropdown-item" href="#" @click="onAddFolader">Add folder</a>
+            <a class="dropdown-item" href="#" @click.prevent="addData.show = true">Add data</a>
+          </div>
+        </div>
+        <button v-if="!$refs.upload || !$refs.upload.active" type="button" class="btn btn-success" @click.prevent="$refs.upload.active = true">
+          <i class="fa fa-arrow-up" aria-hidden="true" />
+          Start Upload
+        </button>
+        <button v-if="!$refs.upload || !$refs.upload.active" type="button" class="btn btn-warning" @click.prevent="onSendAnalyzeRequest">
+          Analyze
+        </button>
+        <button v-else type="button" class="btn btn-danger" @click.prevent="$refs.upload.active = false">
+          <i class="fa fa-stop" aria-hidden="true" />
+          Stop Upload
+        </button>
+      </div>
+    </div>
+
+    <div v-show="isOption" class="option">
+      <div class="form-group">
+        <label for="accept">Accept:</label>
+        <input id="accept" v-model="accept" type="text" class="form-control">
+        <small class="form-text text-muted">Allow upload mime type</small>
+      </div>
+      <div class="form-group">
+        <label for="extensions">Extensions:</label>
+        <input id="extensions" v-model="extensions" type="text" class="form-control">
+        <small class="form-text text-muted">Allow upload file extension</small>
+      </div>
+      <div class="form-group">
+        <label>PUT Upload:</label>
+        <div class="form-check">
+          <label class="form-check-label">
+            <input id="put-action" v-model="putAction" class="form-check-input" type="radio" name="put-action" value=""> Off
+          </label>
+        </div>
+        <div class="form-check">
+          <label class="form-check-label">
+            <input id="put-action" v-model="putAction" class="form-check-input" type="radio" name="put-action" value="/upload/put"> On
+          </label>
+        </div>
+        <small class="form-text text-muted">After the shutdown, use the POST method to upload</small>
+      </div>
+      <div class="form-group">
+        <label for="thread">Thread:</label>
+        <input id="thread" v-model.number="thread" type="number" max="5" min="1" class="form-control">
+        <small class="form-text text-muted">Also upload the number of files at the same time (number of threads)</small>
+      </div>
+      <div class="form-group">
+        <label for="size">Max size:</label>
+        <input id="size" v-model.number="size" type="number" min="0" class="form-control">
+      </div>
+      <div class="form-group">
+        <label for="minSize">Min size:</label>
+        <input id="minSize" v-model.number="minSize" type="number" min="0" class="form-control">
+      </div>
+      <div class="form-group">
+        <label for="autoCompress">Automatically compress:</label>
+        <input id="autoCompress" v-model.number="autoCompress" type="number" min="0" class="form-control">
+        <small v-if="autoCompress > 0" class="form-text text-muted">More than {{ autoCompress | formatSize }} files are automatically compressed</small>
+        <small v-else class="form-text text-muted">Set up automatic compression</small>
+      </div>
+
+      <div class="form-group">
+        <div class="form-check">
+          <label class="form-check-label">
+            <input id="add-index" v-model="addIndex" type="checkbox" class="form-check-input"> Start position to add
+          </label>
+        </div>
+        <small class="form-text text-muted">Add a file list to start the location to add</small>
+      </div>
+
+      <div class="form-group">
+        <div class="form-check">
+          <label class="form-check-label">
+            <input id="drop" v-model="drop" type="checkbox" class="form-check-input"> Drop
+          </label>
+        </div>
+        <small class="form-text text-muted">Drag and drop upload</small>
+      </div>
+      <div class="form-group">
+        <div class="form-check">
+          <label class="form-check-label">
+            <input id="drop-directory" v-model="dropDirectory" type="checkbox" class="form-check-input"> Drop directory
+          </label>
+        </div>
+        <small class="form-text text-muted">Not checked, filter the dragged folder</small>
+      </div>
+      <div class="form-group">
+        <div class="form-check">
+          <label class="form-check-label">
+            <input id="upload-auto" v-model="uploadAuto" type="checkbox" class="form-check-input"> Auto start
+          </label>
+        </div>
+        <small class="form-text text-muted">Automatically activate upload</small>
+      </div>
+      <div class="form-group">
+        <button type="button" class="btn btn-primary btn-lg btn-block" @click.prevent="isOption = !isOption">Confirm</button>
+      </div>
+    </div>
+
+    <div :class="{'modal-backdrop': true, 'fade': true, show: addData.show}" />
+    <div id="modal-add-data" :class="{modal: true, fade: true, show: addData.show}" tabindex="-1" role="dialog">
+      <div class="modal-dialog" role="document">
+        <div class="modal-content">
+          <div class="modal-header">
+            <h5 class="modal-title">Add data</h5>
+            <button type="button" class="close" @click.prevent="addData.show = false">
+              <span>&times;</span>
+            </button>
+          </div>
+          <form @submit.prevent="onAddData">
+            <div class="modal-body">
+              <div class="form-group">
+                <label for="name">Name:</label>
+                <input id="name" v-model="addData.name" type="text" class="form-control" required placeholder="Please enter a file name">
+                <small class="form-text text-muted">Such as <code>filename.txt</code></small>
+              </div>
+              <div class="form-group">
+                <label for="type">Type:</label>
+                <input id="type" v-model="addData.type" type="text" class="form-control" required placeholder="Please enter the MIME type">
+                <small class="form-text text-muted">Such as <code>text/plain</code></small>
+              </div>
+              <div class="form-group">
+                <label for="content">Content:</label>
+                <textarea id="content" v-model="addData.content" class="form-control" required rows="3" placeholder="Please enter the file contents" />
+              </div>
+            </div>
+            <div class="modal-footer">
+              <button type="button" class="btn btn-secondary" @click.prevent="addData.show = false">Close</button>
+              <button type="submit" class="btn btn-primary">Save</button>
+            </div>
+          </form>
+        </div>
+      </div>
+    </div>
+
+    <div :class="{'modal-backdrop': true, 'fade': true, show: editFile.show}" />
+    <div id="modal-edit-file" :class="{modal: true, fade: true, show: editFile.show}" tabindex="-1" role="dialog">
+      <div class="modal-dialog modal-lg" role="document">
+        <div class="modal-content">
+          <div class="modal-header">
+            <h5 class="modal-title">Edit file</h5>
+            <button type="button" class="close" @click.prevent="editFile.show = false">
+              <span>&times;</span>
+            </button>
+          </div>
+          <form @submit.prevent="onEditorFile">
+            <div class="modal-body">
+              <div class="form-group">
+                <label for="name">Name:</label>
+                <input id="name" v-model="editFile.name" type="text" class="form-control" required placeholder="Please enter a file name">
+              </div>
+              <div v-if="editFile.show && editFile.blob && editFile.type && editFile.type.substr(0, 6) === 'image/'" class="form-group">
+                <label>Image: </label>
+                <div class="edit-image">
+                  <img ref="editImage" :src="editFile.blob">
+                </div>
+
+                <div class="edit-image-tool">
+                  <div class="btn-group" role="group">
+                    <button type="button" class="btn btn-primary" title="cropper.rotate(-90)" @click="editFile.cropper.rotate(-90)"><i class="fa fa-undo" aria-hidden="true" /></button>
+                    <button type="button" class="btn btn-primary" title="cropper.rotate(90)" @click="editFile.cropper.rotate(90)"><i class="fa fa-repeat" aria-hidden="true" /></button>
+                  </div>
+                  <div class="btn-group" role="group">
+                    <button type="button" class="btn btn-primary" title="cropper.crop()" @click="editFile.cropper.crop()"><i class="fa fa-check" aria-hidden="true" /></button>
+                    <button type="button" class="btn btn-primary" title="cropper.clear()" @click="editFile.cropper.clear()"><i class="fa fa-remove" aria-hidden="true" /></button>
+                  </div>
                 </div>
               </div>
             </div>
-          </div>
-          <div class="modal-footer">
-            <button type="button" class="btn btn-secondary" @click.prevent="editFile.show = false">Close</button>
-            <button type="submit" class="btn btn-primary">Save</button>
-          </div>
-        </form>
+            <div class="modal-footer">
+              <button type="button" class="btn btn-secondary" @click.prevent="editFile.show = false">Close</button>
+              <button type="submit" class="btn btn-primary">Save</button>
+            </div>
+          </form>
+        </div>
       </div>
     </div>
-  </div>
 
-</div>
+  </div>
 </template>
 
-
 <script>
 import Cropper from 'cropperjs'
 import ImageCompressor from '@xkeshi/image-compressor'
@@ -313,7 +300,7 @@ import { sendAnalyzeRequest } from '@/api/user'
 // import 'bootstrap/dist/css/bootstrap.min.css'
 export default {
   components: {
-    FileUpload,
+    FileUpload
   },
   data() {
     return {
@@ -332,12 +319,12 @@ export default {
       thread: 3,
       name: 'file',
       postAction: '/upload/post',
-      putAction: 'http://localhost:8888/uploader',
+      putAction: 'http://localhost:8010/uploader',
       headers: {
-        'X-Csrf-Token': 'xxxx',
+        'X-Csrf-Token': 'xxxx'
       },
       data: {
-        '_csrf_token': 'xxxxxx',
+        '_csrf_token': 'xxxxxx'
       },
       autoCompress: 1024 * 1024,
       uploadAuto: false,
@@ -346,11 +333,11 @@ export default {
         show: false,
         name: '',
         type: '',
-        content: '',
+        content: ''
       },
       editFile: {
         show: false,
-        name: '',
+        name: ''
       }
     }
   },
@@ -361,12 +348,12 @@ export default {
         this.$refs.upload.update(this.editFile.id, { error: this.editFile.error || '' })
       }
       if (newValue) {
-        this.$nextTick(function () {
+        this.$nextTick(function() {
           if (!this.$refs.editImage) {
             return
           }
-          let cropper = new Cropper(this.$refs.editImage, {
-            autoCrop: false,
+          const cropper = new Cropper(this.$refs.editImage, {
+            autoCrop: false
           })
           this.editFile = {
             ...this.editFile,
@@ -381,7 +368,7 @@ export default {
         this.addData.type = ''
         this.addData.content = ''
       }
-    },
+    }
   },
   methods: {
     inputFilter(newFile, oldFile, prevent) {
@@ -405,7 +392,7 @@ export default {
           const imageCompressor = new ImageCompressor(null, {
             convertSize: Infinity,
             maxWidth: 512,
-            maxHeight: 512,
+            maxHeight: 512
           })
           imageCompressor.compress(newFile.file)
             .then((file) => {
@@ -420,7 +407,7 @@ export default {
         // Create a blob field
         // 创建 blob 字段
         newFile.blob = ''
-        let URL = window.URL || window.webkitURL
+        const URL = window.URL || window.webkitURL
         if (URL && URL.createObjectURL) {
           newFile.blob = URL.createObjectURL(newFile.file)
         }
@@ -482,12 +469,12 @@ export default {
         this.editFile.show = false
         return
       }
-      let data = {
-        name: this.editFile.name,
+      const data = {
+        name: this.editFile.name
       }
       if (this.editFile.cropper) {
-        let binStr = atob(this.editFile.cropper.getCroppedCanvas().toDataURL(this.editFile.type).split(',')[1])
-        let arr = new Uint8Array(binStr.length)
+        const binStr = atob(this.editFile.cropper.getCroppedCanvas().toDataURL(this.editFile.type).split(',')[1])
+        const arr = new Uint8Array(binStr.length)
         for (let i = 0; i < binStr.length; i++) {
           arr[i] = binStr.charCodeAt(i)
         }
@@ -504,7 +491,7 @@ export default {
         this.alert('Your browser does not support')
         return
       }
-      let input = this.$refs.upload.$el.querySelector('input')
+      const input = this.$refs.upload.$el.querySelector('input')
       input.directory = true
       input.webkitdirectory = true
       this.directory = true
@@ -522,8 +509,8 @@ export default {
         this.alert('Your browser does not support')
         return
       }
-      let file = new window.File([this.addData.content], this.addData.name, {
-        type: this.addData.type,
+      const file = new window.File([this.addData.content], this.addData.name, {
+        type: this.addData.type
       })
       this.$refs.upload.add(file)
     },
@@ -552,7 +539,6 @@ export default {
   }
 }
 
-
 </script>
 
 <style>
@@ -633,7 +619,6 @@ export default {
 }
 </style>
 
-
 <!-- <template>
   <div class="app-container">
     <ul>
@@ -721,11 +706,6 @@ export default {
 import 'vue-upload-component/dist/vue-upload-component.part.css'
 @import "vue-upload-component/dist/vue-upload-component.part.css"
 
-
-
-
-
- 
 .file-uploads {
   overflow: hidden;
   position: relative;
@@ -753,4 +733,4 @@ import 'vue-upload-component/dist/vue-upload-component.part.css'
   opacity: 0;
 }
 </style>
- -->
\ No newline at end of file
+ -->
diff --git a/src/views/plot/index.vue b/src/views/plot/index.vue
new file mode 100644
index 00000000..a33371af
--- /dev/null
+++ b/src/views/plot/index.vue
@@ -0,0 +1,26 @@
+<template>
+  <!-- <div class="vue-spinner">
+    <Circle9 />
+    <h1>Analyzing....</h1>
+  </div> -->
+    <iframe src="http://localhost:808" width=1300 height=600></iframe>
+</template>
+
+<script>
+import Circle9 from 'vue-loading-spinner/src/components/Circle9'
+export default {
+  name: 'plot',
+  components: {
+    Circle9
+  }
+}
+</script>
+
+<style scoped>
+	.vue-spinner{
+		margin: 100px;
+		width: 50%;
+		height: 50%;
+		/*overflow: hidden;*/
+	}
+</style>