Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/CoreHome/vue/src/SiteSelector/SiteSelector.adapter.ts')
-rw-r--r--plugins/CoreHome/vue/src/SiteSelector/SiteSelector.adapter.ts86
1 files changed, 86 insertions, 0 deletions
diff --git a/plugins/CoreHome/vue/src/SiteSelector/SiteSelector.adapter.ts b/plugins/CoreHome/vue/src/SiteSelector/SiteSelector.adapter.ts
new file mode 100644
index 0000000000..b3438d2bb7
--- /dev/null
+++ b/plugins/CoreHome/vue/src/SiteSelector/SiteSelector.adapter.ts
@@ -0,0 +1,86 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { INgModelController, ITimeoutService } from 'angular';
+import createAngularJsAdapter from '../createAngularJsAdapter';
+import SiteSelector from './SiteSelector.vue';
+import Matomo from '../Matomo/Matomo';
+
+export default createAngularJsAdapter<[ITimeoutService]>({
+ component: SiteSelector,
+ require: '?ngModel',
+ scope: {
+ showSelectedSite: {
+ angularJsBind: '=',
+ },
+ showAllSitesItem: {
+ angularJsBind: '=',
+ },
+ switchSiteOnSelect: {
+ angularJsBind: '=',
+ },
+ onlySitesWithAdminAccess: {
+ angularJsBind: '=',
+ },
+ name: {
+ angularJsBind: '@',
+ },
+ allSitesText: {
+ angularJsBind: '@',
+ },
+ allSitesLocation: {
+ angularJsBind: '@',
+ },
+ placeholder: {
+ angularJsBind: '@',
+ },
+ modelValue: {},
+ },
+ $inject: ['$timeout'],
+ directiveName: 'piwikSiteselector',
+ events: {
+ 'update:modelValue': (newValue, vm, scope, element, attrs, ngModel) => {
+ if ((newValue && !vm.modelValue)
+ || (!newValue && vm.modelValue)
+ || newValue.id !== vm.modelValue.id
+ ) {
+ element.attr('siteid', newValue.id);
+ element.trigger('change', newValue);
+
+ if (ngModel) {
+ ngModel.$setViewValue(newValue);
+ }
+ }
+ },
+ blur(event, vm, scope) {
+ setTimeout(() => scope.$apply());
+ },
+ },
+ postCreate(vm, scope, element, attrs, controller, $timeout: ITimeoutService) {
+ const ngModel = controller as INgModelController;
+
+ // setup ng-model mapping
+ if (ngModel) {
+ ngModel.$setViewValue(vm.modelValue);
+
+ ngModel.$render = () => {
+ if (angular.isString(ngModel.$viewValue)) {
+ vm.modelValue = JSON.parse(ngModel.$viewValue);
+ } else {
+ vm.modelValue = ngModel.$viewValue;
+ }
+ };
+ }
+
+ $timeout(() => {
+ if (attrs.siteid && attrs.sitename) {
+ vm.modelValue = { id: attrs.siteid, name: Matomo.helper.htmlDecode(attrs.sitename) };
+ ngModel.$setViewValue({ ...vm.modelValue });
+ }
+ });
+ },
+});