Skip to content

Instantly share code, notes, and snippets.

@jbest84
Created September 14, 2018 17:20
Show Gist options
  • Save jbest84/446fc44f9fad75b6f88cefe4db222d43 to your computer and use it in GitHub Desktop.
Save jbest84/446fc44f9fad75b6f88cefe4db222d43 to your computer and use it in GitHub Desktop.
src-out/Environment.js
define('crm/Environment', ['module', 'exports', 'dojo/_base/lang', 'dojo/_base/window', 'dojo/has', 'dojo/on', 'dojo/string', 'dojo/dom-construct', 'dojo/_base/sniff'], function (module, exports, _lang, _window, _has, _on, _string, _domConstruct) {
Object.defineProperty(exports, "__esModule", {
value: true
});
var _lang2 = _interopRequireDefault(_lang);
var _window2 = _interopRequireDefault(_window);
var _has2 = _interopRequireDefault(_has);
var _on2 = _interopRequireDefault(_on);
var _string2 = _interopRequireDefault(_string);
var _domConstruct2 = _interopRequireDefault(_domConstruct);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
/**
* @class crm.Environment
*
*/
var __class = _lang2.default.setObject('crm.Environment', {
// todo: open a new browser window for these when on a mobile device?
// on a mobile device, launching an external handler can impact a view transition, and cause issues, which the timeout takes care of.
// not the best way, perhaps a post-transition callback should be used for launching these? check transitioning, then queue if needed?
initiateCall: function initiateCall(number) {
setTimeout(function () {
window.location.href = 'tel:' + number;
}, 500);
},
initiateEmail: function initiateEmail(email, subject, body) {
setTimeout(function () {
var mailtoUri = subject ? 'mailto:' + email + '?subject=' + subject + '&body=' + (body || '') : 'mailto:' + email;
window.location.href = mailtoUri;
}, 1000); // 1 sec delay for iPad iOS5 to actually save nav state to local storage
},
showMapForAddress: function showMapForAddress(address) {
var windowName = '_blank';
var href = _string2.default.substitute('http://maps.google.com/maps?q=${0}', [address]);
if ((0, _has2.default)('ie') || (0, _has2.default)('ff')) {
window.open(href, windowName);
} else {
var hiddenLink = _domConstruct2.default.create('a', {
href: href,
target: windowName
}, _window2.default.body(), 'last');
_on2.default.emit(hiddenLink, 'click', {
bubbles: true,
cancelable: true
});
_domConstruct2.default.destroy(hiddenLink);
}
},
attachmentViewsToRefresh: ['myattachment_list', 'attachment_list', 'attachment_related', 'account_attachment_related', 'contact_attachment_related', 'lead_attachment_related', 'opportunity_attachment_related', 'ticket_attachment_related', 'activity_attachment_related', 'history_attachment_related'],
activityViewsToRefresh: ['myactivity_list', 'activity_list', 'activity_detail', 'activity_related', 'ticketactivity_related', 'history_related', 'history_list'],
detailViewsToRefreshOnUpdate: ['account_detail', 'contact_detail', 'opportunity_detail', 'lead_detail', 'ticket_detail'],
refreshStaleDetailViews: function refreshStaleDetailViews() {
// List of detail views that will need refreshed when a note is added or an activity is completed (possibly others??).
// Otherwise the etag will change and the server will give a 412: Preconditioned failed when we attempt to edit/save.
var views = crm.Environment.detailViewsToRefreshOnUpdate || [];
crm.Environment.refreshViews(views);
},
refreshActivityLists: function refreshActivityLists() {
var views = crm.Environment.activityViewsToRefresh || [];
crm.Environment.refreshViews(views);
},
refreshAttachmentViews: function refreshAttachmentViews() {
var views = crm.Environment.attachmentViewsToRefresh || [];
crm.Environment.refreshViews(views);
},
refreshViews: function refreshViews(views) {
if (views && views.length > 0) {
views.forEach(function (viewId) {
var view = App.getView(viewId);
if (view) {
view.refreshRequired = true;
}
});
}
}
}); /* Copyright 2017 Infor
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
exports.default = __class;
module.exports = exports['default'];
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9FbnZpcm9ubWVudC5qcyJdLCJuYW1lcyI6WyJfX2NsYXNzIiwic2V0T2JqZWN0IiwiaW5pdGlhdGVDYWxsIiwibnVtYmVyIiwic2V0VGltZW91dCIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsImluaXRpYXRlRW1haWwiLCJlbWFpbCIsInN1YmplY3QiLCJib2R5IiwibWFpbHRvVXJpIiwic2hvd01hcEZvckFkZHJlc3MiLCJhZGRyZXNzIiwid2luZG93TmFtZSIsInN1YnN0aXR1dGUiLCJvcGVuIiwiaGlkZGVuTGluayIsImNyZWF0ZSIsInRhcmdldCIsImVtaXQiLCJidWJibGVzIiwiY2FuY2VsYWJsZSIsImRlc3Ryb3kiLCJhdHRhY2htZW50Vmlld3NUb1JlZnJlc2giLCJhY3Rpdml0eVZpZXdzVG9SZWZyZXNoIiwiZGV0YWlsVmlld3NUb1JlZnJlc2hPblVwZGF0ZSIsInJlZnJlc2hTdGFsZURldGFpbFZpZXdzIiwidmlld3MiLCJjcm0iLCJFbnZpcm9ubWVudCIsInJlZnJlc2hWaWV3cyIsInJlZnJlc2hBY3Rpdml0eUxpc3RzIiwicmVmcmVzaEF0dGFjaG1lbnRWaWV3cyIsImxlbmd0aCIsImZvckVhY2giLCJ2aWV3SWQiLCJ2aWV3IiwiQXBwIiwiZ2V0VmlldyIsInJlZnJlc2hSZXF1aXJlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkE7Ozs7QUFJQSxNQUFNQSxVQUFVLGVBQUtDLFNBQUwsQ0FBZSxpQkFBZixFQUFrQztBQUNoRDtBQUNBO0FBQ0E7QUFDQUMsa0JBQWMsU0FBU0EsWUFBVCxDQUFzQkMsTUFBdEIsRUFBOEI7QUFDMUNDLGlCQUFXLFlBQU07QUFDZkMsZUFBT0MsUUFBUCxDQUFnQkMsSUFBaEIsWUFBOEJKLE1BQTlCO0FBQ0QsT0FGRCxFQUVHLEdBRkg7QUFHRCxLQVIrQztBQVNoREssbUJBQWUsU0FBU0EsYUFBVCxDQUF1QkMsS0FBdkIsRUFBOEJDLE9BQTlCLEVBQXVDQyxJQUF2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bnZpcm9ubWVudC5qcyIsInNvdXJjZVJvb3QiOiJzcmMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBDb3B5cmlnaHQgMjAxNyBJbmZvclxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCBsYW5nIGZyb20gJ2Rvam8vX2Jhc2UvbGFuZyc7XG5pbXBvcnQgd2luIGZyb20gJ2Rvam8vX2Jhc2Uvd2luZG93JztcbmltcG9ydCBoYXMgZnJvbSAnZG9qby9oYXMnO1xuaW1wb3J0IG9uIGZyb20gJ2Rvam8vb24nO1xuaW1wb3J0IHN0cmluZyBmcm9tICdkb2pvL3N0cmluZyc7XG5pbXBvcnQgZG9tQ29uc3RydWN0IGZyb20gJ2Rvam8vZG9tLWNvbnN0cnVjdCc7XG5pbXBvcnQgJ2Rvam8vX2Jhc2Uvc25pZmYnO1xuXG4vKipcbiAqIEBjbGFzcyBjcm0uRW52aXJvbm1lbnRcbiAqXG4gKi9cbmNvbnN0IF9fY2xhc3MgPSBsYW5nLnNldE9iamVjdCgnY3JtLkVudmlyb25tZW50Jywge1xuICAvLyB0b2RvOiBvcGVuIGEgbmV3IGJyb3dzZXIgd2luZG93IGZvciB0aGVzZSB3aGVuIG9uIGEgbW9iaWxlIGRldmljZT9cbiAgLy8gb24gYSBtb2JpbGUgZGV2aWNlLCBsYXVuY2hpbmcgYW4gZXh0ZXJuYWwgaGFuZGxlciBjYW4gaW1wYWN0IGEgdmlldyB0cmFuc2l0aW9uLCBhbmQgY2F1c2UgaXNzdWVzLCB3aGljaCB0aGUgdGltZW91dCB0YWtlcyBjYXJlIG9mLlxuICAvLyBub3QgdGhlIGJlc3Qgd2F5LCBwZXJoYXBzIGEgcG9zdC10cmFuc2l0aW9uIGNhbGxiYWNrIHNob3VsZCBiZSB1c2VkIGZvciBsYXVuY2hpbmcgdGhlc2U/IGNoZWNrIHRyYW5zaXRpb25pbmcsIHRoZW4gcXVldWUgaWYgbmVlZGVkP1xuICBpbml0aWF0ZUNhbGw6IGZ1bmN0aW9uIGluaXRpYXRlQ2FsbChudW1iZXIpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYHRlbDoke251bWJlcn1gO1xuICAgIH0sIDUwMCk7XG4gIH0sXG4gIGluaXRpYXRlRW1haWw6IGZ1bmN0aW9uIGluaXRpYXRlRW1haWwoZW1haWwsIHN1YmplY3QsIGJvZHkpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IG1haWx0b1VyaSA9IChzdWJqZWN0KSA/IGBtYWlsdG86JHtlbWFpbH0/c3ViamVjdD0ke3N1YmplY3R9JmJvZHk9JHtib2R5IHx8ICcnfWAgOiBgbWFpbHRvOiR7ZW1haWx9YDtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbWFpbHRvVXJpO1xuICAgIH0sIDEwMDApOyAvLyAxIHNlYyBkZWxheSBmb3IgaVBhZCBpT1M1IHRvIGFjdHVhbGx5IHNhdmUgbmF2IHN0YXRlIHRvIGxvY2FsIHN0b3JhZ2VcbiAgfSxcbiAgc2hvd01hcEZvckFkZHJlc3M6IGZ1bmN0aW9uIHNob3dNYXBGb3JBZGRyZXNzKGFkZHJlc3MpIHtcbiAgICBjb25zdCB3aW5kb3dOYW1lID0gJ19ibGFuayc7XG4gICAgY29uc3QgaHJlZiA9IHN0cmluZy5zdWJzdGl0dXRlKCdodHRwOi8vbWFwcy5nb29nbGUuY29tL21hcHM/cT0kezB9JywgW2FkZHJlc3NdKTtcblxuICAgIGlmIChoYXMoJ2llJykgfHwgaGFzKCdmZicpKSB7XG4gICAgICB3aW5kb3cub3BlbihocmVmLCB3aW5kb3dOYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaGlkZGVuTGluayA9IGRvbUNvbnN0cnVjdC5jcmVhdGUoJ2EnLCB7XG4gICAgICAgIGhyZWYsXG4gICAgICAgIHRhcmdldDogd2luZG93TmFtZSxcbiAgICAgIH0sIHdpbi5ib2R5KCksICdsYXN0Jyk7XG5cbiAgICAgIG9uLmVtaXQoaGlkZGVuTGluaywgJ2NsaWNrJywge1xuICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIGRvbUNvbnN0cnVjdC5kZXN0cm95KGhpZGRlbkxpbmspO1xuICAgIH1cbiAgfSxcbiAgYXR0YWNobWVudFZpZXdzVG9SZWZyZXNoOiBbXG4gICAgJ215YXR0YWNobWVudF9saXN0JyxcbiAgICAnYXR0YWNobWVudF9saXN0JyxcbiAgICAnYXR0YWNobWVudF9yZWxhdGVkJyxcbiAgICAnYWNjb3VudF9hdHRhY2htZW50X3JlbGF0ZWQnLFxuICAgICdjb250YWN0X2F0dGFjaG1lbnRfcmVsYXRlZCcsXG4gICAgJ2xlYWRfYXR0YWNobWVudF9yZWxhdGVkJyxcbiAgICAnb3Bwb3J0dW5pdHlfYXR0YWNobWVudF9yZWxhdGVkJyxcbiAgICAndGlja2V0X2F0dGFjaG1lbnRfcmVsYXRlZCcsXG4gICAgJ2FjdGl2aXR5X2F0dGFjaG1lbnRfcmVsYXRlZCcsXG4gICAgJ2hpc3RvcnlfYXR0YWNobWVudF9yZWxhdGVkJyxcbiAgXSxcbiAgYWN0aXZpdHlWaWV3c1RvUmVmcmVzaDogW1xuICAgICdteWFjdGl2aXR5X2xpc3QnLFxuICAgICdhY3Rpdml0eV9saXN0JyxcbiAgICAnYWN0aXZpdHlfZGV0YWlsJyxcbiAgICAnYWN0aXZpdHlfcmVsYXRlZCcsXG4gICAgJ3RpY2tldGFjdGl2aXR5X3JlbGF0ZWQnLFxuICAgICdoaXN0b3J5X3JlbGF0ZWQnLFxuICAgICdoaXN0b3J5X2xpc3QnLFxuICBdLFxuICBkZXRhaWxWaWV3c1RvUmVmcmVzaE9uVXBkYXRlOiBbXG4gICAgJ2FjY291bnRfZGV0YWlsJyxcbiAgICAnY29udGFjdF9kZXRhaWwnLFxuICAgICdvcHBvcnR1bml0eV9kZXRhaWwnLFxuICAgICdsZWFkX2RldGFpbCcsXG4gICAgJ3RpY2tldF9kZXRhaWwnLFxuICBdLFxuICByZWZyZXNoU3RhbGVEZXRhaWxWaWV3czogZnVuY3Rpb24gcmVmcmVzaFN0YWxlRGV0YWlsVmlld3MoKSB7XG4gICAgLy8gTGlzdCBvZiBkZXRhaWwgdmlld3MgdGhhdCB3aWxsIG5lZWQgcmVmcmVzaGVkIHdoZW4gYSBub3RlIGlzIGFkZGVkIG9yIGFuIGFjdGl2aXR5IGlzIGNvbXBsZXRlZCAocG9zc2libHkgb3RoZXJzPz8pLlxuICAgIC8vIE90aGVyd2lzZSB0aGUgZXRhZyB3aWxsIGNoYW5nZSBhbmQgdGhlIHNlcnZlciB3aWxsIGdpdmUgYSA0MTI6IFByZWNvbmRpdGlvbmVkIGZhaWxlZCB3aGVuIHdlIGF0dGVtcHQgdG8gZWRpdC9zYXZlLlxuICAgIGNvbnN0IHZpZXdzID0gY3JtLkVudmlyb25tZW50LmRldGFpbFZpZXdzVG9SZWZyZXNoT25VcGRhdGUgfHwgW107XG4gICAgY3JtLkVudmlyb25tZW50LnJlZnJlc2hWaWV3cyh2aWV3cyk7XG4gIH0sXG4gIHJlZnJlc2hBY3Rpdml0eUxpc3RzOiBmdW5jdGlvbiByZWZyZXNoQWN0aXZpdHlMaXN0cygpIHtcbiAgICBjb25zdCB2aWV3cyA9IGNybS5FbnZpcm9ubWVudC5hY3Rpdml0eVZpZXdzVG9SZWZyZXNoIHx8IFtdO1xuICAgIGNybS5FbnZpcm9ubWVudC5yZWZyZXNoVmlld3Modmlld3MpO1xuICB9LFxuICByZWZyZXNoQXR0YWNobWVudFZpZXdzOiBmdW5jdGlvbiByZWZyZXNoQXR0YWNobWVudFZpZXdzKCkge1xuICAgIGNvbnN0IHZpZXdzID0gY3JtLkVudmlyb25tZW50LmF0dGFjaG1lbnRWaWV3c1RvUmVmcmVzaCB8fCBbXTtcbiAgICBjcm0uRW52aXJvbm1lbnQucmVmcmVzaFZpZXdzKHZpZXdzKTtcbiAgfSxcbiAgcmVmcmVzaFZpZXdzOiBmdW5jdGlvbiByZWZyZXNoVmlld3Modmlld3MpIHtcbiAgICBpZiAodmlld3MgJiYgdmlld3MubGVuZ3RoID4gMCkge1xuICAgICAgdmlld3MuZm9yRWFjaCgodmlld0lkKSA9PiB7XG4gICAgICAgIGNvbnN0IHZpZXcgPSBBcHAuZ2V0Vmlldyh2aWV3SWQpO1xuICAgICAgICBpZiAodmlldykge1xuICAgICAgICAgIHZpZXcucmVmcmVzaFJlcXVpcmVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IF9fY2xhc3M7XG4iXX0=
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment