Как сделать полноценное меню с выбором объекта?
Готовое решение:
1. Скачать файл objectSelector.html в медиабиблиотеку приложения
2. Поместить файл html в контейнер как обычно: $('#id').load(baseSdkUtils.the.media_url + '/ objectSelector.html');
3. Выбранные объекты доступны в элементе: document.getElementById('objectSelectorResult').value
----------------
Теперь подробнее:
objectSelector.html
Скрипт в самом контейнере, можно прописать вызов html там же где и manifest.js, либо создать отдельный скрипт, уже без загрузки js:
Hello World!:
- Сообщений не найдено.
Готовое решение:
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] + '&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!:
- Сообщений не найдено.

