From 05d03451dc2e42c315e512d36dd4ebcb5f2a8753 Mon Sep 17 00:00:00 2001 From: Zhigang Wang Date: Mon, 3 Jun 2024 23:02:22 -0700 Subject: [PATCH] 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'