namirasoft-account-react 1.4.259 → 1.4.262

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/App.js CHANGED
@@ -46,7 +46,7 @@ export function App(props) {
46
46
  menus: {
47
47
  viewHistory: false
48
48
  }
49
- }
49
+ },
50
50
  },
51
51
  list: {
52
52
  ui: {
@@ -1,5 +1,6 @@
1
1
  import { Component, ReactNode } from "react";
2
- import { NSTable, NSFilterBox, TableColumnInfo, TableRowInfo, IBaseComponentProps } from "namirasoft-site-react";
2
+ import { SortItem } from "namirasoft-core";
3
+ import { NSTable, NSFilterBox, TableColumnInfo, TableRowInfo, IBaseComponentProps, NSBoxCombo, NSBoxBooleans, NSBoxBoolean, NSBoxBaseCombo } from "namirasoft-site-react";
3
4
  import { CategoryRow, FieldRow } from "namirasoft-field";
4
5
  import { IEntityInfo } from "../IEntityInfo";
5
6
  import { NSARouterMakerProps } from "../NSARouterMakerProps";
@@ -19,6 +20,13 @@ export interface NSASectionListProps<EntityType extends {
19
20
  };
20
21
  getCellFormattedValue?: (value: any, column: TableColumnInfo, row: TableRowInfo<EntityType>) => any;
21
22
  tabs?: NSASectionTabsItemsProps;
23
+ modes?: {
24
+ [name: string]: (getColumns: () => TableColumnInfo[], getRows: () => Promise<{
25
+ rows: EntityType[];
26
+ count: number;
27
+ }>) => JSX.Element;
28
+ };
29
+ default_mode?: string;
22
30
  };
23
31
  }
24
32
  interface NSASectionListInnerProps<EntityType extends {
@@ -39,12 +47,20 @@ export interface NSASectionListState<EntityType> {
39
47
  rows: EntityType[];
40
48
  count: number;
41
49
  } | null;
50
+ show_dialog_columns: boolean;
51
+ sorts: SortItem[];
52
+ mode: string;
42
53
  }
43
54
  export declare class NSASectionList<EntityType extends {
44
55
  id: string;
45
56
  }, EntityTypeInput = EntityType> extends Component<NSASectionListInnerProps<EntityType, EntityTypeInput>, NSASectionListState<EntityType>> {
46
57
  NSFilterBox_Top: import("react").RefObject<NSFilterBox>;
58
+ NSBoxCombo_Mode: import("react").RefObject<NSBoxCombo>;
47
59
  NSTable_Main: import("react").RefObject<NSTable<EntityType>>;
60
+ NSBoxBoolean_Sort: import("react").RefObject<NSBoxBoolean>;
61
+ NSBoxBaseCombo_Sort_Column: import("react").RefObject<NSBoxBaseCombo<TableColumnInfo>>;
62
+ NSBoxCombo_Sort_Direction: import("react").RefObject<NSBoxCombo>;
63
+ NSBoxBooleans_Columns: import("react").RefObject<NSBoxBooleans>;
48
64
  constructor(props: NSASectionListInnerProps<EntityType, EntityTypeInput>);
49
65
  getSelectedIDs(): string[];
50
66
  getSelectedRows(): EntityType[];
@@ -7,18 +7,25 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
10
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
11
11
  import { Component, createRef } from "react";
12
- import { FilterItem, FilterItemColumnType, NamingConvention, ObjectService, SearchOperation } from "namirasoft-core";
13
- import { NSLine, NSSpace, NSSpaceSizeType, NSTable, NSFilterBox } from "namirasoft-site-react";
12
+ import { BaseMetaColumn, BaseMetaTable, FilterItem, FilterItemColumnType, NamingConvention, ObjectService, SearchOperation, SortItem } from "namirasoft-core";
13
+ import { NSLine, NSSpace, NSSpaceSizeType, NSTable, NSFilterBox, NSFilterBoxItems, NSRow, NSButton, NSBoxCombo, NSDialog, NSBoxBooleans, NSPanel, NSTitle, NSBox, NSColumn, NSBoxBoolean, NSBoxBaseCombo } from "namirasoft-site-react";
14
14
  import { NSASectionTabs } from "./NSASectionTabs";
15
15
  import { FilterItemColumnTypeBuilder, VariableType } from "namirasoft-schema";
16
+ import Styles from "./NSASectionList.module.css";
16
17
  export class NSASectionList extends Component {
17
18
  constructor(props) {
19
+ var _a;
18
20
  super(props);
19
21
  this.NSFilterBox_Top = createRef();
22
+ this.NSBoxCombo_Mode = createRef();
20
23
  this.NSTable_Main = createRef();
21
- this.state = { res: null };
24
+ this.NSBoxBoolean_Sort = createRef();
25
+ this.NSBoxBaseCombo_Sort_Column = createRef();
26
+ this.NSBoxCombo_Sort_Direction = createRef();
27
+ this.NSBoxBooleans_Columns = createRef();
28
+ this.state = { res: null, show_dialog_columns: false, sorts: [], mode: (_a = props.ui.default_mode) !== null && _a !== void 0 ? _a : "" };
22
29
  }
23
30
  getSelectedIDs() {
24
31
  var _a, _b;
@@ -29,7 +36,7 @@ export class NSASectionList extends Component {
29
36
  return (_b = (_a = this.NSTable_Main.current) === null || _a === void 0 ? void 0 : _a.getSelectedRows()) !== null && _b !== void 0 ? _b : [];
30
37
  }
31
38
  render() {
32
- var _a, _b, _c;
39
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
33
40
  const getColumns = () => {
34
41
  let cs = this.props.entity.client.getColumns();
35
42
  cs.forEach(c => {
@@ -44,11 +51,12 @@ export class NSASectionList extends Component {
44
51
  let id = "";
45
52
  if (ids.length === 1)
46
53
  id = ids[0];
47
- let filterItems = undefined;
54
+ let filterItems = (_b = (_a = this.NSFilterBox_Top.current) === null || _a === void 0 ? void 0 : _a.getFilterItems()) !== null && _b !== void 0 ? _b : [];
55
+ let incommingFilterItems = undefined;
48
56
  try {
49
57
  let encoded = this.props.url.getQuery("filters");
50
58
  if (encoded)
51
- filterItems = (_a = FilterItem.decode(encoded)) !== null && _a !== void 0 ? _a : undefined;
59
+ incommingFilterItems = (_c = FilterItem.decode(encoded)) !== null && _c !== void 0 ? _c : undefined;
52
60
  }
53
61
  catch (error) {
54
62
  }
@@ -58,116 +66,203 @@ export class NSASectionList extends Component {
58
66
  let builder = new FilterItemColumnTypeBuilder(t);
59
67
  return (_a = builder.runSynch(() => { })) !== null && _a !== void 0 ? _a : FilterItemColumnType.Unknown;
60
68
  }
61
- return (_jsxs("div", { id: this.props.id, className: `${(_c = (_b = this.props.classList) === null || _b === void 0 ? void 0 : _b.join(" ")) !== null && _c !== void 0 ? _c : ""}`, style: Object.assign({}, this.props.style), children: [_jsx(NSFilterBox, { ref: this.NSFilterBox_Top, filterItems: filterItems, getTables: () => {
62
- return this.props.entity.tables.map(table => {
63
- let columns = table.table.getColumns().map(c => { return Object.assign(Object.assign({ id: c.name }, c), { type: typeConvertor(c.type) }); });
64
- return { name: table.table.name, text: table.table.text, columns, required: table.required };
65
- });
66
- }, getMoreTables: () => __awaiter(this, void 0, void 0, function* () {
67
- let ans = [];
68
- if (this.props.ctf.enabled)
69
- try {
70
- if (this.props.ctf.fields)
71
- if (this.props.ctf.fields.length > 0) {
72
- let name = this.props.entity.name + "_field";
73
- ans.push({
74
- name,
75
- text: "Fields",
76
- columns: [{
77
- id: "field_id",
78
- name: "field_id",
79
- text: "ID",
80
- type: FilterItemColumnType.Unknown,
81
- getValues: (search) => __awaiter(this, void 0, void 0, function* () {
82
- var _a, _b;
83
- return (_b = (_a = this.props.ctf.fields) === null || _a === void 0 ? void 0 : _a.filter(c => SearchOperation.match(c.id, search)).map(c => { return { value: c.id, title: c.id }; })) !== null && _b !== void 0 ? _b : [];
84
- })
85
- }, {
86
- id: "field_name",
87
- name: "field_id",
88
- text: "Name",
89
- type: FilterItemColumnType.Unknown,
90
- getValues: (search) => __awaiter(this, void 0, void 0, function* () {
69
+ let getRows = () => __awaiter(this, void 0, void 0, function* () {
70
+ var _a, _b;
71
+ let res = { rows: [], count: 0 };
72
+ if (this.NSTable_Main.current) {
73
+ let items = (_b = (_a = this.NSFilterBox_Top.current) === null || _a === void 0 ? void 0 : _a.getFilterItems()) !== null && _b !== void 0 ? _b : [];
74
+ let NSPagination = this.NSTable_Main.current.NSPagination.current;
75
+ if (NSPagination)
76
+ if (this.props.entity.server.list)
77
+ res = yield this.props.entity.server.list(items, NSPagination.getCurrentPage(), NSPagination.getPageSize(), []);
78
+ }
79
+ this.setState({ res });
80
+ return res;
81
+ });
82
+ let table_renderer = () => {
83
+ return _jsx(NSTable, { ref: this.NSTable_Main, name: NamingConvention.lower_case_dash.convert(this.props.entity.name, NamingConvention.Pascal_Case_Space), checkbox: true, columns: getColumns(), getRows: getRows, getRowKey: getRowKey, getRowAttributes: (row_value, row_index) => { var _a, _b, _c; return (_c = (_b = (_a = this.props.ui).getRowAttributes) === null || _b === void 0 ? void 0 : _b.call(_a, row_value, row_index, this.state.res)) !== null && _c !== void 0 ? _c : {}; }, getColumnAttributes: this.props.ui.getColumnAttributes, getCellFormattedValue: this.props.ui.getCellFormattedValue, onSelectedIDsChanged: () => {
84
+ if (this.props.onIDsChanged)
85
+ this.props.onIDsChanged();
86
+ else
87
+ this.setState({});
88
+ } });
89
+ };
90
+ let modes = (_d = this.props.ui.modes) !== null && _d !== void 0 ? _d : {};
91
+ if (!modes)
92
+ modes = {};
93
+ if (!modes["Table"])
94
+ modes = Object.assign({ Table: table_renderer }, modes);
95
+ let mode_names = Object.keys(modes);
96
+ let mode_current = this.state.mode;
97
+ if (!mode_names.includes(mode_current))
98
+ mode_current = mode_names[0];
99
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { id: this.props.id, className: `${(_f = (_e = this.props.classList) === null || _e === void 0 ? void 0 : _e.join(" ")) !== null && _f !== void 0 ? _f : ""}`, style: Object.assign({}, this.props.style), children: [_jsxs(NSRow, { style: { justifyContent: "start" }, children: [_jsx(NSFilterBox, { ref: this.NSFilterBox_Top, filterItems: incommingFilterItems, getTables: () => {
100
+ return this.props.entity.tables.map(table => {
101
+ let columns = table.table.getColumns().map(c => { return Object.assign(Object.assign({ id: c.name }, c), { type: typeConvertor(c.type) }); });
102
+ return { name: table.table.name, text: table.table.text, columns, required: table.required };
103
+ });
104
+ }, getMoreTables: () => __awaiter(this, void 0, void 0, function* () {
105
+ let ans = [];
106
+ if (this.props.ctf.enabled)
107
+ try {
108
+ if (this.props.ctf.fields)
109
+ if (this.props.ctf.fields.length > 0) {
110
+ let name = this.props.entity.name + "_field";
111
+ ans.push({
112
+ name,
113
+ text: "Fields",
114
+ columns: [{
115
+ id: "field_id",
116
+ name: "field_id",
117
+ text: "ID",
118
+ type: FilterItemColumnType.Unknown,
119
+ getValues: (search) => __awaiter(this, void 0, void 0, function* () {
120
+ var _a, _b;
121
+ return (_b = (_a = this.props.ctf.fields) === null || _a === void 0 ? void 0 : _a.filter(c => SearchOperation.match(c.id, search)).map(c => { return { value: c.id, title: c.id }; })) !== null && _b !== void 0 ? _b : [];
122
+ })
123
+ }, {
124
+ id: "field_name",
125
+ name: "field_id",
126
+ text: "Name",
127
+ type: FilterItemColumnType.Unknown,
128
+ getValues: (search) => __awaiter(this, void 0, void 0, function* () {
129
+ var _a, _b;
130
+ return (_b = (_a = this.props.ctf.fields) === null || _a === void 0 ? void 0 : _a.filter(c => SearchOperation.match(c.name, search)).map(c => { return { value: c.id, title: c.name }; })) !== null && _b !== void 0 ? _b : [];
131
+ })
132
+ }, {
133
+ id: "field_value",
134
+ name: "value",
135
+ text: "Value",
136
+ type: FilterItemColumnType.Unknown
137
+ },
138
+ ...this.props.ctf.fields.map(f => {
139
+ return {
140
+ id: f.id,
141
+ name: f.id,
142
+ text: f.name,
143
+ type: typeConvertor(f.type.type.type),
144
+ getValues: (search) => __awaiter(this, void 0, void 0, function* () {
145
+ let values = yield this.props.entity.server.value_list(name, "value", search, f.id, null);
146
+ return values.map(v => { return { value: v, title: v }; });
147
+ })
148
+ };
149
+ }),],
150
+ required: false
151
+ });
152
+ }
153
+ if (this.props.ctf.categories)
154
+ if (this.props.ctf.categories.length > 0)
155
+ ans.push({
156
+ name: this.props.entity.name + "_category",
157
+ text: "Categories",
158
+ columns: [{
159
+ id: "category_id",
160
+ name: "category_id",
161
+ text: "ID",
162
+ type: FilterItemColumnType.Unknown,
163
+ getValues: (search) => __awaiter(this, void 0, void 0, function* () {
164
+ var _a, _b;
165
+ return (_b = (_a = this.props.ctf.categories) === null || _a === void 0 ? void 0 : _a.filter(c => SearchOperation.match(c.id, search)).map(c => { return { value: c.id, title: c.id }; })) !== null && _b !== void 0 ? _b : [];
166
+ })
167
+ }, {
168
+ id: "category_name",
169
+ name: "category_id",
170
+ text: "Name",
171
+ type: FilterItemColumnType.Unknown,
172
+ getValues: (search) => __awaiter(this, void 0, void 0, function* () {
173
+ var _a, _b;
174
+ return (_b = (_a = this.props.ctf.categories) === null || _a === void 0 ? void 0 : _a.filter(c => SearchOperation.match(c.name, search)).map(c => { return { value: c.id, title: c.name }; })) !== null && _b !== void 0 ? _b : [];
175
+ })
176
+ }],
177
+ required: false
178
+ });
179
+ }
180
+ catch (error) {
181
+ }
182
+ return ans;
183
+ }), getValues: (table, column, value) => __awaiter(this, void 0, void 0, function* () {
184
+ let values = yield this.props.entity.server.value_list(table.name, column.name, value, null, null);
185
+ return values.map(v => { return { value: v, title: v }; });
186
+ }), onChanged: () => {
187
+ var _a, _b;
188
+ (_a = this.NSTable_Main.current) === null || _a === void 0 ? void 0 : _a.setSelectedIDs([], []);
189
+ (_b = this.NSTable_Main.current) === null || _b === void 0 ? void 0 : _b.reload(null, null);
190
+ } }), _jsxs("div", { className: Styles.nsa_section_list_items, children: [mode_names.length > 1 &&
191
+ _jsx(NSBoxCombo, { ref: this.NSBoxCombo_Mode, title: "Mode", hideHeader: true, required: true, searchable: false, placeholder: "", defaultValue: mode_current, getOptions: () => {
192
+ return mode_names.map(m => { return { value: m, title: m }; });
193
+ }, multiple: false, style: { width: "100px" }, onChanged: e => {
194
+ var _a;
195
+ this.setState({ mode: (_a = e.getValueOne(false)) !== null && _a !== void 0 ? _a : "" });
196
+ } }), _jsx(NSButton, { title: "", onClick: {
197
+ action: () => {
198
+ var _a, _b;
199
+ this.setState({ show_dialog_columns: true, sorts: (_b = (_a = this.NSTable_Main.current) === null || _a === void 0 ? void 0 : _a.getSortItems()) !== null && _b !== void 0 ? _b : [] }, () => {
91
200
  var _a, _b;
92
- return (_b = (_a = this.props.ctf.fields) === null || _a === void 0 ? void 0 : _a.filter(c => SearchOperation.match(c.name, search)).map(c => { return { value: c.id, title: c.name }; })) !== null && _b !== void 0 ? _b : [];
93
- })
94
- }, {
95
- id: "field_value",
96
- name: "value",
97
- text: "Value",
98
- type: FilterItemColumnType.Unknown
201
+ let values = (_a = this.NSTable_Main.current) === null || _a === void 0 ? void 0 : _a.getVisibleColumns().map(c => c.table + "." + c.column);
202
+ if (values)
203
+ (_b = this.NSBoxBooleans_Columns.current) === null || _b === void 0 ? void 0 : _b.setValues(values);
204
+ });
99
205
  },
100
- ...this.props.ctf.fields.map(f => {
101
- return {
102
- id: f.id,
103
- name: f.id,
104
- text: f.name,
105
- type: typeConvertor(f.type.type.type),
106
- getValues: (search) => __awaiter(this, void 0, void 0, function* () {
107
- let values = yield this.props.entity.server.value_list(name, "value", search, f.id, null);
108
- return values.map(v => { return { value: v, title: v }; });
109
- })
110
- };
111
- }),],
112
- required: false
113
- });
206
+ showLoading: false
207
+ }, style: {
208
+ width: "48px",
209
+ border: "1px solid black",
210
+ backgroundImage: "url('https://static.namirasoft.com/image/concept/gear/grey.svg')",
211
+ backgroundSize: "32px",
212
+ backgroundRepeat: "no-repeat",
213
+ backgroundPosition: "center center"
214
+ } })] })] }), _jsx(NSSpace, { size: NSSpaceSizeType.MINI }), _jsx(NSFilterBoxItems, { filterItems: filterItems, onClearFilterItems: () => {
215
+ var _a;
216
+ (_a = this.NSFilterBox_Top.current) === null || _a === void 0 ? void 0 : _a.setFilterItems([]);
217
+ }, onRemoveFilterItem: (item) => {
218
+ var _a;
219
+ (_a = this.NSFilterBox_Top.current) === null || _a === void 0 ? void 0 : _a.removeFilterItem(item);
220
+ } }), filterItems.length > 0 &&
221
+ _jsx(NSSpace, { size: NSSpaceSizeType.MINI }), modes[mode_current](getColumns, getRows), id &&
222
+ _jsxs(_Fragment, { children: [_jsx(NSSpace, { size: NSSpaceSizeType.SMALL }), _jsx(NSLine, {}), _jsx(NSSpace, { size: NSSpaceSizeType.SMALL }), _jsx(NSASectionTabs, Object.assign({ id: id }, this.props, { tabs: this.props.ui.tabs, deleteFieldCache: this.props.deleteFieldCache }))] })] }), this.state.show_dialog_columns &&
223
+ _jsx(NSDialog, { onClose: () => {
224
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
225
+ try {
226
+ debugger;
227
+ if ((_b = (_a = this.NSBoxBoolean_Sort) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.getValueBool()) {
228
+ let column = (_c = this.NSBoxBaseCombo_Sort_Column.current) === null || _c === void 0 ? void 0 : _c.getDataOne();
229
+ let d = (_d = this.NSBoxCombo_Sort_Direction.current) === null || _d === void 0 ? void 0 : _d.getValueOne();
230
+ if (column) {
231
+ let t = new BaseMetaTable(null, column.table.name, column.table.text);
232
+ let c = new BaseMetaColumn(t, column.name, column.text, "", true);
233
+ let sort = new SortItem(t, c, d === "true");
234
+ (_e = this.NSTable_Main.current) === null || _e === void 0 ? void 0 : _e.setSortItems([sort]);
114
235
  }
115
- if (this.props.ctf.categories)
116
- if (this.props.ctf.categories.length > 0)
117
- ans.push({
118
- name: this.props.entity.name + "_category",
119
- text: "Categories",
120
- columns: [{
121
- id: "category_id",
122
- name: "category_id",
123
- text: "ID",
124
- type: FilterItemColumnType.Unknown,
125
- getValues: (search) => __awaiter(this, void 0, void 0, function* () {
126
- var _a, _b;
127
- return (_b = (_a = this.props.ctf.categories) === null || _a === void 0 ? void 0 : _a.filter(c => SearchOperation.match(c.id, search)).map(c => { return { value: c.id, title: c.id }; })) !== null && _b !== void 0 ? _b : [];
128
- })
129
- }, {
130
- id: "category_name",
131
- name: "category_id",
132
- text: "Name",
133
- type: FilterItemColumnType.Unknown,
134
- getValues: (search) => __awaiter(this, void 0, void 0, function* () {
135
- var _a, _b;
136
- return (_b = (_a = this.props.ctf.categories) === null || _a === void 0 ? void 0 : _a.filter(c => SearchOperation.match(c.name, search)).map(c => { return { value: c.id, title: c.name }; })) !== null && _b !== void 0 ? _b : [];
137
- })
138
- }],
139
- required: false
140
- });
236
+ }
237
+ else
238
+ (_f = this.NSTable_Main.current) === null || _f === void 0 ? void 0 : _f.setSortItems(null);
239
+ let cs_all = getColumns();
240
+ let cs_visibles = (_h = (_g = this.NSBoxBooleans_Columns.current) === null || _g === void 0 ? void 0 : _g.getValues()) !== null && _h !== void 0 ? _h : [];
241
+ let cs = cs_visibles.map(v => cs_all.filter(c => v === c.table.name + "." + c.name)[0]).filter(c => c);
242
+ (_j = this.NSTable_Main.current) === null || _j === void 0 ? void 0 : _j.setVisibleColumns(cs.map(c => { return { table: c.table.name, column: c.name }; }));
243
+ this.setState({ show_dialog_columns: false });
141
244
  }
142
245
  catch (error) {
246
+ alert(error);
143
247
  }
144
- return ans;
145
- }), getValues: (table, column, value) => __awaiter(this, void 0, void 0, function* () {
146
- let values = yield this.props.entity.server.value_list(table.name, column.name, value, null, null);
147
- return values.map(v => { return { value: v, title: v }; });
148
- }), onChanged: () => {
149
- var _a, _b;
150
- (_a = this.NSTable_Main.current) === null || _a === void 0 ? void 0 : _a.setSelectedIDs([], []);
151
- (_b = this.NSTable_Main.current) === null || _b === void 0 ? void 0 : _b.reload(null, null);
152
- } }), _jsx(NSSpace, { size: NSSpaceSizeType.MINI }), _jsx(NSTable, { ref: this.NSTable_Main, name: NamingConvention.lower_case_dash.convert(this.props.entity.name, NamingConvention.Pascal_Case_Space), checkbox: true, columns: getColumns(), getRows: () => __awaiter(this, void 0, void 0, function* () {
153
- var _a, _b;
154
- let res = { rows: [], count: 0 };
155
- if (this.NSTable_Main.current) {
156
- let items = (_b = (_a = this.NSFilterBox_Top.current) === null || _a === void 0 ? void 0 : _a.getFilterItems()) !== null && _b !== void 0 ? _b : [];
157
- let NSPagination = this.NSTable_Main.current.NSPagination.current;
158
- if (NSPagination)
159
- if (this.props.entity.server.list)
160
- res = yield this.props.entity.server.list(items, NSPagination.getCurrentPage(), NSPagination.getPageSize(), []);
161
- }
162
- this.setState({ res });
163
- return res;
164
- }), getRowKey: getRowKey, getRowAttributes: (row_value, row_index) => { var _a, _b, _c; return (_c = (_b = (_a = this.props.ui).getRowAttributes) === null || _b === void 0 ? void 0 : _b.call(_a, row_value, row_index, this.state.res)) !== null && _c !== void 0 ? _c : {}; }, getColumnAttributes: this.props.ui.getColumnAttributes, getCellFormattedValue: this.props.ui.getCellFormattedValue, onSelectedIDsChanged: () => {
165
- if (this.props.onIDsChanged)
166
- this.props.onIDsChanged();
167
- else
168
- this.setState({});
169
- } }), id &&
170
- _jsxs(_Fragment, { children: [_jsx(NSSpace, { size: NSSpaceSizeType.SMALL }), _jsx(NSLine, {}), _jsx(NSSpace, { size: NSSpaceSizeType.SMALL }), _jsx(NSASectionTabs, Object.assign({ id: id }, this.props, { tabs: this.props.ui.tabs, deleteFieldCache: this.props.deleteFieldCache }))] })] }));
248
+ }, center_dialog: true, closeButton: {
249
+ show: true,
250
+ out: true
251
+ }, children: _jsxs(NSPanel, { children: [_jsx(NSColumn, { children: _jsx(NSTitle, { title: "Sort", style: { color: "rgba(20, 27, 92, 1)", marginBottom: "0" } }) }), _jsxs(NSRow, { style: { justifyContent: "start" }, children: [_jsx(NSBoxBoolean, { ref: this.NSBoxBoolean_Sort, required: true, title: "Sort", checked: this.state.sorts.length > 0, onChanged: () => {
252
+ this.setState({});
253
+ } }), ((_h = (_g = this.NSBoxBoolean_Sort) === null || _g === void 0 ? void 0 : _g.current) === null || _h === void 0 ? void 0 : _h.getValueBool(false)) &&
254
+ _jsxs(_Fragment, { children: [_jsx(NSBoxBaseCombo, { ref: this.NSBoxBaseCombo_Sort_Column, title: "Column", required: true, defaultValue: (_j = this.state.sorts[0]) === null || _j === void 0 ? void 0 : _j.column.name, getItems: () => __awaiter(this, void 0, void 0, function* () {
255
+ let cs = getColumns();
256
+ return { count: cs.length, rows: cs };
257
+ }), getTitle: c => c.text, getValue: c => c.name, getSort: () => null, multiple: false }), _jsx(NSBoxCombo, { ref: this.NSBoxCombo_Sort_Direction, title: "Direction", required: true, defaultValue: ((_k = this.state.sorts[0]) === null || _k === void 0 ? void 0 : _k.ascending) + "", getOptions: () => {
258
+ return [{
259
+ value: "true",
260
+ title: "Ascending"
261
+ }, {
262
+ value: "false",
263
+ title: "Descending"
264
+ }];
265
+ }, multiple: false })] })] }), _jsx(NSColumn, { children: _jsx(NSTitle, { title: "Columns", style: { color: "rgba(20, 27, 92, 1)", marginBottom: "0" } }) }), _jsx(NSRow, { style: { maxWidth: NSBox.width.triple }, children: _jsx(NSBoxBooleans, { ref: this.NSBoxBooleans_Columns, hideHeaderAll: true, hideHeaderBoxes: true, items: getColumns().map(c => { return { value: c.table.name + "." + c.name, text: c.table.text + "." + c.text }; }) }) })] }) })] }));
171
266
  }
172
267
  }
173
268
  //# sourceMappingURL=NSASectionList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NSASectionList.js","sourceRoot":"","sources":["../../src/layouts/NSASectionList.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NSASectionList.js","sourceRoot":"","sources":["../../src/layouts/NSASectionList.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ .nsa_section_list_items {
2
+ display: flex;
3
+ flex-direction: row;
4
+ flex-wrap: wrap;
5
+ justify-content: center;
6
+ align-items: center;
7
+ gap: 16px;
8
+ width: 100%;
9
+ }
10
+
11
+ @media screen and (min-width: 1024px) {
12
+
13
+ .nsa_section_list_items {
14
+ display: flex;
15
+ flex-direction: row;
16
+ flex-wrap: nowrap;
17
+ justify-content: end;
18
+ align-items: center;
19
+ flex: 1;
20
+ width: unset;
21
+ }
22
+ }
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "framework": "npm",
9
9
  "application": "package",
10
10
  "private": false,
11
- "version": "1.4.259",
11
+ "version": "1.4.262",
12
12
  "author": "Amir Abolhasani",
13
13
  "license": "MIT",
14
14
  "main": "./dist/main.js",
@@ -25,7 +25,7 @@
25
25
  "@babel/plugin-transform-private-property-in-object": "^7.25.9",
26
26
  "@types/platform": "^1.3.6",
27
27
  "@types/react": "^18.3.13",
28
- "namirasoft-access": "^1.4.65",
28
+ "namirasoft-access": "^1.4.66",
29
29
  "namirasoft-account": "^1.4.71",
30
30
  "namirasoft-account-client": "^1.4.5",
31
31
  "namirasoft-api-product": "^1.4.20",
@@ -37,7 +37,7 @@
37
37
  "namirasoft-secret": "^1.4.31",
38
38
  "namirasoft-site": "^1.4.36",
39
39
  "namirasoft-site-map": "^1.4.22",
40
- "namirasoft-site-react": "^1.4.362",
40
+ "namirasoft-site-react": "^1.4.370",
41
41
  "namirasoft-workspace": "^1.4.22",
42
42
  "os-browserify": "^0.3.0",
43
43
  "path-browserify": "^1.0.1",
package/src/App.tsx CHANGED
@@ -66,7 +66,7 @@ export function App(props: AppProps)
66
66
  menus: {
67
67
  viewHistory: false
68
68
  }
69
- }
69
+ },
70
70
  },
71
71
  list: {
72
72
  ui: {
@@ -0,0 +1,22 @@
1
+ .nsa_section_list_items {
2
+ display: flex;
3
+ flex-direction: row;
4
+ flex-wrap: wrap;
5
+ justify-content: center;
6
+ align-items: center;
7
+ gap: 16px;
8
+ width: 100%;
9
+ }
10
+
11
+ @media screen and (min-width: 1024px) {
12
+
13
+ .nsa_section_list_items {
14
+ display: flex;
15
+ flex-direction: row;
16
+ flex-wrap: nowrap;
17
+ justify-content: end;
18
+ align-items: center;
19
+ flex: 1;
20
+ width: unset;
21
+ }
22
+ }
@@ -1,11 +1,12 @@
1
1
  import { Component, ReactNode, createRef } from "react";
2
- import { FilterItem, FilterItemColumnType, NamingConvention, ObjectService, SearchOperation } from "namirasoft-core";
3
- import { NSLine, NSSpace, NSSpaceSizeType, NSTable, NSFilterBox, NSFilterBoxProps_Table, NSFilterBoxProps_Column, TableColumnInfo, TableRowInfo, IBaseComponentProps } from "namirasoft-site-react";
2
+ import { BaseMetaColumn, BaseMetaTable, FilterItem, FilterItemColumnType, NamingConvention, ObjectService, SearchOperation, SortItem } from "namirasoft-core";
3
+ import { NSLine, NSSpace, NSSpaceSizeType, NSTable, NSFilterBox, NSFilterBoxProps_Table, NSFilterBoxProps_Column, TableColumnInfo, TableRowInfo, IBaseComponentProps, NSFilterBoxItems, NSRow, NSButton, NSBoxCombo, NSDialog, NSBoxBooleans, NSPanel, NSTitle, NSBox, NSColumn, NSBoxBoolean, NSBoxBaseCombo } from "namirasoft-site-react";
4
4
  import { CategoryRow, FieldRow } from "namirasoft-field";
5
5
  import { IEntityInfo } from "../IEntityInfo";
6
6
  import { NSARouterMakerProps } from "../NSARouterMakerProps";
7
7
  import { NSASectionTabs, NSASectionTabsItemsProps } from "./NSASectionTabs";
8
8
  import { FilterItemColumnTypeBuilder, VariableType } from "namirasoft-schema";
9
+ import Styles from "./NSASectionList.module.css";
9
10
 
10
11
  export interface NSASectionListProps<EntityType extends { id: string }> extends IBaseComponentProps
11
12
  {
@@ -14,6 +15,8 @@ export interface NSASectionListProps<EntityType extends { id: string }> extends
14
15
  getColumnAttributes?: (column: TableColumnInfo) => { [key: string]: any };
15
16
  getCellFormattedValue?: (value: any, column: TableColumnInfo, row: TableRowInfo<EntityType>) => any;
16
17
  tabs?: NSASectionTabsItemsProps;
18
+ modes?: { [name: string]: (getColumns: () => TableColumnInfo[], getRows: () => Promise<{ rows: EntityType[], count: number }>) => JSX.Element }
19
+ default_mode?: string;
17
20
  };
18
21
  }
19
22
 
@@ -36,6 +39,9 @@ export interface NSASectionListState<EntityType>
36
39
  rows: EntityType[];
37
40
  count: number;
38
41
  } | null;
42
+ show_dialog_columns: boolean;
43
+ sorts: SortItem[];
44
+ mode: string;
39
45
  }
40
46
 
41
47
  export class NSASectionList<EntityType extends { id: string }, EntityTypeInput = EntityType>
@@ -43,11 +49,16 @@ export class NSASectionList<EntityType extends { id: string }, EntityTypeInput =
43
49
  >
44
50
  {
45
51
  public NSFilterBox_Top = createRef<NSFilterBox>();
52
+ public NSBoxCombo_Mode = createRef<NSBoxCombo>();
46
53
  public NSTable_Main = createRef<NSTable<EntityType>>();
54
+ public NSBoxBoolean_Sort = createRef<NSBoxBoolean>();
55
+ public NSBoxBaseCombo_Sort_Column = createRef<NSBoxBaseCombo<TableColumnInfo>>();
56
+ public NSBoxCombo_Sort_Direction = createRef<NSBoxCombo>();
57
+ public NSBoxBooleans_Columns = createRef<NSBoxBooleans>();
47
58
  constructor(props: NSASectionListInnerProps<EntityType, EntityTypeInput>)
48
59
  {
49
60
  super(props);
50
- this.state = { res: null };
61
+ this.state = { res: null, show_dialog_columns: false, sorts: [], mode: props.ui.default_mode ?? "" };
51
62
  }
52
63
  getSelectedIDs(): string[]
53
64
  {
@@ -77,15 +88,17 @@ export class NSASectionList<EntityType extends { id: string }, EntityTypeInput =
77
88
  if (ids.length === 1)
78
89
  id = ids[0];
79
90
 
80
- let filterItems: FilterItem[] | undefined = undefined;
91
+ let filterItems = this.NSFilterBox_Top.current?.getFilterItems() ?? [];
92
+ let incommingFilterItems: FilterItem[] | undefined = undefined;
81
93
  try
82
94
  {
83
95
  let encoded = this.props.url.getQuery("filters");
84
96
  if (encoded)
85
- filterItems = FilterItem.decode(encoded) ?? undefined;
97
+ incommingFilterItems = FilterItem.decode(encoded) ?? undefined;
86
98
  } catch (error)
87
99
  {
88
100
  }
101
+
89
102
  function typeConvertor(type: string): FilterItemColumnType
90
103
  {
91
104
  let t = new ObjectService(type).getEnum(VariableType, VariableType.Any)
@@ -93,168 +106,366 @@ export class NSASectionList<EntityType extends { id: string }, EntityTypeInput =
93
106
  return builder.runSynch(() => { }) ?? FilterItemColumnType.Unknown;
94
107
  }
95
108
 
109
+ let getRows = async () =>
110
+ {
111
+ let res: { rows: EntityType[], count: number } = { rows: [], count: 0 };
112
+ if (this.NSTable_Main.current)
113
+ {
114
+ let items = this.NSFilterBox_Top.current?.getFilterItems() ?? [];
115
+ let NSPagination = this.NSTable_Main.current.NSPagination.current;
116
+ if (NSPagination)
117
+ if (this.props.entity.server.list)
118
+ res = await this.props.entity.server.list(items, NSPagination.getCurrentPage(), NSPagination.getPageSize(), []);
119
+ }
120
+ this.setState({ res });
121
+ return res;
122
+ };
123
+
124
+ // Modes
125
+ let table_renderer = () =>
126
+ {
127
+ return <NSTable<EntityType>
128
+ ref={this.NSTable_Main}
129
+ name={NamingConvention.lower_case_dash.convert(this.props.entity.name, NamingConvention.Pascal_Case_Space)}
130
+ checkbox={true}
131
+ columns={getColumns()}
132
+ getRows={getRows}
133
+ getRowKey={getRowKey}
134
+ getRowAttributes={(row_value: EntityType, row_index: number) => { return this.props.ui.getRowAttributes?.(row_value, row_index, this.state.res) ?? {}; }}
135
+ getColumnAttributes={this.props.ui.getColumnAttributes}
136
+ getCellFormattedValue={this.props.ui.getCellFormattedValue}
137
+ onSelectedIDsChanged={() =>
138
+ {
139
+ if (this.props.onIDsChanged)
140
+ this.props.onIDsChanged();
141
+ else
142
+ this.setState({});
143
+ }}
144
+ />;
145
+ };
146
+ let modes = this.props.ui.modes ?? {};
147
+ if (!modes)
148
+ modes = {};
149
+ if (!modes["Table"])
150
+ modes = { Table: table_renderer, ...modes };
151
+
152
+ let mode_names = Object.keys(modes);
153
+ let mode_current = this.state.mode;
154
+ if (!mode_names.includes(mode_current))
155
+ mode_current = mode_names[0];
156
+
96
157
  return (
97
- <div
98
- id={this.props.id}
99
- className={`${this.props.classList?.join(" ") ?? ""}`}
100
- style={{ ...this.props.style }}
101
- >
102
- <NSFilterBox
103
- ref={this.NSFilterBox_Top}
104
- filterItems={filterItems}
105
- getTables={() =>
106
- {
107
- return this.props.entity.tables.map(table =>
108
- {
109
- let columns = table.table.getColumns().map(c => { return { id: c.name, ...c, type: typeConvertor(c.type) }; });
110
- return { name: table.table.name, text: table.table.text, columns, required: table.required };
111
- })
112
- }}
113
- getMoreTables={async () =>
114
- {
115
- let ans: NSFilterBoxProps_Table[] = [];
116
- if (this.props.ctf.enabled)
117
- try
158
+ <>
159
+ <div
160
+ id={this.props.id}
161
+ className={`${this.props.classList?.join(" ") ?? ""}`}
162
+ style={{ ...this.props.style }}
163
+ >
164
+ <NSRow
165
+ style={{ justifyContent: "start" }}
166
+ >
167
+ <NSFilterBox
168
+ ref={this.NSFilterBox_Top}
169
+ filterItems={incommingFilterItems}
170
+ getTables={() =>
118
171
  {
119
- if (this.props.ctf.fields)
120
- if (this.props.ctf.fields.length > 0)
172
+ return this.props.entity.tables.map(table =>
173
+ {
174
+ let columns = table.table.getColumns().map(c => { return { id: c.name, ...c, type: typeConvertor(c.type) }; });
175
+ return { name: table.table.name, text: table.table.text, columns, required: table.required };
176
+ })
177
+ }}
178
+ getMoreTables={async () =>
179
+ {
180
+ let ans: NSFilterBoxProps_Table[] = [];
181
+ if (this.props.ctf.enabled)
182
+ try
121
183
  {
122
- let name = this.props.entity.name + "_field";
123
- ans.push({
124
- name,
125
- text: "Fields",
126
- columns: [{
127
- id: "field_id",
128
- name: "field_id",
129
- text: "ID",
130
- type: FilterItemColumnType.Unknown,
131
- getValues: async (search) =>
132
- {
133
- return this.props.ctf.fields?.filter(c => SearchOperation.match(c.id, search)).map(c => { return { value: c.id, title: c.id } }) ?? [];
134
- }
135
- }, {
136
- id: "field_name",
137
- name: "field_id",
138
- text: "Name",
139
- type: FilterItemColumnType.Unknown,
140
- getValues: async (search) =>
141
- {
142
- return this.props.ctf.fields?.filter(c => SearchOperation.match(c.name, search)).map(c => { return { value: c.id, title: c.name } }) ?? [];
143
- }
144
- }, {
145
- id: "field_value",
146
- name: "value",
147
- text: "Value",
148
- type: FilterItemColumnType.Unknown
149
- },
150
- ...this.props.ctf.fields.map(f =>
184
+ if (this.props.ctf.fields)
185
+ if (this.props.ctf.fields.length > 0)
151
186
  {
152
- return {
153
- id: f.id,
154
- name: f.id,
155
- text: f.name,
156
- type: typeConvertor(f.type.type.type),
157
- getValues: async (search: string) =>
187
+ let name = this.props.entity.name + "_field";
188
+ ans.push({
189
+ name,
190
+ text: "Fields",
191
+ columns: [{
192
+ id: "field_id",
193
+ name: "field_id",
194
+ text: "ID",
195
+ type: FilterItemColumnType.Unknown,
196
+ getValues: async (search) =>
197
+ {
198
+ return this.props.ctf.fields?.filter(c => SearchOperation.match(c.id, search)).map(c => { return { value: c.id, title: c.id } }) ?? [];
199
+ }
200
+ }, {
201
+ id: "field_name",
202
+ name: "field_id",
203
+ text: "Name",
204
+ type: FilterItemColumnType.Unknown,
205
+ getValues: async (search) =>
206
+ {
207
+ return this.props.ctf.fields?.filter(c => SearchOperation.match(c.name, search)).map(c => { return { value: c.id, title: c.name } }) ?? [];
208
+ }
209
+ }, {
210
+ id: "field_value",
211
+ name: "value",
212
+ text: "Value",
213
+ type: FilterItemColumnType.Unknown
214
+ },
215
+ ...this.props.ctf.fields.map(f =>
158
216
  {
159
- let values = await this.props.entity.server.value_list(name, "value", search, f.id, null);
160
- return values.map(v => { return { value: v, title: v } });
161
- }
162
- };
163
- }),],
164
- required: false
165
- });
166
- }
217
+ return {
218
+ id: f.id,
219
+ name: f.id,
220
+ text: f.name,
221
+ type: typeConvertor(f.type.type.type),
222
+ getValues: async (search: string) =>
223
+ {
224
+ let values = await this.props.entity.server.value_list(name, "value", search, f.id, null);
225
+ return values.map(v => { return { value: v, title: v } });
226
+ }
227
+ };
228
+ }),],
229
+ required: false
230
+ });
231
+ }
167
232
 
168
- if (this.props.ctf.categories)
169
- if (this.props.ctf.categories.length > 0)
170
- ans.push({
171
- name: this.props.entity.name + "_category",
172
- text: "Categories",
173
- columns: [{
174
- id: "category_id",
175
- name: "category_id",
176
- text: "ID",
177
- type: FilterItemColumnType.Unknown,
178
- getValues: async (search) =>
179
- {
180
- return this.props.ctf.categories?.filter(c => SearchOperation.match(c.id, search)).map(c => { return { value: c.id, title: c.id } }) ?? [];
181
- }
182
- }, {
183
- id: "category_name",
184
- name: "category_id",
185
- text: "Name",
186
- type: FilterItemColumnType.Unknown,
187
- getValues: async (search) =>
188
- {
189
- return this.props.ctf.categories?.filter(c => SearchOperation.match(c.name, search)).map(c => { return { value: c.id, title: c.name } }) ?? [];
190
- }
191
- }],
192
- required: false
193
- });
233
+ if (this.props.ctf.categories)
234
+ if (this.props.ctf.categories.length > 0)
235
+ ans.push({
236
+ name: this.props.entity.name + "_category",
237
+ text: "Categories",
238
+ columns: [{
239
+ id: "category_id",
240
+ name: "category_id",
241
+ text: "ID",
242
+ type: FilterItemColumnType.Unknown,
243
+ getValues: async (search) =>
244
+ {
245
+ return this.props.ctf.categories?.filter(c => SearchOperation.match(c.id, search)).map(c => { return { value: c.id, title: c.id } }) ?? [];
246
+ }
247
+ }, {
248
+ id: "category_name",
249
+ name: "category_id",
250
+ text: "Name",
251
+ type: FilterItemColumnType.Unknown,
252
+ getValues: async (search) =>
253
+ {
254
+ return this.props.ctf.categories?.filter(c => SearchOperation.match(c.name, search)).map(c => { return { value: c.id, title: c.name } }) ?? [];
255
+ }
256
+ }],
257
+ required: false
258
+ });
194
259
 
195
- } catch (error)
260
+ } catch (error)
261
+ {
262
+ }
263
+ // todo add tags
264
+ return ans;
265
+ }}
266
+ getValues={async (table: NSFilterBoxProps_Table, column: NSFilterBoxProps_Column, value: string) =>
267
+ {
268
+ let values = await this.props.entity.server.value_list(table.name, column.name, value, null, null);
269
+ return values.map(v => { return { value: v, title: v } });
270
+ }}
271
+ onChanged={() =>
196
272
  {
273
+ this.NSTable_Main.current?.setSelectedIDs([], []);
274
+ this.NSTable_Main.current?.reload(null, null);
275
+ }} />
276
+ <div className={Styles.nsa_section_list_items}>
277
+ {
278
+ mode_names.length > 1 &&
279
+ <NSBoxCombo
280
+ ref={this.NSBoxCombo_Mode}
281
+ title="Mode"
282
+ hideHeader
283
+ required
284
+ searchable={false}
285
+ placeholder=""
286
+ defaultValue={mode_current}
287
+ getOptions={() =>
288
+ {
289
+ return mode_names.map(m => { return { value: m, title: m } });
290
+ }}
291
+ multiple={false}
292
+ style={{ width: "100px" }}
293
+ onChanged={e =>
294
+ {
295
+ this.setState({ mode: e.getValueOne(false) ?? "" });
296
+ }}
297
+ />
197
298
  }
198
- // todo add tags
199
- return ans;
200
- }}
201
- getValues={async (table: NSFilterBoxProps_Table, column: NSFilterBoxProps_Column, value: string) =>
202
- {
203
- let values = await this.props.entity.server.value_list(table.name, column.name, value, null, null);
204
- return values.map(v => { return { value: v, title: v } });
205
- }}
206
- onChanged={() =>
299
+ <NSButton
300
+ title=""
301
+ onClick={{
302
+ action: () =>
303
+ {
304
+ this.setState({ show_dialog_columns: true, sorts: this.NSTable_Main.current?.getSortItems() ?? [] }, () =>
305
+ {
306
+ let values = this.NSTable_Main.current?.getVisibleColumns().map(c => c.table + "." + c.column);
307
+ if (values)
308
+ this.NSBoxBooleans_Columns.current?.setValues(values);
309
+ });
310
+ },
311
+ showLoading: false
312
+ }}
313
+ style={{
314
+ width: "48px",
315
+ border: "1px solid black",
316
+ backgroundImage: "url('https://static.namirasoft.com/image/concept/gear/grey.svg')",
317
+ backgroundSize: "32px",
318
+ backgroundRepeat: "no-repeat",
319
+ backgroundPosition: "center center"
320
+ }}
321
+ ></NSButton>
322
+ </div>
323
+ </NSRow>
324
+ <NSSpace size={NSSpaceSizeType.MINI} />
325
+ <NSFilterBoxItems
326
+ filterItems={filterItems}
327
+ onClearFilterItems={() =>
328
+ {
329
+ this.NSFilterBox_Top.current?.setFilterItems([]);
330
+ }}
331
+ onRemoveFilterItem={(item) =>
332
+ {
333
+ this.NSFilterBox_Top.current?.removeFilterItem(item);
334
+ }}
335
+ />
207
336
  {
208
- this.NSTable_Main.current?.setSelectedIDs([], []);
209
- this.NSTable_Main.current?.reload(null, null);
210
- }} />
211
- <NSSpace size={NSSpaceSizeType.MINI}></NSSpace>
212
- <NSTable<EntityType>
213
- ref={this.NSTable_Main}
214
- name={NamingConvention.lower_case_dash.convert(this.props.entity.name, NamingConvention.Pascal_Case_Space)}
215
- checkbox={true}
216
- columns={getColumns()}
217
- getRows={async () =>
337
+ filterItems.length > 0 &&
338
+ <NSSpace size={NSSpaceSizeType.MINI} />
339
+ }
218
340
  {
219
- let res: { rows: EntityType[], count: number } = { rows: [], count: 0 };
220
- if (this.NSTable_Main.current)
221
- {
222
- let items = this.NSFilterBox_Top.current?.getFilterItems() ?? [];
223
- let NSPagination = this.NSTable_Main.current.NSPagination.current;
224
- if (NSPagination)
225
- if (this.props.entity.server.list)
226
- res = await this.props.entity.server.list(items, NSPagination.getCurrentPage(), NSPagination.getPageSize(), []);
227
- }
228
- this.setState({ res });
229
- return res;
230
- }}
231
- getRowKey={getRowKey}
232
- getRowAttributes={(row_value: EntityType, row_index: number) => { return this.props.ui.getRowAttributes?.(row_value, row_index, this.state.res) ?? {}; }}
233
- getColumnAttributes={this.props.ui.getColumnAttributes}
234
- getCellFormattedValue={this.props.ui.getCellFormattedValue}
235
- onSelectedIDsChanged={() =>
341
+ modes[mode_current](getColumns, getRows)
342
+ }
236
343
  {
237
- if (this.props.onIDsChanged)
238
- this.props.onIDsChanged();
239
- else
240
- this.setState({});
241
- }}
242
- />
344
+ id &&
345
+ <>
346
+ <NSSpace size={NSSpaceSizeType.SMALL} />
347
+ <NSLine />
348
+ <NSSpace size={NSSpaceSizeType.SMALL} />
349
+ <NSASectionTabs
350
+ id={id}
351
+ {...this.props}
352
+ tabs={this.props.ui.tabs}
353
+ deleteFieldCache={this.props.deleteFieldCache}
354
+ />
355
+ </>
356
+ }
357
+ </div >
243
358
  {
244
- id &&
245
- <>
246
- <NSSpace size={NSSpaceSizeType.SMALL} />
247
- <NSLine />
248
- <NSSpace size={NSSpaceSizeType.SMALL} />
249
- <NSASectionTabs
250
- id={id}
251
- {...this.props}
252
- tabs={this.props.ui.tabs}
253
- deleteFieldCache={this.props.deleteFieldCache}
254
- />
255
- </>
359
+ this.state.show_dialog_columns &&
360
+ <NSDialog
361
+ onClose={() =>
362
+ {
363
+ try
364
+ {
365
+ debugger;
366
+ if (this.NSBoxBoolean_Sort?.current?.getValueBool())
367
+ {
368
+ let column = this.NSBoxBaseCombo_Sort_Column.current?.getDataOne();
369
+ let d = this.NSBoxCombo_Sort_Direction.current?.getValueOne();
370
+ if (column)
371
+ {
372
+ let t = new BaseMetaTable(null, column.table.name, column.table.text);
373
+ let c = new BaseMetaColumn(t, column.name, column.text, "", true);
374
+ let sort = new SortItem(t, c, d === "true");
375
+ this.NSTable_Main.current?.setSortItems([sort]);
376
+ }
377
+ }
378
+ else
379
+ this.NSTable_Main.current?.setSortItems(null);
380
+
381
+ let cs_all = getColumns();
382
+ let cs_visibles = this.NSBoxBooleans_Columns.current?.getValues() ?? [];
383
+ let cs = cs_visibles.map(v => cs_all.filter(c => v === c.table.name + "." + c.name)[0]).filter(c => c);
384
+ this.NSTable_Main.current?.setVisibleColumns(cs.map(c => { return { table: c.table.name, column: c.name }; }));
385
+ this.setState({ show_dialog_columns: false });
386
+ } catch (error)
387
+ {
388
+ alert(error)
389
+ }
390
+ }}
391
+ center_dialog
392
+ closeButton={{
393
+ show: true,
394
+ out: true
395
+ }}
396
+ >
397
+ <NSPanel>
398
+ <NSColumn>
399
+ <NSTitle title="Sort" style={{ color: "rgba(20, 27, 92, 1)", marginBottom: "0" }} />
400
+ </NSColumn>
401
+ <NSRow
402
+ style={{ justifyContent: "start" }}
403
+ >
404
+ <NSBoxBoolean
405
+ ref={this.NSBoxBoolean_Sort}
406
+ required
407
+ title="Sort"
408
+ checked={this.state.sorts.length > 0}
409
+ onChanged={() =>
410
+ {
411
+ this.setState({});
412
+ }}
413
+ />
414
+ {
415
+ this.NSBoxBoolean_Sort?.current?.getValueBool(false) &&
416
+ <>
417
+ <NSBoxBaseCombo<TableColumnInfo>
418
+ ref={this.NSBoxBaseCombo_Sort_Column}
419
+ title="Column"
420
+ required
421
+ defaultValue={this.state.sorts[0]?.column.name}
422
+ getItems={async () =>
423
+ {
424
+ let cs = getColumns();
425
+ return { count: cs.length, rows: cs };
426
+ }}
427
+ getTitle={c => c.text}
428
+ getValue={c => c.name}
429
+ getSort={() => null}
430
+ multiple={false}
431
+ />
432
+ <NSBoxCombo
433
+ ref={this.NSBoxCombo_Sort_Direction}
434
+ title="Direction"
435
+ required
436
+ defaultValue={this.state.sorts[0]?.ascending + ""}
437
+ getOptions={() =>
438
+ {
439
+ return [{
440
+ value: "true",
441
+ title: "Ascending"
442
+ }, {
443
+ value: "false",
444
+ title: "Descending"
445
+ }];
446
+ }}
447
+ multiple={false}
448
+ />
449
+ </>
450
+ }
451
+ </NSRow>
452
+ <NSColumn>
453
+ <NSTitle title="Columns" style={{ color: "rgba(20, 27, 92, 1)", marginBottom: "0" }} />
454
+ </NSColumn>
455
+ <NSRow style={{ maxWidth: NSBox.width.triple }}>
456
+ <NSBoxBooleans
457
+ ref={this.NSBoxBooleans_Columns}
458
+ hideHeaderAll
459
+ hideHeaderBoxes
460
+ items={
461
+ getColumns().map(c => { return { value: c.table.name + "." + c.name, text: c.table.text + "." + c.text } })
462
+ }
463
+ />
464
+ </NSRow>
465
+ </NSPanel>
466
+ </NSDialog >
256
467
  }
257
- </div>
468
+ </>
258
469
  );
259
470
  }
260
471
  }