@yongdall/pages 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/index.mjs.map +1 -1
  2. package/package.json +1 -1
package/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../packages/pages/createMenuItem.mjs","../../packages/pages/list/index.mjs","../../packages/pages/details/index.mjs","../../packages/pages/edit/index.mjs","../../packages/pages/todo/index.mjs","../../packages/pages/settings/index.mjs","../../packages/pages/search/index.mjs","../../packages/pages/status/index.mjs","../../packages/pages/new/index.mjs","../../packages/pages/toMain.mjs"],"sourcesContent":["import { application, createComputed, effect } from '@yongdall/web';\n/** @import { Menu } from '@yongdall/web' */\n\n\n\n/**\n * \n * @param {(menu: Menu) => boolean} disabled \n * @param {(menu: Menu) => void} exec \n * @param {(menu: Menu) => string} toHref \n * @param {Menu} menu \n * @param {AbortSignal} signal \n * @param {boolean} [isButton] \n * @returns {HTMLElement}\n */\nexport default function createMenuItem(disabled, toHref, exec, menu, signal, isButton) {\n\tconst link = document.createElement('a');\n\tconst button = isButton ? document.createElement('button') : null;\n\tlink.appendChild(document.createTextNode(menu.label || menu.title || ''));\n\n\tconst { page, path, uri, command } = menu;\n\tconst isDisabled = createComputed(() => Boolean(disabled(menu)));\n\n\tconst href = createComputed(() => {\n\t\tif (page) {\n\t\t\treturn new URL(path?.[0] === '/' ? `${page}${path}` : `${page}/${path || ''}`, application.root).href;\n\t\t} else if (uri) {\n\t\t\treturn uri;\n\t\t} else if (command) {\n\t\t\treturn toHref(menu) || '';\n\t\t}\n\t\treturn null;\n\n\t});\n\n\teffect(() => {\n\t\tconst disabled = isDisabled.get();\n\t\t// @ts-ignore\n\t\tlink.disabled = disabled;\n\t\tlink.ariaDisabled = disabled ? 'true' : 'false';\n\t\tif (disabled) {\n\t\t\tlink.removeAttribute('tabindex');\n\t\t\tlink.removeAttribute('href');\n\t\t} else {\n\t\t\tlink.tabIndex = 0;\n\t\t\tconst hrefValue = href.get();\n\t\t\tif (hrefValue) { link.href = hrefValue; }\n\t\t}\n\t\tif (button) {\n\t\t\tbutton.disabled = disabled;\n\t\t}\n\t}, signal);\n\tlink.addEventListener('click', (e) => {\n\t\tif (!isDisabled.get()) { return; }\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t});\n\n\tconst hrefValue = href.get() !== null;\n\tif (hrefValue) {\n\t\tconst target = menu.target || (page ? '_self' : '');\n\t\tif (target) {\n\t\t\tlink.target = target;\n\t\t}\n\t}\n\tif (command) {\n\t\tlink.addEventListener('click', (e) => {\n\t\t\tif (isDisabled.get()) { return; }\n\t\t\tif (e.defaultPrevented) { return; }\n\t\t\tif (href.get()) { return }\n\t\t\texec(menu);\n\t\t});\n\t}\n\tif (button) {\n\t\tbutton.appendChild(link);\n\t\treturn button;\n\t}\n\treturn link;\n\n}\n","/** @import { PageConfiguration, PageContext } from '@yongdall/web' */\nimport { Command, createComputed, createQuickFilters, createState, effect, filterPermission, getAuthorizations, getPrimaryFields, Menu, testPermissions, toId, User, watch } from '@yongdall/web';\nimport { Pagination, modelService, createShowField, runPattern, getPatternFields, showFilterDialog, Search } from '@yongdall/web';\nimport Plugin from '@yongdall/web/plugin';\nimport { Body, Check, Group, Header, Source, Tree } from '@neeloong/table';\nimport createMenuItem from '../createMenuItem.mjs';\n/** @import { FieldScriptConfiguration } from '@yongdall/web' */\n/** @import { ColumnOptions } from '@neeloong/table' */\nPlugin.importStyle('@neeloong/table/style.css');\n\nconst defaultLimit = 100;\n/**\n * \n * @param {PageContext} ctx \n */\nexport default async function (ctx) {\n\tconst pageIdent = ctx.ident;\n\tif (pageIdent.type !== 'model') { return ctx.setError(404); }\n\tif (!ctx.search.slice(1)) {\n\t\tconst defaultQuery = ctx.define?.defaultQuery;\n\t\tif (defaultQuery) {\n\t\t\tctx.setPath(`?${defaultQuery.replaceAll('#', '%23')}${ctx.hash}`, true);\n\t\t}\n\t}\n\tconst search = createComputed(() => Search.parse(ctx.search.slice(1)));\n\t/**\n\t * \n\t * @param {*} data \n\t */\n\tfunction setSearch(data) {\n\t\tconst s = Search.stringify({ ...search.get(), ...data }, true);\n\t\tif (s === ctx.search.slice(1)) { return; }\n\t\tctx.setPath(`?${s}`, true);\n\t}\n\tconst container = ctx.container;\n\tctx.panel = true;\n\n\tconst currentModel = modelService(pageIdent.model);\n\tctx.title = ctx.define?.title || '列表';\n\tctx.mode = 'flex';\n\tconst model = await currentModel.loadScript();\n\tif (ctx.destroyed) { return; }\n\tif (!model) { return ctx.setError(404); }\n\tconst label = model?.label || model.id || '';\n\tctx.title = ctx.define?.title || (label ? `列表:${label}` : '列表');\n\n\tconst idKey = '_';\n\tconst documents = createState(/** @type {any[]} */([]));\n\tconst source = new Source({ idKey, parentKey: 'parent' });\n\tconst checkedIds = createState(/** @type {any[]} */([]));\n\tsource.listen('checkedChange', v => checkedIds.set(v));\n\n\tconst checkedIdSet = createComputed(() => new Set(checkedIds.get()));\n\tconst checked = createComputed(() => {\n\t\tconst set = checkedIdSet.get();\n\t\tconst list = documents.get();\n\t\treturn list.filter(v => set.has(v[idKey]));\n\t});\n\n\n\n\tconst fields = model.fields;\n\tconst allFields = Object.entries(fields).filter(([, { type }]) => type && typeof type !== 'object');\n\tconst idFields = getPrimaryFields(model);\n\tconst labelPattern = model.labelPattern || '';\n\n\t/** @type {(Omit<PageConfiguration.Field, 'field'> & {name: string; width?: number; title: string; field: FieldScriptConfiguration})[]} */\n\tconst allFieldsShow = [];\n\tfor (const { field, width, label, align, enableLink } of ctx.define?.fields || []) {\n\t\tif (!field) { continue; }\n\t\tif (!Object.hasOwn(fields, field)) { continue; }\n\t\tconst f = fields[field];\n\t\tif (!f) { continue; }\n\t\tconst type = f.type;\n\t\tif (!type || typeof type !== 'string') { continue; }\n\t\tallFieldsShow.push({\n\t\t\tname: field,\n\t\t\twidth: width || undefined,\n\t\t\ttitle: label || f.label || '',\n\t\t\tfield: f,\n\t\t\talign,\n\t\t\tenableLink\n\t\t});\n\t}\n\tif (!allFieldsShow.length) {\n\t\tfor (const [name, field] of allFields) {\n\t\t\tallFieldsShow.push({ name, title: field.label || '', field });\n\t\t\tif (allFieldsShow.length >= 4) { break; }\n\t\t}\n\t}\n\tconst queryFields = [...new Set([\n\t\t...allFieldsShow.map(v => v.name),\n\t\t...idFields,\n\t\t...getPatternFields(labelPattern),\n\t])];\n\n\n\teffect(() => source.setValue(documents.get()), ctx.signal);\n\t/** @type {ColumnOptions[]} */\n\tconst columns = allFieldsShow.map(({ name, field, title, width, align, enableLink }) => ({\n\t\tfield: name, title, width, resizable: true, render(c) {\n\t\t\tconst root = document.createElement('div');\n\t\t\tif (align) { root.style.textAlign = align; }\n\t\t\tlet f = createShowField(name, field, {enableLink}, c.data);\n\t\t\troot.appendChild(f.root);\n\t\t\treturn {\n\t\t\t\troot,\n\t\t\t\tdestroy() {\n\t\t\t\t\tf.destroy();\n\t\t\t\t},\n\t\t\t\tsetHidden() { },\n\t\t\t\tupdate(c) {\n\t\t\t\t\tf.destroy();\n\t\t\t\t\troot.innerHTML = '';\n\t\t\t\t\tf = createShowField(name, field, {enableLink}, c.data);\n\t\t\t\t\troot.appendChild(f.root);\n\t\t\t\t},\n\t\t\t};\n\t\t}, header() {\n\t\t\tconst root = document.createElement('span');\n\t\t\troot.innerText = title;\n\t\t\tif (align) { root.style.textAlign = align; }\n\t\t\treturn {\n\t\t\t\troot: root,\n\t\t\t\tupdate() {\n\n\t\t\t\t},\n\t\t\t\tdestroy() {\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}));\n\tcolumns.unshift({\n\t\tfield: '_', width: 200, resizable: true, render(c) {\n\t\t\tlet r = c.data;\n\t\t\tconst root = document.createElement('a');\n\t\t\tconst label = runPattern(labelPattern, r) || idFields.map(v => r[v]).join('$');\n\t\t\troot.href = ctx.toUrl('', {\n\t\t\t\t...pageIdent,\n\t\t\t\tpage: undefined,\n\t\t\t\tworkspace: undefined,\n\t\t\t\tcontinuation: undefined,\n\t\t\t\tsetting: false,\n\t\t\t\tid: idFields.map(v => r[v]).join('$'),\n\t\t\t});\n\t\t\troot.appendChild(document.createTextNode(label));\n\t\t\treturn {\n\t\t\t\troot,\n\t\t\t\tdestroy() { },\n\t\t\t\tsetHidden() { },\n\t\t\t\tupdate(c) {\n\t\t\t\t\tlet r = c.data;\n\t\t\t\t\tconst label = runPattern(labelPattern, r) || idFields.map(v => r[v]).join('$');\n\t\t\t\t\troot.innerHTML = '';\n\t\t\t\t\troot.href = ctx.toUrl('', {\n\t\t\t\t\t\t...pageIdent,\n\t\t\t\t\t\tpage: undefined,\n\t\t\t\t\t\tworkspace: undefined,\n\t\t\t\t\t\tcontinuation: undefined,\n\t\t\t\t\t\tsetting: false,\n\t\t\t\t\t\tid: idFields.map(v => r[v]).join('$'),\n\t\t\t\t\t});\n\t\t\t\t\troot.appendChild(document.createTextNode(label));\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t});\n\tcolumns.unshift({\n\t\tfield: '_', extensions: [Check], render(c) {\n\t\t\treturn {\n\t\t\t\troot: document.createElement('div'),\n\t\t\t\tdestroy() { },\n\t\t\t\tsetHidden() { },\n\t\t\t\tupdate() {\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t});\n\n\n\tconst group = source.createGroup(columns, 2);\n\n\tconst listTable = document.createElement('table');\n\tconst tableHeader = listTable.appendChild(document.createElement('div'));\n\ttableHeader.style.zIndex = '3';\n\ttableHeader.style.position = 'sticky'\n\ttableHeader.style.insetBlockStart = '0';\n\n\tgroup.createHeader(tableHeader);\n\tgroup.createBody(listTable.appendChild(document.createElement('div')));\n\n\tconst pagination = new Pagination();\n\twatch(() => search.get().limit, limit => pagination.size = limit || defaultLimit, { immediate: true, signal: ctx.signal });\n\twatch(() => search.get().page, page => pagination.page = page || 1, { immediate: true, signal: ctx.signal });\n\n\tpagination.listen(() => {\n\t\tconst { size, page } = pagination;\n\t\tsetSearch({\n\t\t\tlimit: size !== defaultLimit ? size : 0,\n\t\t\tpage: page > 1 ? page : 0,\n\t\t});\n\t});\n\tlet k = 0;\n\tlet disabled = createState(false);\n\tasync function request() {\n\t\tif (ctx.destroyed) { return; }\n\t\tif (disabled.get()) { return; }\n\t\ttry {\n\t\t\tdisabled.set(true);\n\t\t\tk++;\n\t\t\tconst v = k;\n\t\t\tconst query = search.get();\n\t\t\tconst define = ctx.define;\n\t\t\tconst list = await currentModel.query({\n\t\t\t\t...query,\n\t\t\t\tlimit: query.limit || defaultLimit,\n\t\t\t\twhere: [...query.where || [], ...define?.where || []],\n\t\t\t\tor: define?.orWhere,\n\t\t\t\tselect: queryFields,\n\t\t\t\ttotal: true,\n\t\t\t});\n\t\t\tif (ctx.destroyed) { return; }\n\t\t\tif (v !== k) { return; }\n\t\t\tctx.loading = false;\n\t\t\tdocuments.set(\n\t\t\t\tlist.documents.map(v => ({ ...v, _: toId(v, idFields) }))\n\t\t\t);\n\t\t\tpagination.total = list.total;\n\t\t} finally {\n\t\t\tdisabled.set(false);\n\n\t\t}\n\t}\n\tfunction updateFilters() {\n\t\tif (!model) { return; }\n\t\tshowFilterDialog(model, search.get().where, container).then(values => {\n\t\t\tsetSearch({ where: values });\n\t\t}).catch(() => { });\n\t}\n\n\tconst newSearch = createComputed(() => {\n\t\tconst list = [];\n\t\tfor (const v of [...search.get().where || [], ...ctx.define?.where || []]) {\n\t\t\tif (!Array.isArray(v)) { continue; }\n\t\t\tif (v.length === 2) { continue; }\n\t\t\tif (v[3]) { continue; }\n\t\t\tif (v[2]) { continue; }\n\t\t\tconst fields = v[0];\n\t\t\tif (fields.length !== 1) { continue; }\n\t\t\tconst [field] = fields;\n\t\t\tif (!field) { continue; }\n\t\t\tconst prop = typeof field === 'string' ? field : field[0];\n\t\t\tconst value = v[1];\n\t\t\tif (value == null) { continue; }\n\t\t\tlist.push(`${encodeURIComponent(prop)}=${encodeURIComponent(String(value))}`);\n\t\t}\n\t\tif (!list.length) { return ''; }\n\t\treturn `?${list.join('&')}`;\n\n\t});\n\n\tconst createURL = createComputed(() => ctx.toUrl(newSearch.get(), {\n\t\t...pageIdent,\n\t\tpage: undefined,\n\t\tworkspace: undefined,\n\t\tinput: '*',\n\t\tsetting: false,\n\t\tid: undefined,\n\t}));\n\tctx.renderSides(ctx.define?.sides || [], {\n\t\ttype: 'documents',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget checkedDocuments() { return checked.get(); },\n\t\tget documents() { return documents.get(); },\n\t\tget where() { return search.get().where; },\n\t\tset where(where) { setSearch({ where }); },\n\t\tget orWhere() { return search.get().orWhere; },\n\t\tset orWhere(orWhere) { setSearch({ orWhere }); },\n\t});\n\n\t/*** @type {Command.Options} */\n\tconst commandOptions = {\n\t\ttype: 'documents',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget checkedDocuments() { return checked.get(); },\n\t\tget documents() { return documents.get(); },\n\t};\n\t\tconst creatable = createComputed(() => {\n\t\t\treturn testPermissions('create', model.permissions || []);\n\t\t});\n\tconst createMenu = createMenuItem.bind(null, menu => {\n\t\tswitch (menu.command) {\n\t\t\tcase 'refresh': return disabled.get();\n\t\t\tcase 'refresh': return !creatable.get();\n\t\t}\n\t\treturn Command.disabled(commandOptions, menu);\n\t}, menu => {\n\t\tswitch (menu.command) {\n\t\t\tcase 'create': return createURL.get();\n\t\t}\n\t\treturn Command.toHref(commandOptions, menu);\n\t}, (menu) => {\n\t\tif (ctx.destroyed) { return; }\n\t\tswitch (menu.command) {\n\t\t\tcase 'refresh': return request();\n\t\t\tcase 'filter': return updateFilters();\n\t\t}\n\t\treturn Command.exec(commandOptions, menu);\n\t});\n\tlet menus = ctx.define?.menus;\n\tif (!menus?.length) {\n\t\tmenus = [\n\t\t\t{ label: '创建', command: 'create', children: [], buttons: [] },\n\t\t\tnull,\n\t\t\t{ label: '刷新', command: 'refresh', children: [], buttons: [] },\n\t\t\tnull,\n\t\t\t{ label: '过滤', command: 'filter', children: [], buttons: [] },\n\t\t];\n\t}\n\tconst authorizations = createComputed(() => {\n\t\tif (User.permissions.size < 0) { return { has() { return true; } }; }\n\t\treturn getAuthorizations(model.permissions || []);\n\n\t});\n\tconst currentMenus = createComputed(() => {\n\t\tconst permissions = User.permissions;\n\t\tif (permissions.size < 0) { return menus; }\n\t\treturn Menu.filter(menus, menu => {\n\t\t\tconst permission = menu.permission;\n\t\t\tif (!permission) { return true; }\n\t\t\treturn filterPermission(permission, permissions, {\n\t\t\t\thas(p) {\n\t\t\t\t\treturn authorizations.get().has(p);\n\t\t\t\t}\n\t\t\t});\n\t\t}, false);\n\t});\n\tconst header = ctx.createHeader();\n\teffect(() => header.setMenu(currentMenus.get(), createMenu), ctx.signal);\n\tconst headerContainer = header.container;\n\theaderContainer.classList.add('QueryFilters');\n\tcreateQuickFilters({\n\t\tget() { return search.get().where || []; },\n\t\tset(where) {\n\t\t\tsetSearch({ where });\n\t\t\trequest();\n\t\t},\n\t}, headerContainer, ctx.define?.filters || [], {\n\t\tfields: model.fields,\n\t\tsignal: ctx.signal,\n\t\tinline: true,\n\t});\n\tcontainer.appendChild(listTable);\n\tconst footer = ctx.createFooter();\n\tfooter.container.appendChild(pagination.root);\n\n\n\twatch(() => search.get(), request, { signal: ctx.signal });\n\tawait request();\n}\n","/** @import { PageContext } from '@yongdall/web' */\nimport { Command, createComputed, createState, createStore, effect, filterPermission, formLayoutsService, getAuthorizations, Menu, modelService, renderForm, runPattern, testPermissions, User, waitAbortSignal } from '@yongdall/web';\nimport createMenuItem from '../createMenuItem.mjs';\n\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default async function (ctx) {\n\tctx.title = '详情';\n\tconst pageIdent = ctx.ident;\n\tif (pageIdent.type !== 'model') { return ctx.setError(404); }\n\tctx.panel = true;\n\tconst currentModel = modelService(pageIdent.model);\n\tconst id = /** @type {string} */(pageIdent.id);\n\tconst currentDocument = currentModel.document(id);\n\tconst define = ctx.define;\n\tconst layoutId = define?.forms?.view?.layoutId;\n\tconst [model, layout] = await Promise.all([\n\t\tcurrentModel.loadScript(),\n\t\tlayoutId && formLayoutsService(layoutId).load().catch(() => null) || null\n\t]);\n\tif (ctx.destroyed) { return; }\n\tif (!model) { return ctx.setError(404); }\n\tconst label = model?.label || model.id || '';\n\tconst title = label ? `详情:${label}` : '详情';\n\tctx.title = title;\n\tconst store = createStore(model);\n\tstore.readonly = true;\n\trenderForm(store, ctx.container, {\n\t\tmodel,\n\t\teditable: false,\n\t\tsignal: ctx.signal,\n\t\tenableLink: Boolean(layout?.enableLink ?? true),\n\t\tlayout: layout?.layout,\n\t\ttype: layout?.type\n\t});\n\n\tconst loaded = createState(false);\n\tconst requesting = createState(false);\n\teffect(() => ctx.loading = requesting.get() || !loaded.get(), ctx.signal);\n\n\tasync function request() {\n\t\tif (requesting.get()) { return; }\n\t\tif (ctx.destroyed) { return; }\n\t\trequesting.set(true);\n\t\ttry {\n\t\t\tconst document = await currentDocument.get();\n\t\t\tif (ctx.destroyed) { return; }\n\t\t\tstore.reset(document);\n\t\t\tstore.readonly = true;\n\t\t\tctx.title = runPattern(model?.labelPattern, document) || title;\n\t\t} finally {\n\t\t\tloaded.set(true);\n\t\t\trequesting.set(false);\n\t\t}\n\t}\n\tctx.renderSides(ctx.define?.sides || [], {\n\t\ttype: 'document',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget document() { return store.value; },\n\t\tget store() { return store; },\n\t});\n\tconst destroyable = createComputed(() => {\n\t\treturn testPermissions('destroy', model.permissions || [], store.value);\n\t});\n\tasync function destroy() {\n\t\tif (!destroyable.get()) { return; }\n\t\tif (requesting.get()) { return; }\n\t\tif (ctx.destroyed) { return; }\n\t\tif (!confirm('确定要删除此文档吗?')) { return }\n\t\trequesting.set(true);\n\t\ttry {\n\t\t\tawait currentDocument.delete();\n\t\t\tctx.destroy();\n\t\t} finally {\n\t\t\trequesting.set(false);\n\t\t}\n\t}\n\t/*** @type {Command.Options} */\n\tconst commandOptions = {\n\t\ttype: 'document',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget document() { return store.value; },\n\t\tget store() { return store; },\n\t};\n\tconst createMenu = createMenuItem.bind(null, menu => {\n\t\tswitch (menu.command) {\n\t\t\tcase 'refresh': { return requesting.get() || !loaded.get(); }\n\t\t\tcase 'destroy': { return requesting.get() || !loaded.get() || !destroyable.get(); }\n\t\t}\n\t\treturn Command.disabled(commandOptions, menu);\n\t}, menu => {\n\t\tswitch (menu.command) {\n\t\t\tcase 'edit': return ctx.toUrl('', {\n\t\t\t\t...pageIdent,\n\t\t\t\tpage: undefined,\n\t\t\t\tworkspace: undefined,\n\t\t\t\tsetting: false,\n\t\t\t\tedit: true,\n\t\t\t});\n\t\t\tcase 'copy': return ctx.toUrl('', {\n\t\t\t\t...pageIdent,\n\t\t\t\tpage: undefined,\n\t\t\t\tworkspace: undefined,\n\t\t\t\tsetting: false,\n\t\t\t\tedit: true,\n\t\t\t\tinput: '*',\n\t\t\t});\n\t\t}\n\t\treturn Command.toHref(commandOptions, menu);\n\t}, menu => {\n\t\tif (ctx.destroyed) { return; }\n\t\tswitch (menu.command) {\n\t\t\tcase 'refresh': return request();\n\t\t\tcase 'destroy': return destroy();\n\t\t}\n\t\treturn Command.exec(commandOptions, menu);\n\t});\n\n\tlet menus = ctx.define?.menus;\n\tif (!menus?.length) {\n\t\tmenus = [\n\t\t\t{ label: '删除', command: 'destroy', children: [], buttons: [] },\n\t\t\tnull,\n\t\t\t{ label: '刷新', command: 'refresh', children: [], buttons: [] },\n\t\t\tnull,\n\t\t\t{ label: '编辑', command: 'edit', children: [], buttons: [] },\n\t\t];\n\t}\n\tconst authorizations = createComputed(() => {\n\t\tif (User.permissions.size < 0) { return { has() { return true; } }; }\n\t\treturn getAuthorizations(model.permissions || [], store.value);\n\t});\n\tconst currentMenus = createComputed(() => {\n\t\tconst permissions = User.permissions;\n\t\tif (permissions.size < 0) { return menus; }\n\t\treturn Menu.filter(menus, menu => {\n\t\t\tconst permission = menu.permission;\n\t\t\tif (!permission) { return true; }\n\t\t\treturn filterPermission(permission, permissions, {\n\t\t\t\thas(p) {\n\t\t\t\t\treturn authorizations.get().has(p);\n\t\t\t\t}\n\t\t\t});\n\t\t}, false);\n\t});\n\tconst header = ctx.createHeader();\n\teffect(() => header.setMenu(currentMenus.get(), createMenu), ctx.signal);\n\n\n\n\tawait request();\n}\n","/** @import { PageContext } from '@yongdall/web' */\nimport { Command, createComputed, createState, createStore, effect, filterPermission, formLayoutsService, getAuthorizations, Menu, modelService, renderForm, runPattern, testPermissions, User, waitAbortSignal } from '@yongdall/web';\nimport createMenuItem from '../createMenuItem.mjs';\n\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default async function (ctx) {\n\tctx.title = '编辑';\n\tconst pageIdent = ctx.ident;\n\tif (pageIdent.type !== 'model') { return ctx.setError(404); }\n\tctx.panel = true;\n\tconst currentModel = modelService(pageIdent.model);\n\tconst id = /** @type {string} */(pageIdent.id);\n\tconst currentDocument = currentModel.document(id);\n\tconst define = ctx.define;\n\tconst layoutId = define?.forms?.edit?.layoutId;\n\tconst [model, layout] = await Promise.all([\n\t\tcurrentModel.loadScript(),\n\t\tlayoutId && formLayoutsService(layoutId).load().catch(() => null) || null\n\t]);\n\tif (ctx.destroyed) { return; }\n\tif (!model) { return ctx.setError(404); }\n\tconst label = model?.label || model.id || '';\n\tconst title = label ? `编辑:${label}` : '编辑';\n\tctx.title = title;\n\tconst store = createStore(model);\n\teffect(() => { ctx.unsaved = store.changed; }, ctx.signal);\n\trenderForm(store, ctx.container, {\n\t\tmodel,\n\t\teditable: true,\n\t\tsignal: ctx.signal,\n\t\tenableLink: Boolean(layout?.enableLinkEditable ?? layout?.enableLink),\n\t\tlayout: layout?.layout,\n\t\ttype: layout?.type\n\t});\n\n\n\tconst loaded = createState(false);\n\tconst requesting = createState(false);\n\teffect(() => ctx.loading = requesting.get() || !loaded.get(), ctx.signal);\n\n\n\n\t/**\n\t * \n\t * @param {Record<string, any>} document \n\t */\n\tfunction setTitle(document) {\n\t\tconst label = runPattern(model?.labelPattern, document);\n\t\tif (label) {\n\t\t\tctx.title = label ? `编辑:${label}` : '编辑';\n\t\t} else {\n\t\t\tctx.title = title;\n\t\t}\n\t}\n\n\tasync function request() {\n\t\tif (requesting.get()) { return; }\n\t\tif (ctx.destroyed) { return; }\n\t\trequesting.set(true);\n\t\ttry {\n\t\t\tconst document = await currentDocument.get();\n\t\t\tif (ctx.destroyed) { return; }\n\t\t\tstore.reset(document, false);\n\t\t\tsetTitle(document);\n\t\t} finally {\n\t\t\tloaded.set(true);\n\t\t\trequesting.set(false);\n\t\t}\n\t}\n\tasync function save() {\n\t\tif (requesting.get() || !loaded.get()) { return; }\n\t\tif (ctx.destroyed) { return; }\n\t\trequesting.set(true);\n\t\ttry {\n\t\t\tconst data = await currentDocument.update(store.value);\n\t\t\tif (!data) { return; }\n\t\t\tsetTitle(data);\n\t\t\tif (ctx.destroyed) { return; }\n\t\t\tstore.reset(data, false);\n\t\t} finally {\n\t\t\trequesting.set(false);\n\t\t}\n\t}\n\n\tctx.renderSides(ctx.define?.sides || [], {\n\t\ttype: 'editDocument',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget document() { return store.value; },\n\t\tget store() { return store; },\n\t});\n\tconst destroyable = createComputed(() => {\n\t\tif (User.permissions.size < 0) { return { has() { return true; } }; }\n\t\treturn testPermissions('destroy', model.permissions || []);\n\t});\n\tasync function destroy() {\n\t\tif (!destroyable.get()) { return; }\n\t\tif (requesting.get()) { return; }\n\t\tif (ctx.destroyed) { return; }\n\t\tif (!confirm('确定要删除此文档吗?')) { return }\n\t\trequesting.set(true);\n\t\ttry {\n\t\t\tawait currentDocument.delete();\n\t\t\tctx.destroy();\n\t\t} finally {\n\t\t\trequesting.set(false);\n\t\t}\n\t}\n\t/*** @type {Command.Options} */\n\tconst commandOptions = {\n\t\ttype: 'editDocument',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget document() { return store.value; },\n\t\tget store() { return store; },\n\t};\n\tconst createMenu = createMenuItem.bind(null, menu => {\n\t\tswitch (menu.command) {\n\t\t\tcase 'save': case 'refresh': { return requesting.get() || !loaded.get(); }\n\t\t\tcase 'destroy': { return requesting.get() || !loaded.get() || !destroyable.get(); }\n\t\t}\n\t\treturn Command.disabled(commandOptions, menu);\n\t}, menu => {\n\t\tswitch (menu.command) {\n\t\t\tcase 'copy': return ctx.toUrl('', {\n\t\t\t\t...pageIdent,\n\t\t\t\tpage: undefined,\n\t\t\t\tworkspace: undefined,\n\t\t\t\tsetting: false,\n\t\t\t\tedit: true,\n\t\t\t\tinput: '*',\n\t\t\t});\n\t\t}\n\t\treturn Command.toHref(commandOptions, menu);\n\t}, menu => {\n\t\tif (ctx.destroyed) { return; }\n\t\tswitch (menu.command) {\n\t\t\tcase 'refresh': return request();\n\t\t\tcase 'save': return save();\n\t\t\tcase 'destroy': return destroy();\n\t\t}\n\t\treturn Command.exec(commandOptions, menu);\n\t});\n\n\tlet menus = ctx.define?.menus;\n\tif (!menus?.length) {\n\t\tmenus = [\n\t\t\t{ label: '删除', command: 'destroy', children: [], buttons: [] },\n\t\t\tnull,\n\t\t\t{ label: '刷新', command: 'refresh', children: [], buttons: [] },\n\t\t\tnull,\n\t\t\t{ label: '更新', command: 'save', children: [], buttons: [] },\n\t\t];\n\t}\n\tconst authorizations = createComputed(() => {\n\t\tif (User.permissions.size < 0) { return { has() { return true; } }; }\n\t\treturn getAuthorizations(model.permissions || [], store.value);\n\t});\n\tconst currentMenus = createComputed(() => {\n\t\tconst permissions = User.permissions;\n\t\tif (permissions.size < 0) { return menus; }\n\t\treturn Menu.filter(menus, menu => {\n\t\t\tconst permission = menu.permission;\n\t\t\tif (!permission) { return true; }\n\t\t\treturn filterPermission(permission, permissions, {\n\t\t\t\thas(p) {\n\t\t\t\t\treturn authorizations.get().has(p);\n\t\t\t\t}\n\t\t\t});\n\t\t}, false);\n\t});\n\tconst header = ctx.createHeader();\n\teffect(() => header.setMenu(currentMenus.get(), createMenu), ctx.signal);\n\tawait request();\n}\n","/** @import { PageContext } from '@yongdall/web' */\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function (ctx) {\n\tctx.title = '!代办'\n\tctx.panel = true;\n\tctx.container.appendChild(document.createTextNode('!代办'))\n\tctx.loading = false;\n}\n","/** @import { PageContext } from '@yongdall/web' */\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function (ctx) {\n\tctx.title = '设置'\n\tctx.panel = true;\n\tctx.container.appendChild(document.createTextNode('设置'))\n\tctx.loading = false;\n}\n","/** @import { PageContext } from '@yongdall/web' */\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function (ctx) {\n\tctx.title = '搜索'\n\tctx.panel = true;\n\tctx.container.appendChild(document.createTextNode('搜索'))\n\tctx.loading = false;\n}\n","/** @import { PageContext } from '@yongdall/web' */\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function (ctx) {\n\tctx.title = '状态管理'\n\tctx.panel = true;\n\tctx.container.appendChild(document.createTextNode('状态管理'))\n\tctx.loading = false;\n}\n","/** @import { PageContext } from '@yongdall/web' */\nimport { createStore, Command, formLayoutsService, modelService, renderForm, runPattern, Menu, User, filterPermission, createComputed, createState, effect, waitAbortSignal } from '@yongdall/web';\nimport createMenuItem from '../createMenuItem.mjs';\n\n/**\n * \n * @param {PageContext} ctx \n */\nasync function create(ctx) {\n\tconst pageIdent = ctx.ident;\n\tif (pageIdent.type !== 'model') { return ctx.setError(404); }\n\tconst currentModel = modelService(pageIdent.model);\n\tctx.panel = true;\n\tconst define = ctx.define;\n\tconst layoutId = define?.forms?.new?.layoutId;\n\tconst [model, layout] = await Promise.all([\n\t\tcurrentModel.loadScript(),\n\t\tlayoutId && formLayoutsService(layoutId).load().catch(() => null) || null\n\t]);\n\tif (ctx.destroyed) { return; }\n\tif (!model) { return ctx.setError(404); }\n\tconst store = createStore(model);\n\tconst createDefault = () => {\n\t\tconst fields = model.fields;\n\t\treturn [...new URLSearchParams(ctx.search.slice(1))].reduceRight((r, [k, v]) => {\n\t\t\tconst field = Object.hasOwn(fields, k) && fields[k];\n\t\t\tif (!field) { return r; }\n\t\t\tconst type = field?.type;\n\t\t\tif (!type || typeof type !== 'string') { return r; }\n\t\t\tif (!v && field.array) { return r; }\n\t\t\tif (!v && field.nullable) {\n\t\t\t\tr[k] = null;\n\t\t\t\treturn r;\n\t\t\t}\n\t\t\tswitch (type) {\n\t\t\t\tcase 'i16':\n\t\t\t\tcase 'i32':\n\t\t\t\t\tif (/^[+-]?\\d+$/.test(v)) { r[k] = Number.parseInt(v); }\n\t\t\t\t\treturn r;\n\t\t\t\tcase 'i64':\n\t\t\t\t\tif (/^[+-]?\\d+$/.test(v)) { r[k] = v; }\n\t\t\t\t\treturn r;\n\t\t\t\tcase 'f32':\n\t\t\t\tcase 'f64':\n\t\t\t\t\tif (/^[+-]?\\d+(\\.\\d*)?([eE][+-]?\\d*)$/.test(v)) { r[k] = Number.parseFloat(v); }\n\t\t\t\t\treturn r;\n\t\t\t\tcase 'decimal':\n\t\t\t\tcase 'numeric':\n\t\t\t\tcase 'money':\n\t\t\t\t\tif (/^[+-]?\\d+(\\.\\d*)?([eE][+-]?\\d*)$/.test(v)) { r[k] = v; }\n\t\t\t\t\treturn r;\n\t\t\t\tcase 'bool':\n\t\t\t\t\tswitch (v.toLowerCase()) {\n\t\t\t\t\t\tcase '0': case 'n': case 'no': case 'f': case 'false':\n\t\t\t\t\t\t\tr[k] = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase '1': case 'y': case 'yes': case 't': case 'true':\n\t\t\t\t\t\t\tr[k] = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\treturn r;\n\t\t\t\tdefault:\n\t\t\t\t\tr[k] = v;\n\t\t\t\t\treturn r;\n\t\t\t}\n\t\t}, store.createDefault());\n\t}\n\tstore.new = true;\n\teffect(() => { ctx.unsaved = store.changed; }, ctx.signal);\n\trenderForm(store, ctx.container, {\n\t\tmodel, editable: true,\n\t\tsignal: ctx.signal,\n\t\tenableLink: Boolean(layout?.enableLinkEditable ?? layout?.enableLink),\n\t\tlayout: layout?.layout,\n\t\ttype: layout?.type\n\t});\n\tconst creating = createState(false);\n\tasync function create() {\n\t\tif (creating.get()) { return; }\n\t\tcreating.set(true);\n\t\ttry {\n\t\t\treturn await currentModel.create(store.value);\n\t\t} finally {\n\t\t\tcreating.set(false);\n\t\t}\n\n\t}\n\tasync function createGoto() {\n\t\tconst data = await create();\n\t\tif (!data) { return; }\n\t\tctx.open(`.`, {\n\t\t\t...pageIdent,\n\t\t\t// @ts-ignore\n\t\t\tpage: undefined,\n\t\t\t// @ts-ignore\n\t\t\tcontinuation: undefined,\n\t\t\tsetting: undefined,\n\t\t\tinput: undefined,\n\t\t\tedit: false,\n\t\t\tid: data.id,\n\t\t}, true);\n\t\t// TODO: \n\t\tctx.destroy(true);\n\t}\n\n\tctx.renderSides(ctx.define?.sides || [], {\n\t\ttype: 'createDocument',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget document() { return store.value; },\n\t\tget store() { return store; },\n\t});\n\t/*** @type {Command.Options} */\n\tconst commandOptions = {\n\t\ttype: 'createDocument',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget document() { return store.value; },\n\t\tget store() { return store; },\n\t};\n\n\tconst createMenu = createMenuItem.bind(null, menu => {\n\t\tswitch (menu.command) {\n\t\t\tcase 'create': case 'createGoto': { return creating.get(); }\n\t\t}\n\t\treturn Command.disabled(commandOptions, menu);\n\t}, menu => {\n\t\treturn Command.toHref(commandOptions, menu);\n\t}, menu => {\n\t\tif (ctx.destroyed) { return; }\n\t\tswitch (menu.command) {\n\t\t\tcase 'create': return create();\n\t\t\tcase 'createGoto': return createGoto();\n\t\t}\n\t\treturn Command.exec(commandOptions, menu);\n\t});\n\n\tlet menus = ctx.define?.menus;\n\tif (!menus?.length) {\n\t\tmenus = [\n\t\t\t{ label: '创建', command: 'createGoto', children: [], buttons: [] },\n\t\t];\n\t}\n\tconst currentMenus = createComputed(() => {\n\t\tconst permissions = User.permissions;\n\t\tif (permissions.size < 0) { return menus; }\n\t\treturn Menu.filter(menus, menu => {\n\t\t\tconst permission = menu.permission;\n\t\t\tif (!permission) { return true; }\n\t\t\treturn filterPermission(permission, permissions);\n\t\t}, false);\n\t});\n\tconst header = ctx.createHeader();\n\teffect(() => header.setMenu(currentMenus.get(), createMenu), ctx.signal);\n\t// TODO: 从查询参数中获取初始数据\n\tif (pageIdent.id) {\n\t\tconst document = await currentModel.document(pageIdent.id);\n\t\tif (ctx.destroyed) { return; }\n\t\tconst label = runPattern(model?.labelPattern, document);\n\t\tif (label) {\n\t\t\tctx.title = `复制:${label}`;\n\t\t}\n\t\tstore.reset(document);\n\t} else {\n\t\tstore.reset(createDefault());\n\t}\n\tctx.loading = false;\n\tconst label = model?.label || model.id || '';\n\tctx.title = define?.title || (label ? `新建:${label}` : '新建');\n}\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function (ctx) {\n\tconst pageIdent = ctx.ident;\n\tif (pageIdent.type !== 'model') {\n\t\treturn;\n\t\t// TODO:\n\t}\n\tctx.title = ctx.define?.title || '新建';\n\tif ((pageIdent.input || '*') !== '*') {\n\t\treturn create(ctx);\n\t}\n\tctx.open(`${ctx.path}${ctx.search}${ctx.hash}`, {\n\t\t...pageIdent,\n\t\tsetting: false,\n\t\tinput: `${Math.random()}`.slice(2),\n\t}, true);\n\tctx.destroy(true);\n}\n","/** @import { PageContext } from '@yongdall/web' */\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function toMain(ctx) {\n\tctx.open(`.`, {\n\t\t...ctx.ident,\n\t\tpage: undefined,\n\t\tworkspace: undefined,\n\t\tcontinuation: undefined,\n\t\tsetting: undefined,\n\t\tid: undefined,\n\t}, true)\n\tctx.destroy(true);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../packages/pages/createMenuItem.mjs","../../packages/pages/list/index.mjs","../../packages/pages/details/index.mjs","../../packages/pages/edit/index.mjs","../../packages/pages/todo/index.mjs","../../packages/pages/settings/index.mjs","../../packages/pages/search/index.mjs","../../packages/pages/status/index.mjs","../../packages/pages/new/index.mjs","../../packages/pages/toMain.mjs"],"sourcesContent":["import { application, createComputed, effect } from '@yongdall/web';\n/** @import { Menu } from '@yongdall/web' */\n\n\n\n/**\n * \n * @param {(menu: Menu) => boolean} disabled \n * @param {(menu: Menu) => void} exec \n * @param {(menu: Menu) => string} toHref \n * @param {Menu} menu \n * @param {AbortSignal} signal \n * @param {boolean} [isButton] \n * @returns {HTMLElement}\n */\nexport default function createMenuItem(disabled, toHref, exec, menu, signal, isButton) {\n\tconst link = document.createElement('a');\n\tconst button = isButton ? document.createElement('button') : null;\n\tlink.appendChild(document.createTextNode(menu.label || menu.title || ''));\n\n\tconst { page, path, uri, command } = menu;\n\tconst isDisabled = createComputed(() => Boolean(disabled(menu)));\n\n\tconst href = createComputed(() => {\n\t\tif (page) {\n\t\t\treturn new URL(path?.[0] === '/' ? `${page}${path}` : `${page}/${path || ''}`, application.root).href;\n\t\t} else if (uri) {\n\t\t\treturn uri;\n\t\t} else if (command) {\n\t\t\treturn toHref(menu) || '';\n\t\t}\n\t\treturn null;\n\n\t});\n\n\teffect(() => {\n\t\tconst disabled = isDisabled.get();\n\t\t// @ts-ignore\n\t\tlink.disabled = disabled;\n\t\tlink.ariaDisabled = disabled ? 'true' : 'false';\n\t\tif (disabled) {\n\t\t\tlink.removeAttribute('tabindex');\n\t\t\tlink.removeAttribute('href');\n\t\t} else {\n\t\t\tlink.tabIndex = 0;\n\t\t\tconst hrefValue = href.get();\n\t\t\tif (hrefValue) { link.href = hrefValue; }\n\t\t}\n\t\tif (button) {\n\t\t\tbutton.disabled = disabled;\n\t\t}\n\t}, signal);\n\tlink.addEventListener('click', (e) => {\n\t\tif (!isDisabled.get()) { return; }\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t});\n\n\tconst hrefValue = href.get() !== null;\n\tif (hrefValue) {\n\t\tconst target = menu.target || (page ? '_self' : '');\n\t\tif (target) {\n\t\t\tlink.target = target;\n\t\t}\n\t}\n\tif (command) {\n\t\tlink.addEventListener('click', (e) => {\n\t\t\tif (isDisabled.get()) { return; }\n\t\t\tif (e.defaultPrevented) { return; }\n\t\t\tif (href.get()) { return }\n\t\t\texec(menu);\n\t\t});\n\t}\n\tif (button) {\n\t\tbutton.appendChild(link);\n\t\treturn button;\n\t}\n\treturn link;\n\n}\n","/** @import { Field, PageContext } from '@yongdall/web' */\nimport { Command, createComputed, createQuickFilters, createState, effect, filterPermission, getAuthorizations, getPrimaryFields, Menu, testPermissions, toId, User, watch } from '@yongdall/web';\nimport { Pagination, modelService, createShowField, runPattern, getPatternFields, showFilterDialog, Search } from '@yongdall/web';\nimport Plugin from '@yongdall/web/plugin';\nimport { Body, Check, Group, Header, Source, Tree } from '@neeloong/table';\nimport createMenuItem from '../createMenuItem.mjs';\n/** @import { FieldScriptConfiguration } from '@yongdall/web' */\n/** @import { ColumnOptions } from '@neeloong/table' */\nPlugin.importStyle('@neeloong/table/style.css');\n\nconst defaultLimit = 100;\n/**\n * \n * @param {PageContext} ctx \n */\nexport default async function (ctx) {\n\tconst pageIdent = ctx.ident;\n\tif (pageIdent.type !== 'model') { return ctx.setError(404); }\n\tif (!ctx.search.slice(1)) {\n\t\tconst defaultQuery = ctx.define?.defaultQuery;\n\t\tif (defaultQuery) {\n\t\t\tctx.setPath(`?${defaultQuery.replaceAll('#', '%23')}${ctx.hash}`, true);\n\t\t}\n\t}\n\tconst search = createComputed(() => Search.parse(ctx.search.slice(1)));\n\t/**\n\t * \n\t * @param {*} data \n\t */\n\tfunction setSearch(data) {\n\t\tconst s = Search.stringify({ ...search.get(), ...data }, true);\n\t\tif (s === ctx.search.slice(1)) { return; }\n\t\tctx.setPath(`?${s}`, true);\n\t}\n\tconst container = ctx.container;\n\tctx.panel = true;\n\n\tconst currentModel = modelService(pageIdent.model);\n\tctx.title = ctx.define?.title || '列表';\n\tctx.mode = 'flex';\n\tconst model = await currentModel.loadScript();\n\tif (ctx.destroyed) { return; }\n\tif (!model) { return ctx.setError(404); }\n\tconst label = model?.label || model.id || '';\n\tctx.title = ctx.define?.title || (label ? `列表:${label}` : '列表');\n\n\tconst idKey = '_';\n\tconst documents = createState(/** @type {any[]} */([]));\n\tconst source = new Source({ idKey, parentKey: 'parent' });\n\tconst checkedIds = createState(/** @type {any[]} */([]));\n\tsource.listen('checkedChange', v => checkedIds.set(v));\n\n\tconst checkedIdSet = createComputed(() => new Set(checkedIds.get()));\n\tconst checked = createComputed(() => {\n\t\tconst set = checkedIdSet.get();\n\t\tconst list = documents.get();\n\t\treturn list.filter(v => set.has(v[idKey]));\n\t});\n\n\n\n\tconst fields = model.fields;\n\tconst allFields = Object.entries(fields).filter(([, { type }]) => type && typeof type !== 'object');\n\tconst idFields = getPrimaryFields(model);\n\tconst labelPattern = model.labelPattern || '';\n\n\t/** @type {(Omit<Field.Show, 'field'> & {name: string; width?: number; title: string; field: FieldScriptConfiguration})[]} */\n\tconst allFieldsShow = [];\n\tfor (const { field, width, label, align, enableLink } of ctx.define?.fields || []) {\n\t\tif (!field) { continue; }\n\t\tif (!Object.hasOwn(fields, field)) { continue; }\n\t\tconst f = fields[field];\n\t\tif (!f) { continue; }\n\t\tconst type = f.type;\n\t\tif (!type || typeof type !== 'string') { continue; }\n\t\tallFieldsShow.push({\n\t\t\tname: field,\n\t\t\twidth: width || undefined,\n\t\t\ttitle: label || f.label || '',\n\t\t\tfield: f,\n\t\t\talign,\n\t\t\tenableLink\n\t\t});\n\t}\n\tif (!allFieldsShow.length) {\n\t\tfor (const [name, field] of allFields) {\n\t\t\tallFieldsShow.push({ name, title: field.label || '', field });\n\t\t\tif (allFieldsShow.length >= 4) { break; }\n\t\t}\n\t}\n\tconst queryFields = [...new Set([\n\t\t...allFieldsShow.map(v => v.name),\n\t\t...idFields,\n\t\t...getPatternFields(labelPattern),\n\t])];\n\n\n\teffect(() => source.setValue(documents.get()), ctx.signal);\n\t/** @type {ColumnOptions[]} */\n\tconst columns = allFieldsShow.map(({ name, field, title, width, align, enableLink }) => ({\n\t\tfield: name, title, width, resizable: true, render(c) {\n\t\t\tconst root = document.createElement('div');\n\t\t\tif (align) { root.style.textAlign = align; }\n\t\t\tlet f = createShowField(name, field, {enableLink}, c.data);\n\t\t\troot.appendChild(f.root);\n\t\t\treturn {\n\t\t\t\troot,\n\t\t\t\tdestroy() {\n\t\t\t\t\tf.destroy();\n\t\t\t\t},\n\t\t\t\tsetHidden() { },\n\t\t\t\tupdate(c) {\n\t\t\t\t\tf.destroy();\n\t\t\t\t\troot.innerHTML = '';\n\t\t\t\t\tf = createShowField(name, field, {enableLink}, c.data);\n\t\t\t\t\troot.appendChild(f.root);\n\t\t\t\t},\n\t\t\t};\n\t\t}, header() {\n\t\t\tconst root = document.createElement('span');\n\t\t\troot.innerText = title;\n\t\t\tif (align) { root.style.textAlign = align; }\n\t\t\treturn {\n\t\t\t\troot: root,\n\t\t\t\tupdate() {\n\n\t\t\t\t},\n\t\t\t\tdestroy() {\n\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}));\n\tcolumns.unshift({\n\t\tfield: '_', width: 200, resizable: true, render(c) {\n\t\t\tlet r = c.data;\n\t\t\tconst root = document.createElement('a');\n\t\t\tconst label = runPattern(labelPattern, r) || idFields.map(v => r[v]).join('$');\n\t\t\troot.href = ctx.toUrl('', {\n\t\t\t\t...pageIdent,\n\t\t\t\tpage: undefined,\n\t\t\t\tworkspace: undefined,\n\t\t\t\tcontinuation: undefined,\n\t\t\t\tsetting: false,\n\t\t\t\tid: idFields.map(v => r[v]).join('$'),\n\t\t\t});\n\t\t\troot.appendChild(document.createTextNode(label));\n\t\t\treturn {\n\t\t\t\troot,\n\t\t\t\tdestroy() { },\n\t\t\t\tsetHidden() { },\n\t\t\t\tupdate(c) {\n\t\t\t\t\tlet r = c.data;\n\t\t\t\t\tconst label = runPattern(labelPattern, r) || idFields.map(v => r[v]).join('$');\n\t\t\t\t\troot.innerHTML = '';\n\t\t\t\t\troot.href = ctx.toUrl('', {\n\t\t\t\t\t\t...pageIdent,\n\t\t\t\t\t\tpage: undefined,\n\t\t\t\t\t\tworkspace: undefined,\n\t\t\t\t\t\tcontinuation: undefined,\n\t\t\t\t\t\tsetting: false,\n\t\t\t\t\t\tid: idFields.map(v => r[v]).join('$'),\n\t\t\t\t\t});\n\t\t\t\t\troot.appendChild(document.createTextNode(label));\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t});\n\tcolumns.unshift({\n\t\tfield: '_', extensions: [Check], render(c) {\n\t\t\treturn {\n\t\t\t\troot: document.createElement('div'),\n\t\t\t\tdestroy() { },\n\t\t\t\tsetHidden() { },\n\t\t\t\tupdate() {\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t});\n\n\n\tconst group = source.createGroup(columns, 2);\n\n\tconst listTable = document.createElement('table');\n\tconst tableHeader = listTable.appendChild(document.createElement('div'));\n\ttableHeader.style.zIndex = '3';\n\ttableHeader.style.position = 'sticky'\n\ttableHeader.style.insetBlockStart = '0';\n\n\tgroup.createHeader(tableHeader);\n\tgroup.createBody(listTable.appendChild(document.createElement('div')));\n\n\tconst pagination = new Pagination();\n\twatch(() => search.get().limit, limit => pagination.size = limit || defaultLimit, { immediate: true, signal: ctx.signal });\n\twatch(() => search.get().page, page => pagination.page = page || 1, { immediate: true, signal: ctx.signal });\n\n\tpagination.listen(() => {\n\t\tconst { size, page } = pagination;\n\t\tsetSearch({\n\t\t\tlimit: size !== defaultLimit ? size : 0,\n\t\t\tpage: page > 1 ? page : 0,\n\t\t});\n\t});\n\tlet k = 0;\n\tlet disabled = createState(false);\n\tasync function request() {\n\t\tif (ctx.destroyed) { return; }\n\t\tif (disabled.get()) { return; }\n\t\ttry {\n\t\t\tdisabled.set(true);\n\t\t\tk++;\n\t\t\tconst v = k;\n\t\t\tconst query = search.get();\n\t\t\tconst define = ctx.define;\n\t\t\tconst list = await currentModel.query({\n\t\t\t\t...query,\n\t\t\t\tlimit: query.limit || defaultLimit,\n\t\t\t\twhere: [...query.where || [], ...define?.where || []],\n\t\t\t\tor: define?.orWhere,\n\t\t\t\tselect: queryFields,\n\t\t\t\ttotal: true,\n\t\t\t});\n\t\t\tif (ctx.destroyed) { return; }\n\t\t\tif (v !== k) { return; }\n\t\t\tctx.loading = false;\n\t\t\tdocuments.set(\n\t\t\t\tlist.documents.map(v => ({ ...v, _: toId(v, idFields) }))\n\t\t\t);\n\t\t\tpagination.total = list.total;\n\t\t} finally {\n\t\t\tdisabled.set(false);\n\n\t\t}\n\t}\n\tfunction updateFilters() {\n\t\tif (!model) { return; }\n\t\tshowFilterDialog(model, search.get().where, container).then(values => {\n\t\t\tsetSearch({ where: values });\n\t\t}).catch(() => { });\n\t}\n\n\tconst newSearch = createComputed(() => {\n\t\tconst list = [];\n\t\tfor (const v of [...search.get().where || [], ...ctx.define?.where || []]) {\n\t\t\tif (!Array.isArray(v)) { continue; }\n\t\t\tif (v.length === 2) { continue; }\n\t\t\tif (v[3]) { continue; }\n\t\t\tif (v[2]) { continue; }\n\t\t\tconst fields = v[0];\n\t\t\tif (fields.length !== 1) { continue; }\n\t\t\tconst [field] = fields;\n\t\t\tif (!field) { continue; }\n\t\t\tconst prop = typeof field === 'string' ? field : field[0];\n\t\t\tconst value = v[1];\n\t\t\tif (value == null) { continue; }\n\t\t\tlist.push(`${encodeURIComponent(prop)}=${encodeURIComponent(String(value))}`);\n\t\t}\n\t\tif (!list.length) { return ''; }\n\t\treturn `?${list.join('&')}`;\n\n\t});\n\n\tconst createURL = createComputed(() => ctx.toUrl(newSearch.get(), {\n\t\t...pageIdent,\n\t\tpage: undefined,\n\t\tworkspace: undefined,\n\t\tinput: '*',\n\t\tsetting: false,\n\t\tid: undefined,\n\t}));\n\tctx.renderSides(ctx.define?.sides || [], {\n\t\ttype: 'documents',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget checkedDocuments() { return checked.get(); },\n\t\tget documents() { return documents.get(); },\n\t\tget where() { return search.get().where; },\n\t\tset where(where) { setSearch({ where }); },\n\t\tget orWhere() { return search.get().orWhere; },\n\t\tset orWhere(orWhere) { setSearch({ orWhere }); },\n\t});\n\n\t/*** @type {Command.Options} */\n\tconst commandOptions = {\n\t\ttype: 'documents',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget checkedDocuments() { return checked.get(); },\n\t\tget documents() { return documents.get(); },\n\t};\n\t\tconst creatable = createComputed(() => {\n\t\t\treturn testPermissions('create', model.permissions || []);\n\t\t});\n\tconst createMenu = createMenuItem.bind(null, menu => {\n\t\tswitch (menu.command) {\n\t\t\tcase 'refresh': return disabled.get();\n\t\t\tcase 'refresh': return !creatable.get();\n\t\t}\n\t\treturn Command.disabled(commandOptions, menu);\n\t}, menu => {\n\t\tswitch (menu.command) {\n\t\t\tcase 'create': return createURL.get();\n\t\t}\n\t\treturn Command.toHref(commandOptions, menu);\n\t}, (menu) => {\n\t\tif (ctx.destroyed) { return; }\n\t\tswitch (menu.command) {\n\t\t\tcase 'refresh': return request();\n\t\t\tcase 'filter': return updateFilters();\n\t\t}\n\t\treturn Command.exec(commandOptions, menu);\n\t});\n\tlet menus = ctx.define?.menus;\n\tif (!menus?.length) {\n\t\tmenus = [\n\t\t\t{ label: '创建', command: 'create', children: [], buttons: [] },\n\t\t\tnull,\n\t\t\t{ label: '刷新', command: 'refresh', children: [], buttons: [] },\n\t\t\tnull,\n\t\t\t{ label: '过滤', command: 'filter', children: [], buttons: [] },\n\t\t];\n\t}\n\tconst authorizations = createComputed(() => {\n\t\tif (User.permissions.size < 0) { return { has() { return true; } }; }\n\t\treturn getAuthorizations(model.permissions || []);\n\n\t});\n\tconst currentMenus = createComputed(() => {\n\t\tconst permissions = User.permissions;\n\t\tif (permissions.size < 0) { return menus; }\n\t\treturn Menu.filter(menus, menu => {\n\t\t\tconst permission = menu.permission;\n\t\t\tif (!permission) { return true; }\n\t\t\treturn filterPermission(permission, permissions, {\n\t\t\t\thas(p) {\n\t\t\t\t\treturn authorizations.get().has(p);\n\t\t\t\t}\n\t\t\t});\n\t\t}, false);\n\t});\n\tconst header = ctx.createHeader();\n\teffect(() => header.setMenu(currentMenus.get(), createMenu), ctx.signal);\n\tconst headerContainer = header.container;\n\theaderContainer.classList.add('QueryFilters');\n\tcreateQuickFilters({\n\t\tget() { return search.get().where || []; },\n\t\tset(where) {\n\t\t\tsetSearch({ where });\n\t\t\trequest();\n\t\t},\n\t}, headerContainer, ctx.define?.filters || [], {\n\t\tfields: model.fields,\n\t\tsignal: ctx.signal,\n\t\tinline: true,\n\t});\n\tcontainer.appendChild(listTable);\n\tconst footer = ctx.createFooter();\n\tfooter.container.appendChild(pagination.root);\n\n\n\twatch(() => search.get(), request, { signal: ctx.signal });\n\tawait request();\n}\n","/** @import { PageContext } from '@yongdall/web' */\nimport { Command, createComputed, createState, createStore, effect, filterPermission, formLayoutsService, getAuthorizations, Menu, modelService, renderForm, runPattern, testPermissions, User, waitAbortSignal } from '@yongdall/web';\nimport createMenuItem from '../createMenuItem.mjs';\n\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default async function (ctx) {\n\tctx.title = '详情';\n\tconst pageIdent = ctx.ident;\n\tif (pageIdent.type !== 'model') { return ctx.setError(404); }\n\tctx.panel = true;\n\tconst currentModel = modelService(pageIdent.model);\n\tconst id = /** @type {string} */(pageIdent.id);\n\tconst currentDocument = currentModel.document(id);\n\tconst define = ctx.define;\n\tconst layoutId = define?.forms?.view?.layoutId;\n\tconst [model, layout] = await Promise.all([\n\t\tcurrentModel.loadScript(),\n\t\tlayoutId && formLayoutsService(layoutId).load().catch(() => null) || null\n\t]);\n\tif (ctx.destroyed) { return; }\n\tif (!model) { return ctx.setError(404); }\n\tconst label = model?.label || model.id || '';\n\tconst title = label ? `详情:${label}` : '详情';\n\tctx.title = title;\n\tconst store = createStore(model);\n\tstore.readonly = true;\n\trenderForm(store, ctx.container, {\n\t\tmodel,\n\t\teditable: false,\n\t\tsignal: ctx.signal,\n\t\tenableLink: Boolean(layout?.enableLink ?? true),\n\t\tlayout: layout?.layout,\n\t\ttype: layout?.type\n\t});\n\n\tconst loaded = createState(false);\n\tconst requesting = createState(false);\n\teffect(() => ctx.loading = requesting.get() || !loaded.get(), ctx.signal);\n\n\tasync function request() {\n\t\tif (requesting.get()) { return; }\n\t\tif (ctx.destroyed) { return; }\n\t\trequesting.set(true);\n\t\ttry {\n\t\t\tconst document = await currentDocument.get();\n\t\t\tif (ctx.destroyed) { return; }\n\t\t\tstore.reset(document);\n\t\t\tstore.readonly = true;\n\t\t\tctx.title = runPattern(model?.labelPattern, document) || title;\n\t\t} finally {\n\t\t\tloaded.set(true);\n\t\t\trequesting.set(false);\n\t\t}\n\t}\n\tctx.renderSides(ctx.define?.sides || [], {\n\t\ttype: 'document',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget document() { return store.value; },\n\t\tget store() { return store; },\n\t});\n\tconst destroyable = createComputed(() => {\n\t\treturn testPermissions('destroy', model.permissions || [], store.value);\n\t});\n\tasync function destroy() {\n\t\tif (!destroyable.get()) { return; }\n\t\tif (requesting.get()) { return; }\n\t\tif (ctx.destroyed) { return; }\n\t\tif (!confirm('确定要删除此文档吗?')) { return }\n\t\trequesting.set(true);\n\t\ttry {\n\t\t\tawait currentDocument.delete();\n\t\t\tctx.destroy();\n\t\t} finally {\n\t\t\trequesting.set(false);\n\t\t}\n\t}\n\t/*** @type {Command.Options} */\n\tconst commandOptions = {\n\t\ttype: 'document',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget document() { return store.value; },\n\t\tget store() { return store; },\n\t};\n\tconst createMenu = createMenuItem.bind(null, menu => {\n\t\tswitch (menu.command) {\n\t\t\tcase 'refresh': { return requesting.get() || !loaded.get(); }\n\t\t\tcase 'destroy': { return requesting.get() || !loaded.get() || !destroyable.get(); }\n\t\t}\n\t\treturn Command.disabled(commandOptions, menu);\n\t}, menu => {\n\t\tswitch (menu.command) {\n\t\t\tcase 'edit': return ctx.toUrl('', {\n\t\t\t\t...pageIdent,\n\t\t\t\tpage: undefined,\n\t\t\t\tworkspace: undefined,\n\t\t\t\tsetting: false,\n\t\t\t\tedit: true,\n\t\t\t});\n\t\t\tcase 'copy': return ctx.toUrl('', {\n\t\t\t\t...pageIdent,\n\t\t\t\tpage: undefined,\n\t\t\t\tworkspace: undefined,\n\t\t\t\tsetting: false,\n\t\t\t\tedit: true,\n\t\t\t\tinput: '*',\n\t\t\t});\n\t\t}\n\t\treturn Command.toHref(commandOptions, menu);\n\t}, menu => {\n\t\tif (ctx.destroyed) { return; }\n\t\tswitch (menu.command) {\n\t\t\tcase 'refresh': return request();\n\t\t\tcase 'destroy': return destroy();\n\t\t}\n\t\treturn Command.exec(commandOptions, menu);\n\t});\n\n\tlet menus = ctx.define?.menus;\n\tif (!menus?.length) {\n\t\tmenus = [\n\t\t\t{ label: '删除', command: 'destroy', children: [], buttons: [] },\n\t\t\tnull,\n\t\t\t{ label: '刷新', command: 'refresh', children: [], buttons: [] },\n\t\t\tnull,\n\t\t\t{ label: '编辑', command: 'edit', children: [], buttons: [] },\n\t\t];\n\t}\n\tconst authorizations = createComputed(() => {\n\t\tif (User.permissions.size < 0) { return { has() { return true; } }; }\n\t\treturn getAuthorizations(model.permissions || [], store.value);\n\t});\n\tconst currentMenus = createComputed(() => {\n\t\tconst permissions = User.permissions;\n\t\tif (permissions.size < 0) { return menus; }\n\t\treturn Menu.filter(menus, menu => {\n\t\t\tconst permission = menu.permission;\n\t\t\tif (!permission) { return true; }\n\t\t\treturn filterPermission(permission, permissions, {\n\t\t\t\thas(p) {\n\t\t\t\t\treturn authorizations.get().has(p);\n\t\t\t\t}\n\t\t\t});\n\t\t}, false);\n\t});\n\tconst header = ctx.createHeader();\n\teffect(() => header.setMenu(currentMenus.get(), createMenu), ctx.signal);\n\n\n\n\tawait request();\n}\n","/** @import { PageContext } from '@yongdall/web' */\nimport { Command, createComputed, createState, createStore, effect, filterPermission, formLayoutsService, getAuthorizations, Menu, modelService, renderForm, runPattern, testPermissions, User, waitAbortSignal } from '@yongdall/web';\nimport createMenuItem from '../createMenuItem.mjs';\n\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default async function (ctx) {\n\tctx.title = '编辑';\n\tconst pageIdent = ctx.ident;\n\tif (pageIdent.type !== 'model') { return ctx.setError(404); }\n\tctx.panel = true;\n\tconst currentModel = modelService(pageIdent.model);\n\tconst id = /** @type {string} */(pageIdent.id);\n\tconst currentDocument = currentModel.document(id);\n\tconst define = ctx.define;\n\tconst layoutId = define?.forms?.edit?.layoutId;\n\tconst [model, layout] = await Promise.all([\n\t\tcurrentModel.loadScript(),\n\t\tlayoutId && formLayoutsService(layoutId).load().catch(() => null) || null\n\t]);\n\tif (ctx.destroyed) { return; }\n\tif (!model) { return ctx.setError(404); }\n\tconst label = model?.label || model.id || '';\n\tconst title = label ? `编辑:${label}` : '编辑';\n\tctx.title = title;\n\tconst store = createStore(model);\n\teffect(() => { ctx.unsaved = store.changed; }, ctx.signal);\n\trenderForm(store, ctx.container, {\n\t\tmodel,\n\t\teditable: true,\n\t\tsignal: ctx.signal,\n\t\tenableLink: Boolean(layout?.enableLinkEditable ?? layout?.enableLink),\n\t\tlayout: layout?.layout,\n\t\ttype: layout?.type\n\t});\n\n\n\tconst loaded = createState(false);\n\tconst requesting = createState(false);\n\teffect(() => ctx.loading = requesting.get() || !loaded.get(), ctx.signal);\n\n\n\n\t/**\n\t * \n\t * @param {Record<string, any>} document \n\t */\n\tfunction setTitle(document) {\n\t\tconst label = runPattern(model?.labelPattern, document);\n\t\tif (label) {\n\t\t\tctx.title = label ? `编辑:${label}` : '编辑';\n\t\t} else {\n\t\t\tctx.title = title;\n\t\t}\n\t}\n\n\tasync function request() {\n\t\tif (requesting.get()) { return; }\n\t\tif (ctx.destroyed) { return; }\n\t\trequesting.set(true);\n\t\ttry {\n\t\t\tconst document = await currentDocument.get();\n\t\t\tif (ctx.destroyed) { return; }\n\t\t\tstore.reset(document, false);\n\t\t\tsetTitle(document);\n\t\t} finally {\n\t\t\tloaded.set(true);\n\t\t\trequesting.set(false);\n\t\t}\n\t}\n\tasync function save() {\n\t\tif (requesting.get() || !loaded.get()) { return; }\n\t\tif (ctx.destroyed) { return; }\n\t\trequesting.set(true);\n\t\ttry {\n\t\t\tconst data = await currentDocument.update(store.value);\n\t\t\tif (!data) { return; }\n\t\t\tsetTitle(data);\n\t\t\tif (ctx.destroyed) { return; }\n\t\t\tstore.reset(data, false);\n\t\t} finally {\n\t\t\trequesting.set(false);\n\t\t}\n\t}\n\n\tctx.renderSides(ctx.define?.sides || [], {\n\t\ttype: 'editDocument',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget document() { return store.value; },\n\t\tget store() { return store; },\n\t});\n\tconst destroyable = createComputed(() => {\n\t\tif (User.permissions.size < 0) { return { has() { return true; } }; }\n\t\treturn testPermissions('destroy', model.permissions || []);\n\t});\n\tasync function destroy() {\n\t\tif (!destroyable.get()) { return; }\n\t\tif (requesting.get()) { return; }\n\t\tif (ctx.destroyed) { return; }\n\t\tif (!confirm('确定要删除此文档吗?')) { return }\n\t\trequesting.set(true);\n\t\ttry {\n\t\t\tawait currentDocument.delete();\n\t\t\tctx.destroy();\n\t\t} finally {\n\t\t\trequesting.set(false);\n\t\t}\n\t}\n\t/*** @type {Command.Options} */\n\tconst commandOptions = {\n\t\ttype: 'editDocument',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget document() { return store.value; },\n\t\tget store() { return store; },\n\t};\n\tconst createMenu = createMenuItem.bind(null, menu => {\n\t\tswitch (menu.command) {\n\t\t\tcase 'save': case 'refresh': { return requesting.get() || !loaded.get(); }\n\t\t\tcase 'destroy': { return requesting.get() || !loaded.get() || !destroyable.get(); }\n\t\t}\n\t\treturn Command.disabled(commandOptions, menu);\n\t}, menu => {\n\t\tswitch (menu.command) {\n\t\t\tcase 'copy': return ctx.toUrl('', {\n\t\t\t\t...pageIdent,\n\t\t\t\tpage: undefined,\n\t\t\t\tworkspace: undefined,\n\t\t\t\tsetting: false,\n\t\t\t\tedit: true,\n\t\t\t\tinput: '*',\n\t\t\t});\n\t\t}\n\t\treturn Command.toHref(commandOptions, menu);\n\t}, menu => {\n\t\tif (ctx.destroyed) { return; }\n\t\tswitch (menu.command) {\n\t\t\tcase 'refresh': return request();\n\t\t\tcase 'save': return save();\n\t\t\tcase 'destroy': return destroy();\n\t\t}\n\t\treturn Command.exec(commandOptions, menu);\n\t});\n\n\tlet menus = ctx.define?.menus;\n\tif (!menus?.length) {\n\t\tmenus = [\n\t\t\t{ label: '删除', command: 'destroy', children: [], buttons: [] },\n\t\t\tnull,\n\t\t\t{ label: '刷新', command: 'refresh', children: [], buttons: [] },\n\t\t\tnull,\n\t\t\t{ label: '更新', command: 'save', children: [], buttons: [] },\n\t\t];\n\t}\n\tconst authorizations = createComputed(() => {\n\t\tif (User.permissions.size < 0) { return { has() { return true; } }; }\n\t\treturn getAuthorizations(model.permissions || [], store.value);\n\t});\n\tconst currentMenus = createComputed(() => {\n\t\tconst permissions = User.permissions;\n\t\tif (permissions.size < 0) { return menus; }\n\t\treturn Menu.filter(menus, menu => {\n\t\t\tconst permission = menu.permission;\n\t\t\tif (!permission) { return true; }\n\t\t\treturn filterPermission(permission, permissions, {\n\t\t\t\thas(p) {\n\t\t\t\t\treturn authorizations.get().has(p);\n\t\t\t\t}\n\t\t\t});\n\t\t}, false);\n\t});\n\tconst header = ctx.createHeader();\n\teffect(() => header.setMenu(currentMenus.get(), createMenu), ctx.signal);\n\tawait request();\n}\n","/** @import { PageContext } from '@yongdall/web' */\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function (ctx) {\n\tctx.title = '!代办'\n\tctx.panel = true;\n\tctx.container.appendChild(document.createTextNode('!代办'))\n\tctx.loading = false;\n}\n","/** @import { PageContext } from '@yongdall/web' */\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function (ctx) {\n\tctx.title = '设置'\n\tctx.panel = true;\n\tctx.container.appendChild(document.createTextNode('设置'))\n\tctx.loading = false;\n}\n","/** @import { PageContext } from '@yongdall/web' */\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function (ctx) {\n\tctx.title = '搜索'\n\tctx.panel = true;\n\tctx.container.appendChild(document.createTextNode('搜索'))\n\tctx.loading = false;\n}\n","/** @import { PageContext } from '@yongdall/web' */\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function (ctx) {\n\tctx.title = '状态管理'\n\tctx.panel = true;\n\tctx.container.appendChild(document.createTextNode('状态管理'))\n\tctx.loading = false;\n}\n","/** @import { PageContext } from '@yongdall/web' */\nimport { createStore, Command, formLayoutsService, modelService, renderForm, runPattern, Menu, User, filterPermission, createComputed, createState, effect, waitAbortSignal } from '@yongdall/web';\nimport createMenuItem from '../createMenuItem.mjs';\n\n/**\n * \n * @param {PageContext} ctx \n */\nasync function create(ctx) {\n\tconst pageIdent = ctx.ident;\n\tif (pageIdent.type !== 'model') { return ctx.setError(404); }\n\tconst currentModel = modelService(pageIdent.model);\n\tctx.panel = true;\n\tconst define = ctx.define;\n\tconst layoutId = define?.forms?.new?.layoutId;\n\tconst [model, layout] = await Promise.all([\n\t\tcurrentModel.loadScript(),\n\t\tlayoutId && formLayoutsService(layoutId).load().catch(() => null) || null\n\t]);\n\tif (ctx.destroyed) { return; }\n\tif (!model) { return ctx.setError(404); }\n\tconst store = createStore(model);\n\tconst createDefault = () => {\n\t\tconst fields = model.fields;\n\t\treturn [...new URLSearchParams(ctx.search.slice(1))].reduceRight((r, [k, v]) => {\n\t\t\tconst field = Object.hasOwn(fields, k) && fields[k];\n\t\t\tif (!field) { return r; }\n\t\t\tconst type = field?.type;\n\t\t\tif (!type || typeof type !== 'string') { return r; }\n\t\t\tif (!v && field.array) { return r; }\n\t\t\tif (!v && field.nullable) {\n\t\t\t\tr[k] = null;\n\t\t\t\treturn r;\n\t\t\t}\n\t\t\tswitch (type) {\n\t\t\t\tcase 'i16':\n\t\t\t\tcase 'i32':\n\t\t\t\t\tif (/^[+-]?\\d+$/.test(v)) { r[k] = Number.parseInt(v); }\n\t\t\t\t\treturn r;\n\t\t\t\tcase 'i64':\n\t\t\t\t\tif (/^[+-]?\\d+$/.test(v)) { r[k] = v; }\n\t\t\t\t\treturn r;\n\t\t\t\tcase 'f32':\n\t\t\t\tcase 'f64':\n\t\t\t\t\tif (/^[+-]?\\d+(\\.\\d*)?([eE][+-]?\\d*)$/.test(v)) { r[k] = Number.parseFloat(v); }\n\t\t\t\t\treturn r;\n\t\t\t\tcase 'decimal':\n\t\t\t\tcase 'numeric':\n\t\t\t\tcase 'money':\n\t\t\t\t\tif (/^[+-]?\\d+(\\.\\d*)?([eE][+-]?\\d*)$/.test(v)) { r[k] = v; }\n\t\t\t\t\treturn r;\n\t\t\t\tcase 'bool':\n\t\t\t\t\tswitch (v.toLowerCase()) {\n\t\t\t\t\t\tcase '0': case 'n': case 'no': case 'f': case 'false':\n\t\t\t\t\t\t\tr[k] = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase '1': case 'y': case 'yes': case 't': case 'true':\n\t\t\t\t\t\t\tr[k] = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\treturn r;\n\t\t\t\tdefault:\n\t\t\t\t\tr[k] = v;\n\t\t\t\t\treturn r;\n\t\t\t}\n\t\t}, store.createDefault());\n\t}\n\tstore.new = true;\n\teffect(() => { ctx.unsaved = store.changed; }, ctx.signal);\n\trenderForm(store, ctx.container, {\n\t\tmodel, editable: true,\n\t\tsignal: ctx.signal,\n\t\tenableLink: Boolean(layout?.enableLinkEditable ?? layout?.enableLink),\n\t\tlayout: layout?.layout,\n\t\ttype: layout?.type\n\t});\n\tconst creating = createState(false);\n\tasync function create() {\n\t\tif (creating.get()) { return; }\n\t\tcreating.set(true);\n\t\ttry {\n\t\t\treturn await currentModel.create(store.value);\n\t\t} finally {\n\t\t\tcreating.set(false);\n\t\t}\n\n\t}\n\tasync function createGoto() {\n\t\tconst data = await create();\n\t\tif (!data) { return; }\n\t\tctx.open(`.`, {\n\t\t\t...pageIdent,\n\t\t\t// @ts-ignore\n\t\t\tpage: undefined,\n\t\t\t// @ts-ignore\n\t\t\tcontinuation: undefined,\n\t\t\tsetting: undefined,\n\t\t\tinput: undefined,\n\t\t\tedit: false,\n\t\t\tid: data.id,\n\t\t}, true);\n\t\t// TODO: \n\t\tctx.destroy(true);\n\t}\n\n\tctx.renderSides(ctx.define?.sides || [], {\n\t\ttype: 'createDocument',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget document() { return store.value; },\n\t\tget store() { return store; },\n\t});\n\t/*** @type {Command.Options} */\n\tconst commandOptions = {\n\t\ttype: 'createDocument',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget document() { return store.value; },\n\t\tget store() { return store; },\n\t};\n\n\tconst createMenu = createMenuItem.bind(null, menu => {\n\t\tswitch (menu.command) {\n\t\t\tcase 'create': case 'createGoto': { return creating.get(); }\n\t\t}\n\t\treturn Command.disabled(commandOptions, menu);\n\t}, menu => {\n\t\treturn Command.toHref(commandOptions, menu);\n\t}, menu => {\n\t\tif (ctx.destroyed) { return; }\n\t\tswitch (menu.command) {\n\t\t\tcase 'create': return create();\n\t\t\tcase 'createGoto': return createGoto();\n\t\t}\n\t\treturn Command.exec(commandOptions, menu);\n\t});\n\n\tlet menus = ctx.define?.menus;\n\tif (!menus?.length) {\n\t\tmenus = [\n\t\t\t{ label: '创建', command: 'createGoto', children: [], buttons: [] },\n\t\t];\n\t}\n\tconst currentMenus = createComputed(() => {\n\t\tconst permissions = User.permissions;\n\t\tif (permissions.size < 0) { return menus; }\n\t\treturn Menu.filter(menus, menu => {\n\t\t\tconst permission = menu.permission;\n\t\t\tif (!permission) { return true; }\n\t\t\treturn filterPermission(permission, permissions);\n\t\t}, false);\n\t});\n\tconst header = ctx.createHeader();\n\teffect(() => header.setMenu(currentMenus.get(), createMenu), ctx.signal);\n\t// TODO: 从查询参数中获取初始数据\n\tif (pageIdent.id) {\n\t\tconst document = await currentModel.document(pageIdent.id);\n\t\tif (ctx.destroyed) { return; }\n\t\tconst label = runPattern(model?.labelPattern, document);\n\t\tif (label) {\n\t\t\tctx.title = `复制:${label}`;\n\t\t}\n\t\tstore.reset(document);\n\t} else {\n\t\tstore.reset(createDefault());\n\t}\n\tctx.loading = false;\n\tconst label = model?.label || model.id || '';\n\tctx.title = define?.title || (label ? `新建:${label}` : '新建');\n}\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function (ctx) {\n\tconst pageIdent = ctx.ident;\n\tif (pageIdent.type !== 'model') {\n\t\treturn;\n\t\t// TODO:\n\t}\n\tctx.title = ctx.define?.title || '新建';\n\tif ((pageIdent.input || '*') !== '*') {\n\t\treturn create(ctx);\n\t}\n\tctx.open(`${ctx.path}${ctx.search}${ctx.hash}`, {\n\t\t...pageIdent,\n\t\tsetting: false,\n\t\tinput: `${Math.random()}`.slice(2),\n\t}, true);\n\tctx.destroy(true);\n}\n","/** @import { PageContext } from '@yongdall/web' */\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function toMain(ctx) {\n\tctx.open(`.`, {\n\t\t...ctx.ident,\n\t\tpage: undefined,\n\t\tworkspace: undefined,\n\t\tcontinuation: undefined,\n\t\tsetting: undefined,\n\t\tid: undefined,\n\t}, true)\n\tctx.destroy(true);\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yongdall/pages",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "exports": {
5
5
  ".": "./index.mjs"
6
6
  },