datastake-daf 0.6.227 → 0.6.229
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 +85 -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
|
@@ -34064,7 +34064,7 @@ function DataLink({
|
|
|
34064
34064
|
let val = form?.meta?.tableKeys;
|
|
34065
34065
|
let toReturn = val;
|
|
34066
34066
|
if (val && !Array.isArray(val)) {
|
|
34067
|
-
if (typeof val ===
|
|
34067
|
+
if (typeof val === "object") {
|
|
34068
34068
|
Object.keys(val).forEach(k => {
|
|
34069
34069
|
const show = showHideInput$1({
|
|
34070
34070
|
showIf: k
|
|
@@ -34080,7 +34080,7 @@ function DataLink({
|
|
|
34080
34080
|
const prefilledValues = React.useMemo(() => {
|
|
34081
34081
|
return Object.keys(form?.meta?.prefilledValues || {}).reduce((all, key) => {
|
|
34082
34082
|
const val = form.meta.prefilledValues[key];
|
|
34083
|
-
if (typeof val ===
|
|
34083
|
+
if (typeof val === "object") {
|
|
34084
34084
|
Object.keys(val).forEach(k => {
|
|
34085
34085
|
const show = showHideInput$1({
|
|
34086
34086
|
showIf: k
|
|
@@ -34099,7 +34099,7 @@ function DataLink({
|
|
|
34099
34099
|
const val = form.meta.formScope;
|
|
34100
34100
|
let toReturn = val;
|
|
34101
34101
|
if (val) {
|
|
34102
|
-
if (typeof val ===
|
|
34102
|
+
if (typeof val === "object") {
|
|
34103
34103
|
Object.keys(val).forEach(k => {
|
|
34104
34104
|
const show = showHideInput$1({
|
|
34105
34105
|
showIf: k
|
|
@@ -34129,7 +34129,7 @@ function DataLink({
|
|
|
34129
34129
|
formScope
|
|
34130
34130
|
});
|
|
34131
34131
|
const data = (formData || []).map((f, i) => {
|
|
34132
|
-
if (isAjaxModal && typeof f ===
|
|
34132
|
+
if (isAjaxModal && typeof f === "string" && linkingData[f]) {
|
|
34133
34133
|
const value = linkingData[f];
|
|
34134
34134
|
return {
|
|
34135
34135
|
...value,
|
|
@@ -34210,7 +34210,7 @@ function DataLink({
|
|
|
34210
34210
|
const key = Array.isArray(val.content) && val.content.length ? val.content[0].key : val;
|
|
34211
34211
|
const input = (inputs[key] || {}).tableLabel || inputs[key] || {};
|
|
34212
34212
|
const _input = inputs[key] || {};
|
|
34213
|
-
const title = typeof input ===
|
|
34213
|
+
const title = typeof input === "string" ? input : getInputLabel$1((inputs[key] || {}).tableLabel || inputs[key] || {}, values, true);
|
|
34214
34214
|
const getKey = row => {
|
|
34215
34215
|
if (Array.isArray(val.content) && val.content.length) {
|
|
34216
34216
|
for (let i = 0; i < val.content.length; i++) {
|
|
@@ -34246,25 +34246,25 @@ function DataLink({
|
|
|
34246
34246
|
if (tooltipInputs.includes(type)) {
|
|
34247
34247
|
return /*#__PURE__*/jsxRuntime.jsxs(antd.Tooltip, {
|
|
34248
34248
|
title: title,
|
|
34249
|
-
children: [title, " "
|
|
34249
|
+
children: [title, " "]
|
|
34250
34250
|
});
|
|
34251
34251
|
}
|
|
34252
34252
|
return title;
|
|
34253
34253
|
};
|
|
34254
34254
|
const inputMeta = (all?.meta?.inputs || {})[key] || {};
|
|
34255
|
-
if (key ===
|
|
34256
|
-
return
|
|
34255
|
+
if (key === "datastakeId" && (!all[key] || all[key] === "new")) {
|
|
34256
|
+
return "";
|
|
34257
34257
|
}
|
|
34258
|
-
if (v || inputMeta?.notApplicable || inputMeta?.notAvailable || type ===
|
|
34259
|
-
if (type ===
|
|
34258
|
+
if (v || inputMeta?.notApplicable || inputMeta?.notAvailable || type === "ajaxSelect") {
|
|
34259
|
+
if (type === "ajaxSelect") {
|
|
34260
34260
|
const data = all[key];
|
|
34261
|
-
if (data ===
|
|
34261
|
+
if (data === "new") {
|
|
34262
34262
|
return render( /*#__PURE__*/jsxRuntime.jsx(BasicInput, {
|
|
34263
34263
|
name: key,
|
|
34264
34264
|
isModal: true,
|
|
34265
34265
|
config: {
|
|
34266
34266
|
...inputs[key],
|
|
34267
|
-
type:
|
|
34267
|
+
type: "text"
|
|
34268
34268
|
},
|
|
34269
34269
|
valueOnlyString: true,
|
|
34270
34270
|
data: {
|
|
@@ -34300,7 +34300,7 @@ function DataLink({
|
|
|
34300
34300
|
name: key,
|
|
34301
34301
|
config: {
|
|
34302
34302
|
...inputs[key],
|
|
34303
|
-
type:
|
|
34303
|
+
type: "ajaxSelect"
|
|
34304
34304
|
},
|
|
34305
34305
|
valueOnlyString: true,
|
|
34306
34306
|
data: {
|
|
@@ -34315,7 +34315,7 @@ function DataLink({
|
|
|
34315
34315
|
name: key,
|
|
34316
34316
|
config: {
|
|
34317
34317
|
...inputs[key],
|
|
34318
|
-
type:
|
|
34318
|
+
type: "text"
|
|
34319
34319
|
},
|
|
34320
34320
|
t: t,
|
|
34321
34321
|
ajaxForms: ajaxForms,
|
|
@@ -34388,8 +34388,8 @@ function DataLink({
|
|
|
34388
34388
|
}, [form, formScope]);
|
|
34389
34389
|
const canAdd = (maxRepeat ? formData.length < maxRepeat : true) && !noBody;
|
|
34390
34390
|
const columns = [...(Array.isArray(tableKeys) ? tableKeys.map(mapKey) : Object.keys(inputs || {}).map(mapKey)), {
|
|
34391
|
-
key:
|
|
34392
|
-
dataIndex:
|
|
34391
|
+
key: "actions",
|
|
34392
|
+
dataIndex: "actions",
|
|
34393
34393
|
title: /*#__PURE__*/jsxRuntime.jsx(antd.Button, {
|
|
34394
34394
|
size: "small",
|
|
34395
34395
|
className: "add-btn",
|
|
@@ -34431,21 +34431,21 @@ function DataLink({
|
|
|
34431
34431
|
const canEdit = form?.meta?.allowedActions?.edit === false ? false : form?.meta?.allowedActions?.edit || isSingle && formData.length === 1;
|
|
34432
34432
|
if (canEdit) {
|
|
34433
34433
|
items.push({
|
|
34434
|
-
label: t(
|
|
34434
|
+
label: t("Edit"),
|
|
34435
34435
|
key: "edit",
|
|
34436
34436
|
onClick: () => onEditClick(all)
|
|
34437
34437
|
});
|
|
34438
34438
|
}
|
|
34439
34439
|
if (form?.meta?.allowedActions?.remove) {
|
|
34440
34440
|
items.push({
|
|
34441
|
-
label: t(
|
|
34441
|
+
label: t("Delete"),
|
|
34442
34442
|
key: "remove",
|
|
34443
34443
|
onClick: () => {
|
|
34444
34444
|
antd.Modal.confirm({
|
|
34445
|
-
title: t(
|
|
34446
|
-
content: t(
|
|
34447
|
-
okText: t(
|
|
34448
|
-
cancelText: t(
|
|
34445
|
+
title: t("Delete information"),
|
|
34446
|
+
content: t("Are you sure you want to delete this information?"),
|
|
34447
|
+
okText: t("Yes"),
|
|
34448
|
+
cancelText: t("Cancel"),
|
|
34449
34449
|
onOk: () => {
|
|
34450
34450
|
remove(all);
|
|
34451
34451
|
}
|
|
@@ -34466,7 +34466,7 @@ function DataLink({
|
|
|
34466
34466
|
};
|
|
34467
34467
|
const _form = Object.keys(unsortedForm).reduce((all, key) => {
|
|
34468
34468
|
const _this = Object.keys(unsortedForm[key]).sort((a, b) => unsortedForm[key][a].position - unsortedForm[key][b].position).reduce((all, k) => {
|
|
34469
|
-
if (k ===
|
|
34469
|
+
if (k === "scope") {
|
|
34470
34470
|
return all;
|
|
34471
34471
|
}
|
|
34472
34472
|
all[k] = unsortedForm[key][k];
|
|
@@ -34475,13 +34475,14 @@ function DataLink({
|
|
|
34475
34475
|
all[key] = _this;
|
|
34476
34476
|
return all;
|
|
34477
34477
|
}, {});
|
|
34478
|
+
console.log("form", dataSource);
|
|
34478
34479
|
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
34479
|
-
className: formatClassname([
|
|
34480
|
+
className: formatClassname(["data-link-cont mt-2", noBody && "no-body", isHighlighted && "highlighted"]),
|
|
34480
34481
|
style: form?.meta?.style,
|
|
34481
34482
|
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
34482
34483
|
className: "daf-table-wrapper no-padding repeatable-form-table no-pagination",
|
|
34483
34484
|
children: /*#__PURE__*/jsxRuntime.jsx(antd.ConfigProvider, {
|
|
34484
|
-
renderEmpty: () => notApplicable ? t(
|
|
34485
|
+
renderEmpty: () => notApplicable ? t("Not applicable") : t("No information available"),
|
|
34485
34486
|
children: /*#__PURE__*/jsxRuntime.jsx(antd.Table, {
|
|
34486
34487
|
locale: getLocales(t),
|
|
34487
34488
|
loading: ajaxModalValues.isFetching,
|
package/package.json
CHANGED
|
@@ -2,76 +2,95 @@ 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
|
+
<section
|
|
59
|
+
style={{
|
|
60
|
+
overflowX: "auto",
|
|
61
|
+
maxWidth: "100%",
|
|
62
|
+
}}
|
|
63
|
+
>
|
|
64
|
+
<Widget title="Project Catalogue" className="with-border-header">
|
|
65
|
+
<section className="nowrap horizontal-scroll" style={{}}>
|
|
66
|
+
<ProjectWidget {...args} title="ALL SDGS" />
|
|
67
|
+
<ProjectWidget
|
|
68
|
+
{...args}
|
|
69
|
+
title="SOME SDGS"
|
|
70
|
+
sdgList={["noPoverty", "lifeBelowWater"]}
|
|
71
|
+
image="data:image/jpeg;base64,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"
|
|
72
|
+
/>
|
|
56
73
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
74
|
+
<ProjectWidget
|
|
75
|
+
{...args}
|
|
76
|
+
sdgList={[]}
|
|
77
|
+
title="No SDGS"
|
|
78
|
+
image={
|
|
79
|
+
"https://static0.srcdn.com/wordpress/wp-content/uploads/2023/03/the-main-characters-of-the-hangover-in-an-elevator.jpg"
|
|
80
|
+
}
|
|
81
|
+
/>
|
|
63
82
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
83
|
+
<ProjectWidget {...args} />
|
|
84
|
+
<ProjectWidget {...args} />
|
|
85
|
+
<ProjectWidget {...args} />
|
|
86
|
+
</section>
|
|
87
|
+
</Widget>
|
|
88
|
+
</section>
|
|
89
|
+
|
|
90
|
+
<section>
|
|
91
|
+
<Widget title="FUCK"></Widget>
|
|
92
|
+
</section>
|
|
93
|
+
</DashboardLayout>
|
|
94
|
+
);
|
|
95
|
+
},
|
|
77
96
|
};
|