Media.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. import { Collection, Model } from 'js-abstract-model'
  2. import { CelebrityList } from 'src/models/Celebrity.js'
  3. import { MediaHashtagList } from 'src/models/MediaHashtag.js'
  4. import { MediaCategory } from 'src/models/MediaCategory.js'
  5. class Media extends Model {
  6. constructor (data) {
  7. super(data, [
  8. { key: 'id' },
  9. { key: 'title' },
  10. { key: 'type' }, // VIDEO - TEXT - SOUND - IMAGE
  11. { key: 'source_type' }, // CONTENT - SETTING
  12. { key: 'url' },
  13. { key: 'iframe_code' },
  14. { key: 'script_code' },
  15. { key: 'is_live_streaming' },
  16. { key: 'category' },
  17. {
  18. key: 'category_info',
  19. relatedModel: MediaCategory
  20. },
  21. { key: 'description' },
  22. {
  23. key: 'celebrities',
  24. relatedModel: CelebrityList
  25. },
  26. { key: 'hashtags' },
  27. {
  28. key: 'hashtags_info',
  29. relatedModel: MediaHashtagList
  30. },
  31. { key: 'file' }
  32. ], {
  33. type: {
  34. infoKey: 'type_info',
  35. enumListKey: 'typeEnums',
  36. enums: [
  37. {
  38. label: 'ویدیو',
  39. value: 'VIDEO'
  40. },
  41. // {
  42. // label: 'متن',
  43. // value: 'TEXT'
  44. // },
  45. {
  46. label: 'صوت',
  47. value: 'SOUND'
  48. },
  49. {
  50. label: 'تصویر',
  51. value: 'IMAGE'
  52. },
  53. {
  54. label: 'سند',
  55. value: 'DOCUMENT'
  56. },
  57. {
  58. label: 'سایر',
  59. value: 'OTHER'
  60. }
  61. ]
  62. },
  63. source_type: {
  64. infoKey: 'source_type_info',
  65. enumListKey: 'source_typeEnums',
  66. enums: [
  67. {
  68. label: 'صورتحساب',
  69. value: 'INVOICE'
  70. },
  71. {
  72. label: 'محتوا',
  73. value: 'CONTENT'
  74. },
  75. {
  76. label: 'کلاس',
  77. value: 'CLASSROOM'
  78. },
  79. {
  80. label: 'جلسه',
  81. value: 'SESSION'
  82. },
  83. {
  84. label: 'تمپلیت جلسه',
  85. value: 'SESSION_TEMPLATE'
  86. },
  87. {
  88. label: 'پروژه',
  89. value: 'PROJECT'
  90. },
  91. {
  92. label: 'پست',
  93. value: 'POST'
  94. },
  95. {
  96. label: 'تنظیمات',
  97. value: 'SETTING'
  98. },
  99. {
  100. label: 'رویداد',
  101. value: 'EVENT'
  102. },
  103. {
  104. label: 'محصول',
  105. value: 'PRODUCT'
  106. }
  107. ]
  108. }
  109. })
  110. }
  111. }
  112. class MediaList extends Collection {
  113. model () {
  114. return Media
  115. }
  116. getType (type) {
  117. return this.list.filter(item => item.type === type)
  118. }
  119. }
  120. export { Media, MediaList }