UNPKG

@mikezimm/npmfunctions

Version:
230 lines 10.8 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildConstructionElement = exports.createDetailsShareTable = exports.buildShareEventsGroupedByItem = exports.buildChronoSortedSharingEvents = void 0; var React = __importStar(require("react")); var office_ui_fabric_react_1 = require("office-ui-fabric-react"); var office_ui_fabric_react_2 = require("office-ui-fabric-react"); var sorting_1 = require("../../Services/Arrays/sorting"); var Sharing_module_scss_1 = __importDefault(require("./Sharing.module.scss")); var fpsAppIcons = __importStar(require("../../Icons/standardEasyContents")); /** * This builds up the Shared History tab-page in Pivot Tiles library permissions * Provides Table of all individual sharing events on library in chronological order * @param sharedItems - like the array of items from a fetch * @param width */ function buildChronoSortedSharingEvents(sharedItems, width) { var allSharingEvents = []; var sharedElements = []; sharedItems.map(function (item) { if (item.itemSharingInfo && item.itemSharingInfo.sharedEvents) { item.itemSharingInfo.sharedEvents.map(function (event) { allSharingEvents.push(event); }); } }); //This sorts all the individual details by share timestamp allSharingEvents = (0, sorting_1.sortObjectArrayByNumberKey)(allSharingEvents, 'dec', 'TimeMS'); //This builds the elements based on the sorting allSharingEvents.map(function (share) { var sharedByName = share.sharedBy.split('@')[0]; var sharedByDomain = sharedByName[1].split('.')[0] + '...'; if (share.sharedWith.indexOf(sharedByDomain) > 0) { share.sharedWith = share.sharedBy.split('@')[0]; } var shortFileName = share.FileLeafRef && share.FileLeafRef.length > 0 ? share.FileLeafRef.substr(0, 15) : ''; if (shortFileName.length < share.FileLeafRef.length) { shortFileName += '...'; } sharedElements.push(React.createElement("tr", null, React.createElement("td", null, " ", share.SharedTime.toLocaleString(), " "), React.createElement("td", null, " ", share.FileSystemObjectType === 0 ? 'File' : 'Folder', " "), React.createElement("td", { title: share.FileLeafRef }, " ", React.createElement(office_ui_fabric_react_2.Link, { onClick: openLinkInNewTabUsingDatahref, "data-href": share.FileRef }, shortFileName), " "), React.createElement("td", null, " ", sharedByName, " "), React.createElement("td", null, " ", share.sharedWith, " "))); }); return sharedElements; } exports.buildChronoSortedSharingEvents = buildChronoSortedSharingEvents; /** * This builds up the Shared Details tab-page in Pivot Tiles library permissions * This shows all sharing grouped by the file that was shared * @param sharedItems * @param width */ function buildShareEventsGroupedByItem(sharedItems, width) { var sharedElements = []; //This builds the elements based on the sorting sharedItems.map(function (item, index) { var shortFileName = item.FileLeafRef && item.FileLeafRef.length > 0 ? item.FileLeafRef.substr(0, 25) : ''; if (shortFileName.length < item.FileLeafRef.length) { shortFileName += '...'; } var UniquePermIcon = React.createElement("div", { id: index.toString() }, " ", fpsAppIcons.UniquePerms, " "); var shareTable = createDetailsShareTable(item, false, true, '100%Wide'); sharedElements.push(React.createElement("tr", null, React.createElement("td", null, " ", UniquePermIcon, " "), React.createElement("td", null, " ", item.FileSystemObjectType === 0 ? 'File' : 'Folder', " "), React.createElement("td", { title: item.FileLeafRef }, " ", React.createElement(office_ui_fabric_react_2.Link, { onClick: openLinkInNewTabUsingDatahref, "data-href": item.FileRef }, shortFileName), " "), React.createElement("td", null, " ", shareTable, " "))); }); return sharedElements; } exports.buildShareEventsGroupedByItem = buildShareEventsGroupedByItem; /** * This just creates the 3 column table for each file/item showing When, who shared, with whome. * Can be consumed as a cell in a larger table of all shared files or just for a specific file. * @param item * @param headings * @param cleanCells - this will remove Date and Shared By if both of those are the same as the previous row. * @param tableStyle */ function createDetailsShareTable(item, headings, cleanCells, tableStyle) { var hasSharing = item.itemSharingInfo && item.itemSharingInfo.sharedEvents ? true : false; if (hasSharing === false) { return null; } var firstShareDateMS = 3618105359201; var lastShareDateMS = 0; var firstShareDate = null; var lastShareDate = null; var sharedByPeopleArray = []; var thisFileShares = []; var itemSharingInfo = item.itemSharingInfo; if (itemSharingInfo && itemSharingInfo.sharedEvents) { itemSharingInfo.sharedEvents.map(function (event, index) { var lastEvent = index > 0 ? itemSharingInfo.sharedEvents[index - 1] : null; var isSameAsLast = index > 0 && lastEvent && event.sharedBy === lastEvent.sharedBy && event.TimeMS === lastEvent.TimeMS ? true : false; var sharedByName = event.sharedBy.split('@')[0]; var sharedByDomain = sharedByName[1].split('.')[0] + '...'; if (event.sharedWith.indexOf(sharedByDomain) > 0) { event.sharedWith = event.sharedBy.split('@')[0]; } if (event.TimeMS > lastShareDateMS) { lastShareDate = event.SharedTime; lastShareDateMS = event.TimeMS; } if (event.TimeMS < firstShareDateMS) { firstShareDate = event.SharedTime; firstShareDateMS = event.TimeMS; } sharedByPeopleArray.push(event.sharedWith); thisFileShares.push(React.createElement("tr", null, React.createElement("td", null, " ", isSameAsLast === true ? '...' : event.SharedTime.toLocaleString(), " "), React.createElement("td", null, " ", isSameAsLast === true ? '...' : sharedByName, " "), React.createElement("td", null, " ", event.sharedWith, " "))); }); } var shareTimeFrame = firstShareDate !== null ? firstShareDate.toLocaleString() : null; if (lastShareDate !== null && firstShareDateMS !== lastShareDateMS) { shareTimeFrame += ' - ' + lastShareDate.toLocaleString(); } var cellClass = tableStyle === 'pad30' ? Sharing_module_scss_1.default.padAllCellsLeft : null; var tableWidth = tableStyle === '100%Wide' ? '100%' : undefined; var headingRow = headings !== true ? null : React.createElement("tr", null, React.createElement("th", null, "Date"), React.createElement("th", null, "Shared By"), React.createElement("th", null, "Shared With")); var shareTable = thisFileShares.length === 0 ? null : React.createElement("table", { className: cellClass, style: { width: tableWidth } }, headingRow, thisFileShares); return shareTable; } exports.createDetailsShareTable = createDetailsShareTable; // function handleClickOnLink(ev: React.MouseEvent<unknown>) { function openLinkInNewTabUsingDatahref(e) { e.preventDefault(); var testElement = e.nativeEvent.target; var href = testElement.getAttribute('data-href'); window.open(href, '_blank'); } function buildConstructionElement(mainContent, additionalContent) { var iconStyles = { root: { fontSize: 'larger', // fontWeight: 700, color: 'red', // paddingRight: '30px', // paddingLeft: '30px', } }; var leftIcon = React.createElement(office_ui_fabric_react_1.Icon, { iconName: 'ConstructionCone', styles: iconStyles }); var rightIcon = React.createElement(office_ui_fabric_react_1.Icon, { iconName: 'ConstructionConeSolid', styles: iconStyles }); var element = React.createElement("div", { style: { padding: '5px 50px 30px 50px' } }, React.createElement("div", { style: { fontSize: 'x-large', paddingBottom: '5px', textAlign: 'center' } }, leftIcon, " ", React.createElement("div", { style: { display: 'inline-block', padding: '0 30px' } }, " ", mainContent, " "), " ", rightIcon, additionalContent)); return element; } exports.buildConstructionElement = buildConstructionElement; //# sourceMappingURL=SharingElements2.js.map