@mikezimm/npmfunctions
Version:
Functions used in my SPFx webparts
230 lines • 10.8 kB
JavaScript
;
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