diff --git a/.eslintrc.js b/.eslintrc.js
index ab6f22f..9f2e6a3 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -17,10 +17,12 @@ module.exports = {
"babel/camelcase": 1,
"babel/no-invalid-this": 1,
"babel/object-curly-spacing": 1,
- "babel/quotes": 1,
+ "babel/quotes": 0,
"babel/semi": 1,
"babel/no-unused-expressions": 1,
- "babel/valid-typeof": 1
+ "babel/valid-typeof": 1,
+ "@typescript-eslint/explicit-function-return-type":0,
+ "@typescript-eslint/no-use-before-define":0
}
};
diff --git a/build/icons/1024x1024.png b/build/icons/1024x1024.png
index 0ac62ba..a941a11 100644
Binary files a/build/icons/1024x1024.png and b/build/icons/1024x1024.png differ
diff --git a/build/icons/128x128.png b/build/icons/128x128.png
index 0fe854b..7bb5356 100644
Binary files a/build/icons/128x128.png and b/build/icons/128x128.png differ
diff --git a/build/icons/16x16.png b/build/icons/16x16.png
index 04d9e40..76d0136 100644
Binary files a/build/icons/16x16.png and b/build/icons/16x16.png differ
diff --git a/build/icons/24x24.png b/build/icons/24x24.png
index 9f7c592..d452690 100644
Binary files a/build/icons/24x24.png and b/build/icons/24x24.png differ
diff --git a/build/icons/256x256.png b/build/icons/256x256.png
index c7f2b22..4760b74 100644
Binary files a/build/icons/256x256.png and b/build/icons/256x256.png differ
diff --git a/build/icons/32x32.png b/build/icons/32x32.png
index f3fc56c..1424276 100644
Binary files a/build/icons/32x32.png and b/build/icons/32x32.png differ
diff --git a/build/icons/48x48.png b/build/icons/48x48.png
index 03071b6..2005f07 100644
Binary files a/build/icons/48x48.png and b/build/icons/48x48.png differ
diff --git a/build/icons/512x512.png b/build/icons/512x512.png
index 7285a3c..510bc08 100644
Binary files a/build/icons/512x512.png and b/build/icons/512x512.png differ
diff --git a/build/icons/64x64.png b/build/icons/64x64.png
index eaed9bf..a6fa4aa 100644
Binary files a/build/icons/64x64.png and b/build/icons/64x64.png differ
diff --git a/build/icons/icon.icns b/build/icons/icon.icns
index 9eebe3c..0706a63 100644
Binary files a/build/icons/icon.icns and b/build/icons/icon.icns differ
diff --git a/build/icons/icon.ico b/build/icons/icon.ico
index c8a3931..6bf74ee 100644
Binary files a/build/icons/icon.ico and b/build/icons/icon.ico differ
diff --git a/package-lock.json b/package-lock.json
index a19f86f..8846a60 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
- "name": "mockup-server",
- "version": "0.2.4",
+ "name": "interact-server",
+ "version": "0.2.7",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -2636,6 +2636,43 @@
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
"dev": true
},
+ "axios": {
+ "version": "0.19.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
+ "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
+ "requires": {
+ "follow-redirects": "1.5.10",
+ "is-buffer": "^2.0.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "follow-redirects": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
+ "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
+ "requires": {
+ "debug": "=3.1.0"
+ }
+ },
+ "is-buffer": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
+ "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A=="
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
"babel-code-frame": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
@@ -9455,6 +9492,11 @@
}
}
},
+ "moment": {
+ "version": "2.24.0",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
+ "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg=="
+ },
"move-concurrently": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
@@ -14494,6 +14536,11 @@
"resolved": "https://registry.npmjs.org/vue/-/vue-2.6.10.tgz",
"integrity": "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ=="
},
+ "vue-axios": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/vue-axios/-/vue-axios-2.1.5.tgz",
+ "integrity": "sha512-th5xVbInVoyIoe+qY+9GCflEVezxAvztD4xpFF39SRQYqpoKD2qkmX8yv08jJG9a2SgNOCjirjJGSwg/wTrbmA=="
+ },
"vue-class-component": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/vue-class-component/-/vue-class-component-7.1.0.tgz",
diff --git a/package.json b/package.json
index c739637..90a4c99 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "mockup-server",
- "version": "0.2.6",
+ "version": "1.0.0",
"private": true,
"scripts": {
"build": "vue-cli-service build",
@@ -15,14 +15,17 @@
"@types/cors": "^2.8.6",
"@types/express": "^4.17.2",
"@types/node": "^12.12.6",
+ "axios": "^0.19.0",
"body-parser": "^1.19.0",
"core-js": "^2.6.10",
"cors": "^2.8.5",
"eslint-plugin-babel": "^5.3.0",
"express": "^4.17.1",
+ "moment": "^2.24.0",
"style-loader": "^1.0.0",
"ts-loader": "^6.2.1",
"vue": "^2.6.10",
+ "vue-axios": "^2.1.5",
"vue-class-component": "^7.0.2",
"vue-property-decorator": "^8.3.0",
"vue-router": "^3.0.3",
@@ -71,4 +74,4 @@
"last 2 versions"
],
"main": "background.js"
-}
\ No newline at end of file
+}
diff --git a/public/favicon.ico b/public/favicon.ico
deleted file mode 100644
index df36fcf..0000000
Binary files a/public/favicon.ico and /dev/null differ
diff --git a/public/icon.png b/public/icon.png
index 8795111..48484ab 100644
Binary files a/public/icon.png and b/public/icon.png differ
diff --git a/public/index.html b/public/index.html
index 71d4fd8..79d79c2 100644
--- a/public/index.html
+++ b/public/index.html
@@ -1,6 +1,6 @@
-
+
@@ -8,8 +8,12 @@
mock server
-
-
+
+
+
+
diff --git a/src/App.vue b/src/App.vue
index dddf391..591ed07 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,24 +1,78 @@
- v-app(dark)
+ v-app(dark style="-webkit-app-region: drag")
v-app-bar(app)
- v-toolbar-title.headline.text-uppercase
- span Mockup Server
+ v-toolbar-title.headline
+ span Mockup-server
+ | {{'v'+packageVersion}}
v-spacer
- v-btn(text @click="openBrowser()")
- span.mr-2 Latest Release
- v-icon mdi-open-in-new
+ v-btn(v-if="diffResult === true" color="deep-orange" @click="openBrowser()")
+ span.mr-2 Release {{ newVersion }}
+ v-icon fa-external-link-square-alt
+ v-btn(v-else @click="openBugReport()")
+ span.mr-2 Issues
+ v-icon fa-external-link-square-alt
v-content
router-view
-
+
+
+
diff --git a/src/assets/icons/mac/mockup-icon.icns b/src/assets/icons/mac/mockup-icon.icns
deleted file mode 100644
index 4d60949..0000000
Binary files a/src/assets/icons/mac/mockup-icon.icns and /dev/null differ
diff --git a/src/assets/icons/win/mockup-icon.ico b/src/assets/icons/win/mockup-icon.ico
deleted file mode 100644
index e63dca9..0000000
Binary files a/src/assets/icons/win/mockup-icon.ico and /dev/null differ
diff --git a/src/assets/logo.png b/src/assets/logo.png
deleted file mode 100644
index f3d2503..0000000
Binary files a/src/assets/logo.png and /dev/null differ
diff --git a/src/assets/logo.svg b/src/assets/logo.svg
deleted file mode 100644
index 145b6d1..0000000
--- a/src/assets/logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/src/background.ts b/src/background.ts
index 3ceed32..8577da3 100644
--- a/src/background.ts
+++ b/src/background.ts
@@ -15,15 +15,19 @@ protocol.registerSchemesAsPrivileged([
]);
function createWindow(): void {
- let appWidth = 570;
+ let appWidth = 870;
if (process.platform === 'darwin') {
- appWidth = 540;
+ appWidth = 870;
}
// Create the browser window.
win = new BrowserWindow({
resizable: true,
width: appWidth,
- height: 600,
+ titleBarStyle: 'hidden',
+ maximizable:false,
+ transparent: isDevelopment? false: true,
+ frame: isDevelopment? true: false,
+ height: 710,
webPreferences: {
nodeIntegration: true,
},
diff --git a/src/components/ApiList.vue b/src/components/ApiList.vue
index 70287d4..75195bd 100644
--- a/src/components/ApiList.vue
+++ b/src/components/ApiList.vue
@@ -13,9 +13,9 @@
+
+
diff --git a/src/const/mockConst.ts b/src/const/mockConst.ts
index ed44e47..98236c7 100644
--- a/src/const/mockConst.ts
+++ b/src/const/mockConst.ts
@@ -1,3 +1,4 @@
+export const VERSION = '1.0.0';
export const STANDARD_PORT = '9000';
export const INDEX_JSON = '/index.json';
export const ERROR_JSON = '/error.json';
@@ -12,3 +13,9 @@ export const COLOR_PALLET = {
export const DEFAULT = 'default';
export const CURSOR_POINTER = 'pointer';
+export const REQUEST_PARAM_JSON = '/requestLog.json'
+
+export const GET = 'GET';
+export const PUT = 'PUT';
+export const DELETE = 'DELETE';
+export const POST = 'POST';
\ No newline at end of file
diff --git a/src/main.ts b/src/main.ts
index 6738a09..5a0c49a 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -3,6 +3,10 @@ import App from './App.vue';
import router from './router';
import store from './store';
import vuetify from './plugins/vuetify';
+import axios from 'axios';
+import VueAxios from 'vue-axios'
+
+Vue.use(VueAxios, axios)
Vue.config.productionTip = false;
diff --git a/src/store.ts b/src/store.ts
index 02427e2..5472766 100644
--- a/src/store.ts
+++ b/src/store.ts
@@ -1,20 +1,43 @@
import Vue from 'vue';
import Vuex from 'vuex';
+import { stat } from 'fs';
Vue.use(Vuex);
export default new Vuex.Store({
state: {
apiInfoList: [],
+ apiRequestLog: [],
+ logHistroy:[],
+ rootPath: '',
},
getters: {
apiInfoList: state => {
return state.apiInfoList;
},
+ apiRequestLog: state => {
+ return state.apiRequestLog;
+ },
+ logHistory: state =>{
+ return state.logHistroy;
+ },
+ rootPath: state =>{
+ return state.rootPath;
+ }
},
mutations: {
apiInfoList(state, payload): void {
state.apiInfoList = payload;
},
+ rootPath(state,payload):void {
+ state.rootPath = payload;
+ },
+ apiRequest(state,payload):void {
+ state.apiRequestLog = payload;
+ },
+ logHistroy(state,payload):void {
+ state.logHistroy = payload;
+ }
+
},
});
diff --git a/src/utils/filetreeUtils.ts b/src/utils/filetreeUtils.ts
index 2c427d5..54b9654 100644
--- a/src/utils/filetreeUtils.ts
+++ b/src/utils/filetreeUtils.ts
@@ -53,7 +53,6 @@ export default class FiletreeUtils {
const settingInfo = this.readJson(settingPath);
const indexJson = this.readJson(indexPath)
const errorJson = this.readJson(errorPath);
-
const apiInfo = new ApiInfo();
apiInfo.api = api;
apiInfo.index = indexJson;
diff --git a/src/utils/server/jsonLogic.ts b/src/utils/server/jsonLogic.ts
index a01a593..503ada9 100644
--- a/src/utils/server/jsonLogic.ts
+++ b/src/utils/server/jsonLogic.ts
@@ -11,7 +11,7 @@ export default class JsonLogic {
}, false);
if (!hasKey) {
- if (Object.keys(req.body).length !== 0) {
+ if (req.body?.id) {
restful.index.push(req.body);
}
}
@@ -35,6 +35,8 @@ export default class JsonLogic {
public putData(data: any, req: any): object {
const result = data.map((value: any) => {
+ console.log('value :', value);
+ console.log('req :', req.params);
const hasData = value['id'] === req.params.id ? true : false;
return hasData ? this.objectMixin(value, req.body) : value;
});
diff --git a/src/utils/server/logLogic.ts b/src/utils/server/logLogic.ts
new file mode 100644
index 0000000..6deb40d
--- /dev/null
+++ b/src/utils/server/logLogic.ts
@@ -0,0 +1,53 @@
+import store from '../../store';
+import { ApiInfo } from '@/const/mockType';
+import { REQUEST_PARAM_JSON } from '@/const/mockConst';
+import fs from 'fs';
+import { Moment } from 'moment'
+let moment = require('moment');
+export const initLogObject = (self:any) =>{
+ const data = store.state.apiInfoList;
+ const path = store.state.rootPath + REQUEST_PARAM_JSON;
+ const initLog = data.reduce((before:any, current:ApiInfo)=>{
+ before[current.api] = {
+ api: current?.api,
+ description: current?.description,
+ requestParams: '',
+ update:''
+ }
+ return before;
+ },{});
+
+ if (fs.existsSync(path)) {
+ const logObject = JSON.parse(fs.readFileSync(path,'utf8'));
+ store.state.apiRequestLog = logObject;
+ } else {
+ console.log('no files');
+ store.state.apiRequestLog = initLog;
+ const jsonData = JSON.stringify(initLog,null, 2);
+ fs.writeFileSync(path, jsonData);
+ }
+}
+
+export const saveLogInfo = (api:any, params:any) => {
+ // if(Object.keys(params).length === 0) return;
+ moment.locale();
+ let now = moment().format('LLL');
+ // @ts-ignore
+ store.state.apiRequestLog[api].requestParams = params
+ // @ts-ignore
+ store.state.apiRequestLog[api].update = now
+ //@ts-ignore
+ const jsonData = JSON.stringify(store.state.apiRequestLog,null, 2);
+ fs.writeFileSync(store.state.rootPath + '/requestLog.json', jsonData, 'utf8');
+}
+
+export const addLogHistroy = (api:string, http:any, params:any) => {
+ // if(Object.keys(params).length === 0) return;
+ const historyInfo = {
+ restful: http,
+ api,
+ params:JSON.stringify(params),
+ }
+ //@ts-ignore
+ store.state.logHistroy.push(historyInfo);
+}
diff --git a/src/utils/server/mockupServer.ts b/src/utils/server/mockupServer.ts
index fc22548..18d53e7 100644
--- a/src/utils/server/mockupServer.ts
+++ b/src/utils/server/mockupServer.ts
@@ -1,11 +1,13 @@
import express from 'express';
import { ApiInfo } from '@/const/mockType';
+import { GET,PUT,DELETE,POST, COLOR_PALLET } from '@/const/mockConst';
import bodyParser from 'body-parser';
import JsonLogic from './jsonLogic';
import cors from 'cors';
+import { initLogObject, saveLogInfo, addLogHistroy } from './logLogic';
const app = express();
app.use(cors());
-app.use(bodyParser.urlencoded({ extended: false }));
+app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
export default class MockupServer {
@@ -25,6 +27,7 @@ export default class MockupServer {
this.port = serverPort;
this.self = vueComponent;
this.restfullList = this.self.$store.state.apiInfoList;
+ initLogObject(this.self);
}
public start(): boolean {
@@ -84,19 +87,22 @@ export default class MockupServer {
? this.jsonLogic.postData(req, restful)
: restful.error;
this.self.$store.state.apiInfoList[cnt].index = result;
- this.setHeader(res, restful);
+ // res = this.setHeader(res, restful);
+ saveLogInfo(restful.api,req.body);
+ addLogHistroy(restful.api,POST,req.body);
res.send(result);
});
-
+
app.post(
restful.api + '/:' + this.dynamicRoute(restful.dynamicRoute),
(req: any, res: any) => {
const result = this.jsonLogic.getJson(restful);
const data = req.params.hasOwnProperty(this.dynamicRoute(restful.dynamicRoute))
- ? this.jsonLogic.selectData(result, req.params)
- : result;
-
- this.setHeader(res, restful);
+ ? this.jsonLogic.selectData(result, req.params)
+ : result;
+ // res = this.setHeader(res, restful);
+ saveLogInfo(restful.api, req.body);
+ addLogHistroy(restful.api,POST,req.body);
res.send(data);
},
);
@@ -111,23 +117,28 @@ export default class MockupServer {
? this.jsonLogic.deleteData(result, req.params)
: result;
this.restfullList[cnt].index = data;
- this.setHeader(res, restful);
- res.send(data);
+ addLogHistroy(restful.api,DELETE,req.body);
+ // res = this.setHeader(res, restful);
+ res.sendStatus(200)
},
);
}
private putApi(restful: ApiInfo, cnt: number): void {
+
app.put(
restful.api + '/:' + this.dynamicRoute(restful.dynamicRoute),
(req: any, res: any) => {
+
const result = this.jsonLogic.getJson(restful);
const data = req.params.hasOwnProperty(this.dynamicRoute(restful.dynamicRoute))
? this.jsonLogic.putData(result, req)
: result;
this.restfullList[cnt].index = data;
- this.setHeader(res, restful);
- res.send(data);
+ // res = this.setHeader(res, restful);
+ addLogHistroy(restful.api,PUT,req.body);
+ saveLogInfo(restful.api, req.body);
+ res.sendStatus(200);
},
);
}
@@ -137,9 +148,10 @@ export default class MockupServer {
const result = this.jsonLogic.getJson(
this.self.$store.state.apiInfoList[cnt],
);
-
- this.setHeader(res, restful);
+ // res = this.setHeader(res, restful);
+ saveLogInfo(restful.api, req.body);
res.send(result);
+ addLogHistroy(restful.api,GET,req.body);
});
app.get(
@@ -150,23 +162,25 @@ export default class MockupServer {
? this.jsonLogic.selectData(result, req.params)
: result;
- this.setHeader(res, restful);
+ // res = this.setHeader(res, restful);
+ saveLogInfo(restful.api, req.body);
+ addLogHistroy(restful.api,GET,req.body);
res.send(data);
},
);
}
- private setHeader(res: any, restful: any) {
- res.set(restful.header)
- if (restful?.cookies) {
- restful?.cookies.forEach((cookie: any, idx: number) => {
- const key = Object.keys(cookie)[0];
- const name = cookie[key];
- res.cookie(key, name, cookie.options);
- });
- }
- return;
- }
+ // private setHeader(res: any, restful: any) {
+ // res.set(restful.header)
+ // if (restful?.cookies) {
+ // restful?.cookies.forEach((cookie: any, idx: number) => {
+ // const key = Object.keys(cookie)[0];
+ // const name = cookie[key];
+ // res.cookie(key, name, cookie.options);
+ // });
+ // }
+ // return res;
+ // }
private dynamicRoute(dynamicRoute:string) {
return dynamicRoute? dynamicRoute: this.DYNAMIC_API_ID;
diff --git a/src/views/Home.vue b/src/views/Home.vue
index d29922e..a0fdf95 100644
--- a/src/views/Home.vue
+++ b/src/views/Home.vue
@@ -1,32 +1,52 @@
- v-container
+ v-container.screen-container
+ .server-container
v-row.row-height(no-gutters)
- v-col(cols="8" sm="8")
- v-text-field(v-model="rootPath" :solo="true" :flat="true" readonly)
+ v-col(cols="6" sm="6")
+ v-text-field.text-container(v-model="rootPath" :solo="true" :flat="true" readonly)
v-col(cols="4" sm="4")
- v-btn(color="#A5D6A7" :disabled="serverStatus" @click="initPath()") Select Root
+ v-btn.setting-btn-width(color="light-green" :disabled="serverStatus" @click="initPath()")
+ v-icon fa-folder-open
+ .button-name Select Root
+ v-col(cols="2" sm="2")
+ v-btn.setting-btns(color="warning" @click="refresh()")
+ v-icon fa-sync-alt
v-row.row-height(no-gutters)
- v-col(cols="4" sm="4")
+ v-col(cols="3" sm="3")
.loacalhost-label http://localhost:
- v-col(cols="4" sm="4")
+ v-col(cols="3" sm="3")
.loacalhost
- v-text-field(v-model="portNum" :solo="true" :readonly="isServerOn" :flat="true" style="hegiht:48px")
- v-col(cols="4" sm="4")
- v-btn(v-if="isServerOn === false" color="primary" :disabled="hasApiList" @click="startServer()") start Server
- v-btn(v-else color="deep-orange" :disabled="hasApiList" @click="closeServer()") close Server
+ v-text-field.text-container(v-model="portNum" :solo="true" :readonly="isServerOn" :flat="true" style="hegiht:48px")
+ v-col(cols="6" sm="6")
+ v-btn.setting-btns(v-if="isServerOn === false" color="#546E7A" :disabled="hasApiList" @click="startServer()")
+ v-icon fa-circle-notch
+ .button-server Start Server
+ v-btn.setting-btns(v-else color="#546E7A" :disabled="hasApiList" @click="closeServer()")
+ v-icon fa-circle-notch fa-spin
+ .button-server Running Server
v-row(no-gutters)
- v-api-list(v-model="serverStatus" :port="portNum" :isServerOn="isServerOn" style="width:100%" )
+ v-col.api-list-outer(cols="12" sm="12")
+ template(v-if="rootPath")
+ v-api-list(v-model="serverStatus" :port="portNum" :isServerOn="isServerOn" style="width:100%" )
+ template(v-else)
+ .empty-container
+ v-icon.empty-icon fa-folder-open
+ .button-name Select Root Path
+ .logger-div
+ v-logger
@@ -85,11 +111,6 @@ export default class MockServer extends Vue {
padding: 20px;
background-color: #424242;
}
-button {
- margin-left: 5px;
- width: 165px;
- height: 48px !important;
-}
.loacalhost-label {
height: 48px;
@@ -122,10 +143,78 @@ button {
display: flex;
}
-.server-btn {
- margin-bottom: 10px;
- float: left;
- width: max-content;
+.setting-btns {
+ width: 100%;
+ height: 48px !important;
+ text-transform: none;
+ font-size: 18px;
+}
+
+.setting-btn-width {
+ width: calc(100% - 5px);
+ height: 48px !important;
+ text-transform: none;
+ font-size: 18px;
+}
+
+.server-container {
+ width: 610px;
+ height: 620px;
+}
+
+.text-container {
+ margin-right: 5px !important;
+ margin-top: 0px !important;
+}
+
+.screen-container {
display: flex;
+ height: 570px;
+}
+
+.api-list-outer {
+ width: 100%;
+ height: 500px;
+ overflow-y:auto;
+ overflow-x:hidden;
+ background: rgb(56, 56, 56);
+ border-radius: 5px;
+}
+
+.empty-container {
+ text-align: center;
+ color:dimgray;
+ top: calc(50% - 120px);
+ position: relative;
+}
+
+.empty-icon {
+ color: dimgray;
+ font-size: 100px;
+ top: calc(50% - 120px);
+ position: relative;
+}
+
+.button-name {
+ margin-left: 5px;
+}
+.button-server {
+ margin-left: 5px;
+ width: 150px;
+}
+
+::-webkit-scrollbar-thumb {
+ background-color: darkgrey;
+ outline: 1px solid slategrey;
+}
+
+::-webkit-scrollbar {
+ width: 10px;
+}
+
+::-webkit-scrollbar-thumb {
+ background-color: darkgrey;
+ outline: 1px solid slategrey;
+
}
diff --git a/vue.config.js b/vue.config.js
index c4def70..d502eef 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -1,9 +1,9 @@
module.exports = {
runtimeCompiler: true,
- lintOnSave: process.env.NODE_ENV !== 'production',
+ lintOnSave: process.env.NODE_ENV !== "production",
pluginOptions: {
electronBuilder: {
- outputDir: 'dist_electron',
+ outputDir: "dist_electron",
}
}
-}
\ No newline at end of file
+};
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index 3b49c43..7f93148 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -285,6 +285,14 @@
"@babel/helper-plugin-utils" "^7.0.0"
"@babel/plugin-syntax-optional-catch-binding" "^7.2.0"
+"@babel/plugin-proposal-optional-chaining@^7.7.5":
+ version "7.7.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.7.5.tgz#f0835f044cef85b31071a924010a2a390add11d4"
+ integrity sha512-sOwFqT8JSchtJeDD+CjmWCaiFoLxY4Ps7NjvwHC/U7l4e9i5pTRNt8nDMIFSOUL+ncFbYSwruHM8WknYItWdXw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-optional-chaining" "^7.7.4"
+
"@babel/plugin-proposal-unicode-property-regex@^7.2.0":
version "7.4.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78"
@@ -343,6 +351,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.0.0"
+"@babel/plugin-syntax-optional-chaining@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.7.4.tgz#c91fdde6de85d2eb8906daea7b21944c3610c901"
+ integrity sha512-2MqYD5WjZSbJdUagnJvIdSfkb/ucOC9/1fRJxm7GAxY6YQLWlUvkfxoNbUPcPLHJyetKUDQ4+yyuUyAoc0HriA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
"@babel/plugin-transform-arrow-functions@^7.2.0":
version "7.2.0"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550"
@@ -683,6 +698,30 @@
ajv "^6.1.0"
ajv-keywords "^3.1.0"
+"@fortawesome/fontawesome-common-types@^0.2.26":
+ version "0.2.26"
+ resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.26.tgz#6e0b13a752676036f8196f8a1500d53a27b4adc1"
+ integrity sha512-CcM/fIFwZlRdiWG/25xE/wHbtyUuCtqoCTrr6BsWw7hH072fR++n4L56KPydAr3ANgMJMjT8v83ZFIsDc7kE+A==
+
+"@fortawesome/fontawesome-svg-core@^1.2.26":
+ version "1.2.26"
+ resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.26.tgz#671569271d6b532cdea5e3deb8ff16f8b7ac251d"
+ integrity sha512-3Dfd/v2IztP1TxKOxZiB5+4kaOZK9mNy0KU1vVK7nFlPWz3gzxrCWB+AloQhQUoJ8HhGqbzjliK89Vl7PExGbw==
+ dependencies:
+ "@fortawesome/fontawesome-common-types" "^0.2.26"
+
+"@fortawesome/free-solid-svg-icons@^5.12.0":
+ version "5.12.0"
+ resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.12.0.tgz#8decac5844e60453cc0c7c51437d1461df053a35"
+ integrity sha512-CnpsWs6GhTs9ekNB3d8rcO5HYqRkXbYKf2YNiAlTWbj5eVlPqsd/XH1F9If8jkcR1aegryAbln/qYeKVZzpM0g==
+ dependencies:
+ "@fortawesome/fontawesome-common-types" "^0.2.26"
+
+"@fortawesome/vue-fontawesome@^0.1.9":
+ version "0.1.9"
+ resolved "https://registry.yarnpkg.com/@fortawesome/vue-fontawesome/-/vue-fontawesome-0.1.9.tgz#d3af6d4e50f337327de90447fe35fa1e117a2fbe"
+ integrity sha512-h/emhmZz+DfB2zOGLWawNwXq82UYhn9waTfUjLLmeaIqtnIyNt6kYlpQT/vzJjLZRDRvY2IEJAh1di5qKpKVpA==
+
"@hapi/address@2.x.x":
version "2.1.1"
resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.1.tgz#61395b5ed94c4cb19c2dc4c85969cff3d40d583f"
@@ -1037,6 +1076,13 @@
dependencies:
"@types/node" "*"
+"@types/cors@^2.8.6":
+ version "2.8.6"
+ resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.6.tgz#cfaab33c49c15b1ded32f235111ce9123009bd02"
+ integrity sha512-invOmosX0DqbpA+cE2yoHGUlF/blyf7nB0OGYBBiH27crcVm5NmFaZkLP4Ta1hGaesckCi5lVLlydNJCxkTOSg==
+ dependencies:
+ "@types/express" "*"
+
"@types/debug@^4.1.4":
version "4.1.5"
resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd"
@@ -1060,7 +1106,7 @@
"@types/node" "*"
"@types/range-parser" "*"
-"@types/express@^4.17.2":
+"@types/express@*", "@types/express@^4.17.2":
version "4.17.2"
resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.2.tgz#a0fb7a23d8855bac31bc01d5a58cadd9b2173e6c"
integrity sha512-5mHFNyavtLoJmnusB8OKJ5bshSzw+qkMIBAobLrIM48HJvunFva9mOa6aBwh64lBFyNwBbs0xiEFuj4eU/NjCA==
@@ -1992,6 +2038,14 @@ aws4@^1.8.0:
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
+axios@^0.19.0:
+ version "0.19.0"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz#8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8"
+ integrity sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==
+ dependencies:
+ follow-redirects "1.5.10"
+ is-buffer "^2.0.2"
+
babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
@@ -3103,6 +3157,14 @@ core-util-is@1.0.2, core-util-is@~1.0.0:
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+cors@^2.8.5:
+ version "2.8.5"
+ resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29"
+ integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==
+ dependencies:
+ object-assign "^4"
+ vary "^1"
+
cosmiconfig@^5.0.0:
version "5.2.1"
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
@@ -3448,6 +3510,13 @@ debug@2.6.9, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.
dependencies:
ms "2.0.0"
+debug@=3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
+ integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
+ dependencies:
+ ms "2.0.0"
+
debug@^3.0.0, debug@^3.2.5, debug@^3.2.6:
version "3.2.6"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
@@ -4108,6 +4177,13 @@ eslint-module-utils@^2.4.0:
debug "^2.6.8"
pkg-dir "^2.0.0"
+eslint-plugin-babel@^5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-5.3.0.tgz#2e7f251ccc249326da760c1a4c948a91c32d0023"
+ integrity sha512-HPuNzSPE75O+SnxHIafbW5QB45r2w78fxqwK3HmjqIUoPfPzVrq6rD+CINU3yzoDSzEhUkX07VUphbF73Lth/w==
+ dependencies:
+ eslint-rule-composer "^0.3.0"
+
eslint-plugin-import@^2.18.2:
version "2.18.2"
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6"
@@ -4132,6 +4208,11 @@ eslint-plugin-vue@^5.2.3:
dependencies:
vue-eslint-parser "^5.0.0"
+eslint-rule-composer@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9"
+ integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==
+
eslint-scope@^4.0.0, eslint-scope@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
@@ -4676,6 +4757,13 @@ flush-write-stream@^1.0.0:
inherits "^2.0.3"
readable-stream "^2.3.6"
+follow-redirects@1.5.10:
+ version "1.5.10"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a"
+ integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==
+ dependencies:
+ debug "=3.1.0"
+
follow-redirects@^1.0.0:
version "1.9.0"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.9.0.tgz#8d5bcdc65b7108fe1508649c79c12d732dcedb4f"
@@ -5691,6 +5779,11 @@ is-buffer@^1.1.5:
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+is-buffer@^2.0.2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623"
+ integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==
+
is-callable@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
@@ -6829,6 +6922,11 @@ mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdi
dependencies:
minimist "0.0.8"
+moment@^2.24.0:
+ version "2.24.0"
+ resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b"
+ integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==
+
move-concurrently@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
@@ -7202,7 +7300,7 @@ oauth-sign@~0.9.0:
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
-object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
+object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
@@ -9184,6 +9282,11 @@ serialize-javascript@^1.4.0, serialize-javascript@^1.7.0:
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz#cfc200aef77b600c47da9bb8149c943e798c2fdb"
integrity sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==
+serialize-javascript@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61"
+ integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==
+
serve-index@^1.9.1:
version "1.9.1"
resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
@@ -10572,7 +10675,7 @@ validate-npm-package-license@^3.0.1:
spdx-correct "^3.0.0"
spdx-expression-parse "^3.0.0"
-vary@~1.1.2:
+vary@^1, vary@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
@@ -10601,6 +10704,11 @@ void-elements@^2.0.1:
resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=
+vue-axios@^2.1.5:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/vue-axios/-/vue-axios-2.1.5.tgz#1af4bf1218ed71309c76afb38d0f683e312c24a7"
+ integrity sha512-th5xVbInVoyIoe+qY+9GCflEVezxAvztD4xpFF39SRQYqpoKD2qkmX8yv08jJG9a2SgNOCjirjJGSwg/wTrbmA==
+
vue-class-component@^7.0.2, vue-class-component@^7.1.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/vue-class-component/-/vue-class-component-7.1.0.tgz#b33efcb10e17236d684f70b1e96f1946ec793e87"