Вопрос

Коллеги, добрый день!

Реализовал кастомную кнопку закрытия обращения с выпадающим меню. Но никак не могу найти, как установить цвет выпадающих кнопок. Мне необходимо все 5-кнопок сделать разными цветами. 

. 

 

А так же интересует каким образом можно добавить для выпадающей кнопки Значок, по аналогии с кнопкой "Экспорт в Excel" в меню "Действия"?

Спасибо!

У меня такой же вопрос

3 комментария

Добрый день

Чтобы реализовать раскраску цветами, то:

1. Каждое меню должно быть уникальное

2. Добавить css стиль

К примеру, у меня есть 2 пункта меню. Чтобы я мог реализовать корректный selector, то мне нужно их как-то назвать. Поэтому, в методе, где формируется menuItem я явно буду указывать Id этого меню. После чего можно будет писать что-то типа:

#myMenuItem {
    background-color: green;
}

 

Теперь по значкам.

Как вы сами заметили, что хотите добавить значок по аналогии, то вам и нужно сделать по аналогии :). Вот как это сделано в BaseSection

Артем Гура,

Спасибо, но не совсем понято как указать id каждого из меню в методе.

Вот мой метод:

getCustomCloseActions: function() {
 
	self = this;
	var actionMenuItems = Ext.create("Terrasoft.BaseViewModelCollection");
		actionMenuItems.addItem(this.getButtonMenuItem({
			"Tag": "5",
			"Caption": "Закрыть с оценкой 5",
			"Click": {bindTo: "OnCustomClosedButtonMenuClick"}
		}));
		actionMenuItems.addItem(this.getButtonMenuItem({
			"Tag": "4",
			"Caption": "Закрыть с оценкой 4",
			"Click": {bindTo: "OnCustomClosedButtonMenuClick"}
		}));
		actionMenuItems.addItem(this.getButtonMenuItem({
			"Tag": "3",
			"Caption": "Закрыть с оценкой 3",
			"Click": {bindTo: "OnCustomClosedButtonMenuClick"}
		}));
		actionMenuItems.addItem(this.getButtonMenuItem({
			"Tag": "2",
			"Caption": "Закрыть с оценкой 2",
			"Click": {bindTo: "OnCustomClosedButtonMenuClick"}
		}));
		actionMenuItems.addItem(this.getButtonMenuItem({
			"Tag": "1",
			"Caption": "Закрыть с оценкой 1",
			"Click": {bindTo: "OnCustomClosedButtonMenuClick"}
		}));
	self.set("CloseButtonMenuItems", actionMenuItems);
 
},

 

Обратите внимание на метод getButtonMenuItem: как он работает по умолчанию, и как он работает, например в BaseSection.

Особенно то, как формируется значок Excel и как генерируется Id.

А дальше сделать всё по аналогии.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Добрый день!
Столкнулся с такой проблемой:
При попытке раскрасить грид (LeadSection, переопределил onLoadData) новые стили (customStyle) успешно применяются только к первой видимой выборке в 15 записей, остальные же при прокрутке имеют дефолтный фон. Подскажите как решить эту проблему?
Версия 7.2

У меня такой же вопрос

5 комментариев

Иван, добрый день!

Предоставьте, пожалуйста, примеры Вашей реализации для анализа проблемы.

Ок, прикреплен файл с кодом секции..
В коде (метод loadSelect) увеличен объем выборки данных до 500, как временное решение.

Добрый день!

Для решения задачи следует переопределить два метода - «onLoadData» и «loadGridCollectionItems». Пример кода во вложении.
examplesolution.txt

Спасибо, но такой подход решает проблему порождая другую. В методе "loadSelect" добавлены фильтры по ответственному и статусу лида для определенной роли. При переопределении метода «loadGridCollectionItems» этот фильтр перестает отрабатывать...

Спс, проблема решилась (фильтры убрал, сделал БП права на запись).

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Здравствуйте.

Пытаюсь реализовать задачу, изменить цвет активностей (на оранжевый), если у активности высокий приоритет.
Переопределил метод prepareResponseCollection:
prepareResponseCollection: function(collection) {
var highPriorityId = "D625A9FC-7EE6-DF11-971B-001D60E938C6";
this.callParent(arguments);
var colour = "#F94D00";
collection.each(function(item) {
if (item.get("PriorityId") === highPriorityId) {
item.customStyle = {
background: colour
};
item.set("Background", colour);
}
}, this);
}

Если без ифа, то цвет меняют все активности.
С ифом не работает(цвет не меняется).
Подскажите, что неправильно (подозрение на item.get("PriorityId") )?

У меня такой же вопрос

9 комментариев

Алексей, добрый день!

Попробуйте в сравнении использовать item.get("Priority").value - в активностях поле "Приоритет" типа "Справочник".

При использовании item.get("Priority").value страница активностей перестала отображаться вообще (Загрузка, не прекращается, не загружает)

Попробуйте

var priority = item.get("Priority");
if (!this.Ext.isEmpty(priority) && (priority.value === highPriorityId)) {
...
}

Возможно, не для всех активностей установлен приориет.

Теперь страница отображается, но цвет активностей с высоким приоритетом не меняется.
По всей видимости, дело не в этом.
Также проверил, приоритет проставлен для всех активностей.

Алексей, Вы добавляли поле "Priority" в атрибуты схемы?

attributes: {
	...
	"Priority": {
		dataValueType: Terrasoft.DataValueType.LOOKUP
	}
}

Также попробуйте включить отладчик, установить точку остановки в момент проверки условия и проверить значение переменной priority в этот момент.

в priority - undefined.
Вот код:
define("ActivitySectionV2", ["ConfigurationConstants", "FieldForceConfigurationConstants"],
function(ConfigurationConstants, FieldForceConfigurationConstants) {
return {

entitySchemaName: "Activity",
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
attributes: {
"Priority": {
dataValueType: Terrasoft.DataValueType.LOOKUP
}
},

methods: {
prepareResponseCollection: function(collection) {
var highPriorityId = "D625A9FC-7EE6-DF11-971B-001D60E938C6";
this.callParent(arguments);
var colour = "#F94D00";
collection.each(function(item) {
var priority = item.get("Priority");
debugger;
if ((!this.Ext.isEmpty(priority)) && (priority.value === highPriorityId)) {

item.customStyle = {
background: colour
};
item.set("Background", colour);
}
}, this);
}
},
diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
};
});

Скриншот

Алексей, Вы хотите реализовать данный функционал в расписании активностей? Дело в том, что в режиме расписания доступны не все колонки схемы Activity, а только некоторые. Для получения значения поля "Приоритет" активности необходимо добавить соответствующую колонку в запрос.

Попробуйте для начала вместо item.get("Priority") подставить item.get("Status"). Если значение будет отличаться от undefined, переопределите схему ActivitySectionV2, добавив в список колонок метода getGridDataColumns колонку "Priority".

Здравствуйте, Олег.
Действительно, после подставки item.get("Status") - priority получила значение.
После переопределения метода getGridDataColumns и добавления в него колонки "Priority" все заработало.
Спасибо Вам за консультацию.

Войдите или зарегистрируйтесь, чтобы комментировать

Здравствуйте!
Есть следующая задача:
В зависимости от условий в реестре раздела поле отображается либо зеленым, либо красным цветом.

Как можно реализовать данный функционал?

У меня такой же вопрос

6 комментариев

Добрый день!

Ниже приведу алгоритм примера реализации, как сделать, чтобы была подсветка записей реестра если у продажи на объекте поле IsNotInterest = true:

1. Создаем метод gridRecolor

gridRecolor: function () {
   var gridData = this.getGridData();
   var items = gridData.getItems();
   var loadedObject = {};
   Terrasoft.each(items, function (item) {
      item.customStyle = null;
      var facilityId = item.get("Facility").value;
      var opportunityId = item.get("Opportunity").value;
      var isNotInterest = item.get("IsNotInterest");
      //Если условие подходит, меняем цвет записи на темно-серый.
      if (isNotInterest) {
         item.customStyle = {
           'color' : "darkgrey"
         }
      }
      var primaryValue = item.get(item.primaryColumnName);
      //Формируем новый набор данных уже с подсветкой
      loadedObject[primaryValue] = item;
   }, this);
   gridData.clear();
   //загружаем новый набор данных
   gridData.loadAll(loadedObject);
},

2. Замещаем метод onGridDataLoaded, добавив в него вызов gridRecolor

onGridDataLoaded: function () {
   this.callParent(arguments);
   this.gridRecolor();
},

3. Profit!

Дмитрий, ваш пример работает, но мне нужно изменить цвет не у всей записи, а конкретно проверяемой колонки.

"Пащенко Александр Сергеевич" написал:

Дмитрий, ваш пример работает, но мне нужно изменить цвет не у всей записи, а конкретно проверяемой колонки.

Для колонки данную функциональность невозможно реализовать на уровне пользователя системы.
Необходимо переделывать базовую логику приложения (ядро).

Добрый день!

Дмитрий, такая функция выделяет нужным цветом текстовое содержимое полей. Скажите пожста, а можно ли выделять цветом не текст, а целый ряд(фон), который соответствует записи? Вот так:

 

Добрый день!

Такая реализация выделяет цветом текстовое содержимое записи. А можно сделать так, чтобы выделялась цветом весь ряд/запись как фон указанного цвета?

Есть бесплатное дополнение Records color highlighting.

Войдите или зарегистрируйтесь, чтобы комментировать
Идея
В связи с появлением ссылок в 7.5 в карточке стало слишком много синего цвета.Чтобы визуально отделять данные-ссылки от заголовков деталей и групп полей, предлагаю последним сменить цвет с синего на какой-то другой
Ревью
1 комментарий

Спасибо, что помогаете нам развивать и улучшать наши продукты. Ваша идея принята для анализа аналитиками проектного офиса и будет рассмотрена возможность ее реализации в одной из последующих версий программного продукта…

Войдите или зарегистрируйтесь, чтобы комментировать
Публикация

Рассмотрим пример, как можно легко и просто поменять css-стили в bpm'online.
Например, нам необходимо изменить цвет левой панели с разделами.
Большинство css-стилей в bpm'online 7.3 и выше вынесены в отдельный модуль - CommonCSSV2. Кроме стилей в нем ничего нет, поэтому его легко заместить, чтобы поменять какие-либо из базовых стилей.
Для того, чтобы понять, какие стили применяются к тем или иным компонентам можно воспользоваться консолью браузера и сразу попробовать применить другие стили:

Попробуем изменить цвет:

Уже неплохо, но хотелось бы также поменять и цвета элементов списка. Вот они:

Итак, определились, какие css-классы нужно менять:

.ts-sidebar-list {
         background-color: #357C29;
}
.left-panel {
         background-color: #357C29;
}

Несмотря на то, что некоторые классы определены не в CommonCSSV2:

мы все равно можем переопределить их там же.

Стили определены на вкладке LESS модуля. Вот класс .left-panel, который нужно переопределить:

Итак, мы добавляем замещающий клиентский модуль для CommonCSSV2 в конфигурации в пользовательском пакете:

Сохраняем и переоткрываем. Теперь там появилась вкладка LESS. Первым делом копируем туда весь код из базового модуля:

Добавляем в конец

.ts-sidebar-list {
         background-color: #357C29;
}
.left-panel {
         background-color: #357C29;
}

Сохраняем (публикуем). Возвращаемся к пользовательскому интерфейсу, чистим кэш и перезагружаем страницу:

Поделиться

2 комментария

Здравствуйте, скажите пожалуйста как найти этот LESS модуль в настройках? Версия 7.4.1

Антон, добрый день!

модуль называется CommonCSSV2. А LESS это таблица стилей.
Открываете в конфигурации объект "CommonCSSV2" (Рис. 1).

И в самом объекте есть вкладка "LESS".

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Добрый день!

Подскажите, пожалуйста, как поменять цвет текста заголовка столбца реестра, и, соответственно, фон всего столбца?

Спасибо!

У меня такой же вопрос

4 комментария

цвет столбца
цвет заголовка?.. не думаю

Оп, действительно столбец легко менять, странно что не заметил.

А цвет текста заголовка может все-таки можно как-то программно поменять?

Добрый день, коллеги.

По столбцам менять цвет/шрифт объект грида не позволяет. Можно только по срокам и/или ячейкам.
Свойство Color интерфейса IDataGridColumn позволяет задавать цвет текста в ячейке по умолчанию, но доступа к изменению цвету заголовка таблицы, к сожалению, нет.

Все понял, спасибо!

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Возможно ли изменить цвет элемента формы NumericEdit?

У меня такой же вопрос

2 комментария

Да, об этом писал Лучкив Александр в своем блоге

ясно, значит обновляться надо

Войдите или зарегистрируйтесь, чтобы комментировать
Публикация

Для того, чтобы на детали «Контакты» раздела «Контрагенты» основной контакт был выделен жирным шрифтом, Вам необходимо выполнить следующие действия:

1. Запустить TS Admin под пользователем с правами администратора;
2. Открыть сервис скрипта scr_ContactsInAccountGridArea;
3. Найти в этом скрипте функцию grdDataOnGetRowDrawInfo и добавить в нее фрагмент

         var dsAccount = Services.GetNewItemByUSI('ds_Account');
         var CurrentAccountID = BaseGridArea.GridDataset.Values('AccountID');
         ApplyDatasetFilter(dsAccount, 'ID', CurrentAccountID, true);
         dsAccount.Open();
         var MainContact = dsAccount.Values('PrimaryContactID');
         dsAccount.Close();
         if (MainContact == BaseGridArea.GridDataset.Values('ContactID')) {
                   Font.bold = true;
         }

как показано на скриншоте:

/system/files/3_18.png

Сохраните изменения.

4. Откройте сервис sq_ContactInAccount, установите фокус на колонку AccountID и установите флаг «Всегда выбирать в запросе»:

/system/files/4_13.png

Сохраните изменения.

Перезапустите TS Client для проверки функционала:

/system/files/fin.png

Поделиться

0 комментариев
Войдите или зарегистрируйтесь, чтобы комментировать
Публикация

Коллеги, многие из вас знают о моем увлечении пользовательскими интерфейсами.

Спешу сообщить вам о новых возможностях отображения элементов управления в версии 3.4.0.
В новой версии разработчику предоставлен свободный выбор цвета текста, цвета фона, шрифта и цвета заголовка элементов управления. Добавлены также возможности выделять другим шрифтом и цветом фона каждую вкладку PageControl.

Это дает возможность разработчику делать карточки (любые другие окна) более функциональными, выделяя важные элементы или реализуя дополнительную логику.
Кроме того, актуальными остаются возможности, описанные в моей предыдущей статье о возможностях кастомизации контролов

Давайте рассмотрим на примере.
Вот пример доработанной карточки Инцидента:
Карточка Инцидента

Как видим на скриншоте, одна из вкладок карточки и несколько полей ввода выделены для привлечения внимания пользователя.
Как это реализовано:

/* Сделаем поле "Признаки (Симптомы)" cо светло-зеленым фоном (свойство Color) и темно-зеленым цветом (свойство TextColor) текста */
  edtSynopsis.Color = clMoneyGreen;
  edtSynopsis.TextColor = clGreen;

/* Светло-голубой фон для поля "Контакт" */
  edtContact.Color = clSkyBlue;

/* Выделим поле "Продажа" */
  edtOpportunityID.Color = clYellow;
  edtOpportunityID.TextColor = clTeal;

/* Выделим вкладку "Разрешение и оценка" ActiveCaptionColor - цвет текста вкладки, когда она активна;
ActiveFont - шрифт вкладки, когда она активна */

  pgResolution.ActiveCaptionColor = clYellow;
  pgResolution.ActiveFont.Bold = true; 

/* HotCaptionColor - цвет текста вкладки, при наведении указателя мыши;
HotFont - шрифт вкладки, при наведении указателя мыши */
 
  pgResolution.HotCaptionColor = clWhite;      
  pgResolution.HotFont.Bold = true;
  pgResolution.HotFont.Underline = true;       

/* RegularCaptionColor - цвет текста вкладки в обычном режиме - она не активная в данный момент;
HotFont - шрифт вкладки в обычном режиме */

  pgResolution.RegularCaptionColor = clBlue;
  pgResolution.RegularFont.Bold = true;

Свойства по изменению фона поля ввода и цвета текста в поле ввода применимы ко всем элементам управления, которые содержат поле текстового ввода (Edit, ComboBox, EnumControl, Memo, LookupControl и др., а также соответствующие им Data-контролы).

Теперь вы ознакомлены с новыми возможностями контролов и вам решать как их можно использовать.

Приведу несколько возможных применений:
1. Выделение важных элементов карточки
2. Контроль ввода значений в обязательные поля. В примере ниже пользователю будет сразу видно какие из обязательных полей не заполнены (например выделить их красным) а какие заполнены неправильно (темно-оранжевым)
Выделение ошибок заполнения контролов

При вводе значений в такие поля можно сразу с помощью выделения цветом показывать пользователю корректно ли введена информация. Такой подход повсеместно используется в веб-интерфейсах.

Думаю многим будут полезны новые возможности.
Приятной разработки! :wink:

Поделиться

5 комментариев

Один вопрос - когда же выйдет версия 3.4? :smile:

"Валерий Андрусик" написал:Один вопрос - когда же выйдет версия 3.4?

Вопрос Валерия весьма актуален.

Коллеги, версия 3.4 выйдет в 1-й половине июля

А можно поменять цвет поля и шрифта(серый) для поля, недоступного для редактирования?

Для поля, у которого в датасете установлено свойство Read Only можно переопределить цвет шрифта (начиная с версии 3.4.1 в окне свойств компонента окна, в версиях ниже - скриптом). Для контрола, у которого установлено свойство IsEnabled = false - переопределить цвет нет возможности.

Войдите или зарегистрируйтесь, чтобы комментировать