namirasoft-account-react 1.5.11 → 1.5.13
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/NSARouter.d.ts +16 -0
- package/dist/NSARouter.js +42 -0
- package/dist/NSARouter.js.map +1 -0
- package/dist/NSFRouterProps.d.ts +6 -0
- package/dist/NSFRouterProps.js +2 -0
- package/dist/NSFRouterProps.js.map +1 -0
- package/dist/NSFRoutes.d.ts +7 -0
- package/dist/NSFRoutes.js +29 -0
- package/dist/NSFRoutes.js.map +1 -0
- package/dist/layouts/NSALayout.js +2 -2
- package/dist/layouts/{NSARoutes_Field.d.ts → NSALayout_Field.d.ts} +2 -2
- package/dist/layouts/{NSARoutes_Field.js → NSALayout_Field.js} +27 -24
- package/dist/layouts/NSALayout_Field.js.map +1 -0
- package/dist/layouts/NSARouter.d.ts +16 -0
- package/dist/layouts/NSARouter.js +38 -0
- package/dist/layouts/NSARouter.js.map +1 -0
- package/dist/layouts/NSARouter_Field.d.ts +8 -0
- package/dist/layouts/NSARouter_Field.js +92 -0
- package/dist/layouts/NSARouter_Field.js.map +1 -0
- package/dist/layouts/NSASectionList.js +1 -1
- package/dist/layouts/NSASectionList.js.map +1 -1
- package/dist/main.d.ts +21 -14
- package/dist/main.js +21 -14
- package/dist/main.js.map +1 -1
- package/dist/pages/NSFCategoryEditPage.d.ts +19 -0
- package/dist/pages/NSFCategoryEditPage.js +47 -0
- package/dist/pages/NSFCategoryEditPage.js.map +1 -0
- package/dist/pages/NSFCategoryListPage.d.ts +8 -0
- package/dist/pages/NSFCategoryListPage.js +12 -0
- package/dist/pages/NSFCategoryListPage.js.map +1 -0
- package/dist/pages/NSFCategoryViewPage.d.ts +8 -0
- package/dist/pages/NSFCategoryViewPage.js +12 -0
- package/dist/pages/NSFCategoryViewPage.js.map +1 -0
- package/dist/pages/NSFEntities.d.ts +7 -0
- package/dist/pages/NSFEntities.js +60 -0
- package/dist/pages/NSFEntities.js.map +1 -0
- package/package.json +1 -1
- package/src/NSARouter.tsx +69 -0
- package/src/NSFRouterProps.ts +8 -0
- package/src/NSFRoutes.ts +31 -0
- package/src/layouts/NSALayout.tsx +2 -2
- package/src/layouts/{NSARoutes_Field.ts → NSALayout_Field.ts} +25 -23
- package/src/layouts/NSASectionList.tsx +1 -1
- package/src/main.ts +21 -14
- package/src/pages/NSFCategoryEditPage.tsx +92 -0
- package/src/pages/NSFCategoryListPage.tsx +30 -0
- package/src/pages/NSFCategoryViewPage.tsx +29 -0
- package/src/pages/NSFEntities.ts +59 -0
- package/dist/layouts/NSARoutes.d.ts +0 -11
- package/dist/layouts/NSARoutes.js +0 -13
- package/dist/layouts/NSARoutes.js.map +0 -1
- package/dist/layouts/NSARoutes_Field.js.map +0 -1
- package/src/layouts/NSARoutes.tsx +0 -29
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { CategoryScopeRow, SlotRow } from "namirasoft-field";
|
|
2
|
+
import { NSALayout } from "../layouts/NSALayout";
|
|
3
|
+
import { NSARouterMakerProps } from "../NSARouterMakerProps";
|
|
4
|
+
import { NSFRouterProps } from "../NSFRouterProps";
|
|
5
|
+
import { NSFEntities } from "./NSFEntities";
|
|
6
|
+
|
|
7
|
+
export interface NSFCategoryListPageProps extends NSARouterMakerProps, NSFRouterProps
|
|
8
|
+
{
|
|
9
|
+
slot: SlotRow;
|
|
10
|
+
category_scope: CategoryScopeRow;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function NSFCategoryListPage(props: NSFCategoryListPageProps)
|
|
14
|
+
{
|
|
15
|
+
return (
|
|
16
|
+
<NSALayout
|
|
17
|
+
{...props}
|
|
18
|
+
action={{
|
|
19
|
+
description: "This section displays all categories you have created with their basic information."
|
|
20
|
+
}}
|
|
21
|
+
pages={{
|
|
22
|
+
entity: NSFEntities.category(props, props.slot, props.category_scope),
|
|
23
|
+
list: {}
|
|
24
|
+
}}
|
|
25
|
+
>
|
|
26
|
+
<>
|
|
27
|
+
</>
|
|
28
|
+
</NSALayout>
|
|
29
|
+
);
|
|
30
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { CategoryScopeRow, SlotRow } from "namirasoft-field";
|
|
2
|
+
import { NSALayout } from "../layouts/NSALayout";
|
|
3
|
+
import { NSARouterMakerProps } from "../NSARouterMakerProps";
|
|
4
|
+
import { NSFRouterProps } from "../NSFRouterProps";
|
|
5
|
+
import { NSFEntities } from "./NSFEntities";
|
|
6
|
+
|
|
7
|
+
export interface NSFCategoryViewPageProps extends NSARouterMakerProps, NSFRouterProps
|
|
8
|
+
{
|
|
9
|
+
slot: SlotRow;
|
|
10
|
+
category_scope: CategoryScopeRow;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function NSFCategoryViewPage(props: NSFCategoryViewPageProps)
|
|
14
|
+
{
|
|
15
|
+
return (
|
|
16
|
+
<NSALayout
|
|
17
|
+
{...props}
|
|
18
|
+
action={{
|
|
19
|
+
description: "This section displays detailed information about a selected category."
|
|
20
|
+
}}
|
|
21
|
+
pages={{
|
|
22
|
+
entity: NSFEntities.category(props, props.slot, props.category_scope),
|
|
23
|
+
view: {}
|
|
24
|
+
}}
|
|
25
|
+
>
|
|
26
|
+
<> </>
|
|
27
|
+
</NSALayout>
|
|
28
|
+
);
|
|
29
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { ProductUUID } from "namirasoft-api-product";
|
|
2
|
+
import { EnvService, FilterItem, FilterItemOperator, IStorageLocal } from "namirasoft-core";
|
|
3
|
+
import { CategoryInputRow, CategoryRow, CategoryScopeRow, NamirasoftFieldMetaDatabase, NamirasoftFieldServer, SlotRow } from "namirasoft-field";
|
|
4
|
+
import { NamirasoftMap } from "namirasoft-site-map";
|
|
5
|
+
import { BaseColumnFormatter, DateTimeFormatter, IDFormatter, StringFormatter, StringFormatterSizeType } from "namirasoft-site-react";
|
|
6
|
+
import { IEntityInfo } from "../IEntityInfo";
|
|
7
|
+
import { NSARouterMakerProps } from "../NSARouterMakerProps";
|
|
8
|
+
import { NSFRouterProps } from "../NSFRouterProps";
|
|
9
|
+
import { NSFRoutes } from "../NSFRoutes";
|
|
10
|
+
|
|
11
|
+
export class NSFEntities
|
|
12
|
+
{
|
|
13
|
+
static category(props: NSARouterMakerProps & NSFRouterProps, slot: SlotRow, category_scope: CategoryScopeRow): IEntityInfo<CategoryRow, CategoryInputRow>
|
|
14
|
+
{
|
|
15
|
+
let namirasoft = new NamirasoftMap(props.account.token_manager, console.error);
|
|
16
|
+
|
|
17
|
+
return {
|
|
18
|
+
product_id: ProductUUID.NAMIRASOFT_FIELD,
|
|
19
|
+
name: "category",
|
|
20
|
+
tables: [{ table: namirasoft.field.tables.category, required: true }],
|
|
21
|
+
client: {
|
|
22
|
+
getColumns()
|
|
23
|
+
{
|
|
24
|
+
return [
|
|
25
|
+
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.id, new IDFormatter(namirasoft, null)),
|
|
26
|
+
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.user_id, new IDFormatter(namirasoft, new IStorageLocal())),
|
|
27
|
+
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.workspace_id, new IDFormatter(namirasoft, new IStorageLocal())),
|
|
28
|
+
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.category_scope_id, new IDFormatter(namirasoft, new IStorageLocal())),
|
|
29
|
+
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.name, new StringFormatter(StringFormatterSizeType.Sentence)),
|
|
30
|
+
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.description, new StringFormatter(StringFormatterSizeType.Description)),
|
|
31
|
+
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.created_at, new DateTimeFormatter()),
|
|
32
|
+
BaseColumnFormatter.getColumn(namirasoft.field.tables.category.columns.updated_at, new DateTimeFormatter()),
|
|
33
|
+
];
|
|
34
|
+
},
|
|
35
|
+
getListURL: () => NSFRoutes.CategoryList(slot.id, slot.name),
|
|
36
|
+
getNewURL: () => NSFRoutes.CategoryNew(slot.id, slot.name),
|
|
37
|
+
getCopyURL: (id: string) => NSFRoutes.CategoryCopy(slot.id, slot.name, id),
|
|
38
|
+
getEditURL: (id: string) => NSFRoutes.CategoryEdit(slot.id, slot.name, id),
|
|
39
|
+
getViewURL: (id: string) => NSFRoutes.CategoryView(slot.id, slot.name, id),
|
|
40
|
+
},
|
|
41
|
+
server: {
|
|
42
|
+
value_list: props.servers.field.value.List,
|
|
43
|
+
get: props.servers.field.category.Get,
|
|
44
|
+
list: async (filters, page, size, sorts, all_workspaces) =>
|
|
45
|
+
{
|
|
46
|
+
let REACT_APP_BASE_URL_FIELD = new EnvService("REACT_APP_BASE_URL_FIELD", true).getString();
|
|
47
|
+
let field = new NamirasoftFieldServer(REACT_APP_BASE_URL_FIELD, props.account.token_manager, props.notifier.onError);
|
|
48
|
+
let meta = new NamirasoftFieldMetaDatabase(props.account.token_manager);
|
|
49
|
+
let filter_category_scope = new FilterItem(meta.tables.category, meta.tables.category.columns.category_scope_id, false, FilterItemOperator.all.equals, category_scope.id);
|
|
50
|
+
filters = [filter_category_scope, ...(filters ?? [])];
|
|
51
|
+
return await field.category.List(filters, page, size, sorts, all_workspaces);
|
|
52
|
+
},
|
|
53
|
+
create: props.servers.field.category.Create,
|
|
54
|
+
update: props.servers.field.category.Update,
|
|
55
|
+
delete: props.servers.field.category.Delete
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Component, ReactNode } from 'react';
|
|
2
|
-
export interface NSARoutesProps {
|
|
3
|
-
children: ReactNode;
|
|
4
|
-
}
|
|
5
|
-
interface NSARoutesState {
|
|
6
|
-
}
|
|
7
|
-
export declare class NSARoutes extends Component<NSARoutesProps, NSARoutesState> {
|
|
8
|
-
constructor(props: NSARoutesProps);
|
|
9
|
-
render(): import("react/jsx-runtime").JSX.Element;
|
|
10
|
-
}
|
|
11
|
-
export {};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { NSRoutes } from 'namirasoft-site-react';
|
|
3
|
-
import { Component } from 'react';
|
|
4
|
-
export class NSARoutes extends Component {
|
|
5
|
-
constructor(props) {
|
|
6
|
-
super(props);
|
|
7
|
-
this.state = {};
|
|
8
|
-
}
|
|
9
|
-
render() {
|
|
10
|
-
return (_jsx(NSRoutes, { children: this.props.children }));
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=NSARoutes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NSARoutes.js","sourceRoot":"","sources":["../../src/layouts/NSARoutes.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAa,MAAM,OAAO,CAAC;AAW7C,MAAM,OAAO,SAAU,SAAQ,SAAyC;IAEpE,YAAY,KAAqB;QAE7B,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IACpB,CAAC;IACQ,MAAM;QAEX,OAAO,CACH,KAAC,QAAQ,cACJ,IAAI,CAAC,KAAK,CAAC,QAAQ,GACb,CACd,CAAC;IACN,CAAC;CACJ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NSARoutes_Field.js","sourceRoot":"","sources":["../../src/layouts/NSARoutes_Field.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { NSRoutes } from 'namirasoft-site-react';
|
|
2
|
-
import { Component, ReactNode } from 'react';
|
|
3
|
-
|
|
4
|
-
export interface NSARoutesProps
|
|
5
|
-
{
|
|
6
|
-
children: ReactNode;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
interface NSARoutesState
|
|
10
|
-
{
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export class NSARoutes extends Component<NSARoutesProps, NSARoutesState>
|
|
14
|
-
{
|
|
15
|
-
constructor(props: NSARoutesProps)
|
|
16
|
-
{
|
|
17
|
-
super(props);
|
|
18
|
-
|
|
19
|
-
this.state = {};
|
|
20
|
-
}
|
|
21
|
-
override render()
|
|
22
|
-
{
|
|
23
|
-
return (
|
|
24
|
-
<NSRoutes>
|
|
25
|
-
{this.props.children}
|
|
26
|
-
</NSRoutes>
|
|
27
|
-
);
|
|
28
|
-
}
|
|
29
|
-
}
|