Media.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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. },
  59. source_type: {
  60. infoKey: 'source_type_info',
  61. enumListKey: 'source_typeEnums',
  62. enums: [
  63. {
  64. label: 'ویدیو',
  65. value: 'VIDEO'
  66. },
  67. {
  68. label: 'متن',
  69. value: 'TEXT'
  70. },
  71. {
  72. label: 'صوت',
  73. value: 'SOUND'
  74. },
  75. {
  76. label: 'عکس',
  77. value: 'IMAGE'
  78. },
  79. {
  80. label: 'محصول',
  81. value: 'PRODUCT'
  82. }
  83. ]
  84. }
  85. })
  86. }
  87. }
  88. class MediaList extends Collection {
  89. model () {
  90. return Media
  91. }
  92. getType (type) {
  93. return this.list.filter(item => item.type === type)
  94. }
  95. }
  96. export { Media, MediaList }