(function() {
/**
* @typedef {Object} Help4.widget.learning.Data.Params
* @property {Help4.widget.learning.Widget} widget - the owner widget
* @property {Help4.widget.learning.Backend} backend - the corresponding backend connector
*/
/**
* Data handler for learning widget.
* @augments Help4.jscore.DataBase
* @property {boolean} showLearningCenter - whether the learning center shall be shown
* @property {string} learningCenterUrl - URL to external learning center
* @property {string} learningAppCommunityUrl - URL to learning community
* @property {Help4.jscore.DataContainer} assets - container of learning assets
* @property {Help4.widget.learning.Widget} __widget
* @property {*} __backend - see {@link Help4.widget.learning.Backend}
*/
Help4.widget.learning.Data = class extends Help4.jscore.DataBase {
/**
* @override
* @param {Help4.widget.learning.Data.Params} params
*/
constructor(params) {
/** @returns {Help4.typedef.SystemConfiguration} */
const getConfig = () => this.__widget.getContext().configuration;
/** @returns {Help4.typedef.LearningConfiguration} */
const getLearningConfig = () => getConfig().learning;
/** @type {Help4.jscore.ControlBase.Types} */
const T = Help4.jscore.DataBase.TYPES;
super(params, {
params: {
widget: {type: T.instance, mandatory: true, private: true, readonly: true},
backend: {type: T.instance, mandatory: true, private: true, readonly: true}
},
data: {
showLearningCenter: {type: T.boolean, retrieve: {onInitialize: true}},
learningCenterUrl: {type: T.string_null, retrieve: {onInitialize: true}},
learningAppCommunityUrl: {type: T.string_null, retrieve: {onInitialize: true}},
assets: {type: T.dataContainer, retrieve: {onInitialize: true, onUpdate: true}}
},
retrieve: {
/** @returns {boolean} */
showLearningCenter: () => getLearningConfig().showLearningCenter,
/** @returns {string|null} */
learningCenterUrl: () => getLearningConfig().learningCenterUrl,
/** @returns {string|null} */
learningAppCommunityUrl: () => getLearningConfig().learningAppCommunityUrl,
/** @returns {Promise<Array<Help4.widget.learning.Asset>>} */
assets: () => this.__backend.getAssets(getConfig())
}
});
}
}
})();