datastake-daf 0.6.244 → 0.6.245
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/.env +8 -0
- package/.vscode/settings.json +13 -0
- package/dist/components/index.js +26 -25
- package/package.json +1 -1
- package/src/@daf/core/components/Dashboard/Widget/ProjectWidget/ProjectWidget.stories.jsx +87 -66
- package/src/@daf/core/components/EditForm/components/DataLink/index.js +631 -578
- package/src/@daf/core/components/EditForm/storyConfig1.js +69 -250
- package/src/styles/components/_analysisView.scss +31 -2
package/.env
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cSpell.words": ["cukura"],
|
|
3
|
+
"files.autoSave": "afterDelay",
|
|
4
|
+
"editor.wordWrap": "on",
|
|
5
|
+
"editor.autoClosingBrackets": "always",
|
|
6
|
+
"editor.autoClosingComments": "always",
|
|
7
|
+
"editor.autoClosingQuotes": "always",
|
|
8
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
|
9
|
+
"editor.formatOnPaste": true,
|
|
10
|
+
"editor.formatOnSave": true,
|
|
11
|
+
"notebook.defaultFormatter": "esbenp.prettier-vscode",
|
|
12
|
+
"javascript.format.semicolons": "insert"
|
|
13
|
+
}
|
package/dist/components/index.js
CHANGED
|
@@ -34236,7 +34236,7 @@ function DataLink({
|
|
|
34236
34236
|
let val = form?.meta?.tableKeys;
|
|
34237
34237
|
let toReturn = val;
|
|
34238
34238
|
if (val && !Array.isArray(val)) {
|
|
34239
|
-
if (typeof val ===
|
|
34239
|
+
if (typeof val === "object") {
|
|
34240
34240
|
Object.keys(val).forEach(k => {
|
|
34241
34241
|
const show = showHideInput$1({
|
|
34242
34242
|
showIf: k
|
|
@@ -34252,7 +34252,7 @@ function DataLink({
|
|
|
34252
34252
|
const prefilledValues = React.useMemo(() => {
|
|
34253
34253
|
return Object.keys(form?.meta?.prefilledValues || {}).reduce((all, key) => {
|
|
34254
34254
|
const val = form.meta.prefilledValues[key];
|
|
34255
|
-
if (typeof val ===
|
|
34255
|
+
if (typeof val === "object") {
|
|
34256
34256
|
Object.keys(val).forEach(k => {
|
|
34257
34257
|
const show = showHideInput$1({
|
|
34258
34258
|
showIf: k
|
|
@@ -34271,7 +34271,7 @@ function DataLink({
|
|
|
34271
34271
|
const val = form.meta.formScope;
|
|
34272
34272
|
let toReturn = val;
|
|
34273
34273
|
if (val) {
|
|
34274
|
-
if (typeof val ===
|
|
34274
|
+
if (typeof val === "object") {
|
|
34275
34275
|
Object.keys(val).forEach(k => {
|
|
34276
34276
|
const show = showHideInput$1({
|
|
34277
34277
|
showIf: k
|
|
@@ -34301,7 +34301,7 @@ function DataLink({
|
|
|
34301
34301
|
formScope
|
|
34302
34302
|
});
|
|
34303
34303
|
const data = (formData || []).map((f, i) => {
|
|
34304
|
-
if (isAjaxModal && typeof f ===
|
|
34304
|
+
if (isAjaxModal && typeof f === "string" && linkingData[f]) {
|
|
34305
34305
|
const value = linkingData[f];
|
|
34306
34306
|
return {
|
|
34307
34307
|
...value,
|
|
@@ -34382,7 +34382,7 @@ function DataLink({
|
|
|
34382
34382
|
const key = Array.isArray(val.content) && val.content.length ? val.content[0].key : val;
|
|
34383
34383
|
const input = (inputs[key] || {}).tableLabel || inputs[key] || {};
|
|
34384
34384
|
const _input = inputs[key] || {};
|
|
34385
|
-
const title = typeof input ===
|
|
34385
|
+
const title = typeof input === "string" ? input : getInputLabel$1((inputs[key] || {}).tableLabel || inputs[key] || {}, values, true);
|
|
34386
34386
|
const getKey = row => {
|
|
34387
34387
|
if (Array.isArray(val.content) && val.content.length) {
|
|
34388
34388
|
for (let i = 0; i < val.content.length; i++) {
|
|
@@ -34418,25 +34418,25 @@ function DataLink({
|
|
|
34418
34418
|
if (tooltipInputs.includes(type)) {
|
|
34419
34419
|
return /*#__PURE__*/jsxRuntime.jsxs(antd.Tooltip, {
|
|
34420
34420
|
title: title,
|
|
34421
|
-
children: [title, " "
|
|
34421
|
+
children: [title, " "]
|
|
34422
34422
|
});
|
|
34423
34423
|
}
|
|
34424
34424
|
return title;
|
|
34425
34425
|
};
|
|
34426
34426
|
const inputMeta = (all?.meta?.inputs || {})[key] || {};
|
|
34427
|
-
if (key ===
|
|
34428
|
-
return
|
|
34427
|
+
if (key === "datastakeId" && (!all[key] || all[key] === "new")) {
|
|
34428
|
+
return "";
|
|
34429
34429
|
}
|
|
34430
|
-
if (v || inputMeta?.notApplicable || inputMeta?.notAvailable || type ===
|
|
34431
|
-
if (type ===
|
|
34430
|
+
if (v || inputMeta?.notApplicable || inputMeta?.notAvailable || type === "ajaxSelect") {
|
|
34431
|
+
if (type === "ajaxSelect") {
|
|
34432
34432
|
const data = all[key];
|
|
34433
|
-
if (data ===
|
|
34433
|
+
if (data === "new") {
|
|
34434
34434
|
return render( /*#__PURE__*/jsxRuntime.jsx(BasicInput, {
|
|
34435
34435
|
name: key,
|
|
34436
34436
|
isModal: true,
|
|
34437
34437
|
config: {
|
|
34438
34438
|
...inputs[key],
|
|
34439
|
-
type:
|
|
34439
|
+
type: "text"
|
|
34440
34440
|
},
|
|
34441
34441
|
valueOnlyString: true,
|
|
34442
34442
|
data: {
|
|
@@ -34472,7 +34472,7 @@ function DataLink({
|
|
|
34472
34472
|
name: key,
|
|
34473
34473
|
config: {
|
|
34474
34474
|
...inputs[key],
|
|
34475
|
-
type:
|
|
34475
|
+
type: "ajaxSelect"
|
|
34476
34476
|
},
|
|
34477
34477
|
valueOnlyString: true,
|
|
34478
34478
|
data: {
|
|
@@ -34487,7 +34487,7 @@ function DataLink({
|
|
|
34487
34487
|
name: key,
|
|
34488
34488
|
config: {
|
|
34489
34489
|
...inputs[key],
|
|
34490
|
-
type:
|
|
34490
|
+
type: "text"
|
|
34491
34491
|
},
|
|
34492
34492
|
t: t,
|
|
34493
34493
|
ajaxForms: ajaxForms,
|
|
@@ -34560,8 +34560,8 @@ function DataLink({
|
|
|
34560
34560
|
}, [form, formScope]);
|
|
34561
34561
|
const canAdd = (maxRepeat ? formData.length < maxRepeat : true) && !noBody;
|
|
34562
34562
|
const columns = [...(Array.isArray(tableKeys) ? tableKeys.map(mapKey) : Object.keys(inputs || {}).map(mapKey)), {
|
|
34563
|
-
key:
|
|
34564
|
-
dataIndex:
|
|
34563
|
+
key: "actions",
|
|
34564
|
+
dataIndex: "actions",
|
|
34565
34565
|
title: /*#__PURE__*/jsxRuntime.jsx(antd.Button, {
|
|
34566
34566
|
size: "small",
|
|
34567
34567
|
className: "add-btn",
|
|
@@ -34603,21 +34603,21 @@ function DataLink({
|
|
|
34603
34603
|
const canEdit = form?.meta?.allowedActions?.edit === false ? false : form?.meta?.allowedActions?.edit || isSingle && formData.length === 1;
|
|
34604
34604
|
if (canEdit) {
|
|
34605
34605
|
items.push({
|
|
34606
|
-
label: t(
|
|
34606
|
+
label: t("Edit"),
|
|
34607
34607
|
key: "edit",
|
|
34608
34608
|
onClick: () => onEditClick(all)
|
|
34609
34609
|
});
|
|
34610
34610
|
}
|
|
34611
34611
|
if (form?.meta?.allowedActions?.remove) {
|
|
34612
34612
|
items.push({
|
|
34613
|
-
label: t(
|
|
34613
|
+
label: t("Delete"),
|
|
34614
34614
|
key: "remove",
|
|
34615
34615
|
onClick: () => {
|
|
34616
34616
|
antd.Modal.confirm({
|
|
34617
|
-
title: t(
|
|
34618
|
-
content: t(
|
|
34619
|
-
okText: t(
|
|
34620
|
-
cancelText: t(
|
|
34617
|
+
title: t("Delete information"),
|
|
34618
|
+
content: t("Are you sure you want to delete this information?"),
|
|
34619
|
+
okText: t("Yes"),
|
|
34620
|
+
cancelText: t("Cancel"),
|
|
34621
34621
|
onOk: () => {
|
|
34622
34622
|
remove(all);
|
|
34623
34623
|
}
|
|
@@ -34638,7 +34638,7 @@ function DataLink({
|
|
|
34638
34638
|
};
|
|
34639
34639
|
const _form = Object.keys(unsortedForm).reduce((all, key) => {
|
|
34640
34640
|
const _this = Object.keys(unsortedForm[key]).sort((a, b) => unsortedForm[key][a].position - unsortedForm[key][b].position).reduce((all, k) => {
|
|
34641
|
-
if (k ===
|
|
34641
|
+
if (k === "scope") {
|
|
34642
34642
|
return all;
|
|
34643
34643
|
}
|
|
34644
34644
|
all[k] = unsortedForm[key][k];
|
|
@@ -34647,13 +34647,14 @@ function DataLink({
|
|
|
34647
34647
|
all[key] = _this;
|
|
34648
34648
|
return all;
|
|
34649
34649
|
}, {});
|
|
34650
|
+
console.log("form", dataSource);
|
|
34650
34651
|
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
34651
|
-
className: formatClassname([
|
|
34652
|
+
className: formatClassname(["data-link-cont mt-2", noBody && "no-body", isHighlighted && "highlighted"]),
|
|
34652
34653
|
style: form?.meta?.style,
|
|
34653
34654
|
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
34654
34655
|
className: "daf-table-wrapper no-padding repeatable-form-table no-pagination",
|
|
34655
34656
|
children: /*#__PURE__*/jsxRuntime.jsx(antd.ConfigProvider, {
|
|
34656
|
-
renderEmpty: () => notApplicable ? t(
|
|
34657
|
+
renderEmpty: () => notApplicable ? t("Not applicable") : t("No information available"),
|
|
34657
34658
|
children: /*#__PURE__*/jsxRuntime.jsx(antd.Table, {
|
|
34658
34659
|
locale: getLocales(t),
|
|
34659
34660
|
loading: ajaxModalValues.isFetching,
|
package/package.json
CHANGED
|
@@ -2,76 +2,97 @@ import ProjectWidget from "./index.jsx";
|
|
|
2
2
|
import ThemeLayout from "../../../ThemeLayout/index.jsx";
|
|
3
3
|
import Widget from "../index.jsx";
|
|
4
4
|
import DashboardLayout from "../../DashboardLayout/index.jsx";
|
|
5
|
+
import DafHEader from "../../../Header/index.jsx";
|
|
5
6
|
export default {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
7
|
+
title: "Dashboard/Widgets/ProjectWidget",
|
|
8
|
+
component: ProjectWidget,
|
|
9
|
+
tags: ["autodocs"],
|
|
10
|
+
decorators: [
|
|
11
|
+
(Story) => (
|
|
12
|
+
<div style={{ margin: "3em" }}>
|
|
13
|
+
<ThemeLayout>
|
|
14
|
+
<Story />
|
|
15
|
+
</ThemeLayout>
|
|
16
|
+
</div>
|
|
17
|
+
),
|
|
18
|
+
],
|
|
18
19
|
};
|
|
19
20
|
|
|
20
21
|
export const Primary = {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
22
|
+
name: "ProjectWidget",
|
|
23
|
+
args: {
|
|
24
|
+
onLinkClick: () => {},
|
|
25
|
+
linkIcon: "Link",
|
|
26
|
+
sdgList: [
|
|
27
|
+
"noPoverty",
|
|
28
|
+
"zeroHunger",
|
|
29
|
+
"goodHealthWellbeing",
|
|
30
|
+
"qualityEducation",
|
|
31
|
+
"genderEquality",
|
|
32
|
+
"cleanWaterSanitation",
|
|
33
|
+
"affordableCleanEnergy",
|
|
34
|
+
"decentWorkEconomicGrowth",
|
|
35
|
+
"industryInnovationInfrastructure",
|
|
36
|
+
"reducedInequalities",
|
|
37
|
+
"sustainableCitiesCommunities",
|
|
38
|
+
"responsibleConsumptionProduction",
|
|
39
|
+
"climateAction",
|
|
40
|
+
"lifeBelowWater",
|
|
41
|
+
"lifeOnLand",
|
|
42
|
+
"peaceJusticeStrongInstitutions",
|
|
43
|
+
"partnershipsForGoals",
|
|
44
|
+
],
|
|
45
|
+
items: [
|
|
46
|
+
{ label: "Item 1", render: () => <span>Value 1</span> },
|
|
47
|
+
{ label: "Item 2", render: () => <span>Value 2</span> },
|
|
48
|
+
{ label: "Item 3", render: () => <span>Value 3</span> },
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
render: (args) => {
|
|
52
|
+
return (
|
|
53
|
+
<DashboardLayout
|
|
54
|
+
header={
|
|
55
|
+
<DafHEader title="Dashboard" supportText="The Support text for the header" />
|
|
56
|
+
}
|
|
57
|
+
>
|
|
58
|
+
<Widget title="Project Widget">
|
|
59
|
+
<section
|
|
60
|
+
style={{
|
|
61
|
+
overflowX: "auto",
|
|
62
|
+
maxWidth: "100%",
|
|
63
|
+
}}
|
|
64
|
+
>
|
|
65
|
+
<Widget title="Project Catalogue" className="with-border-header">
|
|
66
|
+
<section className="nowrap horizontal-scroll" style={{}}>
|
|
67
|
+
<ProjectWidget {...args} title="ALL SDGS" />
|
|
68
|
+
<ProjectWidget
|
|
69
|
+
{...args}
|
|
70
|
+
title="SOME SDGS"
|
|
71
|
+
sdgList={["noPoverty", "lifeBelowWater"]}
|
|
72
|
+
image="data:image/jpeg;base64,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"
|
|
73
|
+
/>
|
|
56
74
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
75
|
+
<ProjectWidget
|
|
76
|
+
{...args}
|
|
77
|
+
sdgList={[]}
|
|
78
|
+
title="No SDGS"
|
|
79
|
+
image={
|
|
80
|
+
"https://static0.srcdn.com/wordpress/wp-content/uploads/2023/03/the-main-characters-of-the-hangover-in-an-elevator.jpg"
|
|
81
|
+
}
|
|
82
|
+
/>
|
|
63
83
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
84
|
+
<ProjectWidget {...args} />
|
|
85
|
+
<ProjectWidget {...args} />
|
|
86
|
+
<ProjectWidget {...args} />
|
|
87
|
+
</section>
|
|
88
|
+
</Widget>
|
|
89
|
+
</section>
|
|
90
|
+
</Widget>
|
|
91
|
+
|
|
92
|
+
<section>
|
|
93
|
+
<Widget title="FUCK"></Widget>
|
|
94
|
+
</section>
|
|
95
|
+
</DashboardLayout>
|
|
96
|
+
);
|
|
97
|
+
},
|
|
77
98
|
};
|