Fix date handling problems and redirect after edit

This commit is contained in:
Ryan Schouten 2020-09-26 12:12:39 -07:00
parent 6c0fedc1c0
commit 2c861fbe78
5 changed files with 43 additions and 10 deletions

View File

@ -1,6 +1,6 @@
{
"name": "react-form-webpart",
"version": "1.0.4",
"version": "1.0.5",
"private": true,
"engines": {
"node": ">=0.10.0"

View File

@ -154,13 +154,14 @@ export class ListFormService implements IListFormService {
},
};
const formValues = this.GetFormValues(fieldsSchema, data, originalData);
let createAttachmetns = this.GetAttachmentsCreate(data);
let deleteAttachmetns = this.GetAttachmentsDelete(data, originalData);
let createAttachments = this.GetAttachmentsCreate(data);
let deleteAttachments = this.GetAttachmentsDelete(data, originalData);
httpClientOptions.body = JSON.stringify({
bNewDocumentUpdate: false,
checkInComment: null,
formValues,
});
const endpoint = `${webUrl}/_api/web/GetList(@listUrl)/items(@itemId)/ValidateUpdateListItem()`
+ `?@listUrl=${encodeURIComponent('\'' + listUrl + '\'')}&@itemId=%27${itemId}%27`;
try {
@ -170,12 +171,12 @@ export class ListFormService implements IListFormService {
}
let responseData = await response.json();
responseData.AttachmentResponse = [];
if (deleteAttachmetns.length > 0) {
let deleteResponse = await this.deleteAttachments(webUrl, listUrl, itemId, deleteAttachmetns);
if (deleteAttachments.length > 0) {
let deleteResponse = await this.deleteAttachments(webUrl, listUrl, itemId, deleteAttachments);
responseData.AttachmentResponse.push(deleteResponse);
}
if (createAttachmetns.length > 0) {
let createResponse = await this.uploadAttachments(webUrl, listUrl, itemId, createAttachmetns);
if (createAttachments.length > 0) {
let createResponse = await this.uploadAttachments(webUrl, listUrl, itemId, createAttachments);
responseData.AttachmentResponse.push(createResponse);
}
return responseData.d.ValidateUpdateListItem.results;
@ -323,6 +324,15 @@ export class ListFormService implements IListFormService {
HasException: false,
};
}
else if (field.FieldType === "DateTime") {
let dateValue = data[field.InternalName].split('').map((c) => { return (c.charCodeAt(0) < 127) ? c : ''; }).join('');
return {
ErrorMessage: null,
FieldName: field.InternalName,
FieldValue: dateValue,
HasException: false,
};
}
else {
return {
ErrorMessage: null,

View File

@ -34,6 +34,29 @@ export default class ListFormWebPart extends BaseClientSideWebPart<IListFormWebP
protected onInit(): Promise<void> {
return super.onInit().then((_) => {
this.listService = new ListService(this.context.spHttpClient);
//Polyfill array find
if (!Array.prototype["find"]) {
Array.prototype["find"] = function (predicate) {
if (this == null) {
throw new TypeError('Array.prototype.find called on null or undefined');
}
if (typeof predicate !== 'function') {
throw new TypeError('predicate must be a function');
}
var list = Object(this);
var length = list.length >>> 0;
var thisArg = arguments[1];
var value;
for (var i = 0; i < length; i++) {
value = list[i];
if (predicate.call(thisArg, value, i, list)) {
return value;
}
}
return undefined;
};
}
});
}

View File

@ -35,7 +35,7 @@ export default class DateFormField extends React.Component<IDateFormFieldProps,
public componentDidUpdate(prevProps: IDateFormFieldProps, prevState: IDateFormFieldState) {
//Component Value property got updated from List State
if (this.props.value && prevProps.value != this.props.value) {
let momentDate = moment(this.props.value);
let momentDate = moment(this.props.value, moment.localeData(this.props.locale).longDateFormat('L'));
this.setState({
hours: momentDate.hour(),
minutes: momentDate.minute(),

View File

@ -38,7 +38,7 @@ const SPFieldTaxonomyEdit: React.SFC<ISPFormFieldProps> = (props) => {
initialValues={terms}
context={context}
onChange={(items) => props.valueChanged(getUpdatedValue(items))}
isTermSetSelectable={false} />
isTermSetSelectable={false} />;
};
function getUpdatedValue(terms) {