قرینه از
https://github.com/matomo-org/matomo.git
synced 2025-08-22 15:07:44 +00:00
![dependabot[bot]](/assets/img/avatar_default.png)
* [NPM] Bump the all-dependencies group across 1 directory with 18 updates Bumps the all-dependencies group with 17 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@types/jquery](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jquery) | `3.5.6` | `3.5.32` | | [@types/jqueryui](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jqueryui) | `1.12.16` | `1.12.24` | | [jquery-ui-dist](https://github.com/jquery/jquery-ui) | `1.13.2` | `1.13.3` | | [sprintf-js](https://github.com/alexei/sprintf.js) | `1.1.2` | `1.1.3` | | [vue](https://github.com/vuejs/core) | `3.2.6` | `3.2.47` | | [@types/materialize-css](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/materialize-css) | `1.0.11` | `1.0.14` | | [@types/mousetrap](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/mousetrap) | `1.6.8` | `1.6.15` | | [@vue/cli-plugin-babel](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-babel) | `4.5.13` | `4.5.19` | | [@vue/cli-plugin-eslint](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-eslint) | `4.5.13` | `4.5.19` | | [@vue/cli-plugin-typescript](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-typescript) | `4.5.13` | `4.5.19` | | [@vue/cli-plugin-unit-jest](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-unit-jest) | `4.5.13` | `4.5.19` | | [@vue/cli-service](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-service) | `4.5.13` | `4.5.19` | | [abortcontroller-polyfill](https://github.com/mo/abortcontroller-polyfill) | `1.7.3` | `1.7.8` | | [babel-loader](https://github.com/babel/babel-loader) | `8.2.2` | `8.2.5` | | [dompurify](https://github.com/cure53/DOMPurify) | `3.2.4` | `3.2.5` | | [husky](https://github.com/typicode/husky) | `8.0.2` | `8.0.3` | | [less](https://github.com/less/less.js) | `4.1.2` | `4.1.3` | Updates `@types/jquery` from 3.5.6 to 3.5.32 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jquery) Updates `@types/jqueryui` from 1.12.16 to 1.12.24 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jqueryui) Updates `jquery-ui-dist` from 1.13.2 to 1.13.3 - [Release notes](https://github.com/jquery/jquery-ui/releases) - [Commits](https://github.com/jquery/jquery-ui/compare/1.13.2...1.13.3) Updates `sprintf-js` from 1.1.2 to 1.1.3 - [Changelog](https://github.com/alexei/sprintf.js/blob/master/CHANGELOG.md) - [Commits](https://github.com/alexei/sprintf.js/compare/1.1.2...1.1.3) Updates `vue` from 3.2.6 to 3.2.47 - [Release notes](https://github.com/vuejs/core/releases) - [Changelog](https://github.com/vuejs/core/blob/v3.2.47/CHANGELOG.md) - [Commits](https://github.com/vuejs/core/compare/v3.2.6...v3.2.47) Updates `@types/materialize-css` from 1.0.11 to 1.0.14 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/materialize-css) Updates `@types/mousetrap` from 1.6.8 to 1.6.15 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/mousetrap) Updates `@vue/cli-plugin-babel` from 4.5.13 to 4.5.19 - [Release notes](https://github.com/vuejs/vue-cli/releases) - [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md) - [Commits](https://github.com/vuejs/vue-cli/commits/v4.5.19/packages/@vue/cli-plugin-babel) Updates `@vue/cli-plugin-eslint` from 4.5.13 to 4.5.19 - [Release notes](https://github.com/vuejs/vue-cli/releases) - [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md) - [Commits](https://github.com/vuejs/vue-cli/commits/v4.5.19/packages/@vue/cli-plugin-eslint) Updates `@vue/cli-plugin-typescript` from 4.5.13 to 4.5.19 - [Release notes](https://github.com/vuejs/vue-cli/releases) - [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md) - [Commits](https://github.com/vuejs/vue-cli/commits/v4.5.19/packages/@vue/cli-plugin-typescript) Updates `@vue/cli-plugin-unit-jest` from 4.5.13 to 4.5.19 - [Release notes](https://github.com/vuejs/vue-cli/releases) - [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md) - [Commits](https://github.com/vuejs/vue-cli/commits/v4.5.19/packages/@vue/cli-plugin-unit-jest) Updates `@vue/cli-service` from 4.5.13 to 4.5.19 - [Release notes](https://github.com/vuejs/vue-cli/releases) - [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md) - [Commits](https://github.com/vuejs/vue-cli/commits/v4.5.19/packages/@vue/cli-service) Updates `@vue/compiler-sfc` from 3.2.6 to 3.2.47 - [Release notes](https://github.com/vuejs/core/releases) - [Changelog](https://github.com/vuejs/core/blob/v3.2.47/CHANGELOG.md) - [Commits](https://github.com/vuejs/core/commits/v3.2.47/packages/compiler-sfc) Updates `abortcontroller-polyfill` from 1.7.3 to 1.7.8 - [Commits](https://github.com/mo/abortcontroller-polyfill/compare/v1.7.3...v1.7.8) Updates `babel-loader` from 8.2.2 to 8.2.5 - [Release notes](https://github.com/babel/babel-loader/releases) - [Changelog](https://github.com/babel/babel-loader/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel-loader/compare/v8.2.2...v8.2.5) Updates `dompurify` from 3.2.4 to 3.2.5 - [Release notes](https://github.com/cure53/DOMPurify/releases) - [Commits](https://github.com/cure53/DOMPurify/compare/3.2.4...3.2.5) Updates `husky` from 8.0.2 to 8.0.3 - [Release notes](https://github.com/typicode/husky/releases) - [Commits](https://github.com/typicode/husky/compare/v8.0.2...v8.0.3) Updates `less` from 4.1.2 to 4.1.3 - [Release notes](https://github.com/less/less.js/releases) - [Changelog](https://github.com/less/less.js/blob/master/CHANGELOG.md) - [Commits](https://github.com/less/less.js/compare/v4.1.2...v4.1.3) --- updated-dependencies: - dependency-name: "@types/jquery" dependency-version: 3.5.32 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: "@types/jqueryui" dependency-version: 1.12.24 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: jquery-ui-dist dependency-version: 1.13.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: sprintf-js dependency-version: 1.1.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: vue dependency-version: 3.2.47 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: "@types/materialize-css" dependency-version: 1.0.14 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: "@types/mousetrap" dependency-version: 1.6.15 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: "@vue/cli-plugin-babel" dependency-version: 4.5.19 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: "@vue/cli-plugin-eslint" dependency-version: 4.5.19 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: "@vue/cli-plugin-typescript" dependency-version: 4.5.19 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: "@vue/cli-plugin-unit-jest" dependency-version: 4.5.19 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: "@vue/cli-service" dependency-version: 4.5.19 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: "@vue/compiler-sfc" dependency-version: 3.2.47 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: abortcontroller-polyfill dependency-version: 1.7.8 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: babel-loader dependency-version: 8.2.5 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: dompurify dependency-version: 3.2.5 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: husky dependency-version: 8.0.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: all-dependencies - dependency-name: less dependency-version: 4.1.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: all-dependencies ... Signed-off-by: dependabot[bot] <support@github.com> * Update babel.config.js * remove unneeded push target * Improve handling of password confirmation overlay * Improve handling of setting super user permission * fix failing UI test * Update npm dependencies * Build vue files --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Stefan Giehl <stefan@matomo.org> Co-authored-by: innocraft-automation <innocraft-automation@users.noreply.github.com>
785 خطوط
32 KiB
JavaScript
Generated
785 خطوط
32 KiB
JavaScript
Generated
(function webpackUniversalModuleDefinition(root, factory) {
|
|
if(typeof exports === 'object' && typeof module === 'object')
|
|
module.exports = factory(require("CoreHome"), require("vue"), require("CorePluginsAdmin"));
|
|
else if(typeof define === 'function' && define.amd)
|
|
define(["CoreHome", , "CorePluginsAdmin"], factory);
|
|
else if(typeof exports === 'object')
|
|
exports["SegmentEditor"] = factory(require("CoreHome"), require("vue"), require("CorePluginsAdmin"));
|
|
else
|
|
root["SegmentEditor"] = factory(root["CoreHome"], root["Vue"], root["CorePluginsAdmin"]);
|
|
})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__19dc__, __WEBPACK_EXTERNAL_MODULE__8bbf__, __WEBPACK_EXTERNAL_MODULE_a5a2__) {
|
|
return /******/ (function(modules) { // webpackBootstrap
|
|
/******/ // The module cache
|
|
/******/ var installedModules = {};
|
|
/******/
|
|
/******/ // The require function
|
|
/******/ function __webpack_require__(moduleId) {
|
|
/******/
|
|
/******/ // Check if module is in cache
|
|
/******/ if(installedModules[moduleId]) {
|
|
/******/ return installedModules[moduleId].exports;
|
|
/******/ }
|
|
/******/ // Create a new module (and put it into the cache)
|
|
/******/ var module = installedModules[moduleId] = {
|
|
/******/ i: moduleId,
|
|
/******/ l: false,
|
|
/******/ exports: {}
|
|
/******/ };
|
|
/******/
|
|
/******/ // Execute the module function
|
|
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
|
/******/
|
|
/******/ // Flag the module as loaded
|
|
/******/ module.l = true;
|
|
/******/
|
|
/******/ // Return the exports of the module
|
|
/******/ return module.exports;
|
|
/******/ }
|
|
/******/
|
|
/******/
|
|
/******/ // expose the modules object (__webpack_modules__)
|
|
/******/ __webpack_require__.m = modules;
|
|
/******/
|
|
/******/ // expose the module cache
|
|
/******/ __webpack_require__.c = installedModules;
|
|
/******/
|
|
/******/ // define getter function for harmony exports
|
|
/******/ __webpack_require__.d = function(exports, name, getter) {
|
|
/******/ if(!__webpack_require__.o(exports, name)) {
|
|
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
|
|
/******/ }
|
|
/******/ };
|
|
/******/
|
|
/******/ // define __esModule on exports
|
|
/******/ __webpack_require__.r = function(exports) {
|
|
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
/******/ }
|
|
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
/******/ };
|
|
/******/
|
|
/******/ // create a fake namespace object
|
|
/******/ // mode & 1: value is a module id, require it
|
|
/******/ // mode & 2: merge all properties of value into the ns
|
|
/******/ // mode & 4: return value when already ns object
|
|
/******/ // mode & 8|1: behave like require
|
|
/******/ __webpack_require__.t = function(value, mode) {
|
|
/******/ if(mode & 1) value = __webpack_require__(value);
|
|
/******/ if(mode & 8) return value;
|
|
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
|
|
/******/ var ns = Object.create(null);
|
|
/******/ __webpack_require__.r(ns);
|
|
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
|
|
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
|
|
/******/ return ns;
|
|
/******/ };
|
|
/******/
|
|
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
/******/ __webpack_require__.n = function(module) {
|
|
/******/ var getter = module && module.__esModule ?
|
|
/******/ function getDefault() { return module['default']; } :
|
|
/******/ function getModuleExports() { return module; };
|
|
/******/ __webpack_require__.d(getter, 'a', getter);
|
|
/******/ return getter;
|
|
/******/ };
|
|
/******/
|
|
/******/ // Object.prototype.hasOwnProperty.call
|
|
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
|
/******/
|
|
/******/ // __webpack_public_path__
|
|
/******/ __webpack_require__.p = "plugins/SegmentEditor/vue/dist/";
|
|
/******/
|
|
/******/
|
|
/******/ // Load entry module and return exports
|
|
/******/ return __webpack_require__(__webpack_require__.s = "fae3");
|
|
/******/ })
|
|
/************************************************************************/
|
|
/******/ ({
|
|
|
|
/***/ "19dc":
|
|
/***/ (function(module, exports) {
|
|
|
|
module.exports = __WEBPACK_EXTERNAL_MODULE__19dc__;
|
|
|
|
/***/ }),
|
|
|
|
/***/ "8bbf":
|
|
/***/ (function(module, exports) {
|
|
|
|
module.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__;
|
|
|
|
/***/ }),
|
|
|
|
/***/ "a5a2":
|
|
/***/ (function(module, exports) {
|
|
|
|
module.exports = __WEBPACK_EXTERNAL_MODULE_a5a2__;
|
|
|
|
/***/ }),
|
|
|
|
/***/ "fae3":
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
// ESM COMPAT FLAG
|
|
__webpack_require__.r(__webpack_exports__);
|
|
|
|
// EXPORTS
|
|
__webpack_require__.d(__webpack_exports__, "SegmentGeneratorStore", function() { return /* reexport */ SegmentGenerator_store; });
|
|
__webpack_require__.d(__webpack_exports__, "SegmentGenerator", function() { return /* reexport */ SegmentGenerator; });
|
|
|
|
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
|
|
// This file is imported into lib/wc client bundles.
|
|
|
|
if (typeof window !== 'undefined') {
|
|
var currentScript = window.document.currentScript
|
|
if (false) { var getCurrentScript; }
|
|
|
|
var src = currentScript && currentScript.src.match(/(.+\/)[^/]+\.js(\?.*)?$/)
|
|
if (src) {
|
|
__webpack_require__.p = src[1] // eslint-disable-line
|
|
}
|
|
}
|
|
|
|
// Indicate to webpack that this file can be concatenated
|
|
/* harmony default export */ var setPublicPath = (null);
|
|
|
|
// CONCATENATED MODULE: ./plugins/SegmentEditor/vue/src/types.ts
|
|
/*!
|
|
* Matomo - free/libre analytics platform
|
|
*
|
|
* @link https://matomo.org
|
|
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
|
*/
|
|
|
|
// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
|
|
var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
|
|
|
|
// EXTERNAL MODULE: external "CoreHome"
|
|
var external_CoreHome_ = __webpack_require__("19dc");
|
|
|
|
// CONCATENATED MODULE: ./plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.store.ts
|
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
/*!
|
|
* Matomo - free/libre analytics platform
|
|
*
|
|
* @link https://matomo.org
|
|
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
|
*/
|
|
|
|
|
|
class SegmentGenerator_store_SegmentGeneratorStore {
|
|
constructor() {
|
|
_defineProperty(this, "privateState", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["reactive"])({
|
|
isLoading: false,
|
|
segments: []
|
|
}));
|
|
_defineProperty(this, "state", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(() => Object(external_commonjs_vue_commonjs2_vue_root_Vue_["readonly"])(this.privateState)));
|
|
_defineProperty(this, "loadSegmentsAbort", void 0);
|
|
_defineProperty(this, "loadSegmentsPromise", void 0);
|
|
_defineProperty(this, "fetchedSiteId", void 0);
|
|
}
|
|
loadSegments(siteId, visitSegmentsOnly) {
|
|
if (this.loadSegmentsAbort) {
|
|
this.loadSegmentsAbort.abort();
|
|
this.loadSegmentsAbort = undefined;
|
|
}
|
|
this.privateState.isLoading = true;
|
|
if (this.fetchedSiteId !== siteId) {
|
|
this.loadSegmentsAbort = undefined;
|
|
this.fetchedSiteId = siteId;
|
|
}
|
|
if (!this.loadSegmentsPromise) {
|
|
let idSites = undefined;
|
|
let idSite = undefined;
|
|
if (siteId === 'all' || !siteId) {
|
|
idSites = 'all';
|
|
idSite = 'all';
|
|
} else if (siteId) {
|
|
idSites = siteId;
|
|
idSite = siteId;
|
|
}
|
|
this.loadSegmentsAbort = new AbortController();
|
|
this.loadSegmentsPromise = external_CoreHome_["AjaxHelper"].fetch({
|
|
method: 'API.getSegmentsMetadata',
|
|
filter_limit: '-1',
|
|
_hideImplementationData: 0,
|
|
idSites,
|
|
idSite
|
|
});
|
|
}
|
|
return this.loadSegmentsPromise.then(response => {
|
|
this.privateState.isLoading = false;
|
|
if (response) {
|
|
if (visitSegmentsOnly) {
|
|
this.privateState.segments = response.filter(s => s.sqlSegment && s.sqlSegment.match(/log_visit\./));
|
|
} else {
|
|
this.privateState.segments = response;
|
|
}
|
|
}
|
|
return this.state.value.segments;
|
|
}).finally(() => {
|
|
this.privateState.isLoading = false;
|
|
delete this.loadSegmentsPromise;
|
|
});
|
|
}
|
|
}
|
|
/* harmony default export */ var SegmentGenerator_store = (new SegmentGenerator_store_SegmentGeneratorStore());
|
|
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.vue?vue&type=template&id=3ff4cb6c
|
|
|
|
const _hoisted_1 = {
|
|
class: "segment-generator",
|
|
ref: "root"
|
|
};
|
|
const _hoisted_2 = {
|
|
class: "segment-rows"
|
|
};
|
|
const _hoisted_3 = {
|
|
class: "segment-row"
|
|
};
|
|
const _hoisted_4 = ["onClick"];
|
|
const _hoisted_5 = {
|
|
href: "#",
|
|
class: "segment-loading"
|
|
};
|
|
const _hoisted_6 = {
|
|
class: "segment-row-inputs valign-wrapper"
|
|
};
|
|
const _hoisted_7 = {
|
|
class: "segment-input metricListBlock valign-wrapper"
|
|
};
|
|
const _hoisted_8 = {
|
|
style: {
|
|
"width": "100%"
|
|
}
|
|
};
|
|
const _hoisted_9 = {
|
|
class: "segment-input metricMatchBlock valign-wrapper"
|
|
};
|
|
const _hoisted_10 = {
|
|
style: {
|
|
"display": "inline-block"
|
|
}
|
|
};
|
|
const _hoisted_11 = {
|
|
class: "segment-input metricValueBlock valign-wrapper"
|
|
};
|
|
const _hoisted_12 = {
|
|
class: "form-group row",
|
|
style: {
|
|
"width": "100%"
|
|
}
|
|
};
|
|
const _hoisted_13 = {
|
|
class: "input-field col s12"
|
|
};
|
|
const _hoisted_14 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
|
|
role: "status",
|
|
"aria-live": "polite",
|
|
class: "ui-helper-hidden-accessible"
|
|
}, null, -1);
|
|
const _hoisted_15 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
|
|
class: "clear"
|
|
}, null, -1);
|
|
const _hoisted_16 = {
|
|
class: "segment-or"
|
|
};
|
|
const _hoisted_17 = ["onClick"];
|
|
const _hoisted_18 = ["innerHTML"];
|
|
const _hoisted_19 = {
|
|
class: "segment-and"
|
|
};
|
|
const _hoisted_20 = ["innerHTML"];
|
|
function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
const _component_ActivityIndicator = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ActivityIndicator");
|
|
const _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
|
|
const _component_ValueInput = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ValueInput");
|
|
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
|
|
loading: _ctx.isLoading
|
|
}, null, 8, ["loading"]), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.conditions, (condition, conditionIndex) => {
|
|
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", {
|
|
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(`segmentRow${conditionIndex}`),
|
|
key: conditionIndex
|
|
}, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_2, [(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(condition.orConditions, (orCondition, orConditionIndex) => {
|
|
var _ctx$segments$orCondi, _ctx$segments$orCondi2;
|
|
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", {
|
|
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(`orCondId${orCondition.id}`),
|
|
key: orConditionIndex
|
|
}, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
|
|
class: "segment-close",
|
|
onClick: $event => _ctx.removeOrCondition(condition, orCondition)
|
|
}, null, 8, _hoisted_4), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", _hoisted_5, null, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.conditionValuesLoading[orCondition.id]]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
|
|
uicontrol: "expandable-select",
|
|
name: "segments",
|
|
"model-value": orCondition.segment,
|
|
"onUpdate:modelValue": $event => {
|
|
orCondition.segment = $event;
|
|
_ctx.updateAutocomplete(orCondition);
|
|
_ctx.computeSegmentDefinition();
|
|
},
|
|
title: (_ctx$segments$orCondi = _ctx.segments[orCondition.segment]) === null || _ctx$segments$orCondi === void 0 ? void 0 : _ctx$segments$orCondi.name,
|
|
"full-width": true,
|
|
options: _ctx.segmentList
|
|
}, null, 8, ["model-value", "onUpdate:modelValue", "title", "options"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
|
|
uicontrol: "select",
|
|
name: "matchType",
|
|
"model-value": orCondition.matches,
|
|
"onUpdate:modelValue": $event => {
|
|
orCondition.matches = $event;
|
|
_ctx.computeSegmentDefinition();
|
|
},
|
|
"full-width": true,
|
|
options: _ctx.matches[(_ctx$segments$orCondi2 = _ctx.segments[orCondition.segment]) === null || _ctx$segments$orCondi2 === void 0 ? void 0 : _ctx$segments$orCondi2.type]
|
|
}, null, 8, ["model-value", "onUpdate:modelValue", "options"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_12, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_13, [_hoisted_14, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ValueInput, {
|
|
value: orCondition.value,
|
|
onUpdate: $event => {
|
|
orCondition.value = $event;
|
|
// deep watch doesn't catch this change
|
|
this.computeSegmentDefinition();
|
|
}
|
|
}, null, 8, ["value", "onUpdate"])])])]), _hoisted_15])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_16, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SegmentEditor_OperatorOR')), 1)], 2);
|
|
}), 128)), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
|
|
class: "segment-add-or",
|
|
onClick: $event => _ctx.addNewOrCondition(condition)
|
|
}, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
|
|
innerHTML: _ctx.$sanitize(_ctx.addNewOrConditionLinkText)
|
|
}, null, 8, _hoisted_18)])], 8, _hoisted_17)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_19, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SegmentEditor_OperatorAND')), 1)], 2);
|
|
}), 128)), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
|
|
class: "segment-add-row initial",
|
|
onClick: _cache[0] || (_cache[0] = $event => _ctx.addNewAndCondition())
|
|
}, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
|
|
innerHTML: _ctx.$sanitize(_ctx.addNewAndConditionLinkText)
|
|
}, null, 8, _hoisted_20)])])], 512);
|
|
}
|
|
// CONCATENATED MODULE: ./plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.vue?vue&type=template&id=3ff4cb6c
|
|
|
|
// EXTERNAL MODULE: external "CorePluginsAdmin"
|
|
var external_CorePluginsAdmin_ = __webpack_require__("a5a2");
|
|
|
|
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/SegmentEditor/vue/src/SegmentGenerator/ValueInput.vue?vue&type=template&id=8dceff9a
|
|
|
|
const ValueInputvue_type_template_id_8dceff9a_hoisted_1 = ["placeholder", "title", "value"];
|
|
function ValueInputvue_type_template_id_8dceff9a_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("input", {
|
|
placeholder: _ctx.translate('General_Value'),
|
|
type: "text",
|
|
class: "autocomplete",
|
|
title: _ctx.translate('General_Value'),
|
|
autocomplete: "off",
|
|
value: _ctx.value,
|
|
onKeydown: _cache[0] || (_cache[0] = $event => _ctx.onKeydownOrConditionValue($event)),
|
|
onChange: _cache[1] || (_cache[1] = $event => _ctx.onKeydownOrConditionValue($event))
|
|
}, null, 40, ValueInputvue_type_template_id_8dceff9a_hoisted_1);
|
|
}
|
|
// CONCATENATED MODULE: ./plugins/SegmentEditor/vue/src/SegmentGenerator/ValueInput.vue?vue&type=template&id=8dceff9a
|
|
|
|
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--15-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--15-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/SegmentEditor/vue/src/SegmentGenerator/ValueInput.vue?vue&type=script&lang=ts
|
|
|
|
|
|
/* harmony default export */ var ValueInputvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
|
|
props: {
|
|
value: null
|
|
},
|
|
created() {
|
|
this.onKeydownOrConditionValue = Object(external_CoreHome_["debounce"])(this.onKeydownOrConditionValue, 50);
|
|
},
|
|
emits: ['update'],
|
|
methods: {
|
|
onKeydownOrConditionValue(event) {
|
|
this.$emit('update', event.target.value);
|
|
}
|
|
}
|
|
}));
|
|
// CONCATENATED MODULE: ./plugins/SegmentEditor/vue/src/SegmentGenerator/ValueInput.vue?vue&type=script&lang=ts
|
|
|
|
// CONCATENATED MODULE: ./plugins/SegmentEditor/vue/src/SegmentGenerator/ValueInput.vue
|
|
|
|
|
|
|
|
ValueInputvue_type_script_lang_ts.render = ValueInputvue_type_template_id_8dceff9a_render
|
|
|
|
/* harmony default export */ var ValueInput = (ValueInputvue_type_script_lang_ts);
|
|
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--15-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--15-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--1-1!./plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.vue?vue&type=script&lang=ts
|
|
|
|
|
|
|
|
|
|
|
|
function initialMatches() {
|
|
return {
|
|
metric: [{
|
|
key: '==',
|
|
value: Object(external_CoreHome_["translate"])('General_OperationEquals')
|
|
}, {
|
|
key: '!=',
|
|
value: Object(external_CoreHome_["translate"])('General_OperationNotEquals')
|
|
}, {
|
|
key: '<=',
|
|
value: Object(external_CoreHome_["translate"])('General_OperationAtMost')
|
|
}, {
|
|
key: '>=',
|
|
value: Object(external_CoreHome_["translate"])('General_OperationAtLeast')
|
|
}, {
|
|
key: '<',
|
|
value: Object(external_CoreHome_["translate"])('General_OperationLessThan')
|
|
}, {
|
|
key: '>',
|
|
value: Object(external_CoreHome_["translate"])('General_OperationGreaterThan')
|
|
}],
|
|
dimension: [{
|
|
key: '==',
|
|
value: Object(external_CoreHome_["translate"])('General_OperationIs')
|
|
}, {
|
|
key: '!=',
|
|
value: Object(external_CoreHome_["translate"])('General_OperationIsNot')
|
|
}, {
|
|
key: '=@',
|
|
value: Object(external_CoreHome_["translate"])('General_OperationContains')
|
|
}, {
|
|
key: '!@',
|
|
value: Object(external_CoreHome_["translate"])('General_OperationDoesNotContain')
|
|
}, {
|
|
key: '=^',
|
|
value: Object(external_CoreHome_["translate"])('General_OperationStartsWith')
|
|
}, {
|
|
key: '=$',
|
|
value: Object(external_CoreHome_["translate"])('General_OperationEndsWith')
|
|
}]
|
|
};
|
|
}
|
|
function generateUniqueId() {
|
|
let id = '';
|
|
const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
|
for (let i = 1; i <= 10; i += 1) {
|
|
id += chars.charAt(Math.floor(Math.random() * chars.length));
|
|
}
|
|
return id;
|
|
}
|
|
function findAndExplodeByMatch(metric) {
|
|
const matches = ['==', '!=', '<=', '>=', '=@', '!@', '<', '>', '=^', '=$'];
|
|
const newMetric = {};
|
|
let minPos = metric.length;
|
|
let match;
|
|
let index;
|
|
let singleChar = false;
|
|
for (let key = 0; key < matches.length; key += 1) {
|
|
match = matches[key];
|
|
index = metric.indexOf(match);
|
|
if (index !== -1) {
|
|
if (index < minPos) {
|
|
minPos = index;
|
|
if (match.length === 1) {
|
|
singleChar = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (minPos < metric.length) {
|
|
// sth found - explode
|
|
if (singleChar === true) {
|
|
newMetric.segment = metric.slice(0, minPos);
|
|
newMetric.matches = metric.slice(minPos, minPos + 1);
|
|
newMetric.value = decodeURIComponent(metric.slice(minPos + 1));
|
|
} else {
|
|
newMetric.segment = metric.slice(0, minPos);
|
|
newMetric.matches = metric.slice(minPos, minPos + 2);
|
|
newMetric.value = decodeURIComponent(metric.slice(minPos + 2));
|
|
}
|
|
// if value is only '' -> change to empty string
|
|
if (newMetric.value === '""') {
|
|
newMetric.value = '';
|
|
}
|
|
}
|
|
try {
|
|
// Decode again to deal with double-encoded segments in database
|
|
newMetric.value = decodeURIComponent(newMetric.value);
|
|
} catch (e) {
|
|
// Expected if the segment was not double-encoded
|
|
}
|
|
return newMetric;
|
|
}
|
|
function stripTags(text) {
|
|
return text ? `${text}`.replace(/(<([^>]+)>)/ig, '') : text;
|
|
}
|
|
const {
|
|
$
|
|
} = window;
|
|
/* harmony default export */ var SegmentGeneratorvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
|
|
props: {
|
|
addInitialCondition: Boolean,
|
|
visitSegmentsOnly: Boolean,
|
|
idsite: {
|
|
type: [String, Number],
|
|
default: () => external_CoreHome_["Matomo"].idSite
|
|
},
|
|
modelValue: {
|
|
type: String,
|
|
default: ''
|
|
}
|
|
},
|
|
components: {
|
|
ActivityIndicator: external_CoreHome_["ActivityIndicator"],
|
|
Field: external_CorePluginsAdmin_["Field"],
|
|
ValueInput: ValueInput
|
|
},
|
|
data() {
|
|
return {
|
|
conditions: [],
|
|
queriedSegments: [],
|
|
matches: initialMatches(),
|
|
conditionValuesLoading: {},
|
|
segmentDefinition: ''
|
|
};
|
|
},
|
|
emits: ['update:modelValue'],
|
|
watch: {
|
|
modelValue(newVal) {
|
|
if ((newVal || '') !== (this.segmentDefinition || '')) {
|
|
this.setSegmentString(newVal);
|
|
}
|
|
},
|
|
conditions: {
|
|
deep: true,
|
|
handler() {
|
|
this.computeSegmentDefinition();
|
|
}
|
|
},
|
|
segmentDefinition(newVal) {
|
|
if ((newVal || '') !== (this.modelValue || '')) {
|
|
this.$emit('update:modelValue', newVal);
|
|
}
|
|
},
|
|
idsite(newVal) {
|
|
this.reloadSegments(newVal, this.visitSegmentsOnly);
|
|
}
|
|
},
|
|
created() {
|
|
this.matches[''] = this.matches.dimension;
|
|
this.setSegmentString(this.modelValue);
|
|
this.segmentDefinition = this.modelValue;
|
|
this.reloadSegments(this.idsite, this.visitSegmentsOnly);
|
|
},
|
|
methods: {
|
|
reloadSegments(idsite, visitSegmentsOnly) {
|
|
SegmentGenerator_store.loadSegments(idsite, visitSegmentsOnly).then(segments => {
|
|
this.queriedSegments = segments.map(s => Object.assign(Object.assign({}, s), {}, {
|
|
category: s.category || 'Others'
|
|
}));
|
|
if (this.addInitialCondition && this.conditions.length === 0) {
|
|
this.addNewAndCondition();
|
|
}
|
|
});
|
|
},
|
|
addAndCondition(condition) {
|
|
this.conditions.push(condition);
|
|
},
|
|
addNewOrCondition(condition) {
|
|
if (!this.firstSegment) {
|
|
return; // skip till list of segments is available
|
|
}
|
|
const orCondition = {
|
|
segment: this.firstSegment,
|
|
matches: this.firstMatch,
|
|
value: ''
|
|
};
|
|
this.addOrCondition(condition, orCondition);
|
|
},
|
|
addOrCondition(condition, orCondition) {
|
|
this.conditionValuesLoading[orCondition.id] = false;
|
|
orCondition.id = generateUniqueId();
|
|
condition.orConditions.push(orCondition);
|
|
Object(external_commonjs_vue_commonjs2_vue_root_Vue_["nextTick"])(() => {
|
|
this.updateAutocomplete(orCondition);
|
|
});
|
|
},
|
|
updateAutocomplete(orCondition) {
|
|
this.conditionValuesLoading[orCondition.id] = true;
|
|
$(`.orCondId${orCondition.id} .metricValueBlock input`, this.$refs.root).autocomplete({
|
|
source: [],
|
|
minLength: 0
|
|
});
|
|
const abortController = new AbortController();
|
|
let resolved = false;
|
|
external_CoreHome_["AjaxHelper"].fetch({
|
|
module: 'API',
|
|
format: 'json',
|
|
method: 'API.getSuggestedValuesForSegment',
|
|
segmentName: orCondition.segment,
|
|
idSite: this.idsite
|
|
}, {
|
|
createErrorNotification: false // don't show errors returned from the API in UI
|
|
}).then(response => {
|
|
this.conditionValuesLoading[orCondition.id] = false;
|
|
resolved = true;
|
|
let autocompleteValues = response;
|
|
if (Array.isArray(autocompleteValues)) {
|
|
autocompleteValues = autocompleteValues.map(v => `${v}`);
|
|
}
|
|
const inputElement = $(`.orCondId${orCondition.id} .metricValueBlock input`).autocomplete({
|
|
source: autocompleteValues,
|
|
minLength: 0,
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
select: (event, ui) => {
|
|
event.preventDefault();
|
|
orCondition.value = ui.item.value;
|
|
this.computeSegmentDefinition(); // deep watch doesn't catch this change
|
|
this.$forceUpdate();
|
|
}
|
|
}).off('click').click(() => {
|
|
$(inputElement).autocomplete('search', orCondition.value);
|
|
});
|
|
}).catch(() => {
|
|
resolved = true;
|
|
this.conditionValuesLoading[orCondition.id] = false;
|
|
$(`.orCondId${orCondition.id} .metricValueBlock input`).autocomplete({
|
|
source: [],
|
|
minLength: 0
|
|
}).autocomplete('search', orCondition.value);
|
|
});
|
|
setTimeout(() => {
|
|
if (!resolved) {
|
|
abortController.abort();
|
|
}
|
|
}, 20000);
|
|
},
|
|
removeOrCondition(condition, orCondition) {
|
|
const index = condition.orConditions.indexOf(orCondition);
|
|
if (index > -1) {
|
|
condition.orConditions.splice(index, 1);
|
|
}
|
|
if (condition.orConditions.length === 0) {
|
|
const andCondIndex = this.conditions.indexOf(condition);
|
|
if (index > -1) {
|
|
this.conditions.splice(andCondIndex, 1);
|
|
}
|
|
}
|
|
},
|
|
setSegmentString(segmentStr) {
|
|
this.conditions = [];
|
|
if (!segmentStr) {
|
|
return;
|
|
}
|
|
const blocks = segmentStr.split(';').map(b => b.split(','));
|
|
this.conditions = blocks.map(block => {
|
|
const condition = {
|
|
orConditions: []
|
|
};
|
|
block.forEach(innerBlock => {
|
|
const orCondition = findAndExplodeByMatch(innerBlock);
|
|
this.addOrCondition(condition, orCondition);
|
|
});
|
|
return condition;
|
|
});
|
|
},
|
|
addNewAndCondition() {
|
|
const condition = {
|
|
orConditions: []
|
|
};
|
|
if (!this.firstSegment) {
|
|
return; // skip till list of segments is available
|
|
}
|
|
this.addAndCondition(condition);
|
|
this.addNewOrCondition(condition);
|
|
},
|
|
// NOTE: can't use a computed property since we need to recompute on changes inside the
|
|
// structure. don't have to if we don't do in-place changes, but with nested structures,
|
|
// that's complicated.
|
|
computeSegmentDefinition() {
|
|
let segmentStr = '';
|
|
this.conditions.forEach(condition => {
|
|
if (!condition.orConditions.length) {
|
|
return;
|
|
}
|
|
let subSegmentStr = '';
|
|
condition.orConditions.forEach(orCondition => {
|
|
if (!orCondition.value && !orCondition.segment && !orCondition.matches) {
|
|
return;
|
|
}
|
|
if (subSegmentStr !== '') {
|
|
subSegmentStr += ','; // OR operator
|
|
}
|
|
// one encode for urldecode on value, one encode for urldecode on condition
|
|
const value = encodeURIComponent(encodeURIComponent(orCondition.value));
|
|
subSegmentStr += `${orCondition.segment}${orCondition.matches}${value}`;
|
|
});
|
|
if (segmentStr !== '') {
|
|
segmentStr += ';'; // add AND operator between segment blocks
|
|
}
|
|
segmentStr += subSegmentStr;
|
|
});
|
|
this.segmentDefinition = segmentStr;
|
|
}
|
|
},
|
|
computed: {
|
|
firstSegment() {
|
|
var _this$queriedSegments;
|
|
return ((_this$queriedSegments = this.queriedSegments[0]) === null || _this$queriedSegments === void 0 ? void 0 : _this$queriedSegments.segment) || null;
|
|
},
|
|
firstMatch() {
|
|
const segment = this.queriedSegments[0];
|
|
if (!segment) {
|
|
return null;
|
|
}
|
|
if (segment.type && this.matches[segment.type]) {
|
|
return this.matches[segment.type][0].key;
|
|
}
|
|
return this.matches[''][0].key;
|
|
},
|
|
segments() {
|
|
const result = {};
|
|
this.queriedSegments.forEach(s => {
|
|
result[s.segment] = s;
|
|
});
|
|
return result;
|
|
},
|
|
segmentList() {
|
|
return this.queriedSegments.map(s => ({
|
|
group: s.category,
|
|
key: s.segment,
|
|
value: s.name,
|
|
tooltip: s.acceptedValues ? stripTags(s.acceptedValues) : undefined
|
|
}));
|
|
},
|
|
addNewOrConditionLinkText() {
|
|
return `+${Object(external_CoreHome_["translate"])('SegmentEditor_AddANDorORCondition', `<span>${Object(external_CoreHome_["translate"])('SegmentEditor_OperatorOR')}</span>`)}`;
|
|
},
|
|
andConditionLabel() {
|
|
return this.conditions.length ? Object(external_CoreHome_["translate"])('SegmentEditor_OperatorAND') : '';
|
|
},
|
|
addNewAndConditionLinkText() {
|
|
return `+${Object(external_CoreHome_["translate"])('SegmentEditor_AddANDorORCondition', `<span>${this.andConditionLabel}</span>`)}`;
|
|
},
|
|
isLoading() {
|
|
return SegmentGenerator_store.state.value.isLoading;
|
|
}
|
|
}
|
|
}));
|
|
// CONCATENATED MODULE: ./plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.vue?vue&type=script&lang=ts
|
|
|
|
// CONCATENATED MODULE: ./plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.vue
|
|
|
|
|
|
|
|
SegmentGeneratorvue_type_script_lang_ts.render = render
|
|
|
|
/* harmony default export */ var SegmentGenerator = (SegmentGeneratorvue_type_script_lang_ts);
|
|
// CONCATENATED MODULE: ./plugins/SegmentEditor/vue/src/index.ts
|
|
/*!
|
|
* Matomo - free/libre analytics platform
|
|
*
|
|
* @link https://matomo.org
|
|
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
|
*/
|
|
|
|
|
|
|
|
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js
|
|
|
|
|
|
|
|
|
|
/***/ })
|
|
|
|
/******/ });
|
|
});
|
|
//# sourceMappingURL=SegmentEditor.umd.js.map
|