UNPKG

@mikezimm/fps-core-v7

Version:

Library of reusable core interfaces, types and constants migrated from fps-library-v2

137 lines (135 loc) 8.04 kB
import { ALLProgrammingFileKeys, } from '../../SearchPage/Interfaces/ProgrammingFileKeys'; import { ItemIsADocSet, ItemIsADraft, ItemIsAFile, ItemIsAFileObject, ItemIsAMajor, ItemIsANewsLink, ItemIsANewsPost, ItemIsAPage, ItemIsCheckedOut, ItemIsCodeContent, ItemIsFolderContent, ItemIsPublished, ItemIsUnPublished } from "../../AnyContent/IsA/IFPSItemIsA"; import { addItemIsA } from "./addItemIsA"; export function addSearchFileDataItems(items, sourceProps) { items.map((item) => { item = addSearchFileData(item, sourceProps); }); return items; } export function addSearchFileData(item, sourceProps) { if (item.File || item.FileSizeDisplay || item.FileLeafRef || item.FileRef || item.File_x0020_Type || item.FirstPublishedDate) { // Item is a file item = addItemIsA(item, ItemIsAFileObject); } else { return item; } item.FPSItem.File.fileDisplayName = ''; //Basically the file name but without extension // This loop was originally in addDateTimeFileInfoSearch //Added this to flatten file url for easier use if (item.File && item.File.ServerRelativeUrl) { item['File/ServerRelativeUrl'] = item.File.ServerRelativeUrl; // https://github.com/mikezimm/pivottiles7/issues/314 const FileLeafRef = item.File.FileLeafRef ? item.File.FileLeafRef : item.File.ServerRelativeUrl.substring(item.File.ServerRelativeUrl.lastIndexOf('/') + 1); if (!item.File.FileRef) item.File.FileRef = item.File.ServerRelativeUrl; if (!item.File.Name) item.File.Name = FileLeafRef; if (!item.File.FileLeafRef) item.File.FileLeafRef = FileLeafRef; item.FPSItem.File ? item.FPSItem.File.valid = true : item.FPSItem.File = { valid: true, fileDisplayName: FileLeafRef, }; } //https://github.com/mikezimm/Compliance/issues/121 if (item.FileSizeDisplay) item.FPSItem.File.fileSizeNumber = parseInt(item.FileSizeDisplay); let { searchTitle, searchDesc, } = item.FPSItem.Search; let searchType = item.FPSItem.Search.type; const extIdx = item.FileRef ? item.FileRef.lastIndexOf('.') : -1; if (item['File_x0020_Type']) { // eslint-disable-line dot-notation searchType = item['File_x0020_Type']; // eslint-disable-line dot-notation searchTitle = item.FileLeafRef ? item.FileLeafRef : 'No Filename to show'; // eslint-disable-line dot-notation item.FPSItem.File.fileDisplayName = item.FileLeafRef ? item.FileLeafRef.replace(`.${searchType}`, '') : ''; // eslint-disable-line dot-notation searchDesc = ''; item = addItemIsA(item, ItemIsAFile); // https://github.com/mikezimm/fps-library-v2/issues/51 - DO NOT do this loop if it's a folder with a . in it :) } else if (item.FileSystemObjectType !== 1 && extIdx > -1) { searchType = item.FileRef ? item.FileRef.substring(extIdx + 1) : ''; if (searchType === 'aspx') { searchType = 'page'; searchTitle = item.Title; item.FPSItem.File.fileDisplayName = item.FileLeafRef ? item.FileLeafRef.replace(`.aspx`, '') : ''; // eslint-disable-line dot-notation searchDesc = item.Description; /** * OData__OriginalSourceUrl is a hidden column in SharePoint Online that is used to store the original URL of a document that was uploaded to SharePoint. * This column is used by the SharePoint Online search engine to crawl and index documents. * It is not recommended to modify or delete this column as it can cause issues with search results and other SharePoint Online features¹. I hope this helps! Let me know if you have any other questions. Source: Conversation with Bing, 7/6/2023 (1) Use OData query operations in SharePoint REST requests. https://learn.microsoft.com/en-us/sharepoint/dev/sp-add-ins/use-odata-query-operations-in-sharepoint-rest-requests. (2) OData Source for SharePoint Online - social.msdn.microsoft.com. https://social.msdn.microsoft.com/Forums/en-US/58807617-90aa-48e3-a06f-9582b683d8de/odata-source-for-sharepoint-online?forum=sharepointadmin. (3) Working with SharePoint Online through OData v4 Endpoint - KingswaySoft. http://www.kingswaysoft.com/blog/2021/06/29/Working-with-SharePoint-Online-through-OData-v4-Endpoint. (4) Using OData sources with Business Connectivity Services in SharePoint .... https://learn.microsoft.com/en-us/sharepoint/dev/general-development/using-odata-sources-with-business-connectivity-services-in-sharepoint. */ if (item.OData__OriginalSourceUrl !== null) { item = addItemIsA(item, ItemIsANewsLink); } else if (item.PromotedState === 1 || item.PromotedState === 2) { item = addItemIsA(item, ItemIsANewsPost); } else { item = addItemIsA(item, ItemIsAPage); } } // Handle folder objects } else if (!searchType && item.FileSystemObjectType === 1) { const thisContentType = item[`ContentType/Name`] ? item[`ContentType/Name`] : 'Unknown'; if (thisContentType.indexOf(`Document Set`) > -1) { searchType = 'docset'; item[`File_x0020_Type`] = 'docset'; searchTitle = item.FileLeafRef ? item.FileLeafRef : ''; searchDesc = item.Description ? item.Description : ''; item = addItemIsA(item, ItemIsADocSet); } else { searchType = 'folder'; item[`File_x0020_Type`] = 'folder'; searchTitle = item.FileLeafRef ? item.FileLeafRef : ''; //webRelativeLink const webLink = `${sourceProps.webUrl}${sourceProps.webRelativeLink ? sourceProps.webRelativeLink : ''}`; const fileRelativeLink = item.FileRef && item.FileRef.indexOf(webLink) === 0 ? item.FileRef.substring(webLink.length) : item.FileRef ? item.FileRef : ''; searchDesc = item.Description ? item.Description : !item.FileLeafRef ? '' : fileRelativeLink.substring(0, fileRelativeLink.lastIndexOf(item.FileLeafRef) - 1); item = addItemIsA(item, ItemIsFolderContent); } } else { searchType = sourceProps.defType; searchTitle = item.Title; searchDesc = 'Other Type Search Desc'; } // If folder, add folderTree array if (item.FileSystemObjectType === 0 || item.FileSystemObjectType === 1) { const libUrl = `${sourceProps.webUrl}${sourceProps.webRelativeLink ? sourceProps.webRelativeLink : ''}`; const folderString = item.FileRef && libUrl ? item.FileRef.replace(libUrl, '').replace(`/${item.FileLeafRef}`, '') : ''; const folderTree = folderString ? folderString.indexOf('/') === 0 ? folderString.substring(1).split('/') : folderString.split('/') : []; item.FPSItem.File.folderString = folderString; item.FPSItem.File.folderTree = folderTree; } const minorVersion = item.OData__UIVersionString && item.OData__UIVersionString.split('.')[1] !== '0' ? true : false; if (minorVersion === true) { item = addItemIsA(item, ItemIsADraft); } else if (item.OData__UIVersionString) { item = addItemIsA(item, ItemIsAMajor); } ; if (item.PromotedState === 1) { item = addItemIsA(item, ItemIsUnPublished); } else if (item.PromotedState === 2) { item = addItemIsA(item, ItemIsPublished); } if (item['File_x0020_Type'] && ALLProgrammingFileKeys.indexOf(item['File_x0020_Type']) > -1) { item = addItemIsA(item, ItemIsCodeContent); } if (item.CheckoutUserId) { item = addItemIsA(item, ItemIsCheckedOut); } return item; } //# sourceMappingURL=addSearchFile.js.map