@raona/sp
Version:
Raona utilities to work with Sharepoint using pnp/sp
115 lines (114 loc) • 4.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var FieldType_1 = require("../enums/FieldType");
var GetDataAsStreamService = /** @class */ (function () {
function GetDataAsStreamService() {
}
GetDataAsStreamService.prototype.parseViewFields = function (xml, viewFields) {
if (xml.indexOf('<ViewFields>') > -1) {
var fromIndex = xml.indexOf('<ViewFields>');
var toIndex = xml.indexOf('</ViewFields>');
var substring = xml.substring(fromIndex, toIndex + 13);
xml = xml.replace(substring, '');
}
return xml = xml.replace('<Query>', viewFields + "<Query>");
};
GetDataAsStreamService.prototype.parseFields = function (fields) {
var fieldsParsed = [];
fields.forEach(function (f) {
fieldsParsed.push(f.name);
});
return fieldsParsed;
};
GetDataAsStreamService.prototype.selectFieldsCamlQuery = function (viewFields) {
var stringXml = '';
if (viewFields.length > 0) {
stringXml += '<ViewFields>';
viewFields.map(function (field) {
stringXml += "<FieldRef Name=\"" + field + "\"/>";
});
stringXml += '</ViewFields>';
}
return stringXml;
};
GetDataAsStreamService.prototype.transformProperties = function (items, selectedFields) {
var _this = this;
var itemsParsed = [];
items.forEach(function (item) {
var itemCloned = Object.assign({}, item);
selectedFields.forEach(function (field) {
var property = _this.getProperty(itemCloned, field);
if (property !== undefined)
itemCloned["" + property.key] = property.value;
});
itemsParsed.push(itemCloned);
});
return itemsParsed;
};
GetDataAsStreamService.prototype.getProperty = function (item, field) {
var newProperty = undefined;
if (item[field.name]) {
switch (field.type) {
case FieldType_1.FieldType.lookup:
var result_1 = [];
item[field.name].forEach(function (n) { return result_1.push(n.lookupId); });
newProperty = { key: field.name + "Id", value: result_1 };
break;
case FieldType_1.FieldType.taxonomySingleValue:
newProperty = {
key: field.name,
value: {
Label: item[field.name]['Label'],
TermGuid: item[field.name]['TermID'],
},
};
break;
case FieldType_1.FieldType.taxonomyMultipleValue:
var valueTaxonomyMultiple_1 = [];
item[field.name].forEach(function (value) {
valueTaxonomyMultiple_1.push({ Label: value['Label'], TermGuid: value['TermID'] });
});
newProperty = {
key: field.name,
value: valueTaxonomyMultiple_1,
};
break;
case FieldType_1.FieldType.image:
newProperty = {
key: "" + field.name,
value: {
Description: "" + item[field.name + ".desc"],
Url: "" + item[field.name],
},
};
break;
case FieldType_1.FieldType.boolean:
var booleanValue = false;
if (item[field.name + ".value"] === '1')
booleanValue = true;
newProperty = { key: "" + field.name, value: booleanValue };
break;
case FieldType_1.FieldType.number:
newProperty = {
key: "" + field.name,
value: Number(item[field.name].replace('.', '')),
};
break;
case FieldType_1.FieldType.group:
newProperty = { key: field.name + "Id", value: Number(item[field.name][0]['id']) };
break;
case FieldType_1.FieldType.text:
// newProperty = undefined
break;
case FieldType_1.FieldType.date:
// newProperty = undefined
break;
default:
break;
}
}
return newProperty;
};
return GetDataAsStreamService;
}());
exports.GetDataAsStreamService = GetDataAsStreamService;