Skip to content

Commit 52a468c

Browse files
authored
feat: match IDE6.3.0 card preview (#8)
1 parent a8b484c commit 52a468c

File tree

3 files changed

+63
-5
lines changed

3 files changed

+63
-5
lines changed

packages/hap-server/src/preview/create-router.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,12 +107,17 @@ export default async function createRouter(previewTarget) {
107107
*/
108108
async function getRoutes(manifest) {
109109
let routes = {}
110-
if (manifest && manifest.router && manifest.router.pages) {
111-
const pages = manifest.router.pages
112-
const routeNames = Object.keys(pages)
110+
if (manifest && manifest.router && (manifest.router.pages || manifest.router.widgets)) {
111+
const pages = manifest.router.pages || {}
112+
const widgets = manifest.router.widgets || {}
113+
const pageNames = Object.keys(pages)
114+
const widgetNames = Object.keys(widgets)
115+
const routeNames = pageNames.concat(widgetNames)
116+
113117
routeNames.forEach((routeName) => {
114118
const key = trimSlash(routeName)
115-
const comp = trimSlash(pages[routeName].component)
119+
const route = pages[routeName] || widgets[routeName]
120+
const comp = trimSlash(route.component)
116121
// comp 无后缀名?
117122
routes[key] = `${routeName}/${comp}.js`
118123
})
@@ -208,11 +213,14 @@ export default async function createRouter(previewTarget) {
208213
debug('requestRoute', requestRoute, ctx.appRoutes)
209214
// 已配置路由
210215
if (routeNames.indexOf(requestRoute) > -1) {
216+
const widgets = manifest.router.widgets || {}
217+
const type = requestRoute in widgets ? 'card' : 'app'
211218
const script = routes[requestRoute]
212219
const html = await renderPage(TPL_PAGE_PATH, {
213220
title: manifest.name,
214221
routeName: requestRoute,
215222
routes: JSON.stringify(routes),
223+
type,
216224
script,
217225
scriptNotFound: !scriptExists(script),
218226
webJsUrl: genWebJsUrl(ctx.conf.options.webVersion)

packages/hap-server/src/preview/views/page.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,12 @@
9595
</script>
9696
<script type="text/javascript">
9797
var base = '/preview'
98+
var type = '{{ type }}'
9899
;(function preview() {
99100
var routeName = '{{ routeName }}'
100101
Hap.init({
101-
base
102+
base,
103+
type
102104
})
103105
})()
104106
</script>

packages/hap-shared-utils/src/buildMode/BuildModeManager.js

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,27 @@ BuildModeManager.prototype.getAllPages = function () {
106106
}
107107
}
108108

109+
/**
110+
* 获取应用的所有卡片
111+
*
112+
* @returns {Array<String>}
113+
*/
114+
BuildModeManager.prototype.getAllCards = function () {
115+
if (!this.root) {
116+
return []
117+
}
118+
const manifestPath = path.join(this.root, 'src/manifest.json')
119+
try {
120+
const manifest = readJson(manifestPath)
121+
const routerWidgets = manifest.router.widgets || {}
122+
const widgets = Object.keys(routerWidgets)
123+
return widgets
124+
} catch (err) {
125+
console.log(err.code === 'ENOENT' ? err.message : err)
126+
return []
127+
}
128+
}
129+
109130
/**
110131
* 添加编译模式
111132
*
@@ -167,9 +188,11 @@ BuildModeManager.prototype.addMode = function (mode) {
167188
*/
168189
BuildModeManager.prototype.addModes = function (modes) {
169190
const config = this._read()
191+
const current = config.modeOptions.current
170192
modes.forEach((mode) => {
171193
this._addMode(config, mode, true)
172194
})
195+
config.modeOptions.current = current
173196
this._write(config)
174197
return config.modeOptions
175198
}
@@ -192,6 +215,31 @@ BuildModeManager.prototype.delete = function (id) {
192215
return modeOptions
193216
}
194217

218+
/**
219+
* 删除多个编译模式
220+
*/
221+
BuildModeManager.prototype.deleteModes = function (modes) {
222+
const config = this._read()
223+
const modeOptions = config.modeOptions
224+
const current = modeOptions.current
225+
226+
const list = modeOptions.list.filter((mode) => {
227+
const hasSameMode = modes.find((deleteMode) => deleteMode.id === mode.id)
228+
return !hasSameMode
229+
})
230+
231+
if (modeOptions.list.length !== list.length) {
232+
const hasCurrent = list.find((mode) => mode.id === current)
233+
modeOptions.list = list
234+
if (!hasCurrent) {
235+
modeOptions.current = -1
236+
}
237+
this._write(config)
238+
}
239+
240+
return modeOptions
241+
}
242+
195243
/**
196244
* 更新编译模式
197245
*

0 commit comments

Comments
 (0)