ywana-core8 0.0.293 → 0.0.294
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 +1 -1
- package/src/domain/TablePage.js +76 -6
- package/src/domain/squema.js +6 -0
- package/src/site/site.test.js +3 -1
package/package.json
CHANGED
package/src/domain/TablePage.js
CHANGED
@@ -7,6 +7,7 @@ import { ContentEditor } from './ContentEditor'
|
|
7
7
|
import { CHECK, Content } from './ContentType'
|
8
8
|
import { ContentViewer } from './ContentViewer'
|
9
9
|
import { CreateContentDialog } from './CreateContentDialog'
|
10
|
+
import { QUERY } from './squema'
|
10
11
|
import "./TablePage.css"
|
11
12
|
|
12
13
|
/**
|
@@ -58,6 +59,15 @@ export const TablePage = (props) => {
|
|
58
59
|
site.openDialog(<CreateContentDialog label={`Crear ${name}`} type={schema} onOK={onOK} validator={validator} filter={formFilter} />);
|
59
60
|
}
|
60
61
|
|
62
|
+
function saveQuery(filters) {
|
63
|
+
const onOK = async (form) => {
|
64
|
+
form.filters = filters
|
65
|
+
await pageContext.createQuery(form)
|
66
|
+
setPageContext(Object.assign({}, pageContext))
|
67
|
+
}
|
68
|
+
site.openDialog(<CreateContentDialog label="Nueva query" type={QUERY} onOK={onOK} />)
|
69
|
+
}
|
70
|
+
|
61
71
|
function change(next) {
|
62
72
|
setForm(next)
|
63
73
|
}
|
@@ -125,7 +135,7 @@ export const TablePage = (props) => {
|
|
125
135
|
{canQuery || canFilter ? (
|
126
136
|
<menu className="table-page">
|
127
137
|
{canQuery ? <TableQueries schema={schema} /> : null}
|
128
|
-
{canFilter ? <TableFilters schema={schema} /> : null}
|
138
|
+
{canFilter ? <TableFilters schema={schema} onSave={saveQuery}/> : null}
|
129
139
|
</menu>
|
130
140
|
) : null }
|
131
141
|
<main key={id} className="table-page">
|
@@ -197,11 +207,24 @@ const TableSelector = (props) => {
|
|
197
207
|
* Table Queries
|
198
208
|
*/
|
199
209
|
const TableQueries = (props) => {
|
210
|
+
|
211
|
+
const [pageContext, setPageContext] = useContext(PageContext)
|
212
|
+
|
213
|
+
useEffect(() => {
|
214
|
+
await pageContext.loadQueries()
|
215
|
+
}, [])
|
216
|
+
|
217
|
+
|
218
|
+
const queries = [1,2,3 ]
|
200
219
|
return (
|
201
220
|
<Fragment>
|
202
221
|
<Header className="table-queries" title={<Text>Queries</Text>} />
|
203
222
|
<main className="table-queries">
|
204
|
-
|
223
|
+
{queries.map(query => (
|
224
|
+
<div className="table-queries-item">
|
225
|
+
|
226
|
+
</div>
|
227
|
+
))}
|
205
228
|
</main>
|
206
229
|
</Fragment>
|
207
230
|
)
|
@@ -213,7 +236,7 @@ const TableQueries = (props) => {
|
|
213
236
|
const TableFilters = (props) => {
|
214
237
|
|
215
238
|
const [pageContext, setPageContext] = useContext(PageContext)
|
216
|
-
const { schema } = props
|
239
|
+
const { schema, onSave } = props
|
217
240
|
const [form, setForm] = useState({})
|
218
241
|
|
219
242
|
const filterSchema = useMemo(() => {
|
@@ -238,6 +261,10 @@ const TableFilters = (props) => {
|
|
238
261
|
change({})
|
239
262
|
}
|
240
263
|
|
264
|
+
function save() {
|
265
|
+
if (onSave) onSave(form)
|
266
|
+
}
|
267
|
+
|
241
268
|
const content = new Content(filterSchema, form)
|
242
269
|
return (
|
243
270
|
<Fragment>
|
@@ -247,6 +274,9 @@ const TableFilters = (props) => {
|
|
247
274
|
<main className="table-filters">
|
248
275
|
<ContentEditor content={content} onChange={change} />
|
249
276
|
</main>
|
277
|
+
<footer>
|
278
|
+
{ canQuery ? <Button icon="playlist_add" label="CREAR BUSQUEDA" action={save} outlined/>}
|
279
|
+
</footer>
|
250
280
|
</Fragment>
|
251
281
|
)
|
252
282
|
}
|
@@ -414,16 +444,15 @@ const TableContext = (url, field, host) => {
|
|
414
444
|
checked: new Set([]),
|
415
445
|
selected: null,
|
416
446
|
filters: {},
|
447
|
+
queries: [],
|
417
448
|
|
418
449
|
async load(filter) {
|
419
450
|
try {
|
420
|
-
|
421
451
|
const filters = filter ? Object.keys(filter).reduce((filters, key) => {
|
422
452
|
const field = filter[key];
|
423
453
|
if (field) filters[key] = field;
|
424
454
|
return filters;
|
425
455
|
}, {}) : []
|
426
|
-
|
427
456
|
const data = await API.all(filters);
|
428
457
|
this.all = field ? data[field] : data;
|
429
458
|
} catch (error) {
|
@@ -481,7 +510,35 @@ const TableContext = (url, field, host) => {
|
|
481
510
|
|
482
511
|
changeFilters(filters) {
|
483
512
|
this.filters = filters
|
513
|
+
},
|
514
|
+
|
515
|
+
async loadQueries() {
|
516
|
+
try {
|
517
|
+
this.queries = await API.queries()
|
518
|
+
} catch (error) {
|
519
|
+
console.log(error)
|
520
|
+
}
|
521
|
+
},
|
522
|
+
|
523
|
+
async createQuery(query) {
|
524
|
+
try {
|
525
|
+
await API.createQuery(query)
|
526
|
+
this.loadQueries()
|
527
|
+
} catch (error) {
|
528
|
+
console.log(error)
|
529
|
+
}
|
530
|
+
},
|
531
|
+
|
532
|
+
async removeQuery(id) {
|
533
|
+
try {
|
534
|
+
await API.removeQuery(id)
|
535
|
+
await this.loadQueries()
|
536
|
+
} catch (error) {
|
537
|
+
console.log(error)
|
538
|
+
}
|
539
|
+
return
|
484
540
|
}
|
541
|
+
|
485
542
|
}
|
486
543
|
}
|
487
544
|
|
@@ -531,6 +588,19 @@ const TableAPI = (url, host) => {
|
|
531
588
|
|
532
589
|
remove(id) {
|
533
590
|
return http.DELETE(`${url}/${id}`)
|
534
|
-
}
|
591
|
+
},
|
592
|
+
|
593
|
+
queries() {
|
594
|
+
return http.GET(`${url}/queries`)
|
595
|
+
},
|
596
|
+
|
597
|
+
createQuery(form) {
|
598
|
+
const body = JSON.stringify(form)
|
599
|
+
return http.POST(`${url}/queries`, body)
|
600
|
+
},
|
601
|
+
|
602
|
+
removeQuery(id) {
|
603
|
+
return http.DELETE(`${url}/queries/${id}`)
|
604
|
+
},
|
535
605
|
}
|
536
606
|
}
|
package/src/site/site.test.js
CHANGED
@@ -4,6 +4,7 @@ import { Site } from './site'
|
|
4
4
|
import { Page } from './page'
|
5
5
|
import './site.css'
|
6
6
|
import './page.css'
|
7
|
+
import { TablePage } from '../domain/TablePage'
|
7
8
|
|
8
9
|
const SiteTest = (prop) => {
|
9
10
|
return (
|
@@ -28,7 +29,8 @@ const Page1 = (props) => {
|
|
28
29
|
return (
|
29
30
|
<Fragment>
|
30
31
|
<header>Page 1</header>
|
31
|
-
<main
|
32
|
+
<main>
|
33
|
+
</main>
|
32
34
|
<footer>f1</footer>
|
33
35
|
</Fragment>
|
34
36
|
)
|