ywana-core8 0.0.572 → 0.0.573
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.
- package/dist/index.cjs +91 -107
- package/dist/index.cjs.map +1 -1
- package/dist/index.modern.js +91 -107
- package/dist/index.modern.js.map +1 -1
- package/dist/index.umd.js +91 -107
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/domain/ContentEditor.js +4 -3
- package/src/domain/TablePage.js +6 -0
- package/src/domain/TablePage2.js +28 -29
- package/src/site/site.test.js +9 -10
package/package.json
CHANGED
@@ -393,7 +393,7 @@ export const MultiSelectionEditor = ({ field, value = [], content, onChange }) =
|
|
393
393
|
*/
|
394
394
|
export const CollectionEditor = ({ field, value = [], onChange, onReload }) => {
|
395
395
|
|
396
|
-
const { id, item, label, Feeder, Renderer, Adder = true, editable = true } = field
|
396
|
+
const { id, item, label, groupBy="field1", Feeder, Renderer, Adder = true, editable = true } = field
|
397
397
|
|
398
398
|
function add(rows) {
|
399
399
|
if (onChange) {
|
@@ -421,7 +421,7 @@ export const CollectionEditor = ({ field, value = [], onChange, onReload }) => {
|
|
421
421
|
if (onReload) onReload()
|
422
422
|
}
|
423
423
|
|
424
|
-
|
424
|
+
/* const columns = Object.values(item)
|
425
425
|
.filter(field => field.column === true)
|
426
426
|
.map((item) => ({ ...item, onChange: change }))
|
427
427
|
columns.push({ id: 'actions', label: 'Actions' })
|
@@ -435,6 +435,7 @@ export const CollectionEditor = ({ field, value = [], onChange, onReload }) => {
|
|
435
435
|
}))
|
436
436
|
|
437
437
|
const table = { columns, rows }
|
438
|
+
*/
|
438
439
|
|
439
440
|
return (
|
440
441
|
<div className='collection-editor'>
|
@@ -442,7 +443,7 @@ export const CollectionEditor = ({ field, value = [], onChange, onReload }) => {
|
|
442
443
|
Renderer ?
|
443
444
|
<Renderer field={field} value={value} onRemove={remove} onChange={onChange} onReload={reload} />
|
444
445
|
// : <DataTable {...table} editable={editable} />
|
445
|
-
: <TableEditor icon={"info"} title={label} data={value} schema={item} groupBy={
|
446
|
+
: <TableEditor icon={"info"} title={label} data={value} schema={item} groupBy={groupBy} canDelete={true} remove={remove}/>
|
446
447
|
|
447
448
|
}
|
448
449
|
<footer>
|
package/src/domain/TablePage.js
CHANGED
@@ -200,10 +200,12 @@ const TableSelector = (props) => {
|
|
200
200
|
columns,
|
201
201
|
rows: rows || []
|
202
202
|
}
|
203
|
+
|
203
204
|
const buttons = actions.map(({ label, action, validate }) => {
|
204
205
|
return <Button
|
205
206
|
label={label} raised
|
206
207
|
action={() => action(checked, pageContext, async () => {
|
208
|
+
await pageContext.clearChecks()
|
207
209
|
await pageContext.load()
|
208
210
|
setPageContext(Object.assign({}, pageContext))
|
209
211
|
}, rows)}
|
@@ -540,6 +542,10 @@ const TableContext = (url, field, host, urlQuery, params) => {
|
|
540
542
|
}
|
541
543
|
},
|
542
544
|
|
545
|
+
clearChecks() {
|
546
|
+
this.checked = new Set([])
|
547
|
+
},
|
548
|
+
|
543
549
|
select(id) {
|
544
550
|
const result = this.all.find(item => item.id === id);
|
545
551
|
this.selected = result;
|
package/src/domain/TablePage2.js
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
import equal from 'deep-equal'
|
2
2
|
import React, { Fragment, useContext, useEffect, useMemo, useRef, useState } from 'react'
|
3
|
-
import { Accordion, Button, DataTable, DropDown, Header, Icon, MenuIcon, MenuItem, Text } from '../html'
|
3
|
+
import { Accordion, Button, DataTable, DropDown, Header, Icon, MenuIcon, MenuItem, Text, Tabs, Tab } from '../html'
|
4
4
|
import { HTTPClient, Session } from '../http'
|
5
5
|
import { PageContext, SiteContext } from '../site'
|
6
|
-
import { ContentEditor
|
6
|
+
import { ContentEditor } from './ContentEditor'
|
7
7
|
import { CHECK, Content, TYPES } from './ContentType'
|
8
8
|
import { ContentViewer } from './ContentViewer'
|
9
9
|
import { CreateContentDialog } from './CreateContentDialog'
|
@@ -18,19 +18,20 @@ export const TablePage2 = (props) => {
|
|
18
18
|
const site = useContext(SiteContext)
|
19
19
|
const { id = "table",
|
20
20
|
icon, title, name,
|
21
|
-
schema,
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
schema,
|
22
|
+
url, field, host, params = "", // TableContext
|
23
|
+
canQuery = false, urlQuery, user, // TableQueries
|
24
|
+
editable, autosave = true, delay = 1000, // TableEditor
|
25
|
+
actions = [], tableActions, selectionActions = [],
|
25
26
|
canFilter = false, canAdd = true, canDelete = true, canEdit = true,
|
26
|
-
|
27
|
-
groupBy, validator, scenario,
|
27
|
+
groupBy, validator,
|
28
28
|
formFilter, tableFilter, editorFilter = false,
|
29
|
+
tabbedBy,
|
29
30
|
tableClassName,
|
30
31
|
children
|
31
32
|
} = props
|
32
33
|
|
33
|
-
const [
|
34
|
+
const [cd, setPageContext] = useContext(PageContext)
|
34
35
|
const context = TableContext(url, field, host, urlQuery, params)
|
35
36
|
const { selected } = pageContext
|
36
37
|
const timer = useRef(null)
|
@@ -94,17 +95,6 @@ export const TablePage2 = (props) => {
|
|
94
95
|
setPageContext(Object.assign({}, pageContext))
|
95
96
|
}
|
96
97
|
|
97
|
-
async function playScenario() {
|
98
|
-
const promises1 = pageContext.all.map(async item => await pageContext.remove(item.id))
|
99
|
-
Promise.all(promises1).then(async () => {
|
100
|
-
const promises2 = scenario.map(async (item) => await pageContext.create(item))
|
101
|
-
Promise.all(promises2).then(async () => {
|
102
|
-
await pageContext.load()
|
103
|
-
setPageContext(Object.assign({}, pageContext))
|
104
|
-
})
|
105
|
-
})
|
106
|
-
}
|
107
|
-
|
108
98
|
function closeAside() {
|
109
99
|
pageContext.select(null)
|
110
100
|
setPageContext(Object.assign({}, pageContext))
|
@@ -138,11 +128,6 @@ export const TablePage2 = (props) => {
|
|
138
128
|
{canAdd ? <Button icon="add" label="Añadir" action={add} raised /> : null}
|
139
129
|
|
140
130
|
<Button icon="refresh" label="Reload" action={reload} />
|
141
|
-
{dev ? (
|
142
|
-
<MenuIcon align="alignRight">
|
143
|
-
<MenuItem label="Cargar Escenario 1" onSelect={playScenario} />
|
144
|
-
</MenuIcon>
|
145
|
-
) : null}
|
146
131
|
{renderActions()}
|
147
132
|
</Header>
|
148
133
|
{canQuery || canFilter ? (
|
@@ -152,7 +137,7 @@ export const TablePage2 = (props) => {
|
|
152
137
|
</menu>
|
153
138
|
) : null}
|
154
139
|
<main key={id} className="table-page">
|
155
|
-
<TableEditor icon={icon} title={name} schema={schema} delay={delay} editable={editable} groupBy={groupBy} filter={tableFilter} actions={tableActions} canDelete={canDelete} className={tableClassName} />
|
140
|
+
<TableEditor icon={icon} title={name} schema={schema} delay={delay} editable={editable} tabbedBy={tabbedBy} groupBy={groupBy} filter={tableFilter} actions={tableActions} canDelete={canDelete} className={tableClassName} />
|
156
141
|
{children ? <article>{children}</article> : null}
|
157
142
|
</main>
|
158
143
|
{renderAside()}
|
@@ -348,6 +333,15 @@ export const TableEditor = (props) => {
|
|
348
333
|
const { all = [], filters } = pageContext
|
349
334
|
const { icon, title, schema, editable, canDelete, filter, actions, className } = props
|
350
335
|
const [groupBy, setGroupBy] = useState(props.groupBy)
|
336
|
+
const [tab, setTab] = useState(0)
|
337
|
+
|
338
|
+
useEffect(async () => {
|
339
|
+
if (tab) {
|
340
|
+
const filter = { [tab.field]: tab.value }
|
341
|
+
await pageContext.load(filter, [])
|
342
|
+
setPageContext(Object.assign({}, pageContext))
|
343
|
+
}
|
344
|
+
}, [tab])
|
351
345
|
|
352
346
|
function changeGroup(id, value) {
|
353
347
|
setGroupBy(value)
|
@@ -415,6 +409,9 @@ export const TableEditor = (props) => {
|
|
415
409
|
}
|
416
410
|
}
|
417
411
|
|
412
|
+
const tabField = Object.values(schema).find(field => field.tab === true)
|
413
|
+
const tabs = tabField ? tabField.options.map(option => Object.assign({}, option, { field: tabField.id })) : []
|
414
|
+
|
418
415
|
const table = useMemo(() => {
|
419
416
|
return {
|
420
417
|
columns: Object.values(schema).filter(field => field.column === true).map(field => {
|
@@ -481,6 +478,9 @@ export const TableEditor = (props) => {
|
|
481
478
|
<Fragment>
|
482
479
|
<Header icon={icon} title={<Text>{title}</Text>}>
|
483
480
|
{groupBy ? <DropDown id="groupBy" label="Agrupar Por" value={groupBy} options={buildGroupOptions(schema)} onChange={changeGroup} /> : null}
|
481
|
+
{tabbedBy ? <Tabs fillRight={true} fillLeft={false}>
|
482
|
+
{tabs.map(tab => <Tab id={tab.value} label={tab.label} />)}
|
483
|
+
</Tabs> : ''}
|
484
484
|
</Header>
|
485
485
|
<main className="table-editor">
|
486
486
|
<Accordion sections={sections} />
|
@@ -501,6 +501,7 @@ const TableContext = (url, field, host, urlQuery, params) => {
|
|
501
501
|
all: [],
|
502
502
|
checked: new Set([]),
|
503
503
|
selected: null,
|
504
|
+
|
504
505
|
filters: {},
|
505
506
|
queries: [],
|
506
507
|
|
@@ -508,7 +509,6 @@ const TableContext = (url, field, host, urlQuery, params) => {
|
|
508
509
|
try {
|
509
510
|
const filters = filter ? Object.keys(filter).reduce((filters, key) => {
|
510
511
|
const field = filter[key];
|
511
|
-
|
512
512
|
if (field) {
|
513
513
|
if (CHECK['isObject'](field)) {
|
514
514
|
Object.keys(field).forEach(key2 => {
|
@@ -519,7 +519,6 @@ const TableContext = (url, field, host, urlQuery, params) => {
|
|
519
519
|
filters[key] = field;
|
520
520
|
}
|
521
521
|
}
|
522
|
-
|
523
522
|
return filters;
|
524
523
|
}, {}) : []
|
525
524
|
const data = await API.all(filters);
|
@@ -612,7 +611,7 @@ const TableContext = (url, field, host, urlQuery, params) => {
|
|
612
611
|
}
|
613
612
|
|
614
613
|
/**
|
615
|
-
*
|
614
|
+
* Table API
|
616
615
|
*/
|
617
616
|
const TableAPI = (url, host, params = "") => {
|
618
617
|
|
package/src/site/site.test.js
CHANGED
@@ -167,18 +167,17 @@ const Page4 = (props) => {
|
|
167
167
|
field1: { id: "field1", section: "E-INFO1", type: TYPES.STRING, format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true , label: "E field1" },
|
168
168
|
field2: { id: "field2", section: "E-INFO2", type: TYPES.STRING, format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true , label: "E field2" },
|
169
169
|
field3: { id: "field3", section: "E-INFO2", type: TYPES.STRING, format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true , label: "E field3" },
|
170
|
-
|
171
170
|
}
|
172
171
|
|
173
172
|
const schema = {
|
174
|
-
name : { id: "name" , section: "A", type: TYPES.STRING, format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true , like: true, label: "Name" },
|
175
|
-
state : { id: "state" , section: "A", type: TYPES.STRING, format: FORMATS.NONE , required: true, tab: true , grouper: true , column: true , filter: false
|
173
|
+
name : { id: "name" , section: "A", type: TYPES.STRING , format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true , like: true , label: "Name" },
|
174
|
+
state : { id: "state" , section: "A", type: TYPES.STRING , format: FORMATS.NONE , required: true, tab: true , grouper: true , column: true , filter: false , label: "State" , options: [
|
176
175
|
{ label: "Pendiente", value: "NOT_CLASSIFIED" },
|
177
176
|
{ label: "Clasificada", value: "CLASSIFIED"},
|
178
177
|
]},
|
179
|
-
field1: { id: "field1", section: "A", type: TYPES.STRING , format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true
|
180
|
-
field2: { id: "field2", section: "B", type: TYPES.STRING , format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true
|
181
|
-
field4: { id: "field4", section: "B", type: TYPES.STRING , format: FORMATS.COLOR, required: true, tab: false, grouper: true , column: true , filter: true
|
178
|
+
field1: { id: "field1", section: "A", type: TYPES.STRING , format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true , label: "field1" },
|
179
|
+
field2: { id: "field2", section: "B", type: TYPES.STRING , format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true , label: "field2" },
|
180
|
+
field4: { id: "field4", section: "B", type: TYPES.STRING , format: FORMATS.COLOR, required: true, tab: false, grouper: true , column: true , filter: true , label: "Color" },
|
182
181
|
field5: { id: "field5", section: "B", type: TYPES.ENTITY, item: ENTITYTYPE, format: FORMATS.NONE , editable: true, tab: false, grouper: false, column: true , filter: true , like: false, label: "Entity5"},
|
183
182
|
|
184
183
|
}
|
@@ -193,10 +192,10 @@ const Page4 = (props) => {
|
|
193
192
|
const Page5 = (props) => {
|
194
193
|
|
195
194
|
const ENTITYTYPE = {
|
196
|
-
name : { id: "name" , section: "", type: TYPES.STRING, format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true , like: true, label: "Name" },
|
197
|
-
field1: { id: "field1", section: "", type: TYPES.STRING, format: FORMATS.NONE , required: true, tab: false, grouper: true , column: false, filter: true , label: "E field1" },
|
198
|
-
field2: { id: "field2", section: "", type: TYPES.STRING, format: FORMATS.NONE , required: true, tab: false, grouper: true , column: false, filter: true , label: "E field2" },
|
199
|
-
field3: { id: "field3", section: "", type: TYPES.STRING, format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true , label: "E field3" },
|
195
|
+
name : { id: "name" , section: "", type: TYPES.STRING , format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true , like: true, label: "Name" },
|
196
|
+
field1: { id: "field1", section: "", type: TYPES.STRING , format: FORMATS.NONE , required: true, tab: false, grouper: true , column: false, filter: true , label: "E field1" },
|
197
|
+
field2: { id: "field2", section: "", type: TYPES.STRING , format: FORMATS.NONE , required: true, tab: false, grouper: true , column: false, filter: true , label: "E field2" },
|
198
|
+
field3: { id: "field3", section: "", type: TYPES.STRING , format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true , label: "E field3" },
|
200
199
|
}
|
201
200
|
|
202
201
|
const schema = {
|