Qlik Sense - получить список пользовательских приложений и узнать текущего пользователя, вошедшего в систему

Я использую Qlik Sense Api, и я немного расстроен, так как документы Qlik очень сбивают с толку.

Итак, у меня есть три дела, которые мне нужно сделать.

  1. Получить текущего авторизованного пользователя.
  2. Получите список приложений для этого пользователя.
  3. Есть ли страница, на которой четко перечислены методы, доступные для аргумента (qlik), переданного в функции?

Спасибо

require(['js/qlik'], function (qlik) {
        // I need to get the current logged in user from here 
        // and also a list of apps this user can view                   
});

Обновлять:

// for getting the user this works like a charm
var global = qlik.getGlobal(config);
global.getAuthenticatedUser(function(reply){
    alert('User:'+reply.qReturn);
});

Для получения приложений был предложен следующий код. Я не уверен, чем они отличаются.

// This one is what I have found from trying various code snippets found in the documentation.
// This seems to work but there are errors when displaying the apps with the below code snippet.
qlik.getGlobal(self.config).getAppList(function(list) {console.log(list);});

// suggested snippet gives the following errors.
qlik.getAppList(function(list) {console.log(list);});

Error: "WebSocket connection to 'ws://localhost:8000/app/%3Ftransient%3D?reloadUri=http%3A%2F%2Flocalhost%3A8000%2F' failed: Connection closed before receiving a handshake response"

qlik.getGlobal(self.config).getAppList(function(list) {

ia.getList('sheet', function (reply) {

    $('#qlik-cont').append('<div id="div-' + key + '"></div>');

    var stop = setInterval(function(){

        ia.global.getProgress(ia.model.handle).then(function(progress)
        {
            console.log("DoReload progress", progress);
                });
            }, 100);

            ia.doReload().then(function(result){
                if (result) {
                    ia.getObject('div-' + key, reply.qInfo.qId);
                }
                else {
                    console.log('Reload failed');
                }
            })
            .finally(function(){
                clearInterval(stop);
            });
        });
    }
});

Приведенный выше код приводит к следующей ошибке «Недопустимая визуализация. Визуализация не найдена на сервере: лист»

Спасибо


person TheMan68    schedule 13.07.2017    source источник


Ответы (1)


Чтобы ответить на ваши вопросы:

1) Чтобы получить текущего аутентифицированного пользователя, используйте getAuthenticatedUser, например:

var global = qlik.getGlobal(config);
global.getAuthenticatedUser(function(reply){
    alert('User:'+reply.qReturn);
});

Ссылка: http://help.qlik.com/en-US/sense-developer/June2017/Subsystems/APIs/Content/CapabilityAPIs/GlobalAPI/getAuthenticatedUser-method.htm

2) Чтобы получить список приложений, используйте getAppList, например:

qlik.getAppList(function(list){
        var str = "";
        list.forEach(function(value) {
            str +=  value.qDocName + '('+ value.qDocId +') ';
        });
        alert(str);
    }
};

3) Вот список всех возможностей, которые вы можете использовать: http://help.qlik.com/en-US/sense-developer/June2017/Subsystems/APIs/Content/capability-apis-reference.htm

person Stefan Walther    schedule 16.07.2017
comment
Большое вам спасибо за это. Я попробую это сделать, и я дам вам знать, если это сработает. - person TheMan68; 17.07.2017
comment
Для пользовательской части это отлично сработало. Я обновил свой вопрос, чтобы вы могли его проверить. Спасибо - person TheMan68; 17.07.2017
comment
Я отметил это как ответ на почти весь свой вопрос. Если возможно, как вы думаете, сможете ли вы посмотреть на другую возникающую ошибку? Спасибо за помощь в этом вопросе. - person TheMan68; 17.07.2017