|
|
@@ -1,5 +1,8 @@
|
|
|
import Vue from 'vue'
|
|
|
-import { AssetType } from '@/constant'
|
|
|
+import {
|
|
|
+ State,
|
|
|
+ AssetType
|
|
|
+} from '@/constant'
|
|
|
import { WidgetType } from './constant'
|
|
|
import widgetCanvas from './config-json/canvas'
|
|
|
import widgetText from './config-json/text'
|
|
|
@@ -160,7 +163,47 @@ function transform (data, transformOptions = {}, strat = {}) {
|
|
|
}
|
|
|
|
|
|
export function fix (node) {
|
|
|
- const { bgm, widgets } = node
|
|
|
+ const { bgm, backgroundImage, widgets } = node
|
|
|
+
|
|
|
+ if (!widgets.length) {
|
|
|
+ if (backgroundImage.length) {
|
|
|
+ return { state: State.READY }
|
|
|
+ }
|
|
|
+ return { state: State.DRAFT }
|
|
|
+ }
|
|
|
+
|
|
|
+ for (let i = 0; i < widgets.length; i++) {
|
|
|
+ const widget = widgets[i]
|
|
|
+ switch (widget.type) {
|
|
|
+ case WidgetType.MEDIA:
|
|
|
+ if (widget.sources.length === 0) {
|
|
|
+ return { state: State.DRAFT, message: '有媒资组件未配置数据' }
|
|
|
+ }
|
|
|
+ break
|
|
|
+ case WidgetType.IMAGE:
|
|
|
+ if (widget.sources.length === 0) {
|
|
|
+ return { state: State.DRAFT, message: '有图片组件未配置数据' }
|
|
|
+ }
|
|
|
+ break
|
|
|
+ case WidgetType.VIDEO:
|
|
|
+ if (widget.sources.length === 0) {
|
|
|
+ return { state: State.DRAFT, message: '有视频组件未配置数据' }
|
|
|
+ }
|
|
|
+ break
|
|
|
+ case WidgetType.WEB:
|
|
|
+ if (!widget.href) {
|
|
|
+ return { state: State.DRAFT, message: '有网页组件未配置链接地址' }
|
|
|
+ }
|
|
|
+ break
|
|
|
+ case WidgetType.LIVE:
|
|
|
+ if (!widget.url) {
|
|
|
+ return { state: State.DRAFT, message: '有直播组件未配置播放地址' }
|
|
|
+ }
|
|
|
+ break
|
|
|
+ default:
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
if (bgm.length === 0) {
|
|
|
const volumeWidgets = widgets.filter(({ type, sources }) => {
|
|
|
@@ -191,11 +234,11 @@ export function fix (node) {
|
|
|
if (volumeWidgets.length === 1) {
|
|
|
volumeWidgets[0].mute = 0
|
|
|
} else {
|
|
|
- return '视频均未设置音频输出'
|
|
|
+ return { state: State.READY, message: '视频均未设置音频输出' }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- return null
|
|
|
+ return { state: State.READY }
|
|
|
}
|
|
|
|
|
|
export function getDuration (node) {
|
|
|
@@ -232,46 +275,6 @@ function addAssetToSet (arr, assetSet) {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-export function validate (node) {
|
|
|
- const { widgets } = node
|
|
|
- if (!widgets.length) {
|
|
|
- return '未配置组件,请先进行配置'
|
|
|
- }
|
|
|
- for (let i = 0; i < widgets.length; i++) {
|
|
|
- const widget = widgets[i]
|
|
|
- switch (widget.type) {
|
|
|
- case WidgetType.MEDIA:
|
|
|
- if (widget.sources.length === 0) {
|
|
|
- return '有媒资组件未配置数据,请先进行配置'
|
|
|
- }
|
|
|
- break
|
|
|
- case WidgetType.IMAGE:
|
|
|
- if (widget.sources.length === 0) {
|
|
|
- return '有图片组件未配置数据,请先进行配置'
|
|
|
- }
|
|
|
- break
|
|
|
- case WidgetType.VIDEO:
|
|
|
- if (widget.sources.length === 0) {
|
|
|
- return '有视频组件未配置数据,请先进行配置'
|
|
|
- }
|
|
|
- break
|
|
|
- case WidgetType.WEB:
|
|
|
- if (!widget.href) {
|
|
|
- return '有网页组件未配置链接地址,请先进行配置'
|
|
|
- }
|
|
|
- break
|
|
|
- case WidgetType.LIVE:
|
|
|
- if (!widget.url) {
|
|
|
- return '有直播组件未配置播放地址,请先进行配置'
|
|
|
- }
|
|
|
- break
|
|
|
- default:
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- return null
|
|
|
-}
|
|
|
-
|
|
|
export function switchToNext (toggleType, arr, curr) {
|
|
|
const length = arr.length
|
|
|
if (length === 0) {
|