Last active
June 12, 2018 15:03
-
-
Save vaderj/68816e36dc7cd03e6b41c0ae9d2bb44c to your computer and use it in GitHub Desktop.
SP REST - create new list / add columns / create new view & add columns & query #Javascript #SharePoint #ListTemplate
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
DIRLog template: | |
Column Name |Column Type| Required? | |
Title | SLT | True # | |
Item Type | Choice | True ==> Dropdown type ==> Decision ; Issue ; Risk | |
Description | MLT | True | |
Resolution | MLT | False | |
Owner | People | True | |
Opened By | People | True | |
Date Opened | Date | True | |
Target Date | Date | False | |
Date Closed | Date | False | |
Notes | MLT | False | |
*/ | |
function createNewDIRLogList() | |
{ | |
var listConfigObj = { | |
"__metadata": { "type": "SP.List" }, | |
'Title': 'DIRLog', | |
'Description': 'DIR log List', | |
'AllowContentTypes': true, | |
'BaseTemplate': 100, | |
'ContentTypesEnabled': true | |
}; | |
var createConfigList = jQuery.ajax({ | |
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists", | |
type: "POST", | |
data: JSON.stringify(listConfigObj), | |
headers: { | |
"accept": "application/json; odata=verbose", | |
"content-type":"application/json;odata=verbose", | |
"X-RequestDigest": $("#__REQUESTDIGEST").val() | |
}}); | |
createConfigList.done(function(configData, textStatus, jqXHR){ | |
console.dir(configData) | |
if (configData.d.Title == "DIRLog") | |
{ | |
var decisionQuery = '<Where><Eq><FieldRef Name="Item_x0020_Type" /><Value Type="Text">Decision</Value></Eq></Where>' ; | |
var issueQuery = '<Where><Eq><FieldRef Name="Item_x0020_Type" /><Value Type="Text">Issue</Value></Eq></Where>' ; | |
var risksQuery = '<Where><Eq><FieldRef Name="Item_x0020_Type" /><Value Type="Text">Risk</Value></Eq></Where>' ; | |
var openQuery = '<OrderBy><FieldRef Name="ID" /></OrderBy><Where><IsNull><FieldRef Name="Date_x0020_Closed" /></IsNull></Where>' ; | |
setTimeout(function(){ createView("Decisions","DIRLog",decisionQuery) }, 250); | |
setTimeout(function(){ createView("Issues","DIRLog",issueQuery) }, 500); | |
setTimeout(function(){ createView("Risks","DIRLog",risksQuery) }, 750); | |
setTimeout(function(){ createView("Open DIRs","DIRLog",openQuery) }, 1000); | |
setTimeout(function(){ addColumn(configData.d.Id,6,"Item Type","True"); addFieldToView("Item Type","DIRLog") }, 1250); | |
setTimeout(function(){ addColumn(configData.d.Id,3,"Description","True") ; addFieldToView("Description","DIRLog")}, 1500); | |
setTimeout(function(){ addColumn(configData.d.Id,3,"Resolution","False") ; addFieldToView("Resolution","DIRLog")}, 1750); | |
setTimeout(function(){ addColumn(configData.d.Id,20,"Owner","True") ; addFieldToView("Owner","DIRLog")}, 2000); | |
setTimeout(function(){ addColumn(configData.d.Id,20,"Opened By","True") ; addFieldToView("Opened By","DIRLog")}, 2250); | |
setTimeout(function(){ addColumn(configData.d.Id,4,"Date Opened","True") ; addFieldToView("Date Opened","DIRLog")}, 2500); | |
setTimeout(function(){ addColumn(configData.d.Id,4,"Target Date","False") ; addFieldToView("Target Date","DIRLog")}, 2750); | |
setTimeout(function(){ addColumn(configData.d.Id,4,"Date Closed","False") ; addFieldToView("Date Closed","DIRLog")}, 3000); | |
setTimeout(function(){ addColumn(configData.d.Id,3,"Notes","False") ; addFieldToView("Notes","DIRLog")}, 3250); | |
} | |
}); | |
} | |
function addColumn(listGuid,type,title,required) | |
{ | |
if (type == 3) | |
{ | |
var newColumnMetadata = { | |
"__metadata": { "type": "SP.FieldMultiLineText" }, | |
'Title': title, | |
'NumberOfLines': 8, | |
'Required': required, | |
'FieldTypeKind': type}; | |
var newColumn = jQuery.ajax({ | |
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists(guid'" + listGuid + "')/fields", | |
type: "POST", | |
data: JSON.stringify(newColumnMetadata), | |
headers: { | |
"accept": "application/json; odata=verbose", | |
"content-type":"application/json;odata=verbose", | |
"X-RequestDigest": $("#__REQUESTDIGEST").val() | |
}}); | |
newColumn.done(function(listFieldData, textStatus, jqXHR){ | |
console.dir(listFieldData) | |
if (listFieldData.d.Title == title) | |
{ | |
//var updateStatus = "<p>Field added, adding field to default view.</p>" | |
//jQuery("#subTask").append(updateStatus) ; | |
//addValueFieldToView(); | |
} | |
}); | |
} | |
else if (type == 4) | |
{ | |
var newColumnMetadata = { | |
"__metadata": { "type": "SP.FieldDateTime" }, | |
'Title': title, | |
'DisplayFormat': 1, | |
'Required': required, | |
'FieldTypeKind': type}; | |
var newColumn = jQuery.ajax({ | |
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists(guid'" + listGuid + "')/fields", | |
type: "POST", | |
data: JSON.stringify(newColumnMetadata), | |
headers: { | |
"accept": "application/json; odata=verbose", | |
"content-type":"application/json;odata=verbose", | |
"X-RequestDigest": $("#__REQUESTDIGEST").val() | |
}}); | |
newColumn.done(function(listFieldData, textStatus, jqXHR){ | |
console.dir(listFieldData) | |
if (listFieldData.d.Title == title) | |
{ | |
//var updateStatus = "<p>Field added, adding field to default view.</p>" | |
//jQuery("#subTask").append(updateStatus) ; | |
//addValueFieldToView(); | |
} | |
}); | |
} | |
else if (type == 6) | |
{ | |
var newColumnMetadata = { | |
"__metadata": { "type": "SP.FieldChoice" }, | |
'Title': title, | |
'FieldTypeKind': type, | |
'Required': required, | |
'Choices': { '__metadata': { 'type': 'Collection(Edm.String)' },'results': [ 'Internal', 'External' ] }, 'EditFormat': 1 }; | |
var newColumn = jQuery.ajax({ | |
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists(guid'" + listGuid + "')/fields", | |
type: "POST", | |
data: JSON.stringify(newColumnMetadata), | |
headers: { | |
"accept": "application/json; odata=verbose", | |
"content-type":"application/json;odata=verbose", | |
"X-RequestDigest": $("#__REQUESTDIGEST").val() | |
}}); | |
newColumn.done(function(listFieldData, textStatus, jqXHR){ | |
console.dir(listFieldData) | |
if (listFieldData.d.Title == title) | |
{ | |
//var updateStatus = "<p>Field added, adding field to default view.</p>" | |
//jQuery("#subTask").append(updateStatus) ; | |
//addValueFieldToView(); | |
} | |
}); | |
} | |
else if (type == 20) | |
{ | |
var newColumnMetadata = { | |
'__metadata': { 'type': 'SP.FieldUser' }, | |
'Title': title, | |
'Required': required, | |
'FieldTypeKind': type }; | |
var newColumn = jQuery.ajax({ | |
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists(guid'" + listGuid + "')/fields", | |
type: "POST", | |
data: JSON.stringify(newColumnMetadata), | |
headers: { | |
"accept": "application/json; odata=verbose", | |
"content-type":"application/json;odata=verbose", | |
"X-RequestDigest": $("#__REQUESTDIGEST").val() | |
}}); | |
newColumn.done(function(listFieldData, textStatus, jqXHR){ | |
console.dir(listFieldData) | |
if (listFieldData.d.Title == title) | |
{ | |
//var updateStatus = "<p>Field added, adding field to default view.</p>" | |
//jQuery("#subTask").append(updateStatus) ; | |
//addValueFieldToView(); | |
} | |
}); | |
} | |
} | |
function createView(viewName,listName,query) | |
{ | |
var newViewData = { | |
'__metadata': { 'type': 'SP.View' }, | |
'Title': viewName, | |
'PersonalView': false, | |
'ViewQuery': query | |
} ; | |
var newView = jQuery.ajax({ | |
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('" + listName + "')/views", | |
type: "POST", | |
data: JSON.stringify(newViewData), | |
headers: { | |
"accept": "application/json; odata=verbose", | |
"content-type":"application/json;odata=verbose", | |
"X-RequestDigest": $("#__REQUESTDIGEST").val() | |
}}); | |
newView.done(function(listFieldData, textStatus, jqXHR){ | |
}); | |
} | |
function addFieldToView(fieldName,listName) | |
{ | |
var getViews = jQuery.ajax({ | |
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('" + listName + "')/Views", | |
contentType: "application/json;odata=verbose", | |
method: "GET", | |
headers: {"Accept": "application/json; odata=verbose"} | |
}); | |
getViews.done(function(itemData, textStatus, jqXHR){ | |
console.dir(itemData) ; | |
for (var i = 0 ; i < itemData.d.results.length ; i++) | |
{ | |
var viewId = itemData.d.results[i].Id ; | |
var fieldToView = jQuery.ajax({ | |
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('" + listName + "')/Views(guid'" + viewId + "')/ViewFields/AddViewField", | |
contentType: "application/json;odata=verbose", | |
data: JSON.stringify({"strField":fieldName}), | |
method: "POST", | |
headers: { "Accept": "application/json; odata=verbose","X-RequestDigest": $("#__REQUESTDIGEST").val()} | |
}); | |
fieldToView.done(function(itemData, textStatus, jqXHR){ | |
}); | |
} | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment