PageSourceSearch

https://b2b.phuclean.pl/js/wizja/app.js

js phuclean.pl collected 2026-10-02 01:09:33 UTC 8,043 bytes, 229 lines download raw bytes

1/*
2 * Copyright 2018 "P.H.U. Clean Barbara Tywoniuk-Lubecka" (https://phuclean.pl)
3 * All rights reserved.
4 */
5
6if (!Array.prototype.includes) {
7  Object.defineProperty(Array.prototype, "includes", {
8    enumerable: false,
9    value: function(obj) {
10        var newArr = this.filter(function(el) {
11          return el == obj;
12        });
13        return newArr.length > 0;
14      }
15  });
16}
17
18var appModule = function() {
19	var accessRights = [];
20	
21	function checkLoggedIn() {
22		var logged = !(localStorage.getItem('loggedIn') !== '1' && typeof skipCheckLoggedIn === 'undefined');
23		$.ajax({
24			type: 'GET',
25			contentType: 'application/json; charset=utf-8',
26			dataType: 'json',
27			url: apiUrl + 'userContext',
28			beforeSend: function(request) {
29				request.setRequestHeader('Accept-Language', localStorage.getItem('language'));
30			}
31		}).fail(function(data) {
32			logged = false;
33		}).always(function(data) {
34			if (!logged && typeof skipCheckLoggedIn === 'undefined') {
35				window.location.replace('login.html');
36			} else {
37				$('body').css('background-color', '');
38				$('body').css('display', '');
39			}
40		});
41	}
42	
43	function preInit() {
44		var storeRights = this.storeRead('accessRights');
45		try {
46			this.accessRights = JSON.parse(storeRights);			
47		} catch(e) {			
48			this.accessRights = [];
49		}
50		var miniNavbar = this.storeRead('miniNavbar');		
51		if (miniNavbar == '1') {
52			$('body').addClass("mini-navbar");
53		}
54	}
55	
56	function init() {
57		checkLoggedIn();
58		setUserData();
59		translate();
60		$('#setLanguage').click(setLanguage);
61		var that = this;
62		$('.navbar-minimalize').on('click', function (event) {
63			var miniNavbar = $('body').hasClass("mini-navbar");
64			that.storeWrite('miniNavbar', miniNavbar ? '1' : '0');
65		});
66	}
67
68	function reloadOrdersTable() {
69		$('#ordersTable').DataTable().destroy();
70		indexModule.loadTable();
71	}
72	
73	function setLanguage() {
74		localStorage.setItem('language', $(this).prop('src').indexOf('Poland') === -1 ? 'en' : 'pl');
75		location.reload();
76	}
77	
78	function setLanguageButton() {
79		$('#setLanguage').prop('src', 'img/flags/' + (localStorage.getItem('language') === 'pl' ? 'United-Kingdom' : 'Poland') + '.png');
80	}
81	
82	function setUserData() {
83		$('#appUserName').text(localStorage.getItem('userName'));
84		$('#appCompanyName').text(localStorage.getItem('companyName'));
85		$('#appCartValue').text(localStorage.getItem('cartValue'));
86		$('#accountManagerName').text(localStorage.getItem('accountManagerName'));
87		$('#accountManagerPhone').text(localStorage.getItem('accountManagerPhone'));        
88	}
89	
90	function setCartValue(value) {
91		localStorage.setItem('cartValue', value || '');
92		setUserData();
93	}
94		
95	function translate() {
96		 i18n.init({
97            resGetPath: 'locales/__lng__.json',
98            load: 'unspecific',
99            fallbackLng: false,
100            lng: localStorage.getItem('language')
101        }, function (t){
102            $('.i18n').i18n();            
103        });
104		setLanguageButton();
105	}
106	
107	function storeWrite(name, obj) {
108		localStorage.setItem(name, obj);
109	}
110	
111	function storeRead(name) {
112		return localStorage.getItem(name);
113	}
114	
115	function setAccessRights(array) {
116		this.accessRights = array ? array : [];
117	}
118	
119	function hasAccessRight(right) {
120		return this.accessRights.includes(right);
121	}
122	
123	function saleCategoryAvailable() {
124		var saleCategoryAvailable = localStorage.getItem('saleCategoryAvailable') === 'true';
125		
126		return saleCategoryAvailable;
127	}
128	
129	return {
130		preInit: preInit,
131		init: init,
132		setCartValue: setCartValue,
133		storeWrite: storeWrite,
134		storeRead: storeRead,
135		setAccessRights: setAccessRights,
136		hasAccessRight: hasAccessRight,
137		reload: setUserData,
138		saleCategoryAvailable: saleCategoryAvailable
139	}
140}();
141
142appModule.preInit();
143$(function() {
144	appModule.init();
145});
146
147Vue.component('navigation-component', {
148  data: function () {
149	var currentPage = window.location.pathname;
150    return {
151		isActive: function(menuItem) {
152			var result = currentPage == menuItem.path;
153			
154			if (!result) {
155				result = menuItem.children && $.inArray(currentPage, menuItem.children);
156			}			
157			
158			return result;
159		},
160		menu: [
161			//{name: 'panel', path: '/index.html', icon: 'fa-dashboard'},
162			{name: 'products', path: '/products.html', icon: 'fa-qrcode', visible: true},
163			{name: 'sale', path: '/products.html?categoryId=' + saleCategoryId, icon: 'fa-exclamation', visible: appModule.saleCategoryAvailable()},
164			{name: 'offers', path: '/offers.html', icon: 'fa-th-list', visible: true, visible: appModule.hasAccessRight('OFERTY.PRZEGLAD')},
165			{name: 'payments', path: '/payments.html', icon: 'fa-money', visible: appModule.hasAccessRight('ROZLICZENIA.PRZEGLAD')},
166			{name: 'orders', path: '/orders.html', icon: 'fa-list', children: ['/order.html'], visible: appModule.hasAccessRight('ZAMOWIENIA.PRZEGLAD')},
167			{name: 'carts', path: '/carts.html', icon: 'fa-shopping-cart', children: ['/cart.html', '/cartSummary.html'], visible: true},
168			{name: 'user', path: '/user.html', icon: 'fa-user', visible: true},
169			{name: 'generalSaleTerms',	path: '/generalSaleTerms.html', icon: 'fa-file', visible: true},
170			{name: 'contact',	path: 'mailto:[email protected]', icon: 'fa-envelope', visible: true}
171		],
172        availableBudget: localStorage.getItem('availableBudget')
173    }
174  },
175  template: '<div class="sidebar-collapse">'+
176	'            <ul class="nav metismenu" id="side-menu">'+
177	'                <li class="nav-header">'+
178	'                    <div class="dropdown profile-element">'+
179	'						<span><img alt="PHU Clean logo" class="img" src="img/logo_ciemne.png" style="max-width: 160px; margin-bottom: 10px;"></span>'+
180	'						<a data-toggle="dropdown" class="dropdown-toggle" href="#">'+
181	'						<span class="clear" /> <span class="block m-t-xs"> <strong id="appUserName" class="font-bold"></strong></span> '+
182	'						<span id="appCompanyName" class="text-muted text-xs block"></span>'+
183	'						<span class="clear" /> <span class="block m-t-xs"> <strong id="appUserName2" class="font-bold">Opiekun:</strong></span> '+
184	'						<span id="accountManagerName" class="text-muted text-xs block"></span>'+
185	'						<span id="accountManagerPhone" class="text-muted text-xs block"></span>'+
186    '						<span class="clear" /> <span class="block m-t-xs" v-if="availableBudget"> <strong class="font-bold">Dostępny budżet:</strong></span> '+
187	'						<span class="text-muted text-xs block" v-if="availableBudget">{{availableBudget}}</span>'+	
188	'						</a>'+
189	'                    </div>'+
190	'                </li>'+
191	'				<li v-for="menuItem in menu" :key="menuItem.name" v-if="menuItem.visible" v-bind:id="\'menu_\' + menuItem.name" v-bind:class="[isActive(menuItem) == true ? \'active\' : \'\']">'+
192	'                    <a :href="menuItem.path"><i :class="menuItem.icon" class="fa"></i> <span class="nav-label i18n" :data-i18n="\'app.\' + menuItem.name" /></span></a>'+
193	'                </li>'+
194	'            </ul>'+
195	''+
196	'        </div>'
197});
198new Vue({
199	el: '#navigation-app'
200});
201
202Vue.component('top-navigation-component', {
203  data: function () {
204    return {
205		cartValue: ''
206    }
207  },
208  template: '<nav class="navbar navbar-static-top white-bg" role="navigation" style="margin-bottom: 0">'+
209	'    <div class="navbar-header">'+
210	'        <a class="navbar-minimalize minimalize-styl-2 btn btn-primary " href="#" aria-label="Minimalizuj"><i class="fa fa-bars"></i> </a>                    '+
211	'    </div>'+
212	'    <ul class="nav navbar-top-links navbar-right">'+
213	'      <li>'+
214	'        <a href="cart.html"><button class="btn btn-primary btn-sm"><i class="fa fa-cart-plus"></i>Koszyk <span v-if="appModule.hasAccessRight(\'CENY.PRZEGLAD\')" class="badge badge-primary" id="appCartValue"></span></button></a>'+
215	'      </li>'+
216	//'      <li>'+
217	//'        <a><img id="setLanguage" src=""></a>'+
218	//'      </li>'+
219	'      <li>'+
220	'        <a href="login.html?logout">'+
221	'          <i class="fa fa-sign-out"></i> <span class="i18n" data-i18n="app.logout"></span>'+
222	'        </a>'+
223	'      </li>'+
224	'    </ul>'+
225	'</nav>'
226});
227new Vue({
228	el: '#top-navigation-app'
229});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.