Accounts.vue 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <template>
  2. <main>
  3. <h1>Accounts</h1>
  4. <hr/>
  5. <br/>
  6. <router-link
  7. to="/accounts/add"
  8. class="button"
  9. >
  10. Add account
  11. </router-link>
  12. <br/>
  13. <br/>
  14. <data-table ref="datatable"
  15. :fields="fields"
  16. :sort-order="sortOrder"
  17. :data="localData"
  18. >
  19. <div slot="actions-slot" slot-scope="props">
  20. <router-link
  21. :to="`/accounts/edit/${props.data.accountId}`"
  22. class="button"
  23. >
  24. Edit account
  25. </router-link>
  26. </div>
  27. </data-table>
  28. </main>
  29. </template>
  30. <script>
  31. import io from "../../io.js";
  32. import DataTable from '../components/DataTable.vue';
  33. export default {
  34. components: { DataTable },
  35. data: () => {
  36. return {
  37. accounts: [],
  38. fields: [
  39. {
  40. name: "name",
  41. displayName: "Name"
  42. },
  43. {
  44. name: "domain",
  45. displayName: "Domain(s)"
  46. },
  47. {
  48. name: "email",
  49. displayName: "Email(s)"
  50. },
  51. {
  52. name: "actions-slot",
  53. displayName: "Actions"
  54. }
  55. ],
  56. sortOrder: [
  57. {
  58. field: "name",
  59. order: "asc"
  60. }
  61. ]
  62. }
  63. },
  64. computed: {
  65. localData: function() {
  66. return this.accounts.map(account => {
  67. return {
  68. name: account.fields.name[0].name,
  69. domain: account.fields.domain.map(domain => domain.domain).join(", "),
  70. email: account.fields.email.map(email => email.email).join(", "),
  71. accountId: account._id
  72. };
  73. });
  74. }
  75. },
  76. methods: {
  77. },
  78. mounted() {
  79. io.getSocket(socket => {
  80. this.socket = socket;
  81. socket.emit("account.getAll", res => {
  82. console.log(res);
  83. this.accounts = res.accounts;
  84. });
  85. });
  86. }
  87. };
  88. </script>
  89. <style lang="scss" scoped>
  90. </style>