///
import { isGuid } from 'is-guid';
import { each } from 'sp-each';
import { contextHelper, IContextWrapper } from 'sp-context-helper';
export interface IViewFieldsOption {
webUrl: string;
isAppContextSite: boolean;
list: string;
view: string;
}
export interface IViewFieldsOnSuccess {
(viewFields: Array): void;
}
export interface IViewFieldsOnError {
(message: string): void;
}
export function getViewFields(options: IViewFieldsOption, success: IViewFieldsOnSuccess, error: IViewFieldsOnError): void {
let contextWrapper: IContextWrapper = contextHelper(options.webUrl, options.isAppContextSite);
let clientContext: SP.ClientContext = contextWrapper.clientContext;
let web: SP.Web = contextWrapper.web;
let list: SP.List = isGuid(options.list) ? web.get_lists().getById(options.list) : web.get_lists().getByTitle(options.list);
let view: SP.View = isGuid(options.view) ? list.get_views().getById(new SP.Guid(options.view)) : list.get_views().getByTitle(options.view);
let listFields: SP.FieldCollection = list.get_fields();
let viewFields: SP.ViewFieldCollection = view.get_viewFields();
clientContext.load(viewFields);
clientContext.load(listFields);
clientContext.executeQueryAsync(function () {
let fields: Array = [];
each(listFields, function (listField: SP.Field) {
each(viewFields, function (viewField: string) {
if (listField.get_internalName() === viewField) {
fields.push(listField);
}
});
});
success(fields);
}, function (sender: any, args: SP.ClientRequestFailedEventArgs) {
error(args.get_message());
});
}