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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ywana-core8",
3
- "version": "0.0.572",
3
+ "version": "0.0.573",
4
4
  "description": "ywana-core8",
5
5
  "homepage": "https://ywana.github.io/workspace",
6
6
  "author": "Ernesto Roldan Garcia",
@@ -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
- const columns = Object.values(item)
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={"field1"} canDelete={true} remove={remove}/>
446
+ : <TableEditor icon={"info"} title={label} data={value} schema={item} groupBy={groupBy} canDelete={true} remove={remove}/>
446
447
 
447
448
  }
448
449
  <footer>
@@ -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;
@@ -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, GroupedContentEditor } from './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, url, field, host, params = "",
22
- autosave = true, delay = 1000,
23
- editable,
24
- actions = [], dev = false, tableActions, selectionActions = [],
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
- canQuery = false, urlQuery, user,
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 [pageContext, setPageContext] = useContext(PageContext)
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
  &nbsp;
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
- * table API
614
+ * Table API
616
615
  */
617
616
  const TableAPI = (url, host, params = "") => {
618
617
 
@@ -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 , label: "State" , options: [
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 , label: "field1" },
180
- field2: { id: "field2", section: "B", type: TYPES.STRING , format: FORMATS.NONE , required: true, tab: false, grouper: true , column: true , filter: true , label: "field2" },
181
- field4: { id: "field4", section: "B", type: TYPES.STRING , format: FORMATS.COLOR, required: true, tab: false, grouper: true , column: true , filter: true , label: "Color" },
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 = {