@sysdoc/sharepoint-utils
Version:
Sysdoc's core Sharepoint utilities
143 lines (142 loc) • 5.69 kB
JavaScript
;
/*!
* Copyright Sysdoc @ 2019
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.SPBasicListProvider = void 0;
var executor_1 = require("../util/executor");
var fields_1 = require("../util/fields");
var SPBasicListProvider = /** @class */ (function () {
function SPBasicListProvider(cfg) {
this.listTitle = cfg.listTitle;
this.webUrl = cfg.webUrl || _spPageContextInfo.webAbsoluteUrl;
this.logger = cfg.logger;
}
SPBasicListProvider.prototype.itemToJson = function (item) {
var fields = item.get_fieldValues();
var obj = {};
obj.author = fields_1.userValueToObject(fields.Author);
obj.editor = fields_1.userValueToObject(fields.Editor);
obj.moderationStatus = fields._ModerationStatus;
obj.created = fields.Created;
obj.modified = fields.Modified;
obj.dirty = fields._Dirty;
obj.likeCount = fields._likeCount;
obj.id = fields.ID;
obj.title = fields.Title;
return obj;
};
SPBasicListProvider.prototype.jsonToItem = function (json, item) {
return item;
};
SPBasicListProvider.prototype.update = function (obj, exec) {
var _this = this;
var exe = exec || executor_1.asyncListExecutor(this.webUrl, this.listTitle);
return exe(function (err, ctx, web, list, resolve, reject) {
if (!err) {
var item_1 = list.getItemById(obj.id);
item_1 = _this.jsonToItem(obj, item_1);
item_1.update();
ctx.load(item_1);
ctx.executeQueryAsync(function () {
resolve(_this.itemToJson(item_1));
}, function (c, err) { return reject(err); });
return;
}
reject(err);
});
};
SPBasicListProvider.prototype.create = function (obj, exec, folderUrl) {
var _this = this;
var exe = exec || executor_1.asyncListExecutor(this.webUrl, this.listTitle);
return exe(function (err, ctx, web, list, resolve, reject) {
if (!err) {
var itemInfo = new SP.ListItemCreationInformation();
if (folderUrl) {
itemInfo.set_folderUrl(folderUrl);
}
var item_2 = list.addItem(itemInfo);
item_2 = _this.jsonToItem(obj, item_2);
item_2.update();
ctx.load(item_2);
ctx.executeQueryAsync(function () {
resolve(_this.itemToJson(item_2));
}, function (c, err) {
reject(err);
});
return;
}
reject(err);
});
};
SPBasicListProvider.prototype.save = function (obj, exec) {
var _this = this;
var exe = exec || executor_1.asyncListExecutor(this.webUrl, this.listTitle);
return exe(function (err, ctx, web, list, resolve, reject) {
if (!err) {
// if has valid id, lets try to find the item and update it first.
if (obj.id && obj.id !== -1) {
resolve(_this.update(obj, exe));
}
else {
// lets attempt to create the item
resolve(_this.create(obj, exe));
}
}
reject(err);
});
};
SPBasicListProvider.prototype.getByQuery = function (query, exec) {
var _this = this;
var exe = exec || executor_1.asyncListExecutor(this.webUrl, this.listTitle);
return exe(function (err, ctx, web, list, resolve, reject) {
if (!err) {
var items_1 = list.getItems(query);
ctx.load(items_1);
ctx.executeQueryAsync(function () {
resolve(items_1.get_data().map(function (e) { return _this.itemToJson(e); }));
}, function (c, err) { return reject(err); });
return;
}
reject(err);
});
};
SPBasicListProvider.prototype.getAll = function (exec) {
return this.getByQuery(SP.CamlQuery.createAllItemsQuery(), exec);
};
SPBasicListProvider.prototype.get = function (key, exec) {
var _this = this;
var exe = exec || executor_1.asyncListExecutor(this.webUrl, this.listTitle);
return exe(function (err, ctx, web, list, resolve, reject) {
if (!err) {
var item_3 = list.getItemById(key);
ctx.load(item_3);
ctx.executeQueryAsync(function () {
resolve(_this.itemToJson(item_3));
}, function (c, err) {
reject(err);
});
return;
}
reject(err);
});
};
SPBasicListProvider.prototype.delete = function (key, exec) {
var exe = exec || executor_1.asyncListExecutor(this.webUrl, this.listTitle);
return exe(function (err, ctx, web, list, resolve, reject) {
if (!err) {
var item = list.getItemById(key);
item.recycle();
ctx.executeQueryAsync(function () {
resolve(undefined);
}, function (c, err) {
reject(err);
});
return;
}
reject(err);
});
};
return SPBasicListProvider;
}());
exports.SPBasicListProvider = SPBasicListProvider;