@mikezimm/fps-core-v7
Version:
Library of reusable core interfaces, types and constants migrated from fps-library-v2
150 lines • 7.46 kB
JavaScript
import { getHelpfullError } from '../../../logic/Errors/friendly';
import { getCurrentPageLink, getUrlVarsAsStrings, getWebUrlFromLink, makeListLink, makeSiteLink } from '../../../logic/Links/UrlFunctions';
import * as AL from '../interfaces/EasyContents';
import { check4This, Check4 } from '../../../logic/Links/CheckSearch';
import { createAnalyticsSourceProps } from '../../../components/atoms/easy-analytics/functions/createAnalyticsSourceProps';
import { postSourceItemAPI } from '../../lists/items/postSourceItemAPI';
import { makeAbsoluteUrl } from '../../../logic/Strings/getSiteCollectionUrlFromLink';
/**
* 2024-12-08: EVALUATE Refactoring this... it may be really close to saveAnalytics2,3,4
* After further review, this could be condensed and combined with savePermissionHistoryD.
* Just add it in the if-save loop once it's smaller.
* And of course, send to saveAnalytics4
*
* 2025-01-03: Migrated from fps-library-v2/lib/pnpjs/Permissions, pnp2/lib/services/sp/perms
* combination of v2: savePermissionAnalyticsD,
*
* import { savePermissionAnalyticsAPI } from "@mikezimm/fps-core-v7/lib/restAPIs/logging/Permissions/savePermissionAnalyticsAPI";
*
*
* @param analyticsWeb
* @param analyticsList
* @param SiteLink
* @param webTitle
* @param saveTitle
* @param TargetSite
* @param TargetList
* @param itemInfo1
* @param itemInfo2
* @param result
* @param RichTextJSON1
* @param Setting
* @param RichTextJSON2
* @param RichTextJSON3
* @returns
*/
export async function savePermissionAnalyticsAPI(fpsSpService, analyticsWeb, analyticsList, SiteLink, webTitle, saveTitle, TargetSite, TargetList, itemInfo1, itemInfo2, result, RichTextJSON1, Setting, RichTextJSON2, RichTextJSON3) {
//Do nothing if either of these strings is blank
if (!analyticsList) {
return;
}
if (!analyticsWeb) {
return;
}
let finalSaveObject = {
Title: saveTitle,
Result: result,
PageLink: getCurrentPageLink(), // REFACTOR NOTE: saveAnalytics2 handles the PageLink for you.
};
let startTime = getTheCurrentTime();
finalSaveObject.zzzText1 = startTime.now;
finalSaveObject.zzzText2 = startTime.theTime;
let TargetListValues = TargetList ? TargetList.split('|') : [null];
finalSaveObject.getParams = getUrlVarsAsStrings().join(' & ');
finalSaveObject.Setting = Setting;
/**
* REFACTOR NOTE: saveAnalytics2 handles the strignifying this automatically.
*/
// console.log('saveAnalytics StringifyActionJson: ', RichTextJSON1, RichTextJSON2, RichTextJSON3 );
if (RichTextJSON1)
finalSaveObject.zzzRichText1 = JSON.stringify(RichTextJSON1);
if (RichTextJSON2)
finalSaveObject.zzzRichText2 = JSON.stringify(RichTextJSON2);
if (RichTextJSON3)
finalSaveObject.zzzRichText3 = JSON.stringify(RichTextJSON3);
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
if (analyticsList === AL.EasyContentsRailsGroups ||
analyticsList === AL.EasyContentsRailsApply ||
analyticsList === AL.PermissionsHistory) { //Rails Off
finalSaveObject.ListTitle = itemInfo1;
let infos2 = itemInfo2 ? itemInfo2.split('|') : [];
finalSaveObject.zzzText3 = infos2[0];
finalSaveObject.zzzText7 = infos2[1] ? parseInt(infos2[1]) < 10 ? '0' + infos2[1] : infos2[1] : undefined; //stepOrder
finalSaveObject.zzzNumber4 = infos2[2] ? parseInt(infos2[2]) : undefined;
finalSaveObject.zzzNumber5 = infos2[3] ? parseInt(infos2[3]) : undefined;
finalSaveObject.zzzText1 = infos2[4] ? infos2[4] : undefined;
finalSaveObject.zzzText4 = infos2[5] ? infos2[5] : undefined;
let tempSite = TargetSite ? TargetSite.split('|') : [];
TargetSite = tempSite[0] ? tempSite[0] : null;
finalSaveObject.WebID = tempSite[1] ? tempSite[1] : null;
finalSaveObject.CollectionUrl = tempSite[2] ? tempSite[2] : null;
finalSaveObject.SiteID = tempSite[3] ? tempSite[3] : null;
finalSaveObject.zzzText5 = finalSaveObject.SiteID;
//Add List ID if it's available
if (TargetListValues.length > 0 && TargetListValues[1]) {
finalSaveObject.ListID = TargetListValues[1];
}
let tempTitle = saveTitle.split('|');
finalSaveObject.zzzText6 = tempTitle[1] ? tempTitle[1] : undefined; //Get scope - site or list
}
else {
finalSaveObject.zzzText3 = itemInfo1;
finalSaveObject.zzzText4 = itemInfo2;
}
/**
* WARNING, ALWAYS be sure to add this saving items - Pivot Tiles Permissions Save ;(
*/
// finalSaveObject.__metadata = { type: `SP.Data.${analyticsList}ListItem` };
/**
* REFACTOR NOTE: saveAnalytics2 handles the Site Link for you automatically.
*/
SiteLink = getWebUrlFromLink(SiteLink, 'abs');
if (webTitle === '' || !webTitle) {
finalSaveObject.SiteTitle = SiteLink.substring(SiteLink.lastIndexOf("/") + 1);
}
finalSaveObject.SiteLink = {
'Url': makeAbsoluteUrl(SiteLink),
'Description': finalSaveObject.SiteTitle,
};
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/**
* REFACTOR NOTE: saveAnalytics2 handles TargetSite and TargetList automatically.
* NOTE: You need to just add the url to the subproperty: loadProperties.TargetSite, loadProperties.TargetList
*/
if (TargetSite)
finalSaveObject.TargetSite = makeSiteLink(TargetSite, finalSaveObject.SiteTitle);
if (TargetList)
finalSaveObject.TargetList = makeListLink(TargetListValues[0], webTitle);
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/**
* REFACTOR NOTE: saveAnalytics2 handles creating SourceProps, DigestValue and the call
* NOTE: You need to just add the url to the subproperty: loadProperties.TargetSite, loadProperties.TargetList
*/
// https://github.com/mikezimm/pivottiles7/issues/417
const sourceProps = createAnalyticsSourceProps(fpsSpService, `${analyticsList}`, analyticsWeb);
// 2024-12-22: digestValue not required when using SpHTTPClient
// sourceProps.digestValue = await getThisFPSDigestValueFromUrl(analyticsWeb);
const saveResult = await postSourceItemAPI(sourceProps, finalSaveObject, false, true);
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// This was the Pnp2 call:
// const saveResult = await saveThisLogItemAsync( analyticsWeb, analyticsList, finalSaveObject, false );
if (saveResult.status !== 'Success') {
const err = getHelpfullError(saveResult, false, false, true);
if (check4This(Check4.fpsShowFetchResults_Eq_true) === true) {
console.log(`fps-core-v7 ERROR: savePermissionAnalytics ~ 181`, err);
alert(`saveThisLogItemError\n\n${err.friendly}`);
}
;
}
}
export function getTheCurrentTime() {
const now = new Date();
const theTime = now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds() + "." + now.getMilliseconds();
let result = {
'now': now,
'theTime': theTime,
'milliseconds': now.getMilliseconds(),
};
return result;
}
//# sourceMappingURL=savePermissionAnalyticsAPI.js.map