Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name SSP Util
- // @namespace trans-logistics.amazon.com
- // @version 2021.05.12
- // @description Puts barcode and FMC search links in each VRID. Makes tooltips for driver plates, seals, scacs and preload/live. Gets assigned driver phone numbers from FMC. Bulk search selected loads in FMC. Fixes printing in Chrome, and moves Hazmat special permit to first page.
- // @author bjerkt@
- // @downloadURL https://axzile.corp.amazon.com/-/carthamus/download_script/ssp-util.user.js
- // @updateURL https://axzile.corp.amazon.com/-/carthamus/download_script/ssp-util.user.js
- // @match https://trans-logistics.amazon.com/ssp/dock/*
- // @match https://trans-logistics-eu.amazon.com/ssp/dock/*
- // @grant GM_addStyle
- // ==/UserScript==
- (function() {
- 'use strict';
- GM_addStyle(`
- .search-pane {
- border: 1px solid black;
- display: inline-block;
- padding: 5px;
- border-radius: 10px;
- }
- .search-btn {
- margin: 3px;
- font-weight: bold;
- }
- /* Tooltip prep */
- .tooltip {
- position: relative;
- display: inline-flex;
- }
- .tooltip-carrier{
- position: relative;
- }
- .icon-seal {
- width: 11px;
- }
- .icon-driver {
- width: 22px;
- height: 18px;
- }
- .icon-carrier {
- }
- .icon-phone {
- width: 22px;
- height: 18px;
- margin-left: -1px;
- margin-bottom: -6px;
- background: transparent url(https://m.media-amazon.com/images/G/01/Help/pg-gacd-phone._V324592851_.png) no-repeat center;
- background-size: 30px;
- }
- .icon-phone-pointer {
- cursor: pointer;
- }
- /* Tooltip text */
- .tooltip .tooltip-text {
- font-size: 11px;
- visibility: hidden;
- display: inline;
- background-color: black;
- color: #fff;
- text-align: center;
- padding: 2px 7px 2px 7px;
- border-radius: 4px;
- position: absolute;
- width: max-content;
- }
- .tooltip .seal-tooltip-text {
- bottom: 120%;
- right: -85%;
- }
- .tooltip .driver-tooltip-text {
- bottom: 125%;
- right: 1%;
- }
- .tooltip .carrier-tooltip-text {
- bottom: 125%;
- right: 10%;
- }
- .tooltip .driver-phone-tooltip-text {
- bottom: 110%;
- right: 5%;
- }
- .tooltip .optype-tooltip-text {
- bottom: 125%;
- right: 1%
- }
- /* Add speech bubble arrow thing */
- .tooltip .tooltip-text::after {
- content: " ";
- position: absolute;
- top: 100%;
- right: 10%;
- border-width: 5px;
- border-style: solid;
- border-color: black transparent transparent transparent;
- }
- /* Show the tooltip text when you mouse over the tooltip container */
- .tooltip:hover .tooltip-text {
- visibility: visible;
- }
- @page iframe {size: portrait !important;}
- `);
- // Handle Tampermonkey running the script too late to catch the loading events
- if (document.readyState != 'complete') {
- window.addEventListener('load', windowLoadedCallback);
- } else {
- windowLoadedCallback();
- }
- // Determine region
- const urlRegion = window.location.href.indexOf('trans-logistics-eu') > 0 ? '-eu' : '';
- function windowLoadedCallback() {
- // Override JsBarcode with a Chrome-compatible version
- // NOTE: Content Security Policy blocks the fetch (not an Amazon domain), causing some console spam, but it still works for some reason.
- var script = document.createElement('script');
- script.type = "text/javascript";
- fetch('https://cdn.jsdelivr.net/npm/jsbarcode@3.11.0/dist/barcodes/JsBarcode.code128.min.js')
- .then(response => response.text())
- .then(txt => {script.innerHTML = txt; document.getElementsByTagName('head')[0].appendChild(script);});
- // Tap into ajax requests
- $.ajaxSetup({
- dataFilter: function(data, type) {
- let newStr = data.replace('@page {size: landscape}', '@page {size: auto}')
- .replace('http://media-services.integ.amazon.com:8888/images/G/01/TransCentral/images/transportation/logo_amazon_fulfillment.jpg', 'https://drive-render.corp.amazon.com/view/bjerkt@/Tools%20-%20Mine/Userscripts/res/logo_amazon_fulfillment.jpg');
- // Move the Hazmat qr code to the first page
- const matches = [...newStr.matchAll(/(of the DOT.+?n)(.+?noted.+?tr>)(.+?)(<img.+?png.+?")( width.+?height.+?px.+?").+?(<p.+?p>).+?(<p.+?pdf.+?p>).+?\/tr>/g)][0];
- if (matches) {
- const fixedStr = matches[1]+"<br>"+matches[4]+' width=\\"70px\\" height=\\"70px\\">'+matches[6]+matches[7]+matches[2];
- newStr = newStr.replace(matches[0], fixedStr);
- }
- return newStr;
- }
- })
- const observer = new MutationObserver(elemChangeCallback);
- const obsConfig = { attributes: true, attributeFilter:["class"], attributeOldValue: true };
- const targetNode = document.getElementById('block-ui-container');
- observer.observe(targetNode, obsConfig);
- addBulkSearchButton();
- // Set up mutation observer to watch when refresh dialog is shown & cleared
- function elemChangeCallback (mutationsList, observer) {
- for (let mutation of mutationsList) {
- if (mutation.target.classList.contains('hidden') && mutation.oldValue == '') {
- addLinksTooltips();
- }
- }
- }
- }
- ///////////////////////////////////////////////////////////////////
- async function addLinksTooltips() {
- const vridContainers = document.querySelectorAll('td.loadIdCol');
- let carrierMap = {};
- let driverPlateMap = {};
- let driverIdMap = {};
- let VRIDOperationTypeMap = {};
- let vridList = [];
- ///////////////////////
- // Add links
- ///////////////////////
- for (let container of vridContainers) {
- const vrid = container.innerText.slice(0,9);
- vridList.push(vrid);
- // Don't make a double
- if (container.querySelector('a') === null) {
- addLinks(container, vrid);
- }
- }
- ///////////////////////
- // Add tooltips
- ///////////////////////
- if(vridList.length > 0) {
- addSealTooltips();
- [carrierMap, driverPlateMap, driverIdMap, VRIDOperationTypeMap] = await getFMCData(vridList);
- const driverIconSpans = document.querySelectorAll('table#dashboard > tbody > tr > td.loadIdCol > span.driverPresent');
- const carrierElems = document.querySelectorAll('.loadIdCol + td + td');
- const loadIdElems = document.querySelectorAll('td.loadIdCol > span.loadId');
- requestAnimationFrame(() => {
- // Operation Type
- for (let elem of loadIdElems) {
- elem.classList.add('tooltip');
- const tooltip = document.createElement('SPAN');
- tooltip.classList.add('tooltip-text', 'optype-tooltip-text');
- tooltip.innerHTML = VRIDOperationTypeMap[elem.textContent]
- elem.appendChild(tooltip);
- }
- // Driver plates
- for (let theSpan of driverIconSpans) {
- if (theSpan.children.length == 0) {
- theSpan.removeAttribute('title');
- theSpan.classList.add('tooltip', 'icon-driver');
- const tooltip = document.createElement('SPAN');
- tooltip.classList.add('tooltip-text', 'driver-tooltip-text');
- tooltip.innerHTML = driverPlateMap[theSpan.previousElementSibling.innerText];
- theSpan.appendChild(tooltip);
- }
- }
- // Carrier names
- for (let elem of carrierElems) {
- if (elem.children.length == 1) {
- const idWrapper = document.createElement('SPAN');
- idWrapper.classList.add('tooltip', 'icon-carrier');
- const carrierIdNode = elem.childNodes[0];
- carrierIdNode.textContent = carrierIdNode.textContent.slice(0,-1);
- const tooltip = document.createElement('SPAN');
- tooltip.classList.add('tooltip-text', 'carrier-tooltip-text');
- tooltip.innerHTML = carrierMap[elem.innerHTML.split('<',1)[0]];
- idWrapper.appendChild(carrierIdNode);
- idWrapper.appendChild(tooltip);
- elem.insertBefore(idWrapper, elem.children[0]);
- // Phone numbers
- const driverId = driverIdMap[elem.previousElementSibling.previousElementSibling.firstElementChild.innerText];
- if (driverId) {
- const phoneWrapper = document.createElement('SPAN');
- phoneWrapper.classList.add('tooltip', 'icon-phone', 'icon-phone-pointer');
- phoneWrapper.title = 'Get phone number from FMC';
- phoneWrapper.addEventListener('click', function(e) {
- e.stopPropagation();
- createDriverPhoneTooltip(e.target, carrierIdNode.textContent, driverId);
- phoneWrapper.title = '';
- }, {once: true});
- elem.insertBefore(phoneWrapper, elem.children[1]);
- }
- }
- }
- });
- }
- }
- async function addSealTooltips() {
- try {
- let sealNums = {};
- const nodeSelectorOptions = document.getElementById('availableNodeName').options
- const nodeId = nodeSelectorOptions[nodeSelectorOptions.selectedIndex].text;
- // At very beginning of page load, date picker is blank. Use default. If not, overwrite with date range.
- let postData = {
- entity: 'getDefaultOutboundDockView',
- nodeId: nodeId
- };
- let dayStart = $("input[name\x3dfromDate]").val()
- if (dayStart != '') {
- let dayEnd = $("input[name\x3dtoDate]").val()
- , timeStart = $('#searchPanelTable [dataname\x3d"fromTime"] option:selected').val()
- , timeEnd = $('#searchPanelTable [dataname\x3d"toTime"] option:selected').val();
- if ("" != timeStart) {
- var p = timeStart.split("-");
- timeStart = p[0] + ":" + p[1];
- }
- else {
- timeStart = "00:00";
- }
- "" != timeEnd ? (p = timeEnd.split("-"),
- timeEnd = p[0] + ":" + p[1]) : timeEnd = "00:00";
- let dateStart = new Date(dayStart + " " + timeStart + ":00 GMT")
- , startEpoch = dateStart.getTime()
- , dateEnd = new Date(dayEnd + " " + timeEnd + ":00 GMT")
- , endEpoch = dateEnd.getTime();
- postData = {
- entity: 'getOutboundDockView',
- nodeId: nodeId,
- startDate: startEpoch,
- endDate: endEpoch,
- loadCategories: 'outboundScheduled,outboundInProgress,outboundReadyToDepart,outboundDeparted,outboundCancelled',
- shippingPurposeType: 'TRANSSHIPMENT,NON-TRANSSHIPMENT'
- }
- }
- const response = await jQuery.ajax({
- url: 'https://trans-logistics' + urlRegion + '.amazon.com/ssp/dock/hrz/ob/fetchdata',
- type: 'POST',
- data: postData,
- dataType: 'json'
- });
- for (let elem of response.ret.aaData) {
- if(elem.load.sealId) {
- sealNums[elem.load.planId] = elem.load.sealId;
- }
- }
- const sealCheckSpans = document.querySelectorAll('table#dashboard > tbody > tr > td.trailerNumCol > span.sealIndicator');
- requestAnimationFrame(function() {
- for (let theSpan of sealCheckSpans) {
- if (theSpan.children.length == 0) {
- theSpan.removeAttribute('title');
- theSpan.classList.add('tooltip', 'icon-seal');
- const tooltip = document.createElement('SPAN');
- tooltip.classList.add('tooltip-text', 'seal-tooltip-text');
- tooltip.innerHTML = sealNums[theSpan.parentElement.parentElement.id];
- theSpan.appendChild(tooltip);
- }
- }
- });
- } catch(e) {
- console.group('SSP Util');
- console.log('Error getting seals from SSP:');
- console.error(e);
- console.groupEnd();}
- }
- async function getFMCData(vridList) {
- try {
- let vridListString = "";
- // Create query string
- for (let str of vridList) {
- const tmp = '"' + str + '",'
- vridListString += tmp;
- }
- // Chop off last comma
- vridListString = vridListString.slice(0,-1);
- let retCarrierMap = {};
- let retDriverPlateMap = {};
- let retDriverIdMap = {};
- let retVRIDOperationTypeMap = {};
- const postUrl = 'https://trans-logistics' + urlRegion + '.amazon.com/fmc/search/execution/by-id';
- const postData = {
- "searchIds": vridList,
- "page": 0,
- "pageSize": 100,
- "bookmarkedSavedSearch": false,
- "executionViewModePreference": "vrs",
- "dashboardPreferences": "{\"length\":100,\"order\":[[12,\"asc\"]],\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true},\"columns\":[{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":false,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":false,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":false,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":false,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":false,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":false,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":false,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":false,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":false,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":false,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":false,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":false,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}}],\"childTable\":{\"hiddenColumns\":[\"estimatedArrival\",\"estimatedDelay\"],\"shownColumns\":[]},\"columnNames\":[{\"name\":\"collapsed_state\",\"index\":0},{\"name\":\"tour_id\",\"index\":1},{\"name\":\"vr_id\",\"index\":2},{\"name\":\"vr_map\",\"index\":3},{\"name\":\"vr_status\",\"index\":4},{\"name\":\"comments\",\"index\":5},{\"name\":\"tp_id\",\"index\":6},{\"name\":\"tp_actions\",\"index\":7},{\"name\":\"facility_sequence\",\"index\":8},{\"name\":\"disruptions\",\"index\":9},{\"name\":\"first_dock_arrival_time\",\"index\":10},{\"name\":\"first_yard_arrival_time\",\"index\":11},{\"name\":\"first_dock_departure_time\",\"index\":12},{\"name\":\"first_yard_departure_time\",\"index\":13},{\"name\":\"final_dock_arrival_time\",\"index\":14},{\"name\":\"final_yard_arrival_time\",\"index\":15},{\"name\":\"cpt\",\"index\":16},{\"name\":\"alerts\",\"index\":17},{\"name\":\"carrier_group\",\"index\":18},{\"name\":\"carrier\",\"index\":19},{\"name\":\"subcarrier\",\"index\":20},{\"name\":\"cr_id\",\"index\":21},{\"name\":\"shipper_accounts\",\"index\":22},{\"name\":\"equipment_type\",\"index\":23},{\"name\":\"client_contract\",\"index\":24},{\"name\":\"vr_tendering\",\"index\":25},{\"name\":\"tender_status\",\"index\":26},{\"name\":\"operator_id\",\"index\":27},{\"name\":\"driver\",\"index\":28},{\"name\":\"cases\",\"index\":29}]}",
- "originalCriteria": "{\"searchIds\":[" + vridListString + "],\"pageSize\":100}"
- };
- const response = await jQuery.ajax({
- url: postUrl,
- type: 'POST',
- data: JSON.stringify(postData),
- contentType: 'application/json',
- processData: false,
- dataType: 'json'
- });
- for (let record of response.returnedObject.records) {
- // debugger;
- retVRIDOperationTypeMap[record.vehicleRunId] = record.aggregatedStops[0].actions[0].operationType;
- retCarrierMap[record.carrierId] = record.carrierName;
- // Also have choice of plan id, tour id...
- // stop 0 is pickup, asset 1 is tractor (0 trailer, 2 driver) !!Box truck, etc breaks this!
- // let tractorIndex = 1;
- //if (record.aggregatedStops[0].assets[0].category != 'LOADABLE') {
- // tractorIndex = 0;
- // }
- let tractorAsset = {};
- for (let asset of record.aggregatedStops[0].assets) {
- if (asset.category == "ENGINE") {
- tractorAsset = asset;
- break;
- }
- }
- retDriverPlateMap[record.vehicleRunId] = tractorAsset.assetId;
- if (record.assignedDrivers[0]) {
- retDriverIdMap[record.vehicleRunId] = record.assignedDrivers[0].assetId;
- }
- }
- return [retCarrierMap, retDriverPlateMap, retDriverIdMap, retVRIDOperationTypeMap];
- } catch(e) {
- console.group('SSP Util');
- console.log('Error getting data from FMC:');
- console.error(e);
- console.groupEnd();
- }
- }
- async function addLinks(container, vrid) {
- // Add FMC link
- const a = document.createElement('a');
- const linkText = document.createTextNode("FMC");
- a.appendChild(linkText);
- a.title = "Open VRID in FMC";
- a.href = "https://trans-logistics" + urlRegion + ".amazon.com/fmc/execution/search/" + vrid;
- a.target = "_blank";
- a.addEventListener('click', function(e) {
- e.stopPropagation();
- });
- container.appendChild(a);
- // Add barcode link
- const b = document.createElement('a');
- const bc = document.createTextNode('∣∥∥');
- b.appendChild(bc);
- b.title = "Open QR code";
- b.href = "https://chart.googleapis.com/chart?chl=" + vrid + "&chs=200x200&cht=qr&chld=H%7C1";
- b.target = "_blank";
- b.style.marginLeft = "5px";
- b.style.fontSize = "15px";
- b.addEventListener('click', function(e) {
- e.stopPropagation();
- });
- container.appendChild(b);
- }
- async function createDriverPhoneTooltip(node, scac, driverId) {
- // Pop up tooltip with spinny placeholder
- const tooltip = document.createElement('SPAN');
- tooltip.classList.add('tooltip-text', 'driver-phone-tooltip-text');
- tooltip.innerHTML = '<span class="a-spinner a-spinner-small"></span>';
- node.appendChild(tooltip);
- // Get driver number
- try {
- const response = await jQuery.ajax({
- url: 'https://trans-logistics' + urlRegion + '.amazon.com/fmc/driver/detail/'+scac+'/'+driverId,
- type: 'GET',
- });
- const phoneNum = response.returnedObject.phone;
- tooltip.innerHTML = formatPhoneNumber(phoneNum);
- node.classList.remove('icon-phone-pointer');
- function formatPhoneNumber(phoneNumberString) {
- const cleaned = ('' + phoneNumberString).replace(/\D/g, '')
- const match = cleaned.match(/^(1|)?(\d{3})(\d{3})(\d{4})$/)
- if (match) {
- const intlCode = (match[1] ? '+1 ' : '')
- return [intlCode, '(', match[2], ') ', match[3], '-', match[4]].join('')
- }
- return null
- }
- } catch (e) {
- console.error(e);
- }
- }
- async function addBulkSearchButton() {
- const topPane = document.getElementById('topPaneContent');
- const searchPane = document.createElement('DIV');
- searchPane.classList.add('search-pane');
- const searchDesc = document.createElement('SPAN');
- searchDesc.innerHTML = 'Search all selected VRIDs on FMC:';
- const searchBtn = document.createElement('BUTTON');
- searchBtn.classList.add('search-btn');
- searchBtn.addEventListener('click', searchSelectedVrids);
- searchBtn.innerHTML = 'Search';
- searchPane.appendChild(searchDesc);
- searchPane.appendChild(searchBtn);
- topPane.appendChild(searchPane);
- async function searchSelectedVrids() {
- const selectedVridRows = document.querySelectorAll('tr.selectedTableRow');
- // Push list of vrids to FMC, get bulk search url
- let vridList = [];
- let vridListString = '';
- if(selectedVridRows.length) {
- searchBtn.innerHTML = '<span class="a-spinner a-spinner-small"></span>';
- for (let tableRow of selectedVridRows) {
- const vrid = tableRow.children[6].firstElementChild.innerText;
- vridList.push(vrid);
- vridListString += '"' + vrid + '",';
- }
- // Cut off last comma
- vridListString = vridListString.slice(0,-1);
- // Go!
- const postUrl = 'https://trans-logistics' + urlRegion + '.amazon.com/fmc/search/execution/by-id';
- const postData = {
- "searchIds": vridList,
- "page": 0,
- "pageSize": 100,
- "bookmarkedSavedSearch": false,
- "executionViewModePreference": "vrs",
- "dashboardPreferences": "{\"length\":100,\"order\":[[12,\"asc\"]],\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true},\"columns\":[{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":false,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":false,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":false,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":false,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":false,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":false,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":false,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":false,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":false,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":false,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":false,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":false,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}},{\"visible\":true,\"search\":{\"search\":\"\",\"smart\":true,\"regex\":false,\"caseInsensitive\":true}}],\"childTable\":{\"hiddenColumns\":[\"estimatedArrival\",\"estimatedDelay\"],\"shownColumns\":[]},\"columnNames\":[{\"name\":\"collapsed_state\",\"index\":0},{\"name\":\"tour_id\",\"index\":1},{\"name\":\"vr_id\",\"index\":2},{\"name\":\"vr_map\",\"index\":3},{\"name\":\"vr_status\",\"index\":4},{\"name\":\"comments\",\"index\":5},{\"name\":\"tp_id\",\"index\":6},{\"name\":\"tp_actions\",\"index\":7},{\"name\":\"facility_sequence\",\"index\":8},{\"name\":\"disruptions\",\"index\":9},{\"name\":\"first_dock_arrival_time\",\"index\":10},{\"name\":\"first_yard_arrival_time\",\"index\":11},{\"name\":\"first_dock_departure_time\",\"index\":12},{\"name\":\"first_yard_departure_time\",\"index\":13},{\"name\":\"final_dock_arrival_time\",\"index\":14},{\"name\":\"final_yard_arrival_time\",\"index\":15},{\"name\":\"cpt\",\"index\":16},{\"name\":\"alerts\",\"index\":17},{\"name\":\"carrier_group\",\"index\":18},{\"name\":\"carrier\",\"index\":19},{\"name\":\"subcarrier\",\"index\":20},{\"name\":\"cr_id\",\"index\":21},{\"name\":\"shipper_accounts\",\"index\":22},{\"name\":\"equipment_type\",\"index\":23},{\"name\":\"client_contract\",\"index\":24},{\"name\":\"vr_tendering\",\"index\":25},{\"name\":\"tender_status\",\"index\":26},{\"name\":\"operator_id\",\"index\":27},{\"name\":\"driver\",\"index\":28},{\"name\":\"cases\",\"index\":29}]}",
- "originalCriteria": "{\"searchIds\":[" + vridListString + "],\"pageSize\":100}"
- };
- try {
- const response = await jQuery.ajax({
- url: postUrl,
- type: 'POST',
- data: JSON.stringify(postData),
- contentType: 'application/json',
- processData: false,
- dataType: 'json'
- });
- searchBtn.innerHTML = 'Search';
- window.open('https://trans-logistics' + urlRegion + '.amazon.com'+response.suggestedUrl,'_blank')
- } catch(e) {
- console.error(e);
- }
- }
- }
- }
- })();
Advertisement
Advertisement
Advertisement
RAW Paste Data
Copied
Advertisement