NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name PhoneTool Enhanced - Mini // @namespace http://amazon.com // @version 0.1 // @description Add Meeting request for managers with assistants, Google Map of Seattle Campus building locations, linkedin search links, and a visual job history widget. Also a new and improved stylesheet // @author wael@ // @include https://phonetool.amazon.com/people/* // @include https://phonetool.amazon.com/users/* // @include https://connect.amazon.com/people/* // @include https://connect.amazon.com/users/* // @grant GM_xmlhttpRequest // @downloadURL https://openuserjs.org/install/amazonshubhamsdj/PhoneTool_Enhanced_-_Mini.user.js // @grant GM_getResourceText // @grant GM_addStyle // @license MIT // @grant GM.getValue // @grant GM.setValue // @require http://code.jquery.com/jquery-latest.js // @require https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.js // @require https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js // @resource ptCSS https://phonetool-enhance.s3-us-west-2.amazonaws.com/PhoneToolMini.css // ==/UserScript== (function() { 'use strict'; var url = window.location.href; var subdomainRE = RegExp('([^.//]+)','g'); var subdomain = url.match(subdomainRE)[1]; var params = { urlPrefix: `https://${subdomain}.amazon.com/users/`, urlPostfix: ".json", empId: $(location).attr("pathname").match(/[people|users]\/(\w+)/)[1], orgUrlPrefix: "https://ekarulf.corp.amazon.com/phone-widgets/job-history.cgi?format=greasemonkey&target=", linkedinSearchPrefix: "https://www.linkedin.com/search/results/people/?keywords=" }; var newCSS = GM_getResourceText ("ptCSS"); GM_addStyle (newCSS); function getPersonalInfoWidgets (params) { $.ajax({ url: params.urlPrefix + params.empId + params.urlPostfix, type: "GET", dataType: "json", success: function(data) { try { displayMapLoc(data); addPhoneNumber(data.mobile_number); addLinkedinSearch(data, params.linkedinSearchPrefix); addJobLevel(data.job_level); addTenure(data.total_tenure_formatted); addReports(data.direct_reports.length); addLocation(data.building, data.city); scheduleMeetingWithAssistant(params, data); } catch(e) { console.log(e); } } }); } function addTenure (tenure) { updateKeySummaryData("MINI-history", tenure); } function addLocation (building, city) { updateKeySummaryData("MINI-location", building + ", " + city); } function addReports (reports) { updateKeySummaryData("MINI-org", reports); } function addJobLevel (level) { $("#MINI-job-level").text(level); // $("dl.dl-horizontal").append(`<div class="TableRow jobLevelRow"><div class="TableProperty">Job Level:</div><div class="TableValue">${data.job_level}</div></div>`); } function addPhoneNumber (mobile_number) { if ((mobile_number != null) && (mobile_number != "")) { $("#MINI-actions-block").prepend(` <div class="PersonalLinkedinSearch MINI-Actions-Button" id="MINI-phone-button"> <i class="fa fa-mobile" aria-hidden="true"></i> <a class="copyable" id="phone_nummber_holder">${mobile_number} </a> </div>` ); } $("#phone_nummber_holder").on("click", makeCopyClickable); $("#phone_nummber_holder").hover(showTooltip, removeTooltip); $("#phone_nummber_holder").on("click", makeCopyClickable); } function addLinkedinSearch(data, searchURL) { $("#MINI-actions-block").append(` <div class="PersonalLinkedinSearch MINI-Actions-Button" id="MINI-linkedin-button"> <i class="fa fa-linkedin" aria-hidden="true"></i> <a href="${searchURL}${data.first_name}+${data.last_name}+Amazon" target='_blank'>Search Linkedin</a> </div>` ); } function scheduleMeetingWithAssistant (params, data) { var assistantLogin = data.assistant.login; if (assistantLogin != null) { $.ajax({ url: params.urlPrefix + assistantLogin + params.urlPostfix, type: "GET", dataType: "json", success: function(moreData) { try { let name = moreData.first_name; let mgrName = data.first_name; let asstEmail = moreData.email; var subjectStr = `Time with ${mgrName}`; var mailToStr = ""; var emailTemplateHTML = ""; (async () => { emailTemplateHTML = await GM.getValue('ptEnhanceEmailTemplate', false); if (emailTemplateHTML == false) { emailTemplateHTML = ` <span class="editable">Hello </span> <span class="fixed" id="assistantNameSpan"></span> <span class="editable">, hope all is well!\nCan you please help me get </span> <span class="fixed" id="meetingLengthSpan"></span> <span class="editable"> minutes with </span> <span class="fixed" id="managerNameSpan"></span> <span class="editable">? Subject is </span> <span class="fixed" id="meetingSubjectSpan"></span> <span class="editable">. My calendar is up to date.\nThanks</span> `; } $("#emailTemplate").html(emailTemplateHTML); $(updateEmail); })(); $("#MINI-actions-block").append(` <div class="RequestMeetingAssistant MINI-Actions-Button" id="MINI-meeting-button"> <i class="fa fa-calendar-o" aria-hidden="true"></i> <a id="showMeetingDialog">Request meeting</a> </div>` ); $("#MINI-meeting-button").after(` <div class="meetingInfo MINI-slate"> <div class="meetingInfoLine"> <div id="meetingLengthDiv"> <label for="meetingLength">Meeting Length (minutes)</label> <input type="text" class="emailInput" id="meetingLength" value="30" size="5"> </div> <div id="meetingSubjectDiv"> <label for="meetingSubject">Subject</label> <input type="text" class="emailInput" id="meetingSubject" value="1:1" size="25"> </div> </div> <div class="meetingInfoLine"> <div id="meetingTemplateDiv"> <!-- <label for="emailTemplate">Template</label> --> <div id="emailTemplate"> </div> <div class="EditTemplate"> <i class="fa fa-edit" aria-hidden="true"></i> <span id="editEmailTemplate">Double click to edit default email template</span> </div> </div> <div id="meetingButtonDiv"> <div class="sendEmailButton" id="sendEmail">Create Email</div> <div id="cancelEmail">Cancel</div> </div> </div> </div>` ); $("#showMeetingDialog").click(function(){ $(".meetingInfo").toggleClass("open"); $("#MINI-meeting-button").toggleClass("open"); }); $("#cancelEmail").click(function(){ $(".meetingInfo").toggleClass("open"); $(".editable").removeClass("active"); $("#MINI-meeting-button").toggleClass("open"); }); $("#emailTemplate").dblclick(function(){ $(".editable").attr("contenteditable", "true"); $(".editable").addClass("active"); $("#sendEmail").text("Save Template and Create Email"); // $(".EditTemplate").hide(); }); function updateEmail (){ var bodyParameters = { assistantName: name, meetingLength: $("#meetingLength").val(), managerName: mgrName, meetingSubject: $("#meetingSubject").val() }; $("#assistantNameSpan").text(bodyParameters.assistantName); $("#meetingLengthSpan").text(bodyParameters.meetingLength); $("#managerNameSpan").text(bodyParameters.managerName); $("#meetingSubjectSpan").text(bodyParameters.meetingSubject); $("#sendEmail").click(function(){ mailToStr = `mailto:${asstEmail}?subject=${encodeURIComponent(subjectStr)}&body=${encodeURIComponent($("#emailTemplate").text().replace(/\s\s+/g, ' ').trim())}`; window.open(mailToStr); $(".editable").removeClass("active"); $(".meetingInfo").hide("slow"); (async () => { await GM.setValue('ptEnhanceEmailTemplate', $("#emailTemplate").html()); })(); return false; }); }; $(updateEmail); $(".emailInput").on("keyup",updateEmail); } catch(e) { console.log(e); } } }); } } function displayMapLoc (data) { var building = data.building.substr(data.building.indexOf('-')+1); var search = "Amazon " + building + " building, " + data.city + ", " + data.country; var deskLoc = (data.building_room?data.building_room:""); var deskMapLink = $(".floor-map-link").attr("href"); var buildingDetailsLink = $(".building-link").attr("href"); var deskParams = deskLoc.split('.'); var mapWidget = `<div class="map"> <div id="MINI-desk-loc"> <div class="MINI-loc-element"><a href="${buildingDetailsLink}"><div class="title">Building</div><div class="data">${building}</div></a></div> <div class="MINI-loc-element"><a href="${deskMapLink}"><div class="title">Floor</div><div class="data">${deskParams[1]}</div></a></div> <div class="MINI-loc-element"><a href="${deskMapLink}"><div class="title">Desk</div><div class="data">${deskParams[2]}${(deskParams[3] ? ("."+deskParams[3]):"")}</div></a></div> </div> <div class="mapouter"> <div class="gmap_canvas"> <iframe width="100%" height="400" id="gmap_canvas" src="https://maps.google.com/maps?q=${search}&t=&z=15&ie=UTF8&iwloc=&output=embed" frameborder="0" scrolling="no" marginheight="0" marginwidth="0"></iframe> </div> </div> </div>`; updateContentSection("MINI-location", mapWidget); } function removeOverlaps (rolesArray) { var resultArray = []; for (var i=0; i<rolesArray.length; i++) { if (rolesArray[i].end_date == "") rolesArray[i].end_date = moment().format("YYYY/MM/DD"); var currentRoleStartDate = moment(rolesArray[i].start_date); var currentRoleStartDateStr = currentRoleStartDate.format("YYYY/MM/DD"); var currentRoleEndDate = moment(rolesArray[i].end_date); var isSuperSet = false; for (var k=0; k<rolesArray.length; k++) { if ((k!=i) && !isSuperSet) { var testRoleStartDate = moment(rolesArray[k].start_date); var testRoleEndDate = moment(rolesArray[k].end_date); if (currentRoleStartDate.isBefore(testRoleStartDate) && currentRoleEndDate.isAfter(testRoleEndDate)) { isSuperSet = true; var post = JSON.parse(JSON.stringify(rolesArray[i])); var pre = JSON.parse(JSON.stringify(post)); post.start_date = testRoleEndDate.format("YYYY/MM/DD"); resultArray.push(post); var mid = resultArray[k]; pre.start_date = currentRoleStartDateStr; pre.end_date = testRoleStartDate.format("YYYY/MM/DD"); resultArray.push(pre); } } } if (!isSuperSet) resultArray.push(rolesArray[i]); } resultArray = _.sortBy(resultArray, 'end_date').reverse(); return(resultArray); } function fillInGaps (incomingArray) { var targetData = []; //fill in data gaps var rolesArray = removeOverlaps(incomingArray); for (var r=0; r < rolesArray.length; r++) { var roleStartDate = moment(rolesArray[r].start_date); var roleEndDate = (rolesArray[r].end_date==""?moment():moment(rolesArray[r].end_date)); var currentRole = rolesArray[r]; if (roleEndDate.isSame('2015-02-02', 'day') && (r>0)) { roleEndDate = moment(rolesArray[r-1].start_date); currentRole.end_date = roleEndDate.format("YYYY/MM/DD"); } var roleDays = roleEndDate.diff(roleStartDate, 'days'); currentRole.roleDays = roleDays; targetData.push(currentRole); if ((r<rolesArray.length-1) && (roleStartDate > moment(rolesArray[r+1].end_date).add(7, 'd'))) { var prevRoleEndDate = moment(rolesArray[r+1].end_date); if (!(prevRoleEndDate.isSame('2015-02-02', 'day') && (r>=0))) { roleDays = roleStartDate.diff(prevRoleEndDate, 'days'); targetData.push({ end_date: roleStartDate.format("YYYY/MM/DD"), start_date: prevRoleEndDate.format("YYYY/MM/DD"), gap: true, job_family: "Data Gap", roleDays: roleDays, department_name: "", supervisor_name: "", business_title: "" }); } } } return targetData; } function getUniqueJobFamilies (targetData) { var jobFamilies = new Set(); for (var j =0; j < targetData.length; j++) { jobFamilies.add(targetData[j].job_family); } var jobFamilyClass = {}; var l=0; jobFamilies.forEach(function(value){ if (value == "Data Gap") {jobFamilyClass[value] = "_gap";} else {jobFamilyClass[value] = "_"+l++;} }); return jobFamilyClass; } function consolidateAdjacent(targetData, titleField) { var adjChanges = []; for (var k = 0; k < targetData.length; k++) { if ((k>0) && (targetData[k][titleField] == adjChanges[adjChanges.length-1].title)) { //is the current dept name similar to previous one? adjChanges[adjChanges.length-1].days += targetData[k].roleDays; } else { adjChanges.push({ title: targetData[k][titleField], days: targetData[k].roleDays, mgrLogin: targetData[k].supervisor_login }); } } return adjChanges; } function consolidateRoles(targetData) { var adjChanges = []; for (var k = 0; k < targetData.length; k++) { if ( (k>0) && (( // (targetData[k].job_family == adjChanges[adjChanges.length-1].job_family) && (targetData[k].business_title == adjChanges[adjChanges.length-1].business_title) ) || (targetData[k].roleDays <= 30)) ) { adjChanges[adjChanges.length-1].days += targetData[k].roleDays; } else { adjChanges.push({ department_name: targetData[k].department_name, job_family: targetData[k].job_family, business_title: targetData[k].business_title, days: targetData[k].roleDays }); } } return adjChanges; } function consolidateDates (targetData) { var adjChanges = []; for (var k = 0; k < targetData.length; k++) { if ( (k>0) && (( (targetData[k].department_name == adjChanges[adjChanges.length-1].department_name) && (targetData[k].job_family == adjChanges[adjChanges.length-1].job_family) && (targetData[k].supervisor_name == adjChanges[adjChanges.length-1].supervisor_name) && (targetData[k].business_title == adjChanges[adjChanges.length-1].business_title) ) || ( targetData[k].roleDays <= 30 )) ) { adjChanges[adjChanges.length-1].days += targetData[k].roleDays; } else { adjChanges.push({ department_name: targetData[k].department_name, job_family: targetData[k].job_family, supervisor_name: targetData[k].supervisor_name, date: (targetData[k].end_date==""?moment():moment(targetData[k].end_date)).format("MMM YY"), days: targetData[k].roleDays }); } } return adjChanges; } function layoutRow (order, friendlyName, rowClassName, cellsArr, contentParamName, widthParamName, total, cellClassName, addlClass, searchURL) { var titleWidth = 50+"px"; var rowHTML = "<div class='timeline-rows "+rowClassName+"'>"; rowHTML += `<div class='${cellClassName} title' style='min-width: ${titleWidth}'>${friendlyName}</div>`; var rowStep = ((rowClassName == 'timeline-row')?0:0); // var lineShift = 20 * order; for (var i=0; i<cellsArr.length; i++) { var addLinkPre = ""; var addLinkPost = ""; var content = cellsArr[i][contentParamName]; if ((cellClassName == "manager")) { if ((cellsArr[i].mgrLogin)) { addLinkPre += "<a href='"+params.urlPrefix+cellsArr[i].mgrLogin+"'>"; addLinkPost += "</a>"; } else { addLinkPre += `<a href="${searchURL}${content} Amazon" title='${content}. Former employee. Search for in Linkedin' target='_blank'><i>`; addLinkPost += "</i></a>"; } } var wid = ((cellsArr[i][widthParamName] / total)*100)+"%"; // var top = ((rowStep * i))+"px"; rowHTML += `<div class='marker ${cellClassName} ${(addlClass?addlClass[cellsArr[i].job_family]:"")}' style='min-width: ${wid};' title='${content}'>${addLinkPre}${content}${addLinkPost}</div>`; } rowHTML += "</div>"; return rowHTML; } function layoutLegend (legendObj) { var rowHTML = "<div class='legend'><div>Job Family:</div>"; for (var property1 in legendObj) { rowHTML += `<div class='${legendObj[property1]}'><div class='swatch'></div>${property1}</div>`; } rowHTML += "</div>"; return rowHTML; } function getyOrgHistoryWidgets (params) { GM_xmlhttpRequest({ method: "GET", url: params.orgUrlPrefix + params.empId, onload: function(data) { try { var historyData = JSON.parse(data.responseText); var roles = historyData.length; var today = moment(); var startHistory = moment(historyData[historyData.length-1].start_date); var tenure = today.diff(startHistory, 'days'); var fixedHistory = fillInGaps(historyData); var jobFamilyClass = getUniqueJobFamilies(fixedHistory); //Consolidate similar adjacent cells var depts = consolidateAdjacent (fixedHistory, "department_name"); var mgrs = consolidateAdjacent (fixedHistory, "supervisor_name"); var uniqueRoles = consolidateRoles(fixedHistory); var dates = consolidateDates(fixedHistory); // var timelineWidth = ((tenure/1000)*100)+"%"; var timelineWidth = "100%"; $("#MINI-history .MINI-section-content").append(` <div class='role-history' style="width: ${timelineWidth};"> <div id='side-pan'></div> <div class='timeline-holder'> <div class='timeline'> ${layoutRow(1, "Date", 'date-names', dates, 'date', 'days', tenure, 'date-marker')} ${layoutRow(2, "Org", 'dept-names', depts, 'title', 'days', tenure, 'dept-marker')} ${layoutRow(3, "Title", 'timeline-row', uniqueRoles, 'business_title', 'days', tenure, 'timeline-section', jobFamilyClass)} ${layoutRow(4, "Manager", 'mgr-names', mgrs, 'title', 'days', tenure, 'manager', null, params.linkedinSearchPrefix)} </div> <div class = 'start-date-holder'><div class = 'dept-marker'>Start</div><div class='date-marker'>${startHistory.format("MMM YY")}</div></div> </div> ${layoutLegend(jobFamilyClass)} <div id="timeline-helper"></div> </div>` ); $(".timeline-section").on("click", zoomIn);//, zoomOut); function zoomIn (event){ var callingEl = this; //Get the highlighting right $(".timeline-section").addClass("unzoomed"); $(callingEl).removeClass("unzoomed"); $(callingEl).addClass("zoomed"); $(".timeline-row").addClass("zoomed"); //Disable actions $(".timeline-section").unbind("click"); //Copy and keep left legend in place; $("#tempTitleHolder").remove(); $("#side-pan").addClass("active"); $(".role-history").append("<div id='tempTitleHolder'></div>"); $(".timeline .title").each(function() { var topPos = $(this).offset().top - $(this).offsetParent().offset().top ; var leftPos = $(this).offset().left; $(this).removeClass('timeline-section') $(this).clone().addClass("tempTitle").appendTo("#tempTitleHolder").css({ position: 'absolute', top: topPos, left: 0 }) }); var containerWidth = $(".timeline-holder").width(); var callingElWidth = $(callingEl).width(); var ratio = callingElWidth/containerWidth; var viewport = $(".timeline-holder").parent().width(); var elTargetWidth = 0.6 * viewport; var containerTargetWidth = elTargetWidth / ratio; var offset = (viewport-elTargetWidth)/2; $(".timeline-holder").animate({width: containerTargetWidth+"px"}, 0, function() { var startPos = ($(callingEl).offset().left - $(this).offset().left)*-1 ; var centeredPos = startPos+offset; if (centeredPos > 0) centeredPos = 0; var marginToChange = "margin-left"; $(this).animate({'margin-left': centeredPos+"px"}, 200, function() { //Enable actions again $(".timeline-section").on("click", zoomIn); $(callingEl).unbind("click"); $(callingEl).on("click", zoomOut); }); $("#timeline-helper").addClass("active"); }); }; function zoomOut (){ $(".timeline-section").unbind("click"); $(".timeline-section").removeClass("zoomed unzoomed"); $(".timeline-row").removeClass("zoomed"); $("#timeline-helper, #side-pan").removeClass("active"); $("#tempTitleHolder").remove(); $(".timeline-holder").animate({ width: "100%", 'margin-left': "0px" }, 300, function() { $(".timeline-section").on("click", zoomIn); }); // } // }); } catch(e) { console.log(e); } } }); } //Remove everything function setupScaffolding () { $("body").append(` <div id='MINI-background-holder'></div> <div id="MINI-content" class="grid-container"> <div id="MINI-config" class="config-block"></div> <div id="MINI-name-block" class="name-block"> <div id='row1' class="MINI-row"></div> <div id='row2' class="MINI-row"></div> <div id='row3' class="MINI-row"></div> </div> <div id="MINI-image-block" class="side-bar"> <div id='row1'></div> <div id='row2'> <div id="MINI-personal-actions"></div> </div> <div id='row3'> <div id="MINI-actions-block"></div> </div> </div> <div id="MINI-profile-info-block" class="main-content"></div> <div id="MINI-stickers" class="bottom-area"></div> </div> <div id="tooltiptext"> <span>Copy to clipboard</span> </div> `); // Need to do it like this to avoid killing the modals $(".employee-container>*").eq(1).hide(); $(".employee-badge").first().hide(); $("div[data-react-class='UserDetails']").first().hide(); // $("#content").hide(); } function setupNameBlock () { //Copy name $(".PersonalInfoName>.name").clone().removeClass("name").attr("id", "MINI-name").addClass("copyable").appendTo("#MINI-name-block>#row1"); //Copy login $(".worker-badge>.login").clone().removeClass("login").attr("id", "MINI-login").addClass("copyable").appendTo("#MINI-name-block>#row1"); //Put a job level placeholder $("#MINI-name-block>#row2").append('<div id="MINI-job-level">8</div>') //Copy title $(".PersonalInfoJobTitle").clone().removeClass("PersonalInfoJobTitle").attr("id", "MINI-job-title").appendTo("#MINI-name-block>#row2"); //Copy message $(".PersonalInfoMessage").clone().removeClass("PersonalInfoMessage").attr("id", "MINI-message").appendTo("#MINI-name-block>#row3"); $("#MINI-name, #MINI-login").hover(showTooltip, removeTooltip); $("#MINI-name, #MINI-login").on("click", makeCopyClickable); } function setupImageBlock () { //Copy photo // $(".photo-frame").eq(1).clone().removeClass("photo-frame").attr("id", "MINI-photo-frame").appendTo("#MINI-image-block>#row1"); $(".worker-badge").first().clone().attr("id", "MINI-photo-frame").appendTo("#MINI-image-block>#row1"); if ($(".worker-badge .fake-link").length) { $(".worker-badge .fake-link").first().attr("id", "old-change-link"); $("#MINI-content .fake-link").hide(); $("#MINI-image-block>#row1").prepend(`<div id="MINI-change-photo-icon" title="Switch photo"><i class="fa fa-refresh" aria-hidden="true"></i></div>`); $("#MINI-change-photo-icon").click(enablePhotoToggle); } //Copy all default actions if ($("#update-info-toggle").length) { $(".PersonalInfoChime").clone().attr("id", "MINI-chime-button").addClass("MINI-Actions-Button").appendTo("#MINI-actions-block"); $("#MINI-personal-actions").append(` <div class="MINI-Actions-Button" id="MINI-edit-profile"> <i class="fa fa-pencil" aria-hidden="true"></i> <a>Edit my info</a> </div>` ); $("#MINI-edit-profile").click(function(){ // $("#update-info-modal").clone().appendTo("#MINI-edit-profile"); $("#update-info-toggle").trigger("click"); }); } $(".PersonalInfoChime").clone().attr("id", "MINI-chime-button").addClass("MINI-Actions-Button").appendTo("#MINI-actions-block"); $(".PersonalInfoEmail").clone().attr("id", "MINI-email-button").addClass("MINI-Actions-Button").appendTo("#MINI-actions-block"); $(".PersonalInfoAccolades").clone().attr("id", "MINI-accolades-button").addClass("MINI-Actions-Button").appendTo("#MINI-actions-block"); //Copy share your passion question if ($(".SharePassionResponse").length) { $("#MINI-image-block>#row1").append(`<div id="MINI-share-passion-icon"><i id="bubble-button" class="fa fa-comment-o" aria-hidden="true"></i></div>`) $("#MINI-image-block>#row1").append(`<div id="MINI-share-passion-holder"></div>`); $(".SharePassion").first().clone().attr("id", "MINI-share-passion").addClass("MINI-slate").appendTo("#MINI-share-passion-holder"); $("#MINI-share-passion-icon").click(showPassionBubble); } } function enablePhotoToggle() { $("#old-change-link").trigger("click"); var waitToExpand = setInterval(waitToExpandFn, 500); function waitToExpandFn () { clearInterval(waitToExpand); $("#MINI-photo-frame").remove(); $(".worker-badge").first().clone().attr("id", "MINI-photo-frame").insertAfter("#MINI-change-photo-icon"); $("#MINI-content .fake-link").hide(); return false; } } function populateProfileInfoBlock (container, sectionName, sectionTitle, sectionKeySummary) { var blockStr = ` <div class="MINI-profile-section" id="${sectionName}"> <div class="MINI-section-header MINI-slate"> <div class="title">${sectionTitle}</div> <div class="key-summary"> <div class="key-summary-title">${sectionKeySummary}</div> <div class="key-summary-data"></div> <!--<span class="expand-arrow"><i class="fa fa-chevron-down" aria-hidden="true"></i></span>--> </div> </div> <div class="MINI-section-content"></div> </div> `; $(container).append(blockStr); $(`#${sectionName} .MINI-section-header`).on("click", toggleContentSection); } function toggleContentSection () { $(this).parent().toggleClass("open"); // $(this).parent().find(".MINI-section-content").toggleClass("MINI-slate"); } function updateContentSection (sectionName, jqObject) { $(`#${sectionName} .MINI-section-content`).append(jqObject); } function updateKeySummaryData (sectionName, summaryData) { $(`#${sectionName} .key-summary-data`).text(summaryData); } function addProfileDetails () { //Org populateProfileInfoBlock ("#MINI-profile-info-block", "MINI-org", "Organization", "Direct Reports"); var checkExist = setInterval(waitToCopyOrgChart, 100); function waitToCopyOrgChart () { if ($('.org-chart-row').length) { clearInterval(checkExist); $(".well.org-chart div:first-child").children("div:nth-child(2)").first().attr("id", "old-org-widget"); var expandablePos = 0; $("#old-org-widget").find(".expandable").each(function () { $(this).attr("id", "MINI-exapndable-pos-" + expandablePos++) }) updateContentSection("MINI-org", $("#old-org-widget").clone().addClass("org-chart").attr("id", "MINI-org-widget")); // initaite button listeneres $("#MINI-org-widget .expandable").on("click", updateOrgChart); } } //Work History populateProfileInfoBlock ("#MINI-profile-info-block", "MINI-history", "Work History", "Tenure"); //Location populateProfileInfoBlock ("#MINI-profile-info-block", "MINI-location", "Location", "Building/City"); //Phnoe tool icons populateProfileInfoBlock ("#MINI-profile-info-block", "MINI-interests", "PhoneTool Icons", "Awards"); updateKeySummaryData ("MINI-interests", $("#widget-2").find(".uppercase.muted").text().match(/\d+/)[0]) updateContentSection("MINI-interests", $(".main-content.awards").first().clone().attr("id", "MINI-awards")); $(".main-content.communities").first().clone().attr("id", "MINI-communities").appendTo("#MINI-stickers"); $("#MINI-communities .community-preview").each(function () { var scaleFactor = 1 + (Math.random() * 0.8); var opacity = 0.2 + (Math.random() * 0.8); var rotateFactor = -10 + (Math.random() * 20); // $(this).css("transform", ``); $(this).css("transform", `scale(${scaleFactor}) rotate(${rotateFactor}deg) translate(0)`); $(this).css("z-index", `5`); // $(this).css("opacity", opacity); }) } function updateOrgChart () { var expandableTargetId = $(this).attr("id"); var expandablePosToTrigger = $("#old-org-widget #" + expandableTargetId); expandablePosToTrigger.trigger("click"); //wait for the org chart to expand var waitToExpand = setInterval(waitToExpandFn, 1000); function waitToExpandFn () { if (expandablePosToTrigger.hasClass("expanded") || expandablePosToTrigger.hasClass("expanded-top")) { clearInterval(waitToExpand); var expandablePos = 0; $("#old-org-widget").find(".expandable").each(function () {$(this).attr("id", "MINI-exapndable-pos-" + expandablePos++)}); $("#MINI-org-widget").remove(); updateContentSection("MINI-org", $("#old-org-widget").clone().addClass("org-chart").attr("id", "MINI-org-widget")); $("#MINI-org-widget .expandable").on("click", updateOrgChart); return false; } }; } function makeCopyClickable () { var id = $(this).attr('id'); var el = document.getElementById(id); var range = document.createRange(); range.selectNodeContents(el); var sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); document.execCommand('copy'); sel.removeAllRanges(); $("#tooltiptext").text("Copied to clipboard!"); $("#tooltiptext").addClass("copied"); setTimeout(function() { $("#tooltiptext").removeClass("show"); }, 800); return false; } function showTooltip () { $("#tooltiptext").removeClass("copied"); $("#tooltiptext").addClass("show"); // positioning var leftPos = $(this).offset().left + ($(this).width()/2) - 60; var topPos = $(this).offset().top - 30; $("#tooltiptext").offset({left: leftPos, top: topPos}); } function removeTooltip () { $("#tooltiptext").removeClass("show"); $("#tooltiptext").text("Copy to clipboard"); } function showPassionBubble () { $("#MINI-share-passion-holder").toggleClass("active"); $("#bubble-button").toggleClass("fa-comment-o"); $("#bubble-button").toggleClass("fa-times"); } function putInConfiguration () { var bodyColor; (async () => { bodyColor = await GM.getValue('ptMINIgetColor', false); if (bodyColor != false) { $("body").addClass(bodyColor); } else { $("body").addClass("orange"); } })(); $("#MINI-config").append(` <div id="MINI-color-swatches"> <div class="swatch" id="white"></div> <div class="swatch" id="orange"></div> <div class="swatch" id="blue"></div> <div class="swatch" id="green"></div> <div class="swatch" id="red"></div> </div> ` ); $("#MINI-color-swatches .swatch").click(switchColor); function switchColor () { var newColor = $(this).attr("id"); $("body").removeClass(); $("body").addClass(newColor); (async () => { await GM.setValue('ptMINIgetColor', newColor); })(); } } setupScaffolding(); setupNameBlock(); setupImageBlock(); putInConfiguration(); //Add profile details sections addProfileDetails(); getPersonalInfoWidgets(params); getyOrgHistoryWidgets(params); })();