Source: tracking/connector/WebAnalytics.js

(function() {
    /**
     * @augments Help4.jscore.ControlBase
     * @property {string} url
     * @property {string} token
     */
    Help4.tracking.connector.WebAnalytics = class extends Help4.jscore.ControlBase{
        /**
         * @override
         * @param {Help4.tracking.Tracking.Connector} params
         */
        constructor(params) {
            const {TYPES: T} = Help4.jscore.ControlBase;

            super(params, {
                params: {
                    url:   {type: T.string_null, readonly: true},
                    token: {type: T.string_null, readonly: true}
                }
            });
        }

        /**
         * @param {Help4.tracking.Tracking.Data} data
         * @returns {Promise<*>}
         */
        track({verb, object, context}) {
            const {url, token} = this;
            if (!url || !token) return Help4.Promise.resolve();

            const query = [
                'idsite=' + token,
                'custom11=' + verb.id,
                'custom12=' + context.id || '',
                'custom13=' + object.id || '',
                'custom14=' + object.language || '',
                'custom15=' + object.name || '',
                'custom16=' + object.objectType || '',
                'custom17=' + object.product || '',
                'custom18=' + object.screenId || '',
                'custom19=' + object.sessionId || '',
                'custom20=' + object.system || '',
                'custom21=' + object.version || ''
            ].join('&');

            return Help4.ajax.Ajax({url: url + '/log?' + query, promise: true});
        }
    }
})();