diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..1ff3786 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM node:16.7 +ENV NODE_ENV=production + +WORKDIR /app + +COPY ["package.json", "package-lock.json*", "./"] + +RUN npm install --production + +COPY . . + +CMD [ "/app/entrypoint.sh" ] \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index e049a1b..bd75eb2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "core-js": "^3.6.5", "vue": "^2.6.11", "vue-google-charts": "^0.3.3", + "vue-router": "^3.5.3", "vue2-datepicker": "^3.10.3" }, "devDependencies": { @@ -13877,6 +13878,11 @@ "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", "dev": true }, + "node_modules/vue-router": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.3.tgz", + "integrity": "sha512-FUlILrW3DGitS2h+Xaw8aRNvGTwtuaxrRkNSHWTizOfLUie7wuYwezeZ50iflRn8YPV5kxmU2LQuu3nM/b3Zsg==" + }, "node_modules/vue-style-loader": { "version": "4.1.3", "resolved": "https://registry.npm.taobao.org/vue-style-loader/download/vue-style-loader-4.1.3.tgz", @@ -26228,6 +26234,11 @@ } } }, + "vue-router": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.3.tgz", + "integrity": "sha512-FUlILrW3DGitS2h+Xaw8aRNvGTwtuaxrRkNSHWTizOfLUie7wuYwezeZ50iflRn8YPV5kxmU2LQuu3nM/b3Zsg==" + }, "vue-style-loader": { "version": "4.1.3", "resolved": "https://registry.npm.taobao.org/vue-style-loader/download/vue-style-loader-4.1.3.tgz", diff --git a/package.json b/package.json index 83c73c4..60a96a4 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "axios": "^0.24.0", "core-js": "^3.6.5", "vue": "^2.6.11", + "vue-router": "^3.5.3", "vue-google-charts": "^0.3.3", "vue2-datepicker": "^3.10.3" }, diff --git a/src/App.vue b/src/App.vue index 5205ba1..fc36038 100644 --- a/src/App.vue +++ b/src/App.vue @@ -3,143 +3,39 @@ Vue logo

Happy Cars

-
- - - -
- - -
-
- - +
+
+
-
- - -
+ + +
@@ -159,16 +55,6 @@ label { padding-right: 0.5rem; } -.form { - margin-top: 3rem; -} - -.data-container { - display: flex; - flex-direction: column; - justify-content: center; -} - h1 { font-size: 3rem; } @@ -178,14 +64,26 @@ h2 { margin-top: 4rem; } -.table-title { - margin-top: 4rem; +.mx-changepanel.container { + align-self: center; + margin-top: 2rem; + display: flex; + flex-direction: column; + justify-content: center; } -.input { - margin: 0.5rem; - display: flex; - align-items: center; +.button.mx-input { + box-shadow: 0 0 16px lightgray; + background-color: rgb(68, 110, 142); + padding-right: 10px; + color: white; + border: none; +} + +.button.mx-input:hover { + box-shadow: 0 0 16px grey; + background-color: rgb(58, 95, 124); + cursor: pointer; } #app > img { diff --git a/src/components/TableChart.vue b/src/components/TableChart.vue index f7cf4b1..2bd492b 100644 --- a/src/components/TableChart.vue +++ b/src/components/TableChart.vue @@ -44,7 +44,7 @@ tr.google-visualization-table-tr-odd { th.google-visualization-table-tr, td.google-visualization-table-td { border: 1px solid gainsboro; - min-width: 200px; + min-width: 150px; } diff --git a/src/services/ApiClient.js b/src/services/ApiClient.js index 586f3ae..575a041 100644 --- a/src/services/ApiClient.js +++ b/src/services/ApiClient.js @@ -32,6 +32,14 @@ class ApiClient { } return []; } + + async getStatistics(carId) { + const result = await this.#axiosInstance.get(`api/${carId}/stats`); + if (result.data) { + return result.data; + } + return []; + } } export default ApiClient;