Parcourir la source

add service type and generate table

huaisianhuang il y a 3 ans
Parent
commit
8e21dd135c
8 fichiers modifiés avec 387 ajouts et 148 suppressions
  1. 87 0
      package-lock.json
  2. 2 1
      package.json
  3. 9 3
      src/App.vue
  4. BIN
      src/assets/ajax-loader.gif
  5. 33 0
      src/assets/scss/style.scss
  6. 8 0
      src/main.js
  7. 139 40
      src/views/Groupbrowse.vue
  8. 109 104
      src/views/Home.vue

+ 87 - 0
package-lock.json

@@ -1124,6 +1124,61 @@
       "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
       "dev": true
     },
+    "@nuxt/opencollective": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.3.2.tgz",
+      "integrity": "sha512-XG7rUdXG9fcafu9KTDIYjJSkRO38EwjlKYIb5TQ/0WDbiTUTtUtgncMscKOYzfsY86kGs05pAuMOR+3Fi0aN3A==",
+      "requires": {
+        "chalk": "^4.1.0",
+        "consola": "^2.15.0",
+        "node-fetch": "^2.6.1"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
+          "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
     "@soda/friendly-errors-webpack-plugin": {
       "version": "1.8.0",
       "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.0.tgz",
@@ -2550,6 +2605,18 @@
       "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.0.tgz",
       "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw=="
     },
+    "bootstrap-vue": {
+      "version": "2.21.2",
+      "resolved": "https://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-2.21.2.tgz",
+      "integrity": "sha512-0Exe+4MZysqhZNXIKf4TzkvXaupxh9EHsoCRez0o5Dc0J7rlafayOEwql63qXv74CgZO8E4U8ugRNJko1vMvNw==",
+      "requires": {
+        "@nuxt/opencollective": "^0.3.2",
+        "bootstrap": ">=4.5.3 <5.0.0",
+        "popper.js": "^1.16.1",
+        "portal-vue": "^2.1.7",
+        "vue-functional-data-merge": "^3.1.0"
+      }
+    },
     "brace-expansion": {
       "version": "1.1.11",
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -3367,6 +3434,11 @@
       "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
       "dev": true
     },
+    "consola": {
+      "version": "2.15.3",
+      "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz",
+      "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw=="
+    },
     "console-browserify": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
@@ -7011,6 +7083,11 @@
         "lower-case": "^1.1.1"
       }
     },
+    "node-fetch": {
+      "version": "2.6.1",
+      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
+      "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
+    },
     "node-forge": {
       "version": "0.10.0",
       "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
@@ -7624,6 +7701,11 @@
       "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
       "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ=="
     },
+    "portal-vue": {
+      "version": "2.1.7",
+      "resolved": "https://registry.npmjs.org/portal-vue/-/portal-vue-2.1.7.tgz",
+      "integrity": "sha512-+yCno2oB3xA7irTt0EU5Ezw22L2J51uKAacE/6hMPMoO/mx3h4rXFkkBkT4GFsMDv/vEe8TNKC3ujJJ0PTwb6g=="
+    },
     "portfinder": {
       "version": "1.0.28",
       "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
@@ -10303,6 +10385,11 @@
       "resolved": "https://registry.npmjs.org/vue-axios/-/vue-axios-3.2.4.tgz",
       "integrity": "sha512-8Dgws6dwt+1LoKEU4HDzIPfaRgWHl0xLDLW6kxrAk/z3GAJ2thkajcXC4qZgmqj0cZRx/Z/dzooKi5HWtUQwxA=="
     },
+    "vue-functional-data-merge": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/vue-functional-data-merge/-/vue-functional-data-merge-3.1.0.tgz",
+      "integrity": "sha512-leT4kdJVQyeZNY1kmnS1xiUlQ9z1B/kdBFCILIjYYQDqZgLqCLa0UhjSSeRX6c3mUe6U5qYeM8LrEqkHJ1B4LA=="
+    },
     "vue-hot-reload-api": {
       "version": "2.3.4",
       "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz",

+ 2 - 1
package.json

@@ -9,10 +9,11 @@
   "dependencies": {
     "axios": "^0.21.1",
     "bootstrap": "^4.6.0",
+    "bootstrap-vue": "^2.21.2",
     "core-js": "^3.6.5",
     "jquery": "^3.6.0",
     "popper.js": "^1.16.1",
-    "vue": "^2.6.11",
+    "vue": "^2.6.12",
     "vue-axios": "^3.2.4",
     "vue-loading-overlay": "^3.4.2",
     "vue-router": "^3.2.0",

+ 9 - 3
src/App.vue

@@ -1,7 +1,12 @@
 <template>
   <div id="app">
      <nav class="navbar navbar-dark sticky-top flex-md-nowrap p-2">
-        <a class="navbar-brand col-sm-3 col-md-2 mr-0" href="#">行銷日曆</a>
+        <a class="navbar-brand col-sm-3 col-md-2 mr-0" href="#">ChoozMo Marketing Cloud</a>
+        <ul class="navbar-nav me-auto mb-2 mb-lg-0">
+          <li class="nav-item">
+            <span>Hello Username</span>
+          </li>
+        </ul>
       </nav>
       <div class="container-fluid">
         <div class="row">
@@ -20,14 +25,15 @@
                         客群瀏覽
                       </a>
                     </li>
-                    <li class="nav-item">
+                    <!-- <li class="nav-item">
                       <a class="nav-link" href="#">
                         <i class="fas fa-quote-left"></i>
                         關鍵字建議
                       </a>
-                    </li>
+                    </li> -->
                   </ul>
                 </div>
+                <div class="footer__txt">ChoozMo 行銷雲</div>
           </nav>
               <main role="main" class="col-md-9 ml-sm-auto col-lg-10 pt-3 px-4">
                 <router-view />

BIN
src/assets/ajax-loader.gif


+ 33 - 0
src/assets/scss/style.scss

@@ -70,6 +70,7 @@ body {
 .nav-link {
     color: rgb(99, 97, 97);
     padding: 1rem .75rem;
+    cursor: pointer;
 }
 .nav-link:hover {
     color: rgb(27, 27, 27);
@@ -248,3 +249,35 @@ td[colspan = '2'] {
     letter-spacing: 1px;
     font-size: 1.3rem;
   }
+  .words__block {
+    height: 3.5rem;
+    overflow: hidden;
+  }
+  .autoHeight {
+    height: auto;
+  }
+
+.group__title {
+  text-align: left;
+}
+.footer__txt {
+  position: fixed;
+  bottom: 1rem;
+  left: 3rem;
+  opacity: 0.7;
+}
+.form-group-center {
+  width: 90%;
+  position: absolute;
+  top: 30%;
+
+}
+.group__tag {
+  background-color: #e29595;
+  width: 10rem;
+  color: #f5f5f5;
+  height: 3rem;
+  font-size: 1.5rem;
+  line-height: 2.5rem;
+  border-radius: 10px 10px 0 0 ;
+}

+ 8 - 0
src/main.js

@@ -4,6 +4,7 @@ import VueAxios from 'vue-axios';
 import 'bootstrap';
 import Loading from 'vue-loading-overlay';
 import 'vue-loading-overlay/dist/vue-loading.css';
+import { BootstrapVue, IconsPlugin } from 'bootstrap-vue';
 import App from './App.vue';
 import router from './router';
 import store from './store';
@@ -12,6 +13,13 @@ Vue.config.productionTip = false;
 Vue.use(VueAxios, axios);
 Vue.component('Loading', Loading);
 
+import 'bootstrap/dist/css/bootstrap.css'
+import 'bootstrap-vue/dist/bootstrap-vue.css'
+
+Vue.use(BootstrapVue);
+
+Vue.use(IconsPlugin);
+
 Vue.config.productionTip = false;
 
 new Vue({

+ 139 - 40
src/views/Groupbrowse.vue

@@ -1,64 +1,163 @@
 <template>
   <div>
     <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pb-2 mb-3">
-                  <h1 class="h2">客群瀏覽</h1>
-                  <div class="d-flex">
-                    <span>季數</span>
-                    <select class="custom-select" v-model='selected'>
-                        <option value="0">Q1</option>
-                        <option value="1">Q2</option>
-                        <option value="2">Q3</option>
-                        <option value="3">Q4</option>
-                    </select>
+        <h1 class="h2">客群瀏覽</h1>
+    </div>
+    <h3 class="text-muted mb-3 group__title">已訂閱客群</h3>
+    <div class="row group__row">
+        <div class="col-3 mb-2" v-for="(group, idx) in user_groups" :key="idx">
+            <div class='card p-3 card__subsribed'>
+                <button class="btn__del"><i class="fas fa-trash-alt"></i></button>
+                <img class="card-img-top d-block mx-auto" src="../assets/man.svg" alt="">
+                <h4 class='text-center'>{{ group.groups.group_chinese_name }}</h4>
+            </div>
+        </div>
+    </div>
+    <h3 class="text-muted mb-2">未訂閱客群</h3>
+         <div class="row group__row">
+            <div class="col-3" v-for="(group, idx) in unSubgroup" :key="idx">
+                <div class='card p-3 card__subsribed'>
+                    <button class="btn__sub" @click.prevent="subscribe(group.id)">訂閱</button>
+                    <img class="card-img-top d-block mx-auto" src="../assets/man.svg" alt="">
+                    <h4 class='text-center'>{{ group.group_chinese_name }}</h4>
                 </div>
+        </div>
+    </div>
+    <!-- <h3 class="text-muted mb-3 group__title">客群</h3>
+    <div v-for="(g, idx) in allGroup" :key="idx">
+        <h3 class='group__tag'>{{ g.group_type }}</h3>
+        <div class="row group__row" >
+            <div class="col-3 mb-2" v-for="(group, idx) in g.data" :key="`d-${idx}`">
+                <div class='card p-3 card__subsribed'>
+                    <button class="btn__sub" @click.prevent="subscribe(group.id)">訂閱</button>
+                    <img class="card-img-top d-block mx-auto" src="../assets/man.svg" alt="">
+                    <h4 class='card-subtitle text-center'>{{ group.group_chinese_name }}</h4>
                 </div>
-                <h3 class="text-muted mb-2">已訂閱客群</h3>
-                <div class="row group__row">
-                    <div class="col-3" v-for="(group, idx) in user_groups" :key="idx">
-                        <div class='card p-3 card__subsribed'>
-                            <button class="btn__del"><i class="fas fa-trash-alt"></i></button>
-                            <img class="card-img-top d-block mx-auto" src="../assets/man.svg" alt="">
-                            <h4 class='card-subtitle text-center'>客群 - {{ group.group_chinese_name }}</h4>
-                        </div>
-                    </div>
-                </div>
-                <h3 class="text-muted mb-2">未訂閱客群</h3>
-                <div class="row group__row">
-                    <div class="col-3" v-for="(group, idx) in user_groups" :key="idx">
-                        <div class='card p-3 card__subsribed'>
-                            <button class="btn__sub">訂閱</button>
-                            <img class="card-img-top d-block mx-auto" src="../assets/man.svg" alt="">
-                            <h4 class='card-subtitle text-center'>客群 - {{ group.group_chinese_name }}</h4>
-                        </div>
-                    </div>
-                </div>
+            </div>
+        </div>
+    </div>
+    <div>
+        <b-tabs content-class="mt-3">
+            <b-tab v-for="(g, idx) in allGroup" :key="idx" :title="g.group_type">
+                <b-card-group deck>
+                    <b-card img-alt="Image" img-top v-for="(group, idx) in g.data" :key="`d-${idx}`" class="col-3">
+                        <img class="card-img-top d-block mx-auto" src="../assets/man.svg" alt="">
+                        <b-card-text>
+                            {{ group.group_chinese_name }}
+                        </b-card-text>
+                    </b-card>
+                </b-card-group>
+            </b-tab>
+        </b-tabs>
+    </div> -->
   </div>
 </template>
 
 <script>
 // @ is an alias to /src
 import $ from 'jquery';
-
+import 'bootstrap';
 export default {
   name: 'Groupbrowse',
   data() {
       return {
+        groups: [],
         user_groups: [],
-        selected: 0,
-        json: [],
+        types: [],
+        allGroup: [],
+        unSubgroup: []
       }
   },
   methods: {
-      getData() {
-            this.$http.get('http://www.googo.org:8050/api/user_groups/').then(res => {
-                this.user_groups = res.data;
-                console.log(this.user_groups);
-                
+    getGroup() {
+        const vm = this;
+        this.$http.get('http://www.googo.org:8050/api/groups').then(res => {
+            this.groups = res.data;
+            console.log(this.groups);
+            let arr = [];
+            this.groups.forEach((item, idx) => {
+                arr.push(item.group_type);
             });
-  },
+            arr = arr.filter((el, idx, arr) => {
+                return arr.indexOf(el) === idx;
+            })
+            this.types = arr;
+            console.log(this.types);
+            let temparr = [];
+            this.types.forEach((item, i) => {
+                let tempgrp = vm.groups.filter((el, idx) => {
+                    return el.group_type === item;
+                });
+                temparr.push({group_type: item, data: [...tempgrp] });
+            });
+            this.allGroup = temparr;
+            console.log(temparr);
+        });
+    },
+    getUsergroup() {
+        const vm = this;
+        this.$http.get('http://www.googo.org:8050/api/user_groups_data/1').then(res => {
+            this.user_groups = res.data;
+            let arr = [];
+        /* vm.user_groups.forEach((item, idx) => {
+            let temparr = Object.assign({}, item.groups);
+            arr.push(temparr);
+        });
+        console.log(arr);
+        let tempgrps = [...vm.groups];
+        console.log(vm.groups);
+        tempgrps.forEach((item, idx) => {
+            arr.forEach((d, i) => {
+                if(d.id == item.id){
+                    tempgrps.splice(idx, 1);
+                }
+            })
+        }); */
+        })
+    },
+    getUnsub() {
+        const vm = this;
+        this.$http.get('http://www.googo.org:8050/api/groups').then(res => {
+            let tempgrps = [...res.data];
+            // console.log(tempgrps);
+            // console.log(vm.user_groups);
+            let arr = [];
+            vm.user_groups.forEach((item, idx) => {
+            let temparr = Object.assign({}, item.groups);
+            arr.push(temparr);
+            });
+            console.log(arr);
+            arr.forEach((item, idx) => {
+                tempgrps.forEach((d, i) => {
+                    if(d.id === item.id){
+                        tempgrps.splice(i, 1);
+                    }
+                })
+            });
+            this.unSubgroup = tempgrps;
+            console.log(this.unSubgroup);
+        });
+    },
+    subscribe(id) {
+        const vm = this;
+          this.$http.post('http://www.googo.org:8050/api/users_groups/1',
+           { group_ids: [id] }).then(res => {
+            console.log(res.data);
+            vm.getGroup();
+            vm.getUsergroup();
+            vm.getUnsub();
+          })
+    },
+    showtab(tab) {
+        bootstrap.Tab.getInstance(document.querySelector(`#${tab}-tab`)).show();
+    }
+ },
+ computed: {
  },
  created() {
-     this.getData();
- }
+    this.getGroup();
+    this.getUsergroup();
+    this.getUnsub();
+    }
 }
 </script>

+ 109 - 104
src/views/Home.vue

@@ -1,6 +1,23 @@
 <template>
   <div>
-     <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center
+     <div class="form-group form-group-center" v-if="!table_show">
+      <label for="exampleFormControlSelect1" class="mb-2">請選擇您的產業別</label>
+      <select class="form-control mb-3" id="exampleFormControlSelect1" v-model="serviceSelected">
+        <option disabled value>產業別</option>
+        <option v-for="li in servicelist" :key="li.id" :value="li.name">{{ li.name }}</option>
+      </select>
+      <button @click.prevent="submit_type" class="btn__kw">送出</button>
+      </div>
+      <div>
+        <p>產業別: <span>{{ serviceSelected }}</span></p>
+      </div>
+    <Loading :active.sync="isLoading" :opacity="0.8">
+      <template slot="default">
+        <img src="../assets/ajax-loader.gif">
+      </template>
+    </Loading>
+    <template v-if="serviceSelected && table_show">
+       <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center
       pb-2 mb-3">
       <h1 class="h2">近一季行銷建議</h1>
         <div class="d-flex">
@@ -24,13 +41,13 @@
           </tr>
         </thead>
           <tbody>
-            <tr v-for="(item ,k) in user_groups" :key="`hhh-${k}`">
-              <th>{{ item.group_chinese_name }}</th>
-              <td v-for="(t,idx) in item.trends[i]" :key="idx">
+            <tr v-for="item in customData" :key="`gr-${item.id}`">
+              <th>{{ item.groups.group_chinese_name }}</th>
+              <td v-for="(t,idx) in item.groups.trends[i]" :key="idx">
                 <button type="button" class="btn__kw" data-toggle="modal"
                 data-target="#exampleModalCenter"
-                @click.prevent="showModal(item.suggests)">關鍵字</button>
-                <div class="highTrend dark-1 p-2 mt-2" v-if="check(t.times, item)">Popular</div>
+                @click.prevent="showModal(item.groups.data_suggests)">關鍵字</button>
+                <div class="highTrend dark-1 p-2 mt-2" v-if="check(t.popularity, item.groups)">Popular</div>
               </td>
             </tr>
             <tr v-for="(item ,it) in json" :key="it">
@@ -42,6 +59,8 @@
           </tbody>
       </table>
     </div>
+    </template>
+    
     <div class="modal fade" id="exampleModalCenter" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenter" aria-hidden="true">
             <div class="modal-dialog modal-dialog-centered" role="document">
               <div class="modal-content">
@@ -52,9 +71,12 @@
                   </button>
                 </div>
                 <div class="modal-body">
-                  <div v-for="(word, i) in tempkeywords" :key="i" class="mb-3">
-                    <span class="d-flex mb-2"><i class="fas fa-clock d-inline-block mr-1"></i>日期:{{ word.start }} - {{ word.end}}</span>
-                    <template v-for="(each, idx) in word.words">
+                  <div v-for="(word, i) in tempkeywords" :key="i" class="mb-3 words__block">
+                    <div class="d-flex justify-content-between align-items-center">
+                      <span class="d-flex mb-2"><i class="fas fa-clock d-inline-block mr-1"></i>日期:{{ word.start }} - {{ word.end}}</span>
+                      <span class="openWords" @click="openWords"><i class="fas fa-chevron-down"></i></span>
+                    </div>
+                    <template v-for="(each, idx) in word.suggests">
                       <span class="badge badge-warning" :key="idx">{{ each }}</span>
                     </template>
                   </div>
@@ -83,25 +105,13 @@ export default {
       isLoading: false,
       ex: [],
       month: [['Jan', 'Feb', 'Mar'], ['Apr', 'May', 'Jun'], ['Jul', 'Aug', 'Sep'], ['Oct', 'Nov', 'Dec']],
-      trends: [
-            {
-                group: '婚禮', 
-                data:[
-                    [{month: 'Jan', times: 782}, {month: "Feb", times: 752} , {month: 'Mar', times: 909}],
-                    [{month: 'Apr', times: 880}, {month: 'May', times: 929}, {month: "Jun", times: 883} ],
-                    [{month: 'Jul', times: 855}, {month: 'Aug', times: 776}, {month: 'Sep', times: 1020}],
-                    [{month: "Oct", times: 1206} , {month: 'Nov', times: 1042}, {month: 'Dec', times: 1051}]
-                ]
-            },
-        ],
-      keywords: [
-            { group: "婚禮", words: ['婚禮穿搭', '婚禮穿搭男', '婚禮穿搭dcard', '婚禮穿搭禁忌', ' 婚禮穿搭褲裝', '婚禮穿搭牛仔褲', '婚禮穿搭女', '婚禮穿搭ptt', '婚禮穿搭夏天', '婚禮穿搭 冬天'] },
-            { group: "蔬食", words: ['健康蔬食', '蔬食食譜','素食蔬食']},
-            { group: "室內設計", words: ['室內設計風格', '室內設計圖','室內設計網站']}
-      ],
       tempkeywords: [],
       selected: 0,
       json: [],
+      customData: [],
+      servicelist: [],
+      serviceSelected: '',
+      table_show: false
     };
   },
   methods: {
@@ -118,13 +128,13 @@ export default {
         },
         showModal(keywords) {
             $('#exampleModalCenter').modal('show');
-            this.tempkeywords = keywords;
+            this.tempkeywords = keywords.reverse();
         },
         check(num, grpdata) {
             let total = 0;
             grpdata.trends.forEach(item => {
                 item.forEach(single => {
-                    total += single.times;
+                    total += single.popularity;
                 })
             });
             let threshold = total / 12;
@@ -135,6 +145,7 @@ export default {
             }
         },
         getcalData() {
+          this.isLoading = true;
           this.$http.get('http://www.googo.org:8050/api/get_2020_marketing_cal').then(res => {
                 console.log(res.data);
                 this.json = res.data;
@@ -153,65 +164,51 @@ export default {
                     });
                     item['orgData'].splice(0, 1);
                 })
-                console.log(this.json[2]);
+                this.isLoading = false;
             });
         },
-        getData() {
-            const vm = this;
-            this.isLoading = true;
-            this.$http.get('http://www.googo.org:8050/api/group_datas/').then(res => {
-              this.group_datas = res.data;
-              vm.$http.get('http://www.googo.org:8050/api/user_groups/').then(res => {
-                //console.log(res.data);
-                vm.user_groups = res.data;
-                vm.user_groups.forEach(item => {
-                    vm.group_datas.forEach(d => {
-                        if(d.group_id === item.id) {
-                            d.group_chinese_name = item.group_chinese_name;
-                        }
-                    })
-                });
-                vm.user_groups.forEach(item => {
-                    let arr = [];
-                    vm.group_datas.forEach(d => {
-                        if(d.group_id == item.id) {
-                            if(d['data_type'] == 'suggests') {
-                                arr.push({start: d.start, end: d.end, words: d.data.data});
-                                item.suggests = arr;
-                                console.log(item.suggests);
-                            };
-                            if(d['data_type'] == 'trends') {
-                                item.trends = d.data.data;
-                            }
-                        }
-                    })
-                    arr.reverse();
-                });
-                vm.user_groups.forEach(item => {
-                    if(item.trends) {
-                        const temp = this.GetObjVal(item.trends);
-                        let newD = [];
-                        temp.forEach((k, i) => {
-                            if(i%3===0){
-                                newD.push([]);
-                            }
-                        const page = parseInt(i/3);
-                        newD[page].push({times:k});
-                        item.trends = newD;
-                    });
+        getCustomData() {
+          this.$http.get('http://www.googo.org:8050/api/user_groups_data/1').then(res => {
+                this.customData = res.data;
+                /* this.customData.forEach((el, i) => {
+                  let dateArr = [];
+                  el.groups.data_suggests.forEach((item, idx) => {
+                    dateArr.push(item.start);
+                  });
+                 //console.log(dateArr);
+                  let dateset = new Set(dateArr);
+                  console.log(Array.from(dateset));
+                  dateset = Array.from(dateset);
+                  console.log(dateset);
+
+                }); */
+                
+                /* this.customData.forEach((item, idx) => {
+                  let arr = [];
+                  item.groups.data_suggests.forEach((d, i) => {
+                    if(d['data_type'] == 'suggests'){
+                      arr.push({start: d.start, end: d.end, words: d.data.data});
                     } else {
-                        item.trends = [
-                            [{times: 0}, {times: 0}, {times: 0}],
-                            [{times: 0}, {times: 0}, {times: 0}],
-                            [{times: 0}, {times: 0}, {times: 0}],
-                            [{times: 0}, {times: 0}, {times: 0}]
-                        ]
+                      item.groups.trends = d.data.data;
+                    }
+                  });
+                  arr.reverse();
+                  item.groups.suggests = arr;
+                }); */
+                this.customData.forEach((item, idx) => {
+                  const temp = this.GetObjVal(item.groups.data_trends);
+                  let newD = [];
+                  item.groups.data_trends.forEach((k, i) => {
+                    if(i%3===0){
+                      newD.push([]);
                     }
+                    const page = parseInt(i/3);
+                    newD[page].push(k);
+                    item.groups.trends = newD;
                 });
-                console.log(this.user_groups);
-                this.isLoading = false;
-            })
+                console.log(this.customData);
             });
+          });
         },
         mergeData() {
             this.user_groups.forEach(item => {
@@ -225,32 +222,37 @@ export default {
                 })
             });
         },
-        getPack() {
-            for(let i = 1;i < 5;i++) {
-                axios.get(`http://www.googo.org:8050/api/group_datas/group/${i}/`).then(res => {
-                console.log(res.data);
-                const add = [...res.data];
-                this.ex.push(add);
-                //this.trends = this.json.filter(item => item['data_type'] === 'trends');
-                //this.keywords = this.json.filter(item => item['data_type'] === 'suggests');
-                console.log(this.ex);
-            });
-            }
-        },
-        filter() {
-            this.user_groups .forEach(item => {
-                this.group_datas.forEach(d => {
-                    if(d.group_id === item.id) {
-                        d.group_chinese_name = item.group_chinese_name;
-                    }
-                })
-            });
-        },
         GetObjVal(val) {
             return Object.values(val);
         },
         GetObjKey(val) {
             return Object.keys(val)[0];
+        },
+        openWords(e) {
+          const { currentTarget } = e;
+          $(currentTarget).parent().parent().toggleClass('autoHeight');
+          if($(currentTarget).children().hasClass('fa-chevron-down')){
+            $(currentTarget).children().removeClass();
+            $(currentTarget).children().addClass('fas fa-chevron-up');
+          } else{
+            $(currentTarget).children().removeClass();
+            $(currentTarget).children().addClass('fas fa-chevron-down');
+          }
+        },
+        getServTypeLi() {
+          this.$http.get('http://www.googo.org:8050/api/service_type/').then(res => {
+            console.log(res.data);
+            this.servicelist = res.data;
+          });
+        },
+        submit_type() {
+          // console.log(this.serviceSelected);
+          const vm = this;
+          this.$http.post('http://www.googo.org:8050/api/users_groups/1',
+           { service_type: this.serviceSelected }).then(res => {
+            console.log(res.data);
+            vm.table_show = true;
+          })
         }
   },
   created() {
@@ -265,8 +267,11 @@ export default {
     } else {
       this.selected = 3;
     };
-    this.getData();
-    this.getcalData();
-  },
+   // this.getcalData();
+   // $('#enterModalCenter').modal('show');
+    this.getServTypeLi();
+    this.getCustomData();
+  }
 };
+
 </script>