@trackunit/custom-field-api 0.1.92 → 0.1.96
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/index.cjs.js +188 -0
- package/index.esm.js +190 -3
- package/package.json +4 -2
- package/src/generated/graphql-api/gql.d.ts +2 -2
- package/src/generated/graphql-api/graphql.d.ts +77 -0
- package/src/generated/graphql-api/mock.d.ts +3 -0
- package/src/index.d.ts +1 -0
- package/src/useUpdateCustomFieldValues.d.ts +11 -0
package/index.cjs.js
CHANGED
|
@@ -6,6 +6,8 @@ var client = require('@apollo/client');
|
|
|
6
6
|
var reactCoreHooks = require('@trackunit/react-core-hooks');
|
|
7
7
|
var sharedUtils = require('@trackunit/shared-utils');
|
|
8
8
|
var react = require('react');
|
|
9
|
+
var irisAppRuntimeCore = require('@trackunit/iris-app-runtime-core');
|
|
10
|
+
var reactCoreContextsApi = require('@trackunit/react-core-contexts-api');
|
|
9
11
|
|
|
10
12
|
function getFragmentData(_documentNode, fragmentType) {
|
|
11
13
|
return fragmentType;
|
|
@@ -1142,6 +1144,104 @@ const GetCustomFieldDefinitionsDocument = {
|
|
|
1142
1144
|
},
|
|
1143
1145
|
],
|
|
1144
1146
|
};
|
|
1147
|
+
const UpdateCustomFieldValuesDocument = {
|
|
1148
|
+
kind: "Document",
|
|
1149
|
+
definitions: [
|
|
1150
|
+
{
|
|
1151
|
+
kind: "OperationDefinition",
|
|
1152
|
+
operation: "mutation",
|
|
1153
|
+
name: { kind: "Name", value: "UpdateCustomFieldValues" },
|
|
1154
|
+
variableDefinitions: [
|
|
1155
|
+
{
|
|
1156
|
+
kind: "VariableDefinition",
|
|
1157
|
+
variable: { kind: "Variable", name: { kind: "Name", value: "customFields" } },
|
|
1158
|
+
type: {
|
|
1159
|
+
kind: "NonNullType",
|
|
1160
|
+
type: {
|
|
1161
|
+
kind: "ListType",
|
|
1162
|
+
type: {
|
|
1163
|
+
kind: "NonNullType",
|
|
1164
|
+
type: { kind: "NamedType", name: { kind: "Name", value: "SetCustomFieldValueInput" } },
|
|
1165
|
+
},
|
|
1166
|
+
},
|
|
1167
|
+
},
|
|
1168
|
+
},
|
|
1169
|
+
{
|
|
1170
|
+
kind: "VariableDefinition",
|
|
1171
|
+
variable: { kind: "Variable", name: { kind: "Name", value: "entityId" } },
|
|
1172
|
+
type: { kind: "NonNullType", type: { kind: "NamedType", name: { kind: "Name", value: "ID" } } },
|
|
1173
|
+
},
|
|
1174
|
+
{
|
|
1175
|
+
kind: "VariableDefinition",
|
|
1176
|
+
variable: { kind: "Variable", name: { kind: "Name", value: "entityType" } },
|
|
1177
|
+
type: {
|
|
1178
|
+
kind: "NonNullType",
|
|
1179
|
+
type: { kind: "NamedType", name: { kind: "Name", value: "CustomFieldEntityType" } },
|
|
1180
|
+
},
|
|
1181
|
+
},
|
|
1182
|
+
{
|
|
1183
|
+
kind: "VariableDefinition",
|
|
1184
|
+
variable: { kind: "Variable", name: { kind: "Name", value: "systemOfMeasurement" } },
|
|
1185
|
+
type: { kind: "NamedType", name: { kind: "Name", value: "SystemOfMeasurement" } },
|
|
1186
|
+
},
|
|
1187
|
+
],
|
|
1188
|
+
selectionSet: {
|
|
1189
|
+
kind: "SelectionSet",
|
|
1190
|
+
selections: [
|
|
1191
|
+
{
|
|
1192
|
+
kind: "Field",
|
|
1193
|
+
name: { kind: "Name", value: "customFieldSetValues" },
|
|
1194
|
+
arguments: [
|
|
1195
|
+
{
|
|
1196
|
+
kind: "Argument",
|
|
1197
|
+
name: { kind: "Name", value: "input" },
|
|
1198
|
+
value: {
|
|
1199
|
+
kind: "ObjectValue",
|
|
1200
|
+
fields: [
|
|
1201
|
+
{
|
|
1202
|
+
kind: "ObjectField",
|
|
1203
|
+
name: { kind: "Name", value: "entityId" },
|
|
1204
|
+
value: { kind: "Variable", name: { kind: "Name", value: "entityId" } },
|
|
1205
|
+
},
|
|
1206
|
+
{
|
|
1207
|
+
kind: "ObjectField",
|
|
1208
|
+
name: { kind: "Name", value: "entityType" },
|
|
1209
|
+
value: { kind: "Variable", name: { kind: "Name", value: "entityType" } },
|
|
1210
|
+
},
|
|
1211
|
+
{
|
|
1212
|
+
kind: "ObjectField",
|
|
1213
|
+
name: { kind: "Name", value: "values" },
|
|
1214
|
+
value: { kind: "Variable", name: { kind: "Name", value: "customFields" } },
|
|
1215
|
+
},
|
|
1216
|
+
],
|
|
1217
|
+
},
|
|
1218
|
+
},
|
|
1219
|
+
{
|
|
1220
|
+
kind: "Argument",
|
|
1221
|
+
name: { kind: "Name", value: "systemOfMeasurement" },
|
|
1222
|
+
value: { kind: "Variable", name: { kind: "Name", value: "systemOfMeasurement" } },
|
|
1223
|
+
},
|
|
1224
|
+
],
|
|
1225
|
+
selectionSet: {
|
|
1226
|
+
kind: "SelectionSet",
|
|
1227
|
+
selections: [
|
|
1228
|
+
{ kind: "Field", name: { kind: "Name", value: "success" } },
|
|
1229
|
+
{
|
|
1230
|
+
kind: "Field",
|
|
1231
|
+
name: { kind: "Name", value: "fieldsWithInvalidValues" },
|
|
1232
|
+
selectionSet: {
|
|
1233
|
+
kind: "SelectionSet",
|
|
1234
|
+
selections: [{ kind: "Field", name: { kind: "Name", value: "definitionId" } }],
|
|
1235
|
+
},
|
|
1236
|
+
},
|
|
1237
|
+
],
|
|
1238
|
+
},
|
|
1239
|
+
},
|
|
1240
|
+
],
|
|
1241
|
+
},
|
|
1242
|
+
},
|
|
1243
|
+
],
|
|
1244
|
+
};
|
|
1145
1245
|
|
|
1146
1246
|
const getCustomFieldDefinitionFromRelevantNode = (node) => getFragmentData(CustomFieldDefinitionFragmentDoc, node);
|
|
1147
1247
|
/**
|
|
@@ -1295,6 +1395,93 @@ const customFieldHasValue = (field) => {
|
|
|
1295
1395
|
}
|
|
1296
1396
|
};
|
|
1297
1397
|
|
|
1398
|
+
/******************************************************************************
|
|
1399
|
+
Copyright (c) Microsoft Corporation.
|
|
1400
|
+
|
|
1401
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
1402
|
+
purpose with or without fee is hereby granted.
|
|
1403
|
+
|
|
1404
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
1405
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
1406
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
1407
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
1408
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
1409
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
1410
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
1411
|
+
***************************************************************************** */
|
|
1412
|
+
|
|
1413
|
+
function __rest(s, e) {
|
|
1414
|
+
var t = {};
|
|
1415
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
1416
|
+
t[p] = s[p];
|
|
1417
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
1418
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
1419
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
1420
|
+
t[p[i]] = s[p[i]];
|
|
1421
|
+
}
|
|
1422
|
+
return t;
|
|
1423
|
+
}
|
|
1424
|
+
|
|
1425
|
+
function __awaiter(thisArg, _arguments, P, generator) {
|
|
1426
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
1427
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
1428
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
1429
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
1430
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
1431
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
1432
|
+
});
|
|
1433
|
+
}
|
|
1434
|
+
|
|
1435
|
+
/**
|
|
1436
|
+
* Execute custom fields update from form data
|
|
1437
|
+
*/
|
|
1438
|
+
const useUpdateCustomFieldValues = (entityId, entityType, customFields, systemOfMeasurement = reactCoreContextsApi.SystemOfMeasurement.Si) => {
|
|
1439
|
+
const [setCustomFieldValues, { data: saveResult, loading: savingCustomFields }] = client.useMutation(UpdateCustomFieldValuesDocument, { refetchQueries: ["GetCustomFieldsForAsset"] });
|
|
1440
|
+
const customFieldsMap = react.useMemo(() => customFields.reduce((acc, current) => (Object.assign(Object.assign({}, acc), { [current.definition.id]: current })), {}), [customFields]);
|
|
1441
|
+
const updateCustomFields = react.useCallback((data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
1442
|
+
// Transform data to custom field updates
|
|
1443
|
+
const fieldUpdates = sharedUtils.objectKeys(data)
|
|
1444
|
+
.map(fieldId => {
|
|
1445
|
+
var _a, _b;
|
|
1446
|
+
const originalField = customFieldsMap[fieldId];
|
|
1447
|
+
const definition = originalField === null || originalField === void 0 ? void 0 : originalField.definition;
|
|
1448
|
+
return {
|
|
1449
|
+
id: fieldId,
|
|
1450
|
+
value: data[fieldId],
|
|
1451
|
+
definition,
|
|
1452
|
+
editable: (_b = (_a = originalField === null || originalField === void 0 ? void 0 : originalField.valueEditable) !== null && _a !== void 0 ? _a : definition === null || definition === void 0 ? void 0 : definition.uiEditable) !== null && _b !== void 0 ? _b : true,
|
|
1453
|
+
};
|
|
1454
|
+
})
|
|
1455
|
+
.filter(({ editable }) => editable)
|
|
1456
|
+
.map(({ id, value, definition }) => {
|
|
1457
|
+
if (definition && irisAppRuntimeCore.isValidCustomFieldValue(value)) {
|
|
1458
|
+
const _a = irisAppRuntimeCore.getCustomFieldValueToSaveFromRawValue(definition, value), newValue = __rest(_a, ["type"]);
|
|
1459
|
+
return {
|
|
1460
|
+
definitionId: id,
|
|
1461
|
+
value: Object.assign({}, newValue),
|
|
1462
|
+
};
|
|
1463
|
+
}
|
|
1464
|
+
return null;
|
|
1465
|
+
})
|
|
1466
|
+
.filter(sharedUtils.nonNullable);
|
|
1467
|
+
// execute update
|
|
1468
|
+
const customFieldsUpdateResponse = yield setCustomFieldValues({
|
|
1469
|
+
variables: {
|
|
1470
|
+
entityId,
|
|
1471
|
+
entityType,
|
|
1472
|
+
customFields: fieldUpdates,
|
|
1473
|
+
systemOfMeasurement,
|
|
1474
|
+
},
|
|
1475
|
+
});
|
|
1476
|
+
return customFieldsUpdateResponse;
|
|
1477
|
+
}), [customFieldsMap, entityId, entityType, setCustomFieldValues, systemOfMeasurement]);
|
|
1478
|
+
return react.useMemo(() => ({
|
|
1479
|
+
updateCustomFields,
|
|
1480
|
+
result: saveResult,
|
|
1481
|
+
inProgress: savingCustomFields,
|
|
1482
|
+
}), [updateCustomFields, saveResult, savingCustomFields]);
|
|
1483
|
+
};
|
|
1484
|
+
|
|
1298
1485
|
exports.GetCustomFieldDefinitionsDocument = GetCustomFieldDefinitionsDocument;
|
|
1299
1486
|
exports.GetCustomFieldsForAssetDocument = GetCustomFieldsForAssetDocument;
|
|
1300
1487
|
exports.GetCustomFieldsForSiteDocument = GetCustomFieldsForSiteDocument;
|
|
@@ -1302,3 +1489,4 @@ exports.customFieldHasValue = customFieldHasValue;
|
|
|
1302
1489
|
exports.getCustomFieldValueAndDefinitionFromRelevantNode = getCustomFieldValueAndDefinitionFromRelevantNode;
|
|
1303
1490
|
exports.useCustomFieldDefinitions = useCustomFieldDefinitions;
|
|
1304
1491
|
exports.useCustomFieldsValueAndDefinition = useCustomFieldsValueAndDefinition;
|
|
1492
|
+
exports.useUpdateCustomFieldValues = useUpdateCustomFieldValues;
|
package/index.esm.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { useQuery } from '@apollo/client';
|
|
1
|
+
import { useQuery, useMutation } from '@apollo/client';
|
|
2
2
|
import { useCurrentUserLanguage } from '@trackunit/react-core-hooks';
|
|
3
|
-
import { nonNullable, exhaustiveCheck } from '@trackunit/shared-utils';
|
|
3
|
+
import { nonNullable, exhaustiveCheck, objectKeys } from '@trackunit/shared-utils';
|
|
4
4
|
import { useMemo, useCallback } from 'react';
|
|
5
|
+
import { isValidCustomFieldValue, getCustomFieldValueToSaveFromRawValue } from '@trackunit/iris-app-runtime-core';
|
|
6
|
+
import { SystemOfMeasurement } from '@trackunit/react-core-contexts-api';
|
|
5
7
|
|
|
6
8
|
function getFragmentData(_documentNode, fragmentType) {
|
|
7
9
|
return fragmentType;
|
|
@@ -1138,6 +1140,104 @@ const GetCustomFieldDefinitionsDocument = {
|
|
|
1138
1140
|
},
|
|
1139
1141
|
],
|
|
1140
1142
|
};
|
|
1143
|
+
const UpdateCustomFieldValuesDocument = {
|
|
1144
|
+
kind: "Document",
|
|
1145
|
+
definitions: [
|
|
1146
|
+
{
|
|
1147
|
+
kind: "OperationDefinition",
|
|
1148
|
+
operation: "mutation",
|
|
1149
|
+
name: { kind: "Name", value: "UpdateCustomFieldValues" },
|
|
1150
|
+
variableDefinitions: [
|
|
1151
|
+
{
|
|
1152
|
+
kind: "VariableDefinition",
|
|
1153
|
+
variable: { kind: "Variable", name: { kind: "Name", value: "customFields" } },
|
|
1154
|
+
type: {
|
|
1155
|
+
kind: "NonNullType",
|
|
1156
|
+
type: {
|
|
1157
|
+
kind: "ListType",
|
|
1158
|
+
type: {
|
|
1159
|
+
kind: "NonNullType",
|
|
1160
|
+
type: { kind: "NamedType", name: { kind: "Name", value: "SetCustomFieldValueInput" } },
|
|
1161
|
+
},
|
|
1162
|
+
},
|
|
1163
|
+
},
|
|
1164
|
+
},
|
|
1165
|
+
{
|
|
1166
|
+
kind: "VariableDefinition",
|
|
1167
|
+
variable: { kind: "Variable", name: { kind: "Name", value: "entityId" } },
|
|
1168
|
+
type: { kind: "NonNullType", type: { kind: "NamedType", name: { kind: "Name", value: "ID" } } },
|
|
1169
|
+
},
|
|
1170
|
+
{
|
|
1171
|
+
kind: "VariableDefinition",
|
|
1172
|
+
variable: { kind: "Variable", name: { kind: "Name", value: "entityType" } },
|
|
1173
|
+
type: {
|
|
1174
|
+
kind: "NonNullType",
|
|
1175
|
+
type: { kind: "NamedType", name: { kind: "Name", value: "CustomFieldEntityType" } },
|
|
1176
|
+
},
|
|
1177
|
+
},
|
|
1178
|
+
{
|
|
1179
|
+
kind: "VariableDefinition",
|
|
1180
|
+
variable: { kind: "Variable", name: { kind: "Name", value: "systemOfMeasurement" } },
|
|
1181
|
+
type: { kind: "NamedType", name: { kind: "Name", value: "SystemOfMeasurement" } },
|
|
1182
|
+
},
|
|
1183
|
+
],
|
|
1184
|
+
selectionSet: {
|
|
1185
|
+
kind: "SelectionSet",
|
|
1186
|
+
selections: [
|
|
1187
|
+
{
|
|
1188
|
+
kind: "Field",
|
|
1189
|
+
name: { kind: "Name", value: "customFieldSetValues" },
|
|
1190
|
+
arguments: [
|
|
1191
|
+
{
|
|
1192
|
+
kind: "Argument",
|
|
1193
|
+
name: { kind: "Name", value: "input" },
|
|
1194
|
+
value: {
|
|
1195
|
+
kind: "ObjectValue",
|
|
1196
|
+
fields: [
|
|
1197
|
+
{
|
|
1198
|
+
kind: "ObjectField",
|
|
1199
|
+
name: { kind: "Name", value: "entityId" },
|
|
1200
|
+
value: { kind: "Variable", name: { kind: "Name", value: "entityId" } },
|
|
1201
|
+
},
|
|
1202
|
+
{
|
|
1203
|
+
kind: "ObjectField",
|
|
1204
|
+
name: { kind: "Name", value: "entityType" },
|
|
1205
|
+
value: { kind: "Variable", name: { kind: "Name", value: "entityType" } },
|
|
1206
|
+
},
|
|
1207
|
+
{
|
|
1208
|
+
kind: "ObjectField",
|
|
1209
|
+
name: { kind: "Name", value: "values" },
|
|
1210
|
+
value: { kind: "Variable", name: { kind: "Name", value: "customFields" } },
|
|
1211
|
+
},
|
|
1212
|
+
],
|
|
1213
|
+
},
|
|
1214
|
+
},
|
|
1215
|
+
{
|
|
1216
|
+
kind: "Argument",
|
|
1217
|
+
name: { kind: "Name", value: "systemOfMeasurement" },
|
|
1218
|
+
value: { kind: "Variable", name: { kind: "Name", value: "systemOfMeasurement" } },
|
|
1219
|
+
},
|
|
1220
|
+
],
|
|
1221
|
+
selectionSet: {
|
|
1222
|
+
kind: "SelectionSet",
|
|
1223
|
+
selections: [
|
|
1224
|
+
{ kind: "Field", name: { kind: "Name", value: "success" } },
|
|
1225
|
+
{
|
|
1226
|
+
kind: "Field",
|
|
1227
|
+
name: { kind: "Name", value: "fieldsWithInvalidValues" },
|
|
1228
|
+
selectionSet: {
|
|
1229
|
+
kind: "SelectionSet",
|
|
1230
|
+
selections: [{ kind: "Field", name: { kind: "Name", value: "definitionId" } }],
|
|
1231
|
+
},
|
|
1232
|
+
},
|
|
1233
|
+
],
|
|
1234
|
+
},
|
|
1235
|
+
},
|
|
1236
|
+
],
|
|
1237
|
+
},
|
|
1238
|
+
},
|
|
1239
|
+
],
|
|
1240
|
+
};
|
|
1141
1241
|
|
|
1142
1242
|
const getCustomFieldDefinitionFromRelevantNode = (node) => getFragmentData(CustomFieldDefinitionFragmentDoc, node);
|
|
1143
1243
|
/**
|
|
@@ -1291,4 +1391,91 @@ const customFieldHasValue = (field) => {
|
|
|
1291
1391
|
}
|
|
1292
1392
|
};
|
|
1293
1393
|
|
|
1294
|
-
|
|
1394
|
+
/******************************************************************************
|
|
1395
|
+
Copyright (c) Microsoft Corporation.
|
|
1396
|
+
|
|
1397
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
1398
|
+
purpose with or without fee is hereby granted.
|
|
1399
|
+
|
|
1400
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
1401
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
1402
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
1403
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
1404
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
1405
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
1406
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
1407
|
+
***************************************************************************** */
|
|
1408
|
+
|
|
1409
|
+
function __rest(s, e) {
|
|
1410
|
+
var t = {};
|
|
1411
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
1412
|
+
t[p] = s[p];
|
|
1413
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
1414
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
1415
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
1416
|
+
t[p[i]] = s[p[i]];
|
|
1417
|
+
}
|
|
1418
|
+
return t;
|
|
1419
|
+
}
|
|
1420
|
+
|
|
1421
|
+
function __awaiter(thisArg, _arguments, P, generator) {
|
|
1422
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
1423
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
1424
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
1425
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
1426
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
1427
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
1428
|
+
});
|
|
1429
|
+
}
|
|
1430
|
+
|
|
1431
|
+
/**
|
|
1432
|
+
* Execute custom fields update from form data
|
|
1433
|
+
*/
|
|
1434
|
+
const useUpdateCustomFieldValues = (entityId, entityType, customFields, systemOfMeasurement = SystemOfMeasurement.Si) => {
|
|
1435
|
+
const [setCustomFieldValues, { data: saveResult, loading: savingCustomFields }] = useMutation(UpdateCustomFieldValuesDocument, { refetchQueries: ["GetCustomFieldsForAsset"] });
|
|
1436
|
+
const customFieldsMap = useMemo(() => customFields.reduce((acc, current) => (Object.assign(Object.assign({}, acc), { [current.definition.id]: current })), {}), [customFields]);
|
|
1437
|
+
const updateCustomFields = useCallback((data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
1438
|
+
// Transform data to custom field updates
|
|
1439
|
+
const fieldUpdates = objectKeys(data)
|
|
1440
|
+
.map(fieldId => {
|
|
1441
|
+
var _a, _b;
|
|
1442
|
+
const originalField = customFieldsMap[fieldId];
|
|
1443
|
+
const definition = originalField === null || originalField === void 0 ? void 0 : originalField.definition;
|
|
1444
|
+
return {
|
|
1445
|
+
id: fieldId,
|
|
1446
|
+
value: data[fieldId],
|
|
1447
|
+
definition,
|
|
1448
|
+
editable: (_b = (_a = originalField === null || originalField === void 0 ? void 0 : originalField.valueEditable) !== null && _a !== void 0 ? _a : definition === null || definition === void 0 ? void 0 : definition.uiEditable) !== null && _b !== void 0 ? _b : true,
|
|
1449
|
+
};
|
|
1450
|
+
})
|
|
1451
|
+
.filter(({ editable }) => editable)
|
|
1452
|
+
.map(({ id, value, definition }) => {
|
|
1453
|
+
if (definition && isValidCustomFieldValue(value)) {
|
|
1454
|
+
const _a = getCustomFieldValueToSaveFromRawValue(definition, value), newValue = __rest(_a, ["type"]);
|
|
1455
|
+
return {
|
|
1456
|
+
definitionId: id,
|
|
1457
|
+
value: Object.assign({}, newValue),
|
|
1458
|
+
};
|
|
1459
|
+
}
|
|
1460
|
+
return null;
|
|
1461
|
+
})
|
|
1462
|
+
.filter(nonNullable);
|
|
1463
|
+
// execute update
|
|
1464
|
+
const customFieldsUpdateResponse = yield setCustomFieldValues({
|
|
1465
|
+
variables: {
|
|
1466
|
+
entityId,
|
|
1467
|
+
entityType,
|
|
1468
|
+
customFields: fieldUpdates,
|
|
1469
|
+
systemOfMeasurement,
|
|
1470
|
+
},
|
|
1471
|
+
});
|
|
1472
|
+
return customFieldsUpdateResponse;
|
|
1473
|
+
}), [customFieldsMap, entityId, entityType, setCustomFieldValues, systemOfMeasurement]);
|
|
1474
|
+
return useMemo(() => ({
|
|
1475
|
+
updateCustomFields,
|
|
1476
|
+
result: saveResult,
|
|
1477
|
+
inProgress: savingCustomFields,
|
|
1478
|
+
}), [updateCustomFields, saveResult, savingCustomFields]);
|
|
1479
|
+
};
|
|
1480
|
+
|
|
1481
|
+
export { GetCustomFieldDefinitionsDocument, GetCustomFieldsForAssetDocument, GetCustomFieldsForSiteDocument, customFieldHasValue, getCustomFieldValueAndDefinitionFromRelevantNode, useCustomFieldDefinitions, useCustomFieldsValueAndDefinition, useUpdateCustomFieldValues };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trackunit/custom-field-api",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.96",
|
|
4
4
|
"engines": {
|
|
5
5
|
"node": ">=18.x"
|
|
6
6
|
},
|
|
@@ -16,7 +16,9 @@
|
|
|
16
16
|
"@trackunit/react-core-contexts-test": "*",
|
|
17
17
|
"react": "^18.2.0",
|
|
18
18
|
"@trackunit/shared-utils": "*",
|
|
19
|
-
"@trackunit/react-core-hooks": "*"
|
|
19
|
+
"@trackunit/react-core-hooks": "*",
|
|
20
|
+
"@trackunit/iris-app-runtime-core": "*",
|
|
21
|
+
"@trackunit/react-core-contexts-api": "*"
|
|
20
22
|
},
|
|
21
23
|
"module": "./index.esm.js",
|
|
22
24
|
"main": "./index.cjs.js"
|
|
@@ -11,7 +11,7 @@ import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/
|
|
|
11
11
|
* Therefore it is highly recommended to use the babel or swc plugin for production.
|
|
12
12
|
*/
|
|
13
13
|
declare const documents: {
|
|
14
|
-
"query GetCustomFieldsForAsset($entityId: ID!, $systemOfMeasurement: SystemOfMeasurement) {\n asset(id: $entityId) {\n customFields {\n edges {\n node {\n ...CustomFieldValueAndDefinition\n }\n }\n }\n }\n}\n\nquery GetCustomFieldsForSite($entityId: ID!, $systemOfMeasurement: SystemOfMeasurement) {\n site(id: $entityId) {\n customFields {\n edges {\n node {\n ...CustomFieldValueAndDefinition\n }\n }\n }\n }\n}\n\nfragment CustomFieldValueAndDefinition on CustomFieldValueAndDefinition {\n __typename\n definition {\n __typename\n description\n entityType\n id\n key\n owner {\n irisAppId\n marketplaceEntry {\n name\n }\n ownerType\n }\n title\n translations {\n description\n title\n language\n }\n type\n uiEditable\n uiVisible\n ... on DropDownFieldDefinition {\n allValues\n multiSelect\n }\n ... on NumberFieldDefinition {\n isInteger\n maximumNumber(systemOfMeasurement: $systemOfMeasurement)\n minimumNumber(systemOfMeasurement: $systemOfMeasurement)\n unitSi\n unitUs\n }\n ... on MonetaryFieldDefinition {\n currency\n maximumNumber\n minimumNumber\n }\n ... on StringFieldDefinition {\n maximumLength\n minimumLength\n pattern\n }\n }\n valueEditable\n ... on BooleanFieldValueAndDefinition {\n booleanValue\n }\n ... on DateFieldValueAndDefinition {\n dateValue\n }\n ... on DropDownFieldValueAndDefinition {\n stringArrayValue\n }\n ... on EmailFieldValueAndDefinition {\n stringValue\n }\n ... on JsonFieldValueAndDefinition {\n jsonValue\n }\n ... on NumberFieldValueAndDefinition {\n numberValue(systemOfMeasurement: $systemOfMeasurement)\n }\n ... on MonetaryFieldValueAndDefinition {\n numberValue\n }\n ... on PhoneNumberFieldValueAndDefinition {\n stringValue\n }\n ... on StringFieldValueAndDefinition {\n stringValue\n }\n ... on WebAddressFieldValueAndDefinition {\n stringValue\n }\n}\n\nquery GetCustomFieldDefinitions($entityType: CustomFieldEntityType = ASSET, $systemOfMeasurement: SystemOfMeasurement) {\n customFieldDefinitions(uiVisible: true, first: 100, entityType: $entityType) {\n edges {\n node {\n ...CustomFieldDefinition\n }\n }\n }\n}\n\nfragment CustomFieldDefinition on CustomFieldDefinition {\n __typename\n description\n entityType\n id\n key\n owner {\n irisAppId\n marketplaceEntry {\n name\n }\n ownerType\n }\n title\n translations {\n description\n title\n language\n }\n type\n uiEditable\n uiVisible\n ... on DropDownFieldDefinition {\n allValues\n multiSelect\n }\n ... on NumberFieldDefinition {\n isInteger\n maximumNumber(systemOfMeasurement: $systemOfMeasurement)\n minimumNumber(systemOfMeasurement: $systemOfMeasurement)\n unitSi\n unitUs\n }\n ... on MonetaryFieldDefinition {\n currency\n maximumNumber\n minimumNumber\n }\n ... on StringFieldDefinition {\n maximumLength\n minimumLength\n pattern\n }\n}": DocumentNode<types.GetCustomFieldsForAssetQuery, types.Exact<{
|
|
14
|
+
"query GetCustomFieldsForAsset($entityId: ID!, $systemOfMeasurement: SystemOfMeasurement) {\n asset(id: $entityId) {\n customFields {\n edges {\n node {\n ...CustomFieldValueAndDefinition\n }\n }\n }\n }\n}\n\nquery GetCustomFieldsForSite($entityId: ID!, $systemOfMeasurement: SystemOfMeasurement) {\n site(id: $entityId) {\n customFields {\n edges {\n node {\n ...CustomFieldValueAndDefinition\n }\n }\n }\n }\n}\n\nfragment CustomFieldValueAndDefinition on CustomFieldValueAndDefinition {\n __typename\n definition {\n __typename\n description\n entityType\n id\n key\n owner {\n irisAppId\n marketplaceEntry {\n name\n }\n ownerType\n }\n title\n translations {\n description\n title\n language\n }\n type\n uiEditable\n uiVisible\n ... on DropDownFieldDefinition {\n allValues\n multiSelect\n }\n ... on NumberFieldDefinition {\n isInteger\n maximumNumber(systemOfMeasurement: $systemOfMeasurement)\n minimumNumber(systemOfMeasurement: $systemOfMeasurement)\n unitSi\n unitUs\n }\n ... on MonetaryFieldDefinition {\n currency\n maximumNumber\n minimumNumber\n }\n ... on StringFieldDefinition {\n maximumLength\n minimumLength\n pattern\n }\n }\n valueEditable\n ... on BooleanFieldValueAndDefinition {\n booleanValue\n }\n ... on DateFieldValueAndDefinition {\n dateValue\n }\n ... on DropDownFieldValueAndDefinition {\n stringArrayValue\n }\n ... on EmailFieldValueAndDefinition {\n stringValue\n }\n ... on JsonFieldValueAndDefinition {\n jsonValue\n }\n ... on NumberFieldValueAndDefinition {\n numberValue(systemOfMeasurement: $systemOfMeasurement)\n }\n ... on MonetaryFieldValueAndDefinition {\n numberValue\n }\n ... on PhoneNumberFieldValueAndDefinition {\n stringValue\n }\n ... on StringFieldValueAndDefinition {\n stringValue\n }\n ... on WebAddressFieldValueAndDefinition {\n stringValue\n }\n}\n\nquery GetCustomFieldDefinitions($entityType: CustomFieldEntityType = ASSET, $systemOfMeasurement: SystemOfMeasurement) {\n customFieldDefinitions(uiVisible: true, first: 100, entityType: $entityType) {\n edges {\n node {\n ...CustomFieldDefinition\n }\n }\n }\n}\n\nfragment CustomFieldDefinition on CustomFieldDefinition {\n __typename\n description\n entityType\n id\n key\n owner {\n irisAppId\n marketplaceEntry {\n name\n }\n ownerType\n }\n title\n translations {\n description\n title\n language\n }\n type\n uiEditable\n uiVisible\n ... on DropDownFieldDefinition {\n allValues\n multiSelect\n }\n ... on NumberFieldDefinition {\n isInteger\n maximumNumber(systemOfMeasurement: $systemOfMeasurement)\n minimumNumber(systemOfMeasurement: $systemOfMeasurement)\n unitSi\n unitUs\n }\n ... on MonetaryFieldDefinition {\n currency\n maximumNumber\n minimumNumber\n }\n ... on StringFieldDefinition {\n maximumLength\n minimumLength\n pattern\n }\n}\n\nmutation UpdateCustomFieldValues($customFields: [SetCustomFieldValueInput!]!, $entityId: ID!, $entityType: CustomFieldEntityType!, $systemOfMeasurement: SystemOfMeasurement) {\n customFieldSetValues(\n input: {entityId: $entityId, entityType: $entityType, values: $customFields}\n systemOfMeasurement: $systemOfMeasurement\n ) {\n success\n fieldsWithInvalidValues {\n definitionId\n }\n }\n}": DocumentNode<types.GetCustomFieldsForAssetQuery, types.Exact<{
|
|
15
15
|
entityId: string;
|
|
16
16
|
systemOfMeasurement: types.InputMaybe<types.SystemOfMeasurement>;
|
|
17
17
|
}>>;
|
|
@@ -32,6 +32,6 @@ export declare function graphql(source: string): unknown;
|
|
|
32
32
|
/**
|
|
33
33
|
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
|
34
34
|
*/
|
|
35
|
-
export declare function graphql(source: "query GetCustomFieldsForAsset($entityId: ID!, $systemOfMeasurement: SystemOfMeasurement) {\n asset(id: $entityId) {\n customFields {\n edges {\n node {\n ...CustomFieldValueAndDefinition\n }\n }\n }\n }\n}\n\nquery GetCustomFieldsForSite($entityId: ID!, $systemOfMeasurement: SystemOfMeasurement) {\n site(id: $entityId) {\n customFields {\n edges {\n node {\n ...CustomFieldValueAndDefinition\n }\n }\n }\n }\n}\n\nfragment CustomFieldValueAndDefinition on CustomFieldValueAndDefinition {\n __typename\n definition {\n __typename\n description\n entityType\n id\n key\n owner {\n irisAppId\n marketplaceEntry {\n name\n }\n ownerType\n }\n title\n translations {\n description\n title\n language\n }\n type\n uiEditable\n uiVisible\n ... on DropDownFieldDefinition {\n allValues\n multiSelect\n }\n ... on NumberFieldDefinition {\n isInteger\n maximumNumber(systemOfMeasurement: $systemOfMeasurement)\n minimumNumber(systemOfMeasurement: $systemOfMeasurement)\n unitSi\n unitUs\n }\n ... on MonetaryFieldDefinition {\n currency\n maximumNumber\n minimumNumber\n }\n ... on StringFieldDefinition {\n maximumLength\n minimumLength\n pattern\n }\n }\n valueEditable\n ... on BooleanFieldValueAndDefinition {\n booleanValue\n }\n ... on DateFieldValueAndDefinition {\n dateValue\n }\n ... on DropDownFieldValueAndDefinition {\n stringArrayValue\n }\n ... on EmailFieldValueAndDefinition {\n stringValue\n }\n ... on JsonFieldValueAndDefinition {\n jsonValue\n }\n ... on NumberFieldValueAndDefinition {\n numberValue(systemOfMeasurement: $systemOfMeasurement)\n }\n ... on MonetaryFieldValueAndDefinition {\n numberValue\n }\n ... on PhoneNumberFieldValueAndDefinition {\n stringValue\n }\n ... on StringFieldValueAndDefinition {\n stringValue\n }\n ... on WebAddressFieldValueAndDefinition {\n stringValue\n }\n}\n\nquery GetCustomFieldDefinitions($entityType: CustomFieldEntityType = ASSET, $systemOfMeasurement: SystemOfMeasurement) {\n customFieldDefinitions(uiVisible: true, first: 100, entityType: $entityType) {\n edges {\n node {\n ...CustomFieldDefinition\n }\n }\n }\n}\n\nfragment CustomFieldDefinition on CustomFieldDefinition {\n __typename\n description\n entityType\n id\n key\n owner {\n irisAppId\n marketplaceEntry {\n name\n }\n ownerType\n }\n title\n translations {\n description\n title\n language\n }\n type\n uiEditable\n uiVisible\n ... on DropDownFieldDefinition {\n allValues\n multiSelect\n }\n ... on NumberFieldDefinition {\n isInteger\n maximumNumber(systemOfMeasurement: $systemOfMeasurement)\n minimumNumber(systemOfMeasurement: $systemOfMeasurement)\n unitSi\n unitUs\n }\n ... on MonetaryFieldDefinition {\n currency\n maximumNumber\n minimumNumber\n }\n ... on StringFieldDefinition {\n maximumLength\n minimumLength\n pattern\n }\n}"): (typeof documents)["query GetCustomFieldsForAsset($entityId: ID!, $systemOfMeasurement: SystemOfMeasurement) {\n asset(id: $entityId) {\n customFields {\n edges {\n node {\n ...CustomFieldValueAndDefinition\n }\n }\n }\n }\n}\n\nquery GetCustomFieldsForSite($entityId: ID!, $systemOfMeasurement: SystemOfMeasurement) {\n site(id: $entityId) {\n customFields {\n edges {\n node {\n ...CustomFieldValueAndDefinition\n }\n }\n }\n }\n}\n\nfragment CustomFieldValueAndDefinition on CustomFieldValueAndDefinition {\n __typename\n definition {\n __typename\n description\n entityType\n id\n key\n owner {\n irisAppId\n marketplaceEntry {\n name\n }\n ownerType\n }\n title\n translations {\n description\n title\n language\n }\n type\n uiEditable\n uiVisible\n ... on DropDownFieldDefinition {\n allValues\n multiSelect\n }\n ... on NumberFieldDefinition {\n isInteger\n maximumNumber(systemOfMeasurement: $systemOfMeasurement)\n minimumNumber(systemOfMeasurement: $systemOfMeasurement)\n unitSi\n unitUs\n }\n ... on MonetaryFieldDefinition {\n currency\n maximumNumber\n minimumNumber\n }\n ... on StringFieldDefinition {\n maximumLength\n minimumLength\n pattern\n }\n }\n valueEditable\n ... on BooleanFieldValueAndDefinition {\n booleanValue\n }\n ... on DateFieldValueAndDefinition {\n dateValue\n }\n ... on DropDownFieldValueAndDefinition {\n stringArrayValue\n }\n ... on EmailFieldValueAndDefinition {\n stringValue\n }\n ... on JsonFieldValueAndDefinition {\n jsonValue\n }\n ... on NumberFieldValueAndDefinition {\n numberValue(systemOfMeasurement: $systemOfMeasurement)\n }\n ... on MonetaryFieldValueAndDefinition {\n numberValue\n }\n ... on PhoneNumberFieldValueAndDefinition {\n stringValue\n }\n ... on StringFieldValueAndDefinition {\n stringValue\n }\n ... on WebAddressFieldValueAndDefinition {\n stringValue\n }\n}\n\nquery GetCustomFieldDefinitions($entityType: CustomFieldEntityType = ASSET, $systemOfMeasurement: SystemOfMeasurement) {\n customFieldDefinitions(uiVisible: true, first: 100, entityType: $entityType) {\n edges {\n node {\n ...CustomFieldDefinition\n }\n }\n }\n}\n\nfragment CustomFieldDefinition on CustomFieldDefinition {\n __typename\n description\n entityType\n id\n key\n owner {\n irisAppId\n marketplaceEntry {\n name\n }\n ownerType\n }\n title\n translations {\n description\n title\n language\n }\n type\n uiEditable\n uiVisible\n ... on DropDownFieldDefinition {\n allValues\n multiSelect\n }\n ... on NumberFieldDefinition {\n isInteger\n maximumNumber(systemOfMeasurement: $systemOfMeasurement)\n minimumNumber(systemOfMeasurement: $systemOfMeasurement)\n unitSi\n unitUs\n }\n ... on MonetaryFieldDefinition {\n currency\n maximumNumber\n minimumNumber\n }\n ... on StringFieldDefinition {\n maximumLength\n minimumLength\n pattern\n }\n}"];
|
|
35
|
+
export declare function graphql(source: "query GetCustomFieldsForAsset($entityId: ID!, $systemOfMeasurement: SystemOfMeasurement) {\n asset(id: $entityId) {\n customFields {\n edges {\n node {\n ...CustomFieldValueAndDefinition\n }\n }\n }\n }\n}\n\nquery GetCustomFieldsForSite($entityId: ID!, $systemOfMeasurement: SystemOfMeasurement) {\n site(id: $entityId) {\n customFields {\n edges {\n node {\n ...CustomFieldValueAndDefinition\n }\n }\n }\n }\n}\n\nfragment CustomFieldValueAndDefinition on CustomFieldValueAndDefinition {\n __typename\n definition {\n __typename\n description\n entityType\n id\n key\n owner {\n irisAppId\n marketplaceEntry {\n name\n }\n ownerType\n }\n title\n translations {\n description\n title\n language\n }\n type\n uiEditable\n uiVisible\n ... on DropDownFieldDefinition {\n allValues\n multiSelect\n }\n ... on NumberFieldDefinition {\n isInteger\n maximumNumber(systemOfMeasurement: $systemOfMeasurement)\n minimumNumber(systemOfMeasurement: $systemOfMeasurement)\n unitSi\n unitUs\n }\n ... on MonetaryFieldDefinition {\n currency\n maximumNumber\n minimumNumber\n }\n ... on StringFieldDefinition {\n maximumLength\n minimumLength\n pattern\n }\n }\n valueEditable\n ... on BooleanFieldValueAndDefinition {\n booleanValue\n }\n ... on DateFieldValueAndDefinition {\n dateValue\n }\n ... on DropDownFieldValueAndDefinition {\n stringArrayValue\n }\n ... on EmailFieldValueAndDefinition {\n stringValue\n }\n ... on JsonFieldValueAndDefinition {\n jsonValue\n }\n ... on NumberFieldValueAndDefinition {\n numberValue(systemOfMeasurement: $systemOfMeasurement)\n }\n ... on MonetaryFieldValueAndDefinition {\n numberValue\n }\n ... on PhoneNumberFieldValueAndDefinition {\n stringValue\n }\n ... on StringFieldValueAndDefinition {\n stringValue\n }\n ... on WebAddressFieldValueAndDefinition {\n stringValue\n }\n}\n\nquery GetCustomFieldDefinitions($entityType: CustomFieldEntityType = ASSET, $systemOfMeasurement: SystemOfMeasurement) {\n customFieldDefinitions(uiVisible: true, first: 100, entityType: $entityType) {\n edges {\n node {\n ...CustomFieldDefinition\n }\n }\n }\n}\n\nfragment CustomFieldDefinition on CustomFieldDefinition {\n __typename\n description\n entityType\n id\n key\n owner {\n irisAppId\n marketplaceEntry {\n name\n }\n ownerType\n }\n title\n translations {\n description\n title\n language\n }\n type\n uiEditable\n uiVisible\n ... on DropDownFieldDefinition {\n allValues\n multiSelect\n }\n ... on NumberFieldDefinition {\n isInteger\n maximumNumber(systemOfMeasurement: $systemOfMeasurement)\n minimumNumber(systemOfMeasurement: $systemOfMeasurement)\n unitSi\n unitUs\n }\n ... on MonetaryFieldDefinition {\n currency\n maximumNumber\n minimumNumber\n }\n ... on StringFieldDefinition {\n maximumLength\n minimumLength\n pattern\n }\n}\n\nmutation UpdateCustomFieldValues($customFields: [SetCustomFieldValueInput!]!, $entityId: ID!, $entityType: CustomFieldEntityType!, $systemOfMeasurement: SystemOfMeasurement) {\n customFieldSetValues(\n input: {entityId: $entityId, entityType: $entityType, values: $customFields}\n systemOfMeasurement: $systemOfMeasurement\n ) {\n success\n fieldsWithInvalidValues {\n definitionId\n }\n }\n}"): (typeof documents)["query GetCustomFieldsForAsset($entityId: ID!, $systemOfMeasurement: SystemOfMeasurement) {\n asset(id: $entityId) {\n customFields {\n edges {\n node {\n ...CustomFieldValueAndDefinition\n }\n }\n }\n }\n}\n\nquery GetCustomFieldsForSite($entityId: ID!, $systemOfMeasurement: SystemOfMeasurement) {\n site(id: $entityId) {\n customFields {\n edges {\n node {\n ...CustomFieldValueAndDefinition\n }\n }\n }\n }\n}\n\nfragment CustomFieldValueAndDefinition on CustomFieldValueAndDefinition {\n __typename\n definition {\n __typename\n description\n entityType\n id\n key\n owner {\n irisAppId\n marketplaceEntry {\n name\n }\n ownerType\n }\n title\n translations {\n description\n title\n language\n }\n type\n uiEditable\n uiVisible\n ... on DropDownFieldDefinition {\n allValues\n multiSelect\n }\n ... on NumberFieldDefinition {\n isInteger\n maximumNumber(systemOfMeasurement: $systemOfMeasurement)\n minimumNumber(systemOfMeasurement: $systemOfMeasurement)\n unitSi\n unitUs\n }\n ... on MonetaryFieldDefinition {\n currency\n maximumNumber\n minimumNumber\n }\n ... on StringFieldDefinition {\n maximumLength\n minimumLength\n pattern\n }\n }\n valueEditable\n ... on BooleanFieldValueAndDefinition {\n booleanValue\n }\n ... on DateFieldValueAndDefinition {\n dateValue\n }\n ... on DropDownFieldValueAndDefinition {\n stringArrayValue\n }\n ... on EmailFieldValueAndDefinition {\n stringValue\n }\n ... on JsonFieldValueAndDefinition {\n jsonValue\n }\n ... on NumberFieldValueAndDefinition {\n numberValue(systemOfMeasurement: $systemOfMeasurement)\n }\n ... on MonetaryFieldValueAndDefinition {\n numberValue\n }\n ... on PhoneNumberFieldValueAndDefinition {\n stringValue\n }\n ... on StringFieldValueAndDefinition {\n stringValue\n }\n ... on WebAddressFieldValueAndDefinition {\n stringValue\n }\n}\n\nquery GetCustomFieldDefinitions($entityType: CustomFieldEntityType = ASSET, $systemOfMeasurement: SystemOfMeasurement) {\n customFieldDefinitions(uiVisible: true, first: 100, entityType: $entityType) {\n edges {\n node {\n ...CustomFieldDefinition\n }\n }\n }\n}\n\nfragment CustomFieldDefinition on CustomFieldDefinition {\n __typename\n description\n entityType\n id\n key\n owner {\n irisAppId\n marketplaceEntry {\n name\n }\n ownerType\n }\n title\n translations {\n description\n title\n language\n }\n type\n uiEditable\n uiVisible\n ... on DropDownFieldDefinition {\n allValues\n multiSelect\n }\n ... on NumberFieldDefinition {\n isInteger\n maximumNumber(systemOfMeasurement: $systemOfMeasurement)\n minimumNumber(systemOfMeasurement: $systemOfMeasurement)\n unitSi\n unitUs\n }\n ... on MonetaryFieldDefinition {\n currency\n maximumNumber\n minimumNumber\n }\n ... on StringFieldDefinition {\n maximumLength\n minimumLength\n pattern\n }\n}\n\nmutation UpdateCustomFieldValues($customFields: [SetCustomFieldValueInput!]!, $entityId: ID!, $entityType: CustomFieldEntityType!, $systemOfMeasurement: SystemOfMeasurement) {\n customFieldSetValues(\n input: {entityId: $entityId, entityType: $entityType, values: $customFields}\n systemOfMeasurement: $systemOfMeasurement\n ) {\n success\n fieldsWithInvalidValues {\n definitionId\n }\n }\n}"];
|
|
36
36
|
export type DocumentType<TDocumentNode extends DocumentNode<any, any>> = TDocumentNode extends DocumentNode<infer TType, any> ? TType : never;
|
|
37
37
|
export {};
|
|
@@ -189,6 +189,60 @@ export declare const unitUs: {
|
|
|
189
189
|
readonly yard: "yard";
|
|
190
190
|
};
|
|
191
191
|
export type UnitUs = (typeof unitUs)[keyof typeof unitUs];
|
|
192
|
+
export type CustomFieldOwnerInput = {
|
|
193
|
+
/** The iris app ID of the custom field owner input. */
|
|
194
|
+
irisAppId?: InputMaybe<Scalars["String"]["input"]>;
|
|
195
|
+
/** The owner type of the custom field owner input. */
|
|
196
|
+
ownerType: CustomFieldOwnerType;
|
|
197
|
+
};
|
|
198
|
+
export type CustomFieldValueInput = {
|
|
199
|
+
/** The value if the definition is a boolean field. */
|
|
200
|
+
booleanValue?: InputMaybe<Scalars["Boolean"]["input"]>;
|
|
201
|
+
/** The value in ISO 8601 format if the definition is a date field. */
|
|
202
|
+
dateValue?: InputMaybe<Scalars["Date"]["input"]>;
|
|
203
|
+
/** The value if the definition is a email field. */
|
|
204
|
+
emailValue?: InputMaybe<Scalars["EmailAddress"]["input"]>;
|
|
205
|
+
/** The value if the definition is a json field. */
|
|
206
|
+
jsonValue?: InputMaybe<Scalars["JSON"]["input"]>;
|
|
207
|
+
/** The value if the definition is a monetary field. */
|
|
208
|
+
monetaryValue?: InputMaybe<Scalars["Float"]["input"]>;
|
|
209
|
+
/** The value if the definition is a numeric field. */
|
|
210
|
+
numberValue?: InputMaybe<Scalars["Float"]["input"]>;
|
|
211
|
+
/** The value if the definition is a phone number field. */
|
|
212
|
+
phoneNumberValue?: InputMaybe<Scalars["PhoneNumber"]["input"]>;
|
|
213
|
+
/** The value if the definition is a dropdown field. */
|
|
214
|
+
stringArrayValue?: InputMaybe<Array<Scalars["String"]["input"]>>;
|
|
215
|
+
/** The value if the definition is a string field. */
|
|
216
|
+
stringValue?: InputMaybe<Scalars["String"]["input"]>;
|
|
217
|
+
/** The value if the definition is a webaddress field. */
|
|
218
|
+
webAddressValue?: InputMaybe<Scalars["Url"]["input"]>;
|
|
219
|
+
};
|
|
220
|
+
export type SetCustomFieldValueInput = {
|
|
221
|
+
/**
|
|
222
|
+
* The ID of the definition this custom field value should use.
|
|
223
|
+
*
|
|
224
|
+
* This is required unless `owner` and `definitionKey` is supplied.
|
|
225
|
+
*/
|
|
226
|
+
definitionId?: InputMaybe<Scalars["ID"]["input"]>;
|
|
227
|
+
/**
|
|
228
|
+
* The key of the definition this custom field value should use.
|
|
229
|
+
*
|
|
230
|
+
* This is required together with `owner` unless `definitionId` is supplied.
|
|
231
|
+
*/
|
|
232
|
+
definitionKey?: InputMaybe<Scalars["String"]["input"]>;
|
|
233
|
+
/**
|
|
234
|
+
* The definition owner.
|
|
235
|
+
*
|
|
236
|
+
* Used together with `definitionKey`.
|
|
237
|
+
*/
|
|
238
|
+
owner?: InputMaybe<CustomFieldOwnerInput>;
|
|
239
|
+
/**
|
|
240
|
+
* The new value for the custom field.
|
|
241
|
+
*
|
|
242
|
+
* Set to null to delete the value.
|
|
243
|
+
*/
|
|
244
|
+
value?: InputMaybe<CustomFieldValueInput>;
|
|
245
|
+
};
|
|
192
246
|
type CustomFieldValueAndDefinition_BooleanFieldValueAndDefinition_Fragment = {
|
|
193
247
|
__typename: "BooleanFieldValueAndDefinition";
|
|
194
248
|
booleanValue: boolean | null;
|
|
@@ -1055,6 +1109,23 @@ export type GetCustomFieldDefinitionsQuery = {
|
|
|
1055
1109
|
} | null;
|
|
1056
1110
|
};
|
|
1057
1111
|
export type CustomFieldDefinitionFragment = CustomFieldDefinition_BooleanFieldDefinition_Fragment | CustomFieldDefinition_DateFieldDefinition_Fragment | CustomFieldDefinition_DropDownFieldDefinition_Fragment | CustomFieldDefinition_EmailFieldDefinition_Fragment | CustomFieldDefinition_JsonFieldDefinition_Fragment | CustomFieldDefinition_MonetaryFieldDefinition_Fragment | CustomFieldDefinition_NumberFieldDefinition_Fragment | CustomFieldDefinition_PhoneNumberFieldDefinition_Fragment | CustomFieldDefinition_StringFieldDefinition_Fragment | CustomFieldDefinition_WebAddressFieldDefinition_Fragment;
|
|
1112
|
+
export type UpdateCustomFieldValuesMutationVariables = Exact<{
|
|
1113
|
+
customFields: Array<SetCustomFieldValueInput> | SetCustomFieldValueInput;
|
|
1114
|
+
entityId: Scalars["ID"]["input"];
|
|
1115
|
+
entityType: CustomFieldEntityType;
|
|
1116
|
+
systemOfMeasurement: InputMaybe<SystemOfMeasurement>;
|
|
1117
|
+
}>;
|
|
1118
|
+
export type UpdateCustomFieldValuesMutation = {
|
|
1119
|
+
__typename?: "Mutation";
|
|
1120
|
+
customFieldSetValues: {
|
|
1121
|
+
__typename?: "CustomFieldSetValuesResponse";
|
|
1122
|
+
success: boolean;
|
|
1123
|
+
fieldsWithInvalidValues: Array<{
|
|
1124
|
+
__typename?: "FieldValidationResult";
|
|
1125
|
+
definitionId: string | null;
|
|
1126
|
+
}> | null;
|
|
1127
|
+
};
|
|
1128
|
+
};
|
|
1058
1129
|
export declare const CustomFieldValueAndDefinitionFragmentDoc: DocumentNode<CustomFieldValueAndDefinitionFragment, unknown>;
|
|
1059
1130
|
export declare const CustomFieldDefinitionFragmentDoc: DocumentNode<CustomFieldDefinitionFragment, unknown>;
|
|
1060
1131
|
export declare const GetCustomFieldsForAssetDocument: DocumentNode<GetCustomFieldsForAssetQuery, Exact<{
|
|
@@ -1069,4 +1140,10 @@ export declare const GetCustomFieldDefinitionsDocument: DocumentNode<GetCustomFi
|
|
|
1069
1140
|
entityType?: InputMaybe<CustomFieldEntityType>;
|
|
1070
1141
|
systemOfMeasurement: InputMaybe<SystemOfMeasurement>;
|
|
1071
1142
|
}>>;
|
|
1143
|
+
export declare const UpdateCustomFieldValuesDocument: DocumentNode<UpdateCustomFieldValuesMutation, Exact<{
|
|
1144
|
+
customFields: Array<SetCustomFieldValueInput> | SetCustomFieldValueInput;
|
|
1145
|
+
entityId: Scalars["ID"]["input"];
|
|
1146
|
+
entityType: CustomFieldEntityType;
|
|
1147
|
+
systemOfMeasurement: InputMaybe<SystemOfMeasurement>;
|
|
1148
|
+
}>>;
|
|
1072
1149
|
export {};
|
|
@@ -9,3 +9,6 @@ export declare const mockForGetCustomFieldsForSiteQuery: (variables: gql.GetCust
|
|
|
9
9
|
export declare const mockForGetCustomFieldDefinitionsQuery: (variables: gql.GetCustomFieldDefinitionsQueryVariables, data?: DeepPartialNullable<gql.GetCustomFieldDefinitionsQuery>) => import("@apollo/client/testing").MockedResponse<gql.GetCustomFieldDefinitionsQuery, Record<string, any>> & {
|
|
10
10
|
data: gql.GetCustomFieldDefinitionsQuery;
|
|
11
11
|
};
|
|
12
|
+
export declare const mockForUpdateCustomFieldValuesMutation: (variables: gql.UpdateCustomFieldValuesMutationVariables, data?: DeepPartialNullable<gql.UpdateCustomFieldValuesMutation>) => import("@apollo/client/testing").MockedResponse<gql.UpdateCustomFieldValuesMutation, Record<string, any>> & {
|
|
13
|
+
data: gql.UpdateCustomFieldValuesMutation;
|
|
14
|
+
};
|
package/src/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export * from "./useCustomFieldDefinitions";
|
|
2
2
|
export * from "./useCustomFieldsValueAndDefinition";
|
|
3
|
+
export * from "./useUpdateCustomFieldValues";
|
|
3
4
|
export { GetCustomFieldDefinitionsDocument, GetCustomFieldsForAssetDocument, GetCustomFieldsForSiteDocument, type GetCustomFieldsForAssetQuery, type GetCustomFieldsForAssetQueryVariables, } from "./generated/graphql-api/graphql";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EntityType } from "@trackunit/iris-app-api";
|
|
2
|
+
import { SystemOfMeasurementType } from "@trackunit/react-core-contexts-api";
|
|
3
|
+
import { CustomFieldValueAndDefinition } from "./useCustomFieldsValueAndDefinition";
|
|
4
|
+
/**
|
|
5
|
+
* Execute custom fields update from form data
|
|
6
|
+
*/
|
|
7
|
+
export declare const useUpdateCustomFieldValues: (entityId: string, entityType: EntityType, customFields: CustomFieldValueAndDefinition[], systemOfMeasurement?: SystemOfMeasurementType) => {
|
|
8
|
+
updateCustomFields: (data: Record<string, unknown>) => Promise<import("@apollo/client").FetchResult<import("./generated/graphql-api/graphql").UpdateCustomFieldValuesMutation>>;
|
|
9
|
+
result: import("./generated/graphql-api/graphql").UpdateCustomFieldValuesMutation | null | undefined;
|
|
10
|
+
inProgress: boolean;
|
|
11
|
+
};
|