tao-test/app/taoMediaManager/views/js/previewer/proxy/qtiSharedStimulusItem.js

98 lines
3.4 KiB
JavaScript

/**
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; under version 2
* of the License (non-upgradable).
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* Copyright (c) 2020 (original work) Open Assessment Technologies SA ;
*/
/**
* Test runner proxy for the QTI item previewer
*
* @author Hanna Dzmitryieva <hanna@taotesting.com>
*/
define([
'jquery',
'lodash',
'i18n',
'core/promiseQueue',
'core/dataProvider/request',
'util/url',
'taoMediaManager/qtiCreator/helper/createDummyItemData'
], function ($, _, __, promiseQueue, request, urlUtil, creatorDummyItemData) {
'use strict';
const serviceController = 'SharedStimulus';
const serviceExtension = 'taoMediaManager';
/**
* QTI proxy definition
* Related to remote services calls
* @type {Object}
*/
return {
name: 'qtiSharedStimulusItemProxy',
/**
* Installs the proxy
*/
install: function install() {
/**
* A promise queue to ensure requests run sequentially
*/
this.queue = promiseQueue();
},
/**
* Initializes the proxy
* @returns {Promise} - Returns a promise. The proxy will be fully initialized on resolve.
* Any error will be provided if rejected.
*/
init: function init() {
// the method must return a promise with Object
return Promise.resolve({});
},
/**
* Uninstalls the proxy
* @returns {Promise} - Returns a promise. The proxy will be fully uninstalled on resolve.
* Any error will be provided if rejected.
*/
destroy: function destroy() {
// no request, just a resources cleaning
this.queue = null;
// the method must return a promise
return Promise.resolve();
},
/**
* Gets an item definition by its identifier, also gets its current state
* @param {String} identifier - The identifier of the sharedStimulus to get
* @returns {Promise} - Returns a promise. The item data will be provided on resolve.
* Any error will be provided if rejected.
*/
getItem: function getItem(identifier) {
return request(urlUtil.route('get', serviceController, serviceExtension), { id: identifier }, 'GET').then(
function (data) {
const itemData = creatorDummyItemData(data);
data.baseUrl = urlUtil.route('getFile', 'MediaManager', 'taoMediaManager', { uri: '' });
data.content = {
type: 'qti',
data: itemData
};
return data;
}
);
}
};
});