ywana-core8 0.0.518 → 0.0.521

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.518",
3
+ "version": "0.0.521",
4
4
  "description": "ywana-core8",
5
5
  "homepage": "https://ywana.github.io/workspace",
6
6
  "author": "Ernesto Roldan Garcia",
package/src/css/html.css CHANGED
@@ -42,4 +42,16 @@ td.actions {
42
42
  */
43
43
  body > iframe[style*="2147483647"]:not([id="webpack-dev-server-client-overlay"]) {
44
44
  display: none;
45
+ }
46
+
47
+ .empty-message {
48
+ width: 100%;
49
+ height: 100%;
50
+ min-height: 10rem;
51
+ flex: 1;
52
+ display: flex;
53
+ flex-direction: column;
54
+ justify-content: center;
55
+ align-items: center;
56
+ color: var(--text-color-lighter)
45
57
  }
@@ -36,16 +36,16 @@ export const TabbedTablePage = (props) => {
36
36
  const timer = useRef(null)
37
37
  const [form, setForm] = useState(selected)
38
38
  const [tabs, setTabs] = useState([])
39
-
39
+
40
40
  useEffect(async () => {
41
41
  const field = Object.values(schema).find(field => field.tab && field.tab === true)
42
- const tabs = field.options.map(option => Object.assign({}, option, { field: field.id}))
42
+ const tabs = field.options.map(option => Object.assign({}, option, { field: field.id }))
43
43
  setTabs(tabs)
44
44
  context.changeTab(tabs[0])
45
45
  setPageContext(context)
46
46
  }, [])
47
-
48
- useEffect( async () => {
47
+
48
+ useEffect(async () => {
49
49
  if (tab) {
50
50
  const filter = { [tab.field]: tab.value }
51
51
  await pageContext.load(filter, [])
@@ -151,7 +151,7 @@ export const TabbedTablePage = (props) => {
151
151
  }
152
152
 
153
153
  function renderTabs() {
154
- const selected = tab ? tab.value : null
154
+ const selected = tab ? tab.value : null
155
155
  return (
156
156
  <Tabs selected={selected} onChange={changeTab} fillRight={true} fillLeft={false}>
157
157
  {tabs.map(tab => <Tab id={tab.value} label={tab.label} />)}
@@ -179,7 +179,7 @@ export const TabbedTablePage = (props) => {
179
179
  </menu>
180
180
  ) : null}
181
181
  <main key={id} className="table-page">
182
- <TableEditor icon={icon} title={name} tabs={renderTabs()} schema={schema} delay={delay} editable={editable} groupBy={groupBy} filter={tableFilter} actions={tableActions} canDelete={canDelete} className={tableClassName}/>
182
+ <TableEditor icon={icon} title={name} tabs={renderTabs()} schema={schema} delay={delay} editable={editable} groupBy={groupBy} filter={tableFilter} actions={tableActions} canDelete={canDelete} className={tableClassName} />
183
183
  {children ? <article>{children}</article> : null}
184
184
  </main>
185
185
  {renderAside()}
@@ -326,10 +326,10 @@ const TableFilters = (props) => {
326
326
 
327
327
  const likes = useMemo(() => {
328
328
  const fields = Object.values(schema)
329
- return fields.reduce((likes, field) => {
330
- if (field.like === true) likes.push(field.id)
331
- return likes
332
- }, [])
329
+ return fields.reduce((likes, field) => {
330
+ if (field.like === true) likes.push(field.id)
331
+ return likes
332
+ }, [])
333
333
  }, [schema])
334
334
 
335
335
  useEffect(() => {
@@ -446,6 +446,14 @@ export const TableEditor = (props) => {
446
446
 
447
447
  function renderGroups() {
448
448
  const items = filter ? filter(all) : all
449
+
450
+ if (items.length === 0) return (
451
+ <div className='empty-message'>
452
+ <Icon icon="search_off" />
453
+ <Text>No Result Found</Text>
454
+ </div>
455
+ )
456
+
449
457
  const groups = items.reduce((groups, item) => {
450
458
  const groupName = item[groupBy]
451
459
  const group = groups[groupName]
@@ -453,6 +461,7 @@ export const TableEditor = (props) => {
453
461
  groups[groupName].push(item)
454
462
  return groups
455
463
  }, {})
464
+
456
465
  return Object.keys(groups).map(groupName => {
457
466
  const table = {
458
467
  columns: Object.values(schema)
@@ -492,7 +501,7 @@ export const TableEditor = (props) => {
492
501
  <Header title={title} >
493
502
  <span className="size">{groupSize}</span>
494
503
  </Header>
495
- <DataTable {...table} onRowSelection={select} editable={editable} onCheckAll={check} className={className}/>
504
+ <DataTable {...table} onRowSelection={select} editable={editable} onCheckAll={check} className={className} />
496
505
  </Fragment>
497
506
  )
498
507
  })
@@ -550,7 +559,7 @@ const TableContext = (url, field, host, urlQuery) => {
550
559
 
551
560
  return filters;
552
561
  }, {}) : []
553
-
562
+
554
563
  if (this.tab) {
555
564
  filters[this.tab.field] = this.tab.value
556
565
  }
@@ -670,7 +679,7 @@ const TableAPI = (url, host) => {
670
679
  }, "")
671
680
  return query.concat(param)
672
681
  } else {
673
- return like.includes(key) ? query.concat(`${key}=%${filters[key]}%&`) : query.concat(`${key}=${filters[key]}&`)
682
+ return like.includes(key) ? query.concat(`${key}=%${filters[key]}%&`) : query.concat(`${key}=${filters[key]}&`)
674
683
  }
675
684
  }, "")
676
685
  queryParams = queryParams.concat(filterQuery)
package/src/html/table.js CHANGED
@@ -110,10 +110,19 @@ export const DataTable = (props) => {
110
110
  </tr>
111
111
  </thead>
112
112
  <tbody>
113
- {
113
+ {rows.length > 0 ?
114
114
  multiSort(rows, sortDir).map(row => (
115
115
  <DataTableRow key={row.id} row={row} columns={columns} onSelect={select} onDrop={moveRow} editable={editable} expanded={expanded} />
116
- ))
116
+ )) : (
117
+ <tr>
118
+ <td colSpan={columns.length+1}>
119
+ <div className='empty-message'>
120
+ <Icon icon="search_off" />
121
+ <Text>No Result Found</Text>
122
+ </div>
123
+ </td>
124
+ </tr>
125
+ )
117
126
  }
118
127
  </tbody>
119
128
  </table>
@@ -194,7 +203,7 @@ const EntityCellViewer = ({ id, item, value }) => {
194
203
 
195
204
  const fields = Object.values(item).filter(field => field.column === true)
196
205
  const locale = window.navigator.userLanguage || window.navigator.language;
197
-
206
+
198
207
  return fields.map(field => {
199
208
 
200
209
  let text = value[field.id]
@@ -35,7 +35,7 @@ export const TableTest = (prop) => {
35
35
  setRows(next)
36
36
  }
37
37
 
38
- const table = {
38
+ const table1 = {
39
39
  className: "xxx",
40
40
  editable: true,
41
41
  columns : [
@@ -49,9 +49,23 @@ export const TableTest = (prop) => {
49
49
  rows
50
50
  }
51
51
 
52
+ const table2 = {
53
+ className: "xxx",
54
+ editable: true,
55
+ columns : [
56
+ { id: "checked", onChange: check },
57
+ { id: "name", label: "Name", type: "String", onChange: editCell },
58
+ { id: "name", label: "Name", type: "String", sortable: true },
59
+ { id: "thumb", label: "Thumb", type: "String", format: FORMATS.IMG },
60
+ { id: "color", label: "Color", type: "String", format: FORMATS.COLOR },
61
+ { id: "date", label: "Date", type: "String", format: FORMATS.DATE },
62
+ ],
63
+ rows: []
64
+ }
65
+
52
66
  return (
53
67
  <div style={{ maxHeight: "20rem", overflow: "hidden", border: "solid 1px red", margin: "2rem" }}>
54
- <DataTable {...table} onRowSelection={select} onCheckAll={checkAll}/>
68
+ <DataTable {...table2} onRowSelection={select} onCheckAll={checkAll}/>
55
69
  </div>
56
70
  )
57
71
  }