Вопрос

Caption кнопки

Приветы, есть аттрибуты

attributes: {
            "IsButtonVisible": {
                "dataValueType": Terrasoft.DataValueType.BOOLEAN,
                "value": false
            },
            "ButtonCaption": {
                "dataValueType": Terrasoft.DataValueType.TEXT,
                "value": "Test"
            }
        },

{
            "operation": "insert",
            "name": "bnBackCall",
            "parentName": "DataGrid",
            "propertyName": "activeRowActions",
            "index": 111,
            "values": {
                "className": "Terrasoft.Button",
                "style": Terrasoft.controls.ButtonEnums.style.GREY,
                "caption": "Позвонить",
                //"caption": { "bindTo": "ButtonCaption" },
                "tag": "tagBnBackCall"
            }
        },
                {
                    "operation": "merge",
                    "name": "DataGridActiveRowOpenAction", 
                    "values": {
                        "visible": { "bindTo": "IsButtonVisible" }
                    }
                },
        {
            "operation": "merge",
            "name": "DataGridActiveRowCopyAction", 
            "values": {
                //"visible": { "bindTo": "IsButtonVisible" }
                "caption": { "bindTo": "ButtonCaption" },
                //"caption": "12345",
            }
        },

Атрибут ButtonCaption не биндится к кнопке, она не видима, если задать конст то ок

Аттрибут IsButtonVisible биндится все ок к той же кнопке

Какое волшебство с caption как его менять у кнопки в rowSelected например, если атрибут не биндится

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

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

Эм. А ресурсы вам чем не угодили? Caption-ы лучше через них задавать.

Варфоломеев Данила,

У меня на кнопке должно выводится "Позвонить (номерЗвонка)" тут нет смысла в ресурсах тк динамический каптион в чистом виде. Сейчас зашито вот такое: 

rowSelected: function (Id) {
                this.logStep('rowSelected(' + Id + ') started!');
                this.readCallCount(Id);
                this.sleep(500);
                var itemId = '#SxCandidateSectionDataGridGrid-actions-item-' + Id;
                var jsRow = this.Ext.select(itemId);
                jsRow.elements[0].lastElementChild.previousElementSibling.innerText = this.getButtonCaption();
                //jsRow.select('span').item(6).dom.innerHTML = this.getButtonCaption();
                this.logStep('rowSelected(' + Id + ') finished!');
                //bn.setText(this.getButtonCaption());
                //bn.text = this.getButtonCaption();
                
            },

Как сделать нормально через атрибуты платформы или еще что-то из платформы?

QArt пишет:
Как сделать нормально

 Добавить в ресурсы 2 строчки. TemplateFormatString - "Позвонить {0}" и CallButtonCaption - ""

забиндить caption кнопки

"caption": {bindTo: "Resources.Strings.CallButtonCaption"}

И в любом месте в коде
 

var number = /*номер телефона*/;
this.set("Resources.Strings.CallButtonCaption", 
     Ext.String.format(this.get("Resources.Strings.TemplateFormatString"), number));

 

Варфоломеев Данила пишет:

QArt пишет:
Как сделать нормально

 Добавить в ресурсы 2 строчки. TemplateFormatString - "Позвонить {0}" и CallButtonCaption - ""

забиндить caption кнопки

<span><span>"caption"</span></span><span>:</span> <span>{</span>bindTo<span>:</span> <span><span>"Resources.Strings.CallButtonCaption"</span></span><span>}</span>

И в любом месте в коде
 


 
var number = /*номер телефона*/;
this.set("Resources.Strings.CallButtonCaption", 
     Ext.String.format(this.get("Resources.Strings.TemplateFormatString"), number));

Спасибо, буду пробовать.

Менять ресурс - норм практика - ок. В c# так не делал, надо будет попробовать :) Но тут не c#. 

Можете подсказать как определить является ли текущий юзар админом? Версия 7.11 онлайн сэйлз энтерпрайз

Попробовал следовать вашему совету, кнопка пропала (как и в случае с обычным атрибутом типа ТЕКСТ), не знаю что делаю не так. Но вот что написано:

Что делаю не так??? (Версия 7.11 онлайн сэйлз энтерпрайз) Заранее спасибо!

В консоли и БД вижу что все значения верные, вот только кнопки нет ((

{
            "operation": "insert",
            "name": "bnBackCall",
            "parentName": "DataGrid",
            "propertyName": "activeRowActions",
            "index": 111,
            "values": {
                "className": "Terrasoft.Button",
                "style": Terrasoft.controls.ButtonEnums.style.GREY,
                //"caption": "Позвонить",
                "caption": {bindTo: "Resources.Strings.rButtonCallCaption"},
                //"caption": { "bindTo": "ButtonCaption" },
                "tag": "tagBnBackCall"
            }
        },

 getButtonCaption: function()
            {
                var result = this.get("Resources.Strings.rButtonCallCaption");
                this.logStep('getButtonCaption = ' + result);
                return result;
            },
            
            setButtonCaption: function(callCount)
            {
                this.logStep('setButtonCaption(' + callCount + ') started!');
                var caption = 'Позвонить';
                if (callCount > 0)
                    caption += ' (' + callCount + ')';
                //this.set("ButtonCaption", caption);
                //this.logStep('setButtonCaption(' + callCount + ')');
                //this.logStep('getButtonCaption() = ' + this.getButtonCaption());
                this.set("Resources.Strings.rButtonCallCaption", caption);
                this.logStep('setButtonCaption has finished!');
            },

QArt,

у вас точно название в ресурсах такое как вы указываете 

http://prntscr.com/ilfjl6 ?

Попробуйте сделать как в примере http://prntscr.com/ilflfw

Demchenko Olha,

Спасибо за ответы, регистр точно совпадает и посимвольно тоже. Вроде js и c# регистрочувствительны и все такое. Может это в 7.11 версии кнопки мутировали :) Многое меняется, мне ребята скидывали функцию по определению админ текущий пользователь или нет, но у них более ранние версии и у меня таких столбцов в бд просто нет, хотя таблица с таким именем есть. Может подобную функцию добавят в число стандартных? Или вынесут массив ролей текущего пользователя на клиента, гуид же доступен. Еще пожелание делать синхронные запросы, не только асинхронные (чтобы можно было указать). Есть норм книга? Еще раз спасибо, хороших выходных.

QArt,

Есть стандартные константы в схеме ConfigurationConstants и там присутствует id сисадминов - http://prntscr.com/im7k0g

Получить id сисадмина можно так: ConfigurationConstants.SysAdminUnit.Id.SysAdministrators

Остаётся получить id текущего пользователя, например this.Terrasoft.SysValue.CURRENT_USER.value, и определить его роли из таблици SysUserInRole.

Потом проверить есть ли среди полученных ролей роль сисадмина. Пример работы с SysUserInRole из коробки - http://prntscr.com/im7y7o

Все примеры по версии 7.11

Спасибо! Еще бы книгу нормальную, как настроить WebStorm чтобы он подтянул платформу? А то от него пользы, если править замещенный клиентский модуль только как от "модного блокнота". Заранее спасибо.

QArt,

В WebStorm вы можете работать со всеми js файлами посли их выгрузки. При этом должны подтягиваться все переменные\методы и т.д. А если вы скачиваете отдельно файл и открываете его, то конечно это будет как "блокнот".

Demchenko Olha,

Помогите начать разработку. С бэкенда, но js знаю тк фулстек. Но поиск по всем js файлам в папке сайта, не нашлось функции из 

https://prnt.sc/im7y7o к слову. Как выгрузить все файлы для нормальной разработки в WebStorm??? (взять из папки сайта на сервере)

У нас erp enterprise 7.11 on site install.

Что делаю не так?? Можно алгоритм для начала нормальной разработки?? бОльшое спасибо, заранее!

QArt,

По всем схемам вы можете искать и в браузере - 

http://prntscr.com/in5nri

Касательно начала разработки, можете ознакомиться со статьей - https://academy.terrasoft.ru/documents/technic-sdk/7-11/rabota-s-klient…

Demchenko Olha,

Спасибо, но искать по всем сборкам пробовал (ctrl+shift+f) у нас не нашлось. Вот скрин - https://prnt.sc/in6qd6 

Работать из файловой системы буду пробовать уже завтра, спасибо!

 

QArt,

Откройте панель уведомлений и попробойте ещё раз. Ну или откройте схему CtiPanel в конфигурации и посмотрите там код.

Demchenko Olha,

Спасибо, пробовал искать ctiPanel в веб интерфейсе и открывал все схемы, которые нашла платформа и нигде нет - это было вчера. Сегодня начал пробовать "работать из файловой системы" и получил https://prnt.sc/inl1yd - это после правки web.config согласно - https://academy.terrasoft.ru/documents/technic-sdk/7-11/razrabotka-v-fa… права на папку IIS юзарам дали - полный доступ. Что я не так делаю?

QArt,

Напишите в поддержку по этому поводу.

Demchenko Olha,

Привет, как в нее писать? им достаточно будет ссылки на нашу переписку?

QArt,

Напишите на support@bpmonline.com, опишите проблему и приложите скрины.

Demchenko Olha,

Спасибо! С праздником - 

https://www.graziosgeles.lt/wp-content/uploads/2016/10/raudona-puokste… 

QArt, воспроизведите ошибку еще раз, после направьте в поддержку полные логи приложения. Сохраняются они на веб-сервере по пути C:\Windows\Temp\BPMonline\Site_ID

QArt пишет:

Demchenko Olha,

Спасибо, пробовал искать ctiPanel в веб интерфейсе и открывал все схемы, которые нашла платформа и нигде нет - это было вчера. Сегодня начал пробовать "работать из файловой системы" и получил https://prnt.sc/inl1yd - это после правки web.config согласно - https://academy.terrasoft.ru/documents/technic-sdk/7-11/razrabotka-v-fa… права на папку IIS юзарам дали - полный доступ. Что я не так делаю?

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