waibu-db 1.1.7 → 1.1.9

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.
@@ -0,0 +1,15 @@
1
+ <c:grid-row gutter="2">
2
+ <c:grid-col col="6-md">
3
+ <c:wdb-btn-back />
4
+ </c:grid-col>
5
+ <c:grid-col col="6-md">
6
+ <c:div flex="justify-content:end-md align-items:center">
7
+ <c:btn type="reset" color="secondary" t:content="reset" />
8
+ <c:btn type="submit" color="primary" t:content="submit" margin="start-2"/>
9
+ </c:div>
10
+ </c:grid-col>
11
+ <c:grid-col col="12" margin="top-4">
12
+ <c:form-switch name="_addmore" t:label="addMoreAfterSubmit"/>
13
+ <c:form-switch name="_cloneprev" t:label="clonePrevious"/>
14
+ </c:grid-col>
15
+ </c:grid-row>
@@ -0,0 +1,17 @@
1
+ <c:grid-row gutter="2">
2
+ <c:grid-col col="6-lg">
3
+ <c:wdb-btn-back />
4
+ <% if (schema.disabled.includes('remove') && schema.disabled.includes('update')) { %>
5
+ <c:wdb-btn-export selector="#main-form" handler="details" launch-margin="start-1"/>
6
+ <% } else { %>
7
+ <c:btn-group margin="start-1">
8
+ <c:wdb-btn-edit />
9
+ <c:wdb-btn-clone />
10
+ <c:wdb-btn-export selector="#main-form" handler="details" launch-on-end/>
11
+ </c:btn-group>
12
+ <% } %>
13
+ </c:grid-col>
14
+ <c:grid-col col="6-lg" flex="justify-content:end-lg align-items:center">
15
+ <c:wdb-btn-delete/>
16
+ </c:grid-col>
17
+ </c:grid-row>
@@ -0,0 +1,15 @@
1
+ <c:grid-row gutter="2">
2
+ <c:grid-col col="6-lg">
3
+ <c:wdb-btn-back />
4
+ <c:btn-group margin="start-1">
5
+ <c:wdb-btn-details />
6
+ <c:wdb-btn-clone/>
7
+ <c:wdb-btn-export selector="#main-form" handler="edit" launch-on-end/>
8
+ </c:btn-group>
9
+ </c:grid-col>
10
+ <c:grid-col col="6-lg" flex="justify-content:end-lg align-items:center">
11
+ <c:wdb-btn-delete/>
12
+ <c:btn type="reset" color="secondary" t:content="reset" margin="start-2"/>
13
+ <c:btn type="submit" color="primary" t:content="submit" margin="start-2"/>
14
+ </c:grid-col>
15
+ </c:grid-row>
@@ -1,5 +1,5 @@
1
1
  <% for (const l of schema.view.layout) { %>
2
- <c:fieldset card <% if (l.name[0] !== '_') print('t:legend="' + l.name + '"') %> grid-gutter="2">
2
+ <c:fieldset <%= schema.view.card === false ? '' : 'card' %> <% if (l.name[0] !== '_') print('t:legend="' + l.name + '"') %> grid-gutter="2">
3
3
  <% for (const w of l.widgets) {
4
4
  const prop = _.find(schema.properties, { name: w.name })
5
5
  const attr = []
@@ -0,0 +1,16 @@
1
+ <c:grid-row gutter="3">
2
+ <c:grid-col col="4-lg">
3
+ <c:wdb-query />
4
+ </c:grid-col>
5
+ <c:grid-col col="8-lg" flex="justify-content:end-lg">
6
+ <c:btn-group margin="end-2">
7
+ <c:wdb-btn-add text="nowrap"/>
8
+ <c:wdb-btn-edit on-list menu="end"/>
9
+ </c:btn-group>
10
+ <c:wdb-btn-delete on-list margin="end-2" />
11
+ <c:btn-group>
12
+ <c:wdb-btn-export selector="#main-table" handler="list"/>
13
+ <c:wdb-btn-columns menu="end"/>
14
+ </c:btn-group>
15
+ </c:grid-col>
16
+ </c:grid-row>
@@ -1,19 +1,5 @@
1
1
  <c:form>
2
2
  <!-- include waibuDb.partial:/crud/_form.html -->
3
- <c:grid-row gutter="2" margin="top-2">
4
- <c:grid-col col="6-md">
5
- <c:wdb-btn-back />
6
- </c:grid-col>
7
- <c:grid-col col="6-md">
8
- <c:div flex="justify-content:end-md align-items:center">
9
- <c:btn type="reset" color="secondary" t:content="reset" />
10
- <c:btn type="submit" color="primary" t:content="submit" margin="start-2"/>
11
- </c:div>
12
- </c:grid-col>
13
- <c:grid-col col="12" margin="top-4">
14
- <c:form-switch name="_addmore" t:label="addMoreAfterSubmit"/>
15
- <c:form-switch name="_cloneprev" t:label="clonePrevious"/>
16
- </c:grid-col>
17
- </c:grid-row>
3
+ <!-- include waibuDb.partial:/crud/_add-btns.html -->
18
4
  </c:form>
19
5
  <!-- include waibuDb.partial:/crud/_addons.html -->
@@ -1,21 +1,5 @@
1
1
  <c:div id="main-form">
2
2
  <!-- include waibuDb.partial:/crud/_form.html -->
3
3
  </c:div>
4
- <c:grid-row gutter="2" margin="top-2">
5
- <c:grid-col col="6-lg">
6
- <c:wdb-btn-back />
7
- <% if (schema.disabled.includes('remove') && schema.disabled.includes('update')) { %>
8
- <c:wdb-btn-export selector="#main-form" handler="details" launch-margin="start-1"/>
9
- <% } else { %>
10
- <c:btn-group margin="start-1">
11
- <c:wdb-btn-edit />
12
- <c:wdb-btn-clone />
13
- <c:wdb-btn-export selector="#main-form" handler="details" launch-on-end/>
14
- </c:btn-group>
15
- <% } %>
16
- </c:grid-col>
17
- <c:grid-col col="6-lg" flex="justify-content:end-lg align-items:center">
18
- <c:wdb-btn-delete/>
19
- </c:grid-col>
20
- </c:grid-row>
4
+ <!-- include waibuDb.partial:/crud/_details-btns.html -->
21
5
  <!-- include waibuDb.partial:/crud/_addons.html -->
@@ -1,19 +1,5 @@
1
1
  <c:form id="main-form">
2
2
  <!-- include waibuDb.partial:/crud/_form.html -->
3
- <c:grid-row gutter="2" margin="top-2">
4
- <c:grid-col col="6-lg">
5
- <c:wdb-btn-back />
6
- <c:btn-group margin="start-1">
7
- <c:wdb-btn-details />
8
- <c:wdb-btn-clone/>
9
- <c:wdb-btn-export selector="#main-form" handler="edit" launch-on-end/>
10
- </c:btn-group>
11
- </c:grid-col>
12
- <c:grid-col col="6-lg" flex="justify-content:end-lg align-items:center">
13
- <c:wdb-btn-delete/>
14
- <c:btn type="reset" color="secondary" t:content="reset" margin="start-2"/>
15
- <c:btn type="submit" color="primary" t:content="submit" margin="start-2"/>
16
- </c:grid-col>
17
- </c:grid-row>
3
+ <!-- include waibuDb.partial:/crud/_edit-btns.html -->
18
4
  </c:form>
19
5
  <!-- include waibuDb.partial:/crud/_addons.html -->
@@ -1,19 +1,4 @@
1
- <c:grid-row gutter="3" margin="bottom-3">
2
- <c:grid-col col="4-lg">
3
- <c:wdb-query />
4
- </c:grid-col>
5
- <c:grid-col col="8-lg" flex="justify-content:end-lg">
6
- <c:btn-group margin="end-2">
7
- <c:wdb-btn-add text="nowrap"/>
8
- <c:wdb-btn-edit on-list menu="end"/>
9
- </c:btn-group>
10
- <c:wdb-btn-delete on-list margin="end-2" />
11
- <c:btn-group>
12
- <c:wdb-btn-export selector="#main-table" handler="list"/>
13
- <c:wdb-btn-columns menu="end"/>
14
- </c:btn-group>
15
- </c:grid-col>
16
- </c:grid-row>
1
+ <!-- include waibuDb.partial:/crud/_list-btns.html -->
17
2
  <c:wdb-table id="main-table" border body-divider strip responsive />
18
3
  <!-- include waibuDb.partial:/crud/_list-footer.html -->
19
4
  <!-- include waibuDb.partial:/crud/_addons.html -->
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "waibu-db",
3
- "version": "1.1.7",
3
+ "version": "1.1.9",
4
4
  "description": "DB Helper",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -5,6 +5,7 @@ const defReadonly = ['id', 'createdAt', 'updatedAt']
5
5
  function getCommons (action, schema, ext, opts = {}) {
6
6
  const { map, get, set, without, uniq } = this.lib._
7
7
  const label = get(ext, `view.${action}.label`, get(ext, 'common.label', {}))
8
+ const card = get(ext, `view.${action}.card`, get(ext, 'common.card', true))
8
9
  const hidden = get(ext, `view.${action}.hidden`, get(ext, 'common.hidden', []))
9
10
  hidden.push(...schema.hidden, ...(opts.hidden ?? []))
10
11
  const allFields = without(map(schema.properties, 'name'), ...hidden)
@@ -18,7 +19,7 @@ function getCommons (action, schema, ext, opts = {}) {
18
19
  }
19
20
  fields = uniq(without(fields, ...hidden))
20
21
  if (action !== 'add' && !fields.includes('id')) fields.unshift('id')
21
- return { fields, allFields, label }
22
+ return { fields, allFields, label, card }
22
23
  }
23
24
 
24
25
  function autoLayout ({ action, schema, ext, layout, allWidgets }) {
@@ -37,15 +38,18 @@ function autoLayout ({ action, schema, ext, layout, allWidgets }) {
37
38
  }
38
39
 
39
40
  function customLayout ({ action, schema, ext, layout, allWidgets, readonly }) {
40
- const { find, omit, merge, isString } = this.lib._
41
+ const { find, omit, merge, isString, isEmpty } = this.lib._
41
42
  const items = [...layout]
42
43
  layout.splice(0, layout.length)
43
44
  for (const item of items) {
44
45
  const widgets = []
45
46
  for (let f of item.fields) {
46
47
  if (isString(f)) {
47
- const [name, col, label] = f.split(':')
48
- f = { name, col, label }
48
+ const [name, col, label, component] = f.split(':')
49
+ f = { name }
50
+ f.label = isEmpty(label) ? `field.${name}` : label
51
+ if (!isEmpty(col)) f.col = col
52
+ if (!isEmpty(component)) f.component = component
49
53
  }
50
54
  const widget = find(allWidgets, { name: f.name })
51
55
  if (!widget && !f.component) continue
@@ -59,7 +63,7 @@ function customLayout ({ action, schema, ext, layout, allWidgets, readonly }) {
59
63
 
60
64
  function applyLayout (action, schema, ext) {
61
65
  const { set, get, isEmpty, map, find } = this.lib._
62
- const { fields, label } = getCommons.call(this, action, schema, ext)
66
+ const { fields, label, card } = getCommons.call(this, action, schema, ext)
63
67
  const layout = get(ext, `view.${action}.layout`, get(ext, 'common.layout', []))
64
68
  const readonly = get(ext, `view.${action}.readonly`, get(ext, 'common.readonly', defReadonly))
65
69
  const allWidgets = map(fields, f => {
@@ -91,6 +95,7 @@ function applyLayout (action, schema, ext) {
91
95
  set(schema, 'view.layout', layout)
92
96
  set(schema, 'view.fields', fields)
93
97
  set(schema, 'view.label', label)
98
+ set(schema, 'view.card', card)
94
99
  }
95
100
 
96
101
  const handler = {
@@ -121,13 +126,15 @@ const handler = {
121
126
  }
122
127
 
123
128
  async function getSchemaExt (model, view, opts) {
124
- const { readConfig } = this.app.bajo
129
+ const { readConfig, defaultsDeep } = this.app.bajo
125
130
  const { getSchema } = this.app.dobo
126
131
  const { pick } = this.lib._
127
132
 
128
133
  let schema = getSchema(model)
129
134
  const base = path.basename(schema.file, path.extname(schema.file))
130
- const ext = await readConfig(`${schema.ns}:/waibuDb/schema/${base}.*`, { ignoreError: true })
135
+ let ext = await readConfig(`${schema.ns}:/waibuDb/schema/${base}.*`, { ignoreError: true })
136
+ const over = await readConfig(`main:/waibuDb/extend/${schema.ns}/schema/${base}.*`, { ignoreError: true })
137
+ ext = defaultsDeep(over, ext)
131
138
  await handler[view].call(this, schema, ext, opts)
132
139
  schema = pick(schema, ['name', 'properties', 'indexes', 'disabled', 'attachment', 'sortables', 'view'])
133
140
  return { schema, ext }
@@ -1,12 +1,10 @@
1
1
  import prepCrud from '../../../lib/prep-crud.js'
2
2
 
3
3
  async function get ({ model, req, reply, id, options = {} }) {
4
- const { recordFindOne, attachmentFind } = this.app.dobo
5
- const { name, filter, opts, attachment, stats, mimeType } = prepCrud.call(this, { model, req, reply, id, options, args: ['model', 'id'] })
6
- filter.query = { $and: [filter.query ?? {}, { id: id ?? req.params.id }] }
7
- opts.dataOnly = true
4
+ const { recordFindOne } = this.app.dobo
5
+ const { name, recId, filter, opts } = prepCrud.call(this, { model, req, reply, id, options, args: ['model', 'id'] })
6
+ filter.query = { $and: [filter.query ?? {}, { id: recId }] }
8
7
  const ret = await recordFindOne(name, filter, opts)
9
- if (attachment) ret.data._attachment = await attachmentFind(name, ret.id, { stats, mimeType })
10
8
  return ret
11
9
  }
12
10
 
@@ -18,6 +18,7 @@ async function echarts () {
18
18
  right: 0
19
19
  }
20
20
  }
21
+ this.params.tag = 'div'
21
22
  }
22
23
 
23
24
  build = async () => {