From 9c37af9477adb314cce58d4634ffd120ac2691bc Mon Sep 17 00:00:00 2001 From: Zhigang Wang Date: Tue, 28 May 2024 22:15:36 -0700 Subject: [PATCH 1/8] added 'update' and 'cancel' function for self-intra --- .../src/pages/user/account/UserProfile.vue | 637 ++++++------------ frontend/src/pages/user/requests/Propose.vue | 2 +- 2 files changed, 189 insertions(+), 450 deletions(-) diff --git a/frontend/src/pages/user/account/UserProfile.vue b/frontend/src/pages/user/account/UserProfile.vue index 2e9c544..9f9f0ea 100644 --- a/frontend/src/pages/user/account/UserProfile.vue +++ b/frontend/src/pages/user/account/UserProfile.vue @@ -7,13 +7,8 @@ !
- - - -
-
+
- +
-
+
- +
- - + +

@@ -135,67 +77,29 @@

-
+
- +
-
- - +
+ +
-
- -
@@ -203,68 +107,29 @@

{{ emailOperation.message }}

-
+
- - + +
-
- - +
+ +
-
- -
@@ -279,17 +144,10 @@
- - - -
-
+
- - + +
- - + +
-
+
- user portrait - + user portrait +
-
+
- + +
+ +
-
+
+ + +
+
-
+
- - + +
+ * Stripe account onboarding is not completed.
- +
- + {{ userProfile.account.provider.expected_salary.currency }} @@ -493,182 +264,128 @@
- - + + - Have you linked your strip account? + Have you linked your strip account?
- You are a service provider now. Please review your self-intro to reflect your skills to - deliver projects. + You are a service provider now. + Please review your self-intro to reflect your skills to + deliver projects.

-

-
+
- + {{ userProfile.achievemnt.issuer.spending.total }} {{ userProfile.achievemnt.issuer.spending.currency }}
- + {{ userProfile.achievemnt.issuer.spending.twelve_month }} - {{ userProfile.achievemnt.issuer.spending.currency }} + {{ userProfile.achievemnt.issuer.spending.currency }}
- + {{ userProfile.achievemnt.issuer.spending.three_month }} - {{ userProfile.achievemnt.issuer.spending.currency }} + {{ userProfile.achievemnt.issuer.spending.currency }}
{{ userProfile.achievemnt.issuer.deposit.available }} - {{ userProfile.achievemnt.issuer.deposit.currency }} + {{ userProfile.achievemnt.issuer.deposit.currency }}
- + {{ userProfile.achievemnt.issuer.request.issued }}
- + - {{ userProfile.achievemnt.issuer.request.accomplished }} + {{ userProfile.achievemnt.issuer.request.accomplished }}
- + - {{ userProfile.achievemnt.issuer.request.active }} + {{ userProfile.achievemnt.issuer.request.active }}
- {{ userProfile.achievemnt.issuer.request.ongoing }} + {{ userProfile.achievemnt.issuer.request.ongoing }}
- + {{ userProfile.achievemnt.provider.earnings.total }} {{ userProfile.achievemnt.provider.earnings.currency }}
- + {{ userProfile.achievemnt.provider.earnings.twelve_month }} {{ userProfile.achievemnt.provider.earnings.currency }}
- + {{ userProfile.achievemnt.provider.deliveries.delivered_projects }}
- + {{ userProfile.achievemnt.provider.deliveries.delivering_time_per_project_in_day @@ -687,7 +404,7 @@ diff --git a/frontend/src/utils/backend/content.js b/frontend/src/utils/backend/content.js new file mode 100644 index 0000000..5aa2db5 --- /dev/null +++ b/frontend/src/utils/backend/content.js @@ -0,0 +1,15 @@ +import { backendAxios } from './axios' +class ContentApi { + static retrieve_blogs() { + const request = backendAxios.post( + '/api/content/retrieve-blogs', + { + }, + { + + } + ) + return request + } +} +export { ContentApi } diff --git a/frontend/src/utils/backend/index.js b/frontend/src/utils/backend/index.js index 3f8b5a3..14e8f41 100644 --- a/frontend/src/utils/backend/index.js +++ b/frontend/src/utils/backend/index.js @@ -6,3 +6,4 @@ export { ProviderHubApi } from './providerHub' export { MessageHubApi } from './messageHub' export { DocumentApi } from './document' export { HistoryApi } from './history' +export { ContentApi } from './content' diff --git a/frontend/src/utils/index.js b/frontend/src/utils/index.js index 32b6f1b..bcabe6f 100644 --- a/frontend/src/utils/index.js +++ b/frontend/src/utils/index.js @@ -6,7 +6,8 @@ export { ProviderHubApi, MessageHubApi, DocumentApi, - HistoryApi + HistoryApi, + ContentApi } from './backend/index' export { userUtils, userProfileUtils, requestIssueUtils, requestHubUtils } from './store/index' From 05d03451dc2e42c315e512d36dd4ebcb5f2a8753 Mon Sep 17 00:00:00 2001 From: Zhigang Wang Date: Mon, 3 Jun 2024 23:02:22 -0700 Subject: [PATCH 5/8] trying to rendering pdf(not succeeded yet) --- frontend/package.json | 1 + frontend/src/mixins/navigator.js | 3 ++ frontend/src/pages/public/Blogs.vue | 34 +++++++++++++-- frontend/src/pages/public/ContentViewer.vue | 48 +++++++++++++++++++++ frontend/src/plugins/pdfjs/pdfjs.js | 7 +-- frontend/src/plugins/router/router.js | 10 +++++ frontend/src/utils/backend/content.js | 12 ++++++ frontend/src/utils/html/index.js | 1 + frontend/src/utils/html/mediaData.js | 14 ++++++ frontend/src/utils/index.js | 2 +- 10 files changed, 125 insertions(+), 7 deletions(-) create mode 100644 frontend/src/pages/public/ContentViewer.vue create mode 100644 frontend/src/utils/html/mediaData.js diff --git a/frontend/package.json b/frontend/package.json index 394f656..77ef82c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -26,6 +26,7 @@ "@popperjs/core": "^2.11.8", "axios": "^1.4.0", "bootstrap": "^5.3.1", + "buffer": "^6.0.3", "pdfjs-dist": "^4.2.67", "pinia": "^2.1.6", "quill": "^1.3.7", diff --git a/frontend/src/mixins/navigator.js b/frontend/src/mixins/navigator.js index ff86cb4..4692825 100644 --- a/frontend/src/mixins/navigator.js +++ b/frontend/src/mixins/navigator.js @@ -14,6 +14,9 @@ export default { mnx_navToContact() { this.$router.push('/contact') }, + mnx_navToContentViewer(content_id) { + this.$router.push('/content-viewer/' + content_id) + }, //common mnx_navToFrontDoor() { diff --git a/frontend/src/pages/public/Blogs.vue b/frontend/src/pages/public/Blogs.vue index 2bc6986..1c0d495 100644 --- a/frontend/src/pages/public/Blogs.vue +++ b/frontend/src/pages/public/Blogs.vue @@ -1,8 +1,14 @@ + \ No newline at end of file diff --git a/frontend/src/pages/public/ContentViewer.vue b/frontend/src/pages/public/ContentViewer.vue new file mode 100644 index 0000000..e7411a8 --- /dev/null +++ b/frontend/src/pages/public/ContentViewer.vue @@ -0,0 +1,48 @@ + + + \ No newline at end of file diff --git a/frontend/src/plugins/pdfjs/pdfjs.js b/frontend/src/plugins/pdfjs/pdfjs.js index 024a011..062e5af 100644 --- a/frontend/src/plugins/pdfjs/pdfjs.js +++ b/frontend/src/plugins/pdfjs/pdfjs.js @@ -1,6 +1,7 @@ import * as pdfjsLib from 'pdfjs-dist' - -//pdfjsLib.GlobalWorkerOptions.workerPort = new Worker() -//new URL('pdfjs-dist/build/pdf.worker.js', import.meta.url) +//need to set worker before the pdfjs can be used. +// pdfjsLib.GlobalWorkerOptions.workerPort = new Worker( +// new URL('pdfjs-dist/build/pdf.worker.mjs', import.meta.url) +// ) export { pdfjsLib } diff --git a/frontend/src/plugins/router/router.js b/frontend/src/plugins/router/router.js index a4daef5..3257d4e 100644 --- a/frontend/src/plugins/router/router.js +++ b/frontend/src/plugins/router/router.js @@ -1,10 +1,12 @@ import { createRouter, createWebHistory } from 'vue-router' import { store, userRoleEnum } from '../store/index' + //public import About from '../../pages/public/About.vue' import Blogs from '../../pages/public/Blogs.vue' import Career from '../../pages/public/Career.vue' import Contact from '../../pages/public/Contact.vue' +import ContentViewer from '../../pages/public/ContentViewer.vue' //guest import FrontDoor from '../../pages/guest/FrontDoor.vue' @@ -107,6 +109,14 @@ const router = createRouter({ components: { default: Contact, footer: FooterGuest, header: HeaderGuest } }, + { + name: 'content-viewer', + path: '/content-viewer/:content_id', + meta: { requiredRoles: [userRoleEnum.NONE] }, + components: { default: ContentViewer, footer: FooterGuest, header: HeaderGuest }, + props: true + }, + // guest { name: 'front-door', diff --git a/frontend/src/utils/backend/content.js b/frontend/src/utils/backend/content.js index 5aa2db5..68a48f4 100644 --- a/frontend/src/utils/backend/content.js +++ b/frontend/src/utils/backend/content.js @@ -11,5 +11,17 @@ class ContentApi { ) return request } + static retrieve_blog_content(document_id) { + const request = backendAxios.post( + '/api/content/retrieve-blog-content', + { + document_id: document_id + }, + { + + } + ) + return request + } } export { ContentApi } diff --git a/frontend/src/utils/html/index.js b/frontend/src/utils/html/index.js index 9914c12..c64d1e5 100644 --- a/frontend/src/utils/html/index.js +++ b/frontend/src/utils/html/index.js @@ -1,3 +1,4 @@ export { textAreaAujuster } from './textArea' export { tooltip } from './tooltip' export { elementHandler } from './element' +export { mediaDataHandler } from './mediaData' \ No newline at end of file diff --git a/frontend/src/utils/html/mediaData.js b/frontend/src/utils/html/mediaData.js new file mode 100644 index 0000000..33f40d1 --- /dev/null +++ b/frontend/src/utils/html/mediaData.js @@ -0,0 +1,14 @@ +class MediaDataHandler { + retrieveText(mediaData) { + let prefix = "data:text/plain;base64," + let pos = mediaData.search(prefix); + if (pos < 0) return ""; + return atob(mediaData.substring(pos + prefix.length)) + } +} + + + +const mediaDataHandler = new MediaDataHandler() + +export { mediaDataHandler } diff --git a/frontend/src/utils/index.js b/frontend/src/utils/index.js index bcabe6f..353bee8 100644 --- a/frontend/src/utils/index.js +++ b/frontend/src/utils/index.js @@ -16,4 +16,4 @@ export { ValueChecker, DateUtils, OIDUtils } from './common/index' export { userProfileValidator } from './validator/index' -export { textAreaAujuster, tooltip, elementHandler } from './html/index' +export { textAreaAujuster, tooltip, elementHandler, mediaDataHandler } from './html/index' From ff4af093a839bed25424174dbd49f49d6919b764 Mon Sep 17 00:00:00 2001 From: Zhigang Wang Date: Tue, 4 Jun 2024 13:43:20 -0700 Subject: [PATCH 6/8] catch up on enabling blog APIs in client --- frontend/src/pages/public/Blogs.vue | 16 ++-- frontend/src/pages/public/ContentViewer.vue | 79 ++++++++++---------- frontend/src/pages/user/requests/Propose.vue | 1 - frontend/src/utils/backend/content.js | 13 +--- frontend/src/utils/html/index.js | 2 +- frontend/src/utils/html/mediaData.js | 14 ++-- 6 files changed, 59 insertions(+), 66 deletions(-) diff --git a/frontend/src/pages/public/Blogs.vue b/frontend/src/pages/public/Blogs.vue index 1c0d495..f108ade 100644 --- a/frontend/src/pages/public/Blogs.vue +++ b/frontend/src/pages/public/Blogs.vue @@ -1,9 +1,14 @@ @@ -30,7 +35,7 @@ export default { this.mnx_navToContentViewer(blog.content_id) }, retrieve_summary(blog) { - return mediaDataHandler.retrieveText(blog.summary_text); + return mediaDataHandler.retrieveText(blog.summary_text) } }, data() { @@ -38,7 +43,6 @@ export default { blogs: null } } - } \ No newline at end of file + diff --git a/frontend/src/pages/public/ContentViewer.vue b/frontend/src/pages/public/ContentViewer.vue index e7411a8..86fc233 100644 --- a/frontend/src/pages/public/ContentViewer.vue +++ b/frontend/src/pages/public/ContentViewer.vue @@ -1,48 +1,49 @@ - \ No newline at end of file diff --git a/frontend/src/pages/user/requests/Propose.vue b/frontend/src/pages/user/requests/Propose.vue index 8cab592..584de23 100644 --- a/frontend/src/pages/user/requests/Propose.vue +++ b/frontend/src/pages/user/requests/Propose.vue @@ -291,7 +291,6 @@ export default { if (this.uploadFile) { DocumentApi.upload(this.uploadFile) .then((response) => { - console.log(response.data.document_id) return RequestHubApi.makeProposalForRequest( this.requestId, this.proposal.content, diff --git a/frontend/src/utils/backend/content.js b/frontend/src/utils/backend/content.js index 68a48f4..32ec5c6 100644 --- a/frontend/src/utils/backend/content.js +++ b/frontend/src/utils/backend/content.js @@ -1,14 +1,7 @@ import { backendAxios } from './axios' class ContentApi { static retrieve_blogs() { - const request = backendAxios.post( - '/api/content/retrieve-blogs', - { - }, - { - - } - ) + const request = backendAxios.post('/api/content/retrieve-blogs', {}, {}) return request } static retrieve_blog_content(document_id) { @@ -17,9 +10,7 @@ class ContentApi { { document_id: document_id }, - { - - } + {} ) return request } diff --git a/frontend/src/utils/html/index.js b/frontend/src/utils/html/index.js index c64d1e5..8340b54 100644 --- a/frontend/src/utils/html/index.js +++ b/frontend/src/utils/html/index.js @@ -1,4 +1,4 @@ export { textAreaAujuster } from './textArea' export { tooltip } from './tooltip' export { elementHandler } from './element' -export { mediaDataHandler } from './mediaData' \ No newline at end of file +export { mediaDataHandler } from './mediaData' diff --git a/frontend/src/utils/html/mediaData.js b/frontend/src/utils/html/mediaData.js index 33f40d1..305671a 100644 --- a/frontend/src/utils/html/mediaData.js +++ b/frontend/src/utils/html/mediaData.js @@ -1,14 +1,12 @@ class MediaDataHandler { - retrieveText(mediaData) { - let prefix = "data:text/plain;base64," - let pos = mediaData.search(prefix); - if (pos < 0) return ""; - return atob(mediaData.substring(pos + prefix.length)) - } + retrieveText(mediaData) { + let prefix = 'data:text/plain;base64,' + let pos = mediaData.search(prefix) + if (pos < 0) return '' + return atob(mediaData.substring(pos + prefix.length)) + } } - - const mediaDataHandler = new MediaDataHandler() export { mediaDataHandler } From 87e736d008d17ef933b543cf1a19ab59439458c1 Mon Sep 17 00:00:00 2001 From: Zhigang Wang Date: Tue, 4 Jun 2024 22:33:50 -0700 Subject: [PATCH 7/8] implement link content viewer --- frontend/src/mixins/navigator.js | 7 ++- frontend/src/pages/public/About.vue | 43 ++++++++++++++++++- frontend/src/pages/public/Blogs.vue | 6 +-- .../src/pages/public/LinkContentViewer.vue | 40 +++++++++++++++++ ...ContentViewer.vue => PdfContentViewer.vue} | 4 +- frontend/src/plugins/router/router.js | 16 +++++-- frontend/src/utils/backend/content.js | 5 +++ 7 files changed, 108 insertions(+), 13 deletions(-) create mode 100644 frontend/src/pages/public/LinkContentViewer.vue rename frontend/src/pages/public/{ContentViewer.vue => PdfContentViewer.vue} (92%) diff --git a/frontend/src/mixins/navigator.js b/frontend/src/mixins/navigator.js index 4692825..872c448 100644 --- a/frontend/src/mixins/navigator.js +++ b/frontend/src/mixins/navigator.js @@ -14,8 +14,11 @@ export default { mnx_navToContact() { this.$router.push('/contact') }, - mnx_navToContentViewer(content_id) { - this.$router.push('/content-viewer/' + content_id) + mnx_navToPdfContentViewer(content_id) { + this.$router.push('/pdf-content-viewer/' + content_id) + }, + mnx_navToLinkContentViewer(content_link_based64) { + this.$router.push('/link-content-viewer/' + content_link_based64) }, //common diff --git a/frontend/src/pages/public/About.vue b/frontend/src/pages/public/About.vue index 11bcf6a..9aca813 100644 --- a/frontend/src/pages/public/About.vue +++ b/frontend/src/pages/public/About.vue @@ -1,11 +1,50 @@ + + diff --git a/frontend/src/pages/public/Blogs.vue b/frontend/src/pages/public/Blogs.vue index f108ade..28bca13 100644 --- a/frontend/src/pages/public/Blogs.vue +++ b/frontend/src/pages/public/Blogs.vue @@ -13,7 +13,7 @@
+ + \ No newline at end of file diff --git a/frontend/src/pages/public/ContentViewer.vue b/frontend/src/pages/public/PdfContentViewer.vue similarity index 92% rename from frontend/src/pages/public/ContentViewer.vue rename to frontend/src/pages/public/PdfContentViewer.vue index 86fc233..e95a3c4 100644 --- a/frontend/src/pages/public/ContentViewer.vue +++ b/frontend/src/pages/public/PdfContentViewer.vue @@ -3,10 +3,10 @@