tum 2 lat temu
rodzic
commit
c1b7ac2dd4

+ 74 - 0
package-lock.json

@@ -26,6 +26,7 @@
26 26
         "ionicons": "^7.0.0",
27 27
         "swiper": "^9.2.0",
28 28
         "vue": "^3.2.45",
29
+        "vue-read-more": "^1.1.1",
29 30
         "vue-router": "^4.1.6"
30 31
       },
31 32
       "devDependencies": {
@@ -37,7 +38,10 @@
37 38
         "eslint": "^8.35.0",
38 39
         "eslint-plugin-vue": "^9.9.0",
39 40
         "jsdom": "^21.1.0",
41
+        "markdown-truncate": "^1.1.0",
42
+        "marked": "^4.3.0",
40 43
         "node-sass": "^8.0.0",
44
+        "readmore-js": "^2.2.1",
41 45
         "sass": "^1.61.0",
42 46
         "sass-loader": "^13.2.2",
43 47
         "typescript": "^4.9.3",
@@ -4982,6 +4986,12 @@
4982 4986
         "node": ">= 10.13.0"
4983 4987
       }
4984 4988
     },
4989
+    "node_modules/jquery": {
4990
+      "version": "3.6.4",
4991
+      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.4.tgz",
4992
+      "integrity": "sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ==",
4993
+      "dev": true
4994
+    },
4985 4995
     "node_modules/js-base64": {
4986 4996
       "version": "2.6.4",
4987 4997
       "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
@@ -5483,6 +5493,24 @@
5483 5493
         "url": "https://github.com/sponsors/sindresorhus"
5484 5494
       }
5485 5495
     },
5496
+    "node_modules/markdown-truncate": {
5497
+      "version": "1.1.0",
5498
+      "resolved": "https://registry.npmjs.org/markdown-truncate/-/markdown-truncate-1.1.0.tgz",
5499
+      "integrity": "sha512-totIV8266I//yl7sxCW6xv08T28Yva6a1czpnHlE6scwFOr9yoIbLvzeIp64M3MMyOwo3WX4MVQ+lMQHXAP/ow==",
5500
+      "dev": true
5501
+    },
5502
+    "node_modules/marked": {
5503
+      "version": "4.3.0",
5504
+      "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz",
5505
+      "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==",
5506
+      "dev": true,
5507
+      "bin": {
5508
+        "marked": "bin/marked.js"
5509
+      },
5510
+      "engines": {
5511
+        "node": ">= 12"
5512
+      }
5513
+    },
5486 5514
     "node_modules/meow": {
5487 5515
       "version": "9.0.0",
5488 5516
       "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz",
@@ -7011,6 +7039,15 @@
7011 7039
         "node": ">=8.10.0"
7012 7040
       }
7013 7041
     },
7042
+    "node_modules/readmore-js": {
7043
+      "version": "2.2.1",
7044
+      "resolved": "https://registry.npmjs.org/readmore-js/-/readmore-js-2.2.1.tgz",
7045
+      "integrity": "sha512-hbPP0nQpYYkAywCEZ8ozHivvhWyHic37KJ2IXrHES4qzjp0+nmw8R33MeyMAtXBZfXX4Es8cpd5JBVf9qj47+Q==",
7046
+      "dev": true,
7047
+      "dependencies": {
7048
+        "jquery": ">2.1.4"
7049
+      }
7050
+    },
7014 7051
     "node_modules/redent": {
7015 7052
       "version": "3.0.0",
7016 7053
       "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
@@ -8537,6 +8574,11 @@
8537 8574
         "node": ">=4.0"
8538 8575
       }
8539 8576
     },
8577
+    "node_modules/vue-read-more": {
8578
+      "version": "1.1.1",
8579
+      "resolved": "https://registry.npmjs.org/vue-read-more/-/vue-read-more-1.1.1.tgz",
8580
+      "integrity": "sha512-FFv0y5Pg1763fsLo6MA5RSpibThNEoJG6teSRH+rRIQe8O0LAeU4juEn6MRHZN0qOwtXOlbOjO8oit7YSd1NcA=="
8581
+    },
8540 8582
     "node_modules/vue-router": {
8541 8583
       "version": "4.1.6",
8542 8584
       "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.6.tgz",
@@ -12595,6 +12637,12 @@
12595 12637
         "supports-color": "^8.0.0"
12596 12638
       }
12597 12639
     },
12640
+    "jquery": {
12641
+      "version": "3.6.4",
12642
+      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.4.tgz",
12643
+      "integrity": "sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ==",
12644
+      "dev": true
12645
+    },
12598 12646
     "js-base64": {
12599 12647
       "version": "2.6.4",
12600 12648
       "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
@@ -12985,6 +13033,18 @@
12985 13033
       "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
12986 13034
       "dev": true
12987 13035
     },
13036
+    "markdown-truncate": {
13037
+      "version": "1.1.0",
13038
+      "resolved": "https://registry.npmjs.org/markdown-truncate/-/markdown-truncate-1.1.0.tgz",
13039
+      "integrity": "sha512-totIV8266I//yl7sxCW6xv08T28Yva6a1czpnHlE6scwFOr9yoIbLvzeIp64M3MMyOwo3WX4MVQ+lMQHXAP/ow==",
13040
+      "dev": true
13041
+    },
13042
+    "marked": {
13043
+      "version": "4.3.0",
13044
+      "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz",
13045
+      "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==",
13046
+      "dev": true
13047
+    },
12988 13048
     "meow": {
12989 13049
       "version": "9.0.0",
12990 13050
       "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz",
@@ -14160,6 +14220,15 @@
14160 14220
         "picomatch": "^2.2.1"
14161 14221
       }
14162 14222
     },
14223
+    "readmore-js": {
14224
+      "version": "2.2.1",
14225
+      "resolved": "https://registry.npmjs.org/readmore-js/-/readmore-js-2.2.1.tgz",
14226
+      "integrity": "sha512-hbPP0nQpYYkAywCEZ8ozHivvhWyHic37KJ2IXrHES4qzjp0+nmw8R33MeyMAtXBZfXX4Es8cpd5JBVf9qj47+Q==",
14227
+      "dev": true,
14228
+      "requires": {
14229
+        "jquery": ">2.1.4"
14230
+      }
14231
+    },
14163 14232
     "redent": {
14164 14233
       "version": "3.0.0",
14165 14234
       "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
@@ -15238,6 +15307,11 @@
15238 15307
         }
15239 15308
       }
15240 15309
     },
15310
+    "vue-read-more": {
15311
+      "version": "1.1.1",
15312
+      "resolved": "https://registry.npmjs.org/vue-read-more/-/vue-read-more-1.1.1.tgz",
15313
+      "integrity": "sha512-FFv0y5Pg1763fsLo6MA5RSpibThNEoJG6teSRH+rRIQe8O0LAeU4juEn6MRHZN0qOwtXOlbOjO8oit7YSd1NcA=="
15314
+    },
15241 15315
     "vue-router": {
15242 15316
       "version": "4.1.6",
15243 15317
       "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.6.tgz",

+ 4 - 0
package.json

@@ -30,6 +30,7 @@
30 30
     "ionicons": "^7.0.0",
31 31
     "swiper": "^9.2.0",
32 32
     "vue": "^3.2.45",
33
+    "vue-read-more": "^1.1.1",
33 34
     "vue-router": "^4.1.6"
34 35
   },
35 36
   "devDependencies": {
@@ -41,7 +42,10 @@
41 42
     "eslint": "^8.35.0",
42 43
     "eslint-plugin-vue": "^9.9.0",
43 44
     "jsdom": "^21.1.0",
45
+    "markdown-truncate": "^1.1.0",
46
+    "marked": "^4.3.0",
44 47
     "node-sass": "^8.0.0",
48
+    "readmore-js": "^2.2.1",
45 49
     "sass": "^1.61.0",
46 50
     "sass-loader": "^13.2.2",
47 51
     "typescript": "^4.9.3",

+ 1 - 1
src/api_config.ts

@@ -1,3 +1,3 @@
1
-export const API_URL = "http://192.168.1.35:8000/api/"
1
+export const API_URL = "http://192.168.100.180:8000/api/"
2 2
 //export const API_URL = "https://kacee.simplico.net/api/"
3 3
 

+ 26 - 5
src/components/ProductDetail.vue

@@ -33,11 +33,14 @@
33 33
             </ion-col>
34 34
         </ion-row>
35 35
       </ion-grid>
36
-      <ion-text>
37
-        <h1>{{ product.name }}</h1>
38
-        <vue-showdown :markdown="product.description" />
39
- 
40
-      </ion-text>
36
+      <h1>{{ product.name }} {{ product.id }}</h1>
37
+      <!--
38
+        {{ readmore }} -->
39
+      <ion-text v-html="short_desc" v-if="!readmore" />
40
+      
41
+      <ion-text v-html="description" v-if="readmore" />
42
+      <ion-button expand="full" @click="readmore = true" v-if="!readmore" color="medium">Read More</ion-button>
43
+      <ion-button expand="full" @click="readmore = false" v-if="readmore" color="medium">Read Less</ion-button>
41 44
     </template>
42 45
   </ion-content>
43 46
 </template>
@@ -64,10 +67,15 @@ import {
64 67
 } from '@ionic/vue';
65 68
 
66 69
 import { VueShowdown } from 'vue-showdown';
70
+import { ReadMore } from 'vue-read-more';
67 71
 import { ref, onMounted } from 'vue'
68 72
 
69 73
 import axios from 'axios';
70 74
 import { API_URL } from '@/api_config';
75
+import { marked }  from 'marked';
76
+import truncateMarkdown from 'markdown-truncate'
77
+
78
+
71 79
 
72 80
 import { Swiper, SwiperSlide } from 'swiper/vue';
73 81
 import 'swiper/css';
@@ -76,6 +84,10 @@ import '@ionic/vue/css/ionic-swiper.css';
76 84
 const props = defineProps(['pid'])
77 85
 let pid = ref(0)
78 86
 let product = ref(null)
87
+let description = ref(null)
88
+let short_desc = ref(null)
89
+let readmore = ref(false)
90
+
79 91
 //console.log(pid)
80 92
 
81 93
 let name = ref("xxx")
@@ -92,6 +104,15 @@ onMounted(async () => {
92 104
   const res = await axios.get(API_URL + `fn_products/${props.pid}/?format=json`)
93 105
   product.value = res.data
94 106
   pid.value  = props.pid
107
+  console.log("description")
108
+  console.log(description)
109
+  //readmore(description)
110
+  console.log(res.data)
111
+  description.value = marked(res.data.description)
112
+  short_desc.value = truncateMarkdown(res.data.description, { limit: 300, ellipsis: true })
113
+  let sd  = truncateMarkdown(res.data.description, { limit: 300, ellipsis: true })
114
+  short_desc.value = marked(sd)
115
+  console.log(description.value)
95 116
 })
96 117
 
97 118
 </script>

+ 1 - 0
src/views/ProductListPage.vue

@@ -49,6 +49,7 @@ onMounted( async() => {
49 49
   console.log(cat)
50 50
   const res = await axios.get(API_URL+`fn_products/?format=json&cat=${cat}`)
51 51
   prods.value = res.data.results
52
+  console.log("prods")
52 53
   console.log(prods)
53 54
 })
54 55