Доброго времени суток!
Требует помощь с пониманием как работает TimezoneContainer у контакта, для того чтобы по аналогии сделать её для контрагента. Кто с таким сталкивался, прошу помощи.
Нравится
2 комментария
21 марта 2017 12:56
уууух. пришло время костылей
define("AccountPageV2", ["TimezoneGenerator", "TimezoneMixin"], function() { return { entitySchemaName: "Account", mixins: { TimezoneMixin: "Terrasoft.TimezoneMixin" }, methods: { onEntityInitialized: function() { this.callParent(arguments); this.mixins.TimezoneMixin.init.call(this); }, onDetailChanged: function(detail) { this.callParent(arguments); if (detail.schemaName === "AccountAddressDetailV2") { this.updateTimezone(); } }, updateTimezone: function() { this.mixins.TimezoneMixin.init.call(this); }, setContactTimeConfig: function(accId, callback, scope) { //метод из TimeZoneMixin, его надо расковырять var func = function(contactTimeConfig) { var isValid = this.isConfigValid(contactTimeConfig); if (isValid) { this.set("ContactTimeConfig", contactTimeConfig); if (callback && this.Ext.isFunction(callback)) { callback.call(scope); } } else { this.log(Resources.localizableStrings.ContactTimeConfigInvalidFormatException, Terrasoft.LogMessageType.WARNING); } }; this.getAccountTimeZone(func, accId); }, getAccountTimeZone: function(callback, accId) { var esq = Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "AccountAddress"}); esq.addColumn("City.TimeZone.Name", "TZName"); esq.addColumn("City.TimeZone.Offset", "Offset"); esq.addColumn("City.Name", "CityName"); esq.filters.addItem(esq.createColumnFilterWithParameter(3, "Account", accId)); esq.getEntityCollection(function (result) { var info = result.collection.collection.items[0].values; //По-идее нужно лезть в кучу миксинов/утилит/хелперов с сервисами, но можно и так вытащить инфу по городу. Тут я беру 1 попавшийся из AccountAddress. Можно дополнить фильтрами var offset = info.Offset === "GMT" ? 0 : parseInt(info.Offset.split("GMT")[1].split(":")[0]); var time = new Date(new Date().getUTCFullYear(), new Date().getUTCMonth(), new Date().getUTCDate(), new Date().getUTCHours(), new Date().getUTCMinutes(), new Date().getUTCSeconds()); time.setUTCHours(time.getUTCHours() + offset); var contactTimeConfig = { equals: true, location: info.CityName, minutesOffset: offset*60, time: time, timeZone: info.TZName }; this.callback.call(this.scope, contactTimeConfig); }.bind({callback: callback, scope: this})); } }, diff: [ { "operation": "insert", "name": "TimeZoneContainer", "parentName": "AccountPhotoContainer", "propertyName": "items", "values": { "itemType": Terrasoft.ViewItemType.CONTAINER, "generator": "TimezoneGenerator.generateTimeZone", "wrapClass": ["timezone-container"], "visible": true, "timeZoneCaption": {"bindTo": "TimeZoneCaption"}, "timeZoneCity": {"bindTo": "TimeZoneCity"}, "tips": [] } } ]}; });
Ну и ещё надо навесить немного стилей (пр. убрать часы под контейнер с обогащение данных). Но мне лень)
21 марта 2017 13:41
Варфоломеев Данила, благодарю)
Дальше разберусь что да как.
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать