Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Выбор объекта
#1
Lightbulb 
Как сделать полноценное меню с выбором объекта?
   

Готовое решение:
1. Скачать файл objectSelector.html в медиабиблиотеку приложения
2. Поместить файл html в контейнер как обычно:  $('#id').load(baseSdkUtils.the.media_url + '/ objectSelector.html');
3. Выбранные объекты доступны в элементе: document.getElementById('objectSelectorResult').value

----------------
Теперь подробнее:
objectSelector.html

Код:
<div class="col-lg-12 col-md-12 col-sm-8 col-xs-8 input-group wn-float-left">
<span tabindex="-1" style="cursor:help; min-width: 35px; max-width: 35px;" class="input-group-addon" id="basic-addon__object_selector_" data-trigger="focus" data-container="body" data-toggle="popover" data-placement="top" title="" data-content="Список выбранных объектов, которые связаны с приложением" data-original-title="Список объектов">
<span class="glyphicon glyphicon-plane"></span>
</span>
<input id="objectSelectorResult" type="hidden" value="">
<input winnum-field-id="_object_selector_" id="selectedObjects" winnum-field-type="text_reference" type="text" class="form-control" aria-describedby="basic-addon__object_selector_" placeholder="" winnum-field-required="true" style="padding: 6px 12px; cursor: text !important;" disabled="" title="">
<span alt="Выбрать" title="Выбрать" onclick="javascript:
baseUtils.openWindow(
'/' + baseUtils.getValue('appId') + '/views/objects/select/appInstanceProductSelector.jsp?appid='+ window.location.href.split('appid=')[1] + '&amp;callerId=callBackFunction',
'',true,500,500
);
" style="cursor:pointer;" class="input-group-addon btn btn-success">
<span class="glyphicon glyphicon-filter" aria-hidden="true"></span>
</span>
<span alt="Отменить выбор" title="Отменить выбор" onclick="javascript:
        console.log(document.getElementById('objectSelectorResult').value);
        document.getElementById('selectedObjects').value='';
        document.getElementById('selectedObjects').setAttribute('title', '');
        document.getElementById('objectSelectorResult').value='';
        document.getElementById('selectedObjects_removeBtn').setAttribute('style','cursor:pointer; display:none;');
      " id="selectedObjects_removeBtn" style="cursor:pointer; display:none;" class="input-group-addon btn btn-danger">
    <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
</span>
<span style="cursor:help;" tabindex="-1" class="input-group-addon" id="basic-addon__object_selector_" data-trigger="focus" data-container="body" data-toggle="popover" data-placement="top" title="" data-content="Данное поле является обязательным для заполнения." data-original-title="Внимание - обязательное поле">
*
</span>
<script>
function callBackFunction(oids, count){
    if ( oids && count ){
        if ( count < 0 ){
            oids = '';
            count = 0;
        }
        document.getElementById('objectSelectorResult').value=oids;
        if ( count > 0 ){
            document.getElementById('selectedObjects').value = baseUtils.nls('Selected ') + count + baseUtils.nls(' objects');
        }else{
            document.getElementById('selectedObjects').value= baseUtils.nls('No objects selected');
        }
        document.getElementById('selectedObjects').setAttribute('title', document.getElementById('selectedObjects').value);
        document.getElementById('selectedObjects_removeBtn').setAttribute('style','cursor:pointer;');
    }
}
</script>
</div>


Скрипт в самом контейнере, можно прописать вызов html там же где и manifest.js, либо создать отдельный скрипт, уже без загрузки js:

Код:
$(window).ready(function(){
    loadResources();
});
function loadResources(){
    var oid = '';
    var appid = '';
    baseSdkUtils.the = {};
    baseSdkUtils.service.WNFactory.getPersistable(baseApplicationDesignerUtils.getAppid(), function(data){
        if ( !baseSdkUtils.isSuccess(data) ){
            alert('Error: ' + baseSdkUtils.decode(data.innerHTML));
            console.warn(baseSdkUtils.decode(data.innerHTML));
            return;
        }
        /******* Случай, когда код выполняется в приложении ******/
        if ( data.getElementsByTagName('item').length > 0 ){
            oid = data.getElementsByTagName('item')[0].getAttribute('ApplicationInfo__classNameA15');
            oid += ':';
            appid = data.getElementsByTagName('item')[0].getAttribute('ApplicationInfo__idA15');
            oid += appid;
        }
        /****** Случай, когда код выполняется в редакторе ********/
        else{
            oid = baseApplicationDesignerUtils.oid;
            appid = oid.split(':')[1];
        }
        /****** Создание структуры для хранения атрибутов ********/
            baseSdkUtils.the.appoid = baseApplicationDesignerUtils.getAppid();
            baseSdkUtils.the.appid = appid;
            baseSdkUtils.the.oid = oid;
            baseSdkUtils.the.media_url = '/' + baseSdkUtils.appId + '/resources/themes/current/images/app/ui/designer/media/' + appid + '/';       
        /**** Загрузка контента html в контейнер  myid **********/
            $('#myid').load(baseSdkUtils.the.media_url + '/ objectSelector.html');
        /**** Загрузка js ****************************************/
            jQuery.ajax({
                url: baseSdkUtils.the.media_url + 'manifest.js',
                dataType: 'script',
                success: function(){ loadResourcesProcessor(); },
                async: true
            });
    });
}
   


Hello World!:

- Сообщений не найдено.


Файлы вложений
.html   objectSelector.html (Размер: 3.31 KB / Загрузок: 4)
Ответ


Перейти к сообществу:


Пользователи, просматривающие эту тему: 1 Гость(ей)