713 lines
21 KiB
JavaScript
713 lines
21 KiB
JavaScript
var UtilitiesClass;
|
|||
|
|
|
||
|
|
(function(module) {
|
||
|
|
module.directive('clickPrevent', function() {
|
||
|
|
return function(scope, element) {
|
||
|
|
return element.on('click', function(e) {
|
||
|
|
e.preventDefault();
|
||
|
|
return e.stopPropagation();
|
||
|
|
});
|
||
|
|
};
|
||
|
|
});
|
||
|
|
module.directive('ngEnter', function() {
|
||
|
|
return function(scope, element, attrs) {
|
||
|
|
return element.bind("keydown keypress", function(event) {
|
||
|
|
if (event.which === 13) {
|
||
|
|
scope.$apply(function() {
|
||
|
|
return scope.$eval(attrs.ngEnter);
|
||
|
|
});
|
||
|
|
return event.preventDefault();
|
||
|
|
}
|
||
|
|
});
|
||
|
|
};
|
||
|
|
});
|
||
|
|
module.directive('digitsOnly', function() {
|
||
|
|
return {
|
||
|
|
require: 'ngModel',
|
||
|
|
link: function(scope, element, attrs, modelCtrl) {
|
||
|
|
modelCtrl.$parsers.push(function(inputValue) {
|
||
|
|
var transformedInput;
|
||
|
|
if (inputValue && (typeof inputValue !== "String")) {
|
||
|
|
inputValue = inputValue.toString();
|
||
|
|
}
|
||
|
|
transformedInput = inputValue ? inputValue.replace(/[^\d]/g, '') : null;
|
||
|
|
if (transformedInput !== inputValue) {
|
||
|
|
modelCtrl.$setViewValue(transformedInput);
|
||
|
|
modelCtrl.$render();
|
||
|
|
}
|
||
|
|
return transformedInput;
|
||
|
|
});
|
||
|
|
}
|
||
|
|
};
|
||
|
|
});
|
||
|
|
module.directive('numbersOnly', function() {
|
||
|
|
return {
|
||
|
|
require: 'ngModel',
|
||
|
|
link: function(scope, element, attrs, modelCtrl) {
|
||
|
|
modelCtrl.$parsers.push(function(inputValue) {
|
||
|
|
var transformedInput;
|
||
|
|
if (inputValue && (typeof inputValue !== "String")) {
|
||
|
|
inputValue = inputValue.toString();
|
||
|
|
}
|
||
|
|
transformedInput = inputValue ? inputValue.replace(/[^\d.]/g, '') : null;
|
||
|
|
if (transformedInput !== inputValue) {
|
||
|
|
modelCtrl.$setViewValue(transformedInput);
|
||
|
|
modelCtrl.$render();
|
||
|
|
}
|
||
|
|
return transformedInput;
|
||
|
|
});
|
||
|
|
}
|
||
|
|
};
|
||
|
|
});
|
||
|
|
module.directive('floatingNumberOnly', function() {
|
||
|
|
return {
|
||
|
|
require: 'ngModel',
|
||
|
|
link: function(scope, ele, attr, ctrl) {
|
||
|
|
ctrl.$parsers.push(function(inputValue) {
|
||
|
|
var dotCount, dotPattern, newInput, newInputLength, pattern, result;
|
||
|
|
pattern = new RegExp('(^[0-9]{1,9})+(.[0-9]{1,2})?$', 'g');
|
||
|
|
if (inputValue === '') {
|
||
|
|
return '';
|
||
|
|
}
|
||
|
|
dotPattern = /^[.]*$/;
|
||
|
|
if (dotPattern.test(inputValue)) {
|
||
|
|
ctrl.$setViewValue('');
|
||
|
|
ctrl.$render();
|
||
|
|
return '';
|
||
|
|
}
|
||
|
|
newInput = inputValue.replace(/[^0-9.]/g, '');
|
||
|
|
if (newInput !== inputValue) {
|
||
|
|
ctrl.$setViewValue(newInput);
|
||
|
|
ctrl.$render();
|
||
|
|
}
|
||
|
|
result = void 0;
|
||
|
|
dotCount = void 0;
|
||
|
|
newInputLength = newInput.length;
|
||
|
|
if (result = pattern.test(newInput)) {
|
||
|
|
dotCount = newInput.split('.').length - 1;
|
||
|
|
if (dotCount === 0 && newInputLength > 9) {
|
||
|
|
newInput = newInput.slice(0, newInputLength - 1);
|
||
|
|
ctrl.$setViewValue(newInput);
|
||
|
|
ctrl.$render();
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
dotCount = newInput.split('.').length - 1;
|
||
|
|
if (newInputLength > 0 && dotCount > 1) {
|
||
|
|
newInput = newInput.slice(0, newInputLength - 1);
|
||
|
|
}
|
||
|
|
if (newInput.slice(newInput.indexOf('.') + 1).length > 2) {
|
||
|
|
newInput = newInput.slice(0, newInputLength - 1);
|
||
|
|
}
|
||
|
|
ctrl.$setViewValue(newInput);
|
||
|
|
ctrl.$render();
|
||
|
|
}
|
||
|
|
return newInput;
|
||
|
|
});
|
||
|
|
}
|
||
|
|
};
|
||
|
|
});
|
||
|
|
module.directive('inputMask', function() {
|
||
|
|
return {
|
||
|
|
restrict: 'A',
|
||
|
|
link: function(scope, elem, attr, ctrl) {
|
||
|
|
if (attr.inputMask) {
|
||
|
|
elem.mask(attr.inputMask);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
};
|
||
|
|
});
|
||
|
|
module.filter('trustAs', [
|
||
|
|
'$sce',
|
||
|
|
function($sce) {
|
||
|
|
return function(input,
|
||
|
|
type) {
|
||
|
|
if (typeof input === 'string') {
|
||
|
|
return $sce.trustAs(type || 'html',
|
||
|
|
input);
|
||
|
|
}
|
||
|
|
return '';
|
||
|
|
};
|
||
|
|
}
|
||
|
|
]);
|
||
|
|
module.config(function($provide) {
|
||
|
|
$provide.decorator('$http', function($delegate, $q) {
|
||
|
|
$delegate.with_abort = function(options) {
|
||
|
|
var abort_defer, do_throw_error, http_promise, mod_promise, new_options, real_then, then_function;
|
||
|
|
abort_defer = $q.defer();
|
||
|
|
new_options = angular.copy(options);
|
||
|
|
new_options.timeout = abort_defer.promise;
|
||
|
|
do_throw_error = false;
|
||
|
|
mod_promise = function(promise) {
|
||
|
|
promise.then = then_function;
|
||
|
|
promise.abort = function(do_throw_error_param = false) {
|
||
|
|
do_throw_error = do_throw_error_param;
|
||
|
|
abort_defer.resolve();
|
||
|
|
};
|
||
|
|
return promise;
|
||
|
|
};
|
||
|
|
http_promise = $delegate(new_options).then((function(response) {
|
||
|
|
return response;
|
||
|
|
}), function(error) {
|
||
|
|
if (do_throw_error) {
|
||
|
|
return $q.reject(error);
|
||
|
|
}
|
||
|
|
return $q(function() {
|
||
|
|
return null;
|
||
|
|
});
|
||
|
|
});
|
||
|
|
// prevent promise chain propagation
|
||
|
|
real_then = http_promise.then;
|
||
|
|
then_function = function() {
|
||
|
|
return mod_promise(real_then.apply(this, arguments));
|
||
|
|
};
|
||
|
|
return mod_promise(http_promise);
|
||
|
|
};
|
||
|
|
return $delegate;
|
||
|
|
});
|
||
|
|
});
|
||
|
|
module.factory('HttpInterceptor', [
|
||
|
|
'$q',
|
||
|
|
'$timeout',
|
||
|
|
function($q,
|
||
|
|
$timeout) {
|
||
|
|
return {
|
||
|
|
responseError: function(rejection) {
|
||
|
|
if (rejection.status === 403) {
|
||
|
|
toastr.warning("Пользователь не авторизован!");
|
||
|
|
$timeout(() => {
|
||
|
|
return window.location.href = "/manager/login";
|
||
|
|
},
|
||
|
|
1200);
|
||
|
|
return $q(() => {
|
||
|
|
return null;
|
||
|
|
});
|
||
|
|
}
|
||
|
|
return $q.reject(rejection);
|
||
|
|
}
|
||
|
|
};
|
||
|
|
}
|
||
|
|
]);
|
||
|
|
module.filter('orderObjectBy', function() {
|
||
|
|
return function(data, order) {
|
||
|
|
var items, objectKey;
|
||
|
|
if (!angular.isObject(data)) {
|
||
|
|
return data;
|
||
|
|
}
|
||
|
|
items = [];
|
||
|
|
for (objectKey in data) {
|
||
|
|
if (data.hasOwnProperty(objectKey)) {
|
||
|
|
items.push(data[objectKey]);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
items.sort(function(a, b) {
|
||
|
|
var tmpa, tmpb;
|
||
|
|
tmpa = a[order.field];
|
||
|
|
tmpb = b[order.field];
|
||
|
|
if (tmpa > tmpb) {
|
||
|
|
return 1;
|
||
|
|
} else {
|
||
|
|
return -1;
|
||
|
|
}
|
||
|
|
});
|
||
|
|
if (order.reverse) {
|
||
|
|
items.reverse();
|
||
|
|
}
|
||
|
|
return items;
|
||
|
|
};
|
||
|
|
});
|
||
|
|
return module.filter('filterData', function() {
|
||
|
|
return function(items, filter) {
|
||
|
|
var filtered, searchTranslatedToEng, searchTranslatedToRus, searches;
|
||
|
|
filtered = [];
|
||
|
|
if (filter && (filter.length > 0)) {
|
||
|
|
searches = [filter.toLowerCase()];
|
||
|
|
searchTranslatedToRus = replaceToRus(searches[0]);
|
||
|
|
searchTranslatedToEng = replaceToEng(searches[0]);
|
||
|
|
if (searchTranslatedToRus !== searches[0]) {
|
||
|
|
searches.push(escapeRegExp(searchTranslatedToRus));
|
||
|
|
}
|
||
|
|
if (searchTranslatedToEng !== searches[0]) {
|
||
|
|
searches.push(escapeRegExp(searchTranslatedToEng));
|
||
|
|
}
|
||
|
|
searches[0] = escapeRegExp(searches[0]);
|
||
|
|
filtered = [];
|
||
|
|
angular.forEach(items, function(item) {
|
||
|
|
var i, itemFiltered, len, results, search;
|
||
|
|
itemFiltered = false;
|
||
|
|
results = [];
|
||
|
|
for (i = 0, len = searches.length; i < len; i++) {
|
||
|
|
search = searches[i];
|
||
|
|
if (!itemFiltered) {
|
||
|
|
if (item.label && item.label.toLowerCase().match(search) || item.color && item.color.toLowerCase().match(search) || item.profile && item.profile.toLowerCase().match(search)) {
|
||
|
|
filtered.push(item);
|
||
|
|
results.push(itemFiltered = true);
|
||
|
|
} else {
|
||
|
|
results.push(void 0);
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
results.push(void 0);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return results;
|
||
|
|
});
|
||
|
|
} else {
|
||
|
|
filtered = items;
|
||
|
|
}
|
||
|
|
return filtered;
|
||
|
|
};
|
||
|
|
});
|
||
|
|
})(supersamApp);
|
||
|
|
|
||
|
|
UtilitiesClass = class UtilitiesClass {
|
||
|
|
constructor(config, $filter = null, $timeout, $http = null) {
|
||
|
|
this.getLastUpdate = this.getLastUpdate.bind(this);
|
||
|
|
this.getYesNoLabel = this.getYesNoLabel.bind(this);
|
||
|
|
this.setUpdateDates = this.setUpdateDates.bind(this);
|
||
|
|
this.getBorderImageById = this.getBorderImageById.bind(this);
|
||
|
|
this.getFasadBorderImageById = this.getFasadBorderImageById.bind(this);
|
||
|
|
this.getDoorImageById = this.getDoorImageById.bind(this);
|
||
|
|
this.getSheetImageById = this.getSheetImageById.bind(this);
|
||
|
|
this.getFasadSheetImageById = this.getFasadSheetImageById.bind(this);
|
||
|
|
this.showContentOnLoad = this.showContentOnLoad.bind(this);
|
||
|
|
this.getBranchNameById = this.getBranchNameById.bind(this);
|
||
|
|
this.isAppAvailableToUser = this.isAppAvailableToUser.bind(this);
|
||
|
|
this.addAppAvailableToUser = this.addAppAvailableToUser.bind(this);
|
||
|
|
this.removeAppAvailableToUser = this.removeAppAvailableToUser.bind(this);
|
||
|
|
this.getConfigLabel = this.getConfigLabel.bind(this);
|
||
|
|
this.getDoorManufacturer = this.getDoorManufacturer.bind(this);
|
||
|
|
this.getUserNameById = this.getUserNameById.bind(this);
|
||
|
|
this.getCreatedForUserNameById = this.getCreatedForUserNameById.bind(this);
|
||
|
|
this.getAvailableToOrderManagerNameById = this.getAvailableToOrderManagerNameById.bind(this);
|
||
|
|
this.formatFileSize = this.formatFileSize.bind(this);
|
||
|
|
this.getSelectedSheetsInStock = this.getSelectedSheetsInStock.bind(this);
|
||
|
|
this.sortBy = this.sortBy.bind(this);
|
||
|
|
this.getSortByClass = this.getSortByClass.bind(this);
|
||
|
|
this.getSortParams = this.getSortParams.bind(this);
|
||
|
|
this.getSmsStatusClass = this.getSmsStatusClass.bind(this);
|
||
|
|
this.getPaymentStatusClass = this.getPaymentStatusClass.bind(this);
|
||
|
|
this.getSmsRuBalance = this.getSmsRuBalance.bind(this);
|
||
|
|
this.config = config;
|
||
|
|
this.filter = $filter;
|
||
|
|
this.timeout = $timeout;
|
||
|
|
this.http = $http;
|
||
|
|
this.smsRuBalance = null;
|
||
|
|
this.smsRuBalanceIsLoading = false;
|
||
|
|
this.smsRuBalanceIsLoaded = false;
|
||
|
|
}
|
||
|
|
|
||
|
|
getLastUpdate(app = "", group) {
|
||
|
|
var configField, i, label, len, ref, ts, user, v;
|
||
|
|
label = "";
|
||
|
|
configField = "updates";
|
||
|
|
if (app !== "") {
|
||
|
|
configField = app + "_" + configField;
|
||
|
|
}
|
||
|
|
if (this.config[configField] && this.config[configField][group + 'LastUpdateDate']) {
|
||
|
|
ts = new Date(this.config[configField][group + 'LastUpdateDate'].value * 1000);
|
||
|
|
label = 'Последнее обновление ' + this.filter('date')(ts, 'dd-MM-yyyy в HH:mm');
|
||
|
|
if (this.config[configField][group + 'LastUpdateManagerId']) {
|
||
|
|
ref = this.config.users;
|
||
|
|
for (i = 0, len = ref.length; i < len; i++) {
|
||
|
|
v = ref[i];
|
||
|
|
if (v.id === parseInt(this.config[configField][group + 'LastUpdateManagerId'].value)) {
|
||
|
|
user = v;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (user) {
|
||
|
|
label += " пользователем " + user.name;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return label;
|
||
|
|
}
|
||
|
|
|
||
|
|
getYesNoLabel(data) {
|
||
|
|
if (data === true) {
|
||
|
|
return 'Да';
|
||
|
|
} else {
|
||
|
|
return 'Нет';
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
setUpdateDates(group, data, updates) {
|
||
|
|
if (data[group + 'LastUpdateDate']) {
|
||
|
|
if (!updates[group + 'LastUpdateDate']) {
|
||
|
|
updates[group + 'LastUpdateDate'] = {};
|
||
|
|
}
|
||
|
|
if (!updates[group + 'LastUpdateManagerId']) {
|
||
|
|
updates[group + 'LastUpdateManagerId'] = {};
|
||
|
|
}
|
||
|
|
updates[group + 'LastUpdateDate'].value = angular.copy(data[group + 'LastUpdateDate']);
|
||
|
|
return updates[group + 'LastUpdateManagerId'].value = angular.copy(data[group + 'LastUpdateManagerId']);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
getBorderImageById(borderId) {
|
||
|
|
var i, image, len, ref, selectedBorder, v;
|
||
|
|
image = '';
|
||
|
|
if (borderId) {
|
||
|
|
ref = this.config.borders;
|
||
|
|
for (i = 0, len = ref.length; i < len; i++) {
|
||
|
|
v = ref[i];
|
||
|
|
if (v.id === borderId) {
|
||
|
|
selectedBorder = v;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (selectedBorder && selectedBorder.image) {
|
||
|
|
image = '/img/borders/' + selectedBorder.image;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return image;
|
||
|
|
}
|
||
|
|
|
||
|
|
getFasadBorderImageById(borderId) {
|
||
|
|
var i, image, len, ref, selectedBorder, v;
|
||
|
|
image = '';
|
||
|
|
if (borderId) {
|
||
|
|
ref = this.config.borders;
|
||
|
|
for (i = 0, len = ref.length; i < len; i++) {
|
||
|
|
v = ref[i];
|
||
|
|
if (v.id === borderId) {
|
||
|
|
selectedBorder = v;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (selectedBorder && selectedBorder.image) {
|
||
|
|
image = '/img/fasad_borders/' + selectedBorder.image;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return image;
|
||
|
|
}
|
||
|
|
|
||
|
|
getDoorImageById(doorId) {
|
||
|
|
var i, image, len, ref, selectedDoor, v;
|
||
|
|
image = '';
|
||
|
|
if (doorId) {
|
||
|
|
ref = this.config.doors;
|
||
|
|
for (i = 0, len = ref.length; i < len; i++) {
|
||
|
|
v = ref[i];
|
||
|
|
if (v.id === doorId) {
|
||
|
|
selectedDoor = v;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (selectedDoor) {
|
||
|
|
if (selectedDoor.image) {
|
||
|
|
image = '/img/doors/' + selectedDoor.image;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return image;
|
||
|
|
}
|
||
|
|
|
||
|
|
getSheetImageById(sheetId, type = 'image') {
|
||
|
|
var i, image, len, ref, selectedSheet, v;
|
||
|
|
image = '';
|
||
|
|
if (sheetId) {
|
||
|
|
ref = this.config.sheets;
|
||
|
|
for (i = 0, len = ref.length; i < len; i++) {
|
||
|
|
v = ref[i];
|
||
|
|
if (v.id === sheetId) {
|
||
|
|
selectedSheet = v;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (selectedSheet) {
|
||
|
|
if (type === 'image') {
|
||
|
|
if (selectedSheet.image) {
|
||
|
|
image = '/img/sheets/' + selectedSheet.image;
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
if (selectedSheet.thumb) {
|
||
|
|
image = '/img/sheet_thumbs/' + selectedSheet.thumb;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return image;
|
||
|
|
}
|
||
|
|
|
||
|
|
getFasadSheetImageById(sheetId, type = 'image') {
|
||
|
|
var i, image, len, ref, selectedSheet, v;
|
||
|
|
image = '';
|
||
|
|
if (sheetId) {
|
||
|
|
ref = this.config.sheets;
|
||
|
|
for (i = 0, len = ref.length; i < len; i++) {
|
||
|
|
v = ref[i];
|
||
|
|
if (v.id === sheetId) {
|
||
|
|
selectedSheet = v;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (selectedSheet) {
|
||
|
|
if (type === 'image') {
|
||
|
|
if (selectedSheet.image) {
|
||
|
|
image = '/img/fasad_sheets/' + selectedSheet.image;
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
if (selectedSheet.thumb) {
|
||
|
|
image = '/img/fasad_sheet_thumbs/' + selectedSheet.thumb;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return image;
|
||
|
|
}
|
||
|
|
|
||
|
|
showContentOnLoad() {
|
||
|
|
return this.timeout(() => {
|
||
|
|
return angular.element('.hidden-on-load').removeClass('hidden-on-load');
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
getBranchNameById(branchId) {
|
||
|
|
var branch, i, len, ref, selectedBranch, v;
|
||
|
|
branch = '';
|
||
|
|
if (branchId) {
|
||
|
|
ref = this.config.branches;
|
||
|
|
for (i = 0, len = ref.length; i < len; i++) {
|
||
|
|
v = ref[i];
|
||
|
|
if (v.id === branchId) {
|
||
|
|
selectedBranch = v;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (selectedBranch && selectedBranch.label) {
|
||
|
|
branch = selectedBranch.label;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return branch;
|
||
|
|
}
|
||
|
|
|
||
|
|
isAppAvailableToUser(availableApps, appId) {
|
||
|
|
var result;
|
||
|
|
result = false;
|
||
|
|
if (availableApps && (availableApps.indexOf(appId) !== -1)) {
|
||
|
|
result = true;
|
||
|
|
}
|
||
|
|
return result;
|
||
|
|
}
|
||
|
|
|
||
|
|
addAppAvailableToUser(user, appId, isDisabled) {
|
||
|
|
if (isDisabled) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
if (!user.available_apps) {
|
||
|
|
user.available_apps = [];
|
||
|
|
}
|
||
|
|
if (user.available_apps.indexOf(appId) < 0) {
|
||
|
|
return user.available_apps.push(appId);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
removeAppAvailableToUser(user, appId, isDisabled) {
|
||
|
|
var pos;
|
||
|
|
if (isDisabled) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
if (!user.available_apps) {
|
||
|
|
user.available_apps = [];
|
||
|
|
}
|
||
|
|
if (user.available_apps.length > 1) {
|
||
|
|
pos = user.available_apps.indexOf(appId);
|
||
|
|
if (pos !== -1) {
|
||
|
|
return user.available_apps.splice(pos, 1);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
getConfigLabel(key, global = false) {
|
||
|
|
var label;
|
||
|
|
label = '';
|
||
|
|
if (!global) {
|
||
|
|
if (this.config.labels[key]) {
|
||
|
|
label = this.config.labels[key].value;
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
if (this.config.global_labels[key]) {
|
||
|
|
label = this.config.global_labels[key].value;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return label;
|
||
|
|
}
|
||
|
|
|
||
|
|
getDoorManufacturer(manufacturerId) {
|
||
|
|
var key, label, manufacturer, ref;
|
||
|
|
label = '';
|
||
|
|
if (manufacturerId) {
|
||
|
|
ref = this.config.doorsManufacturers;
|
||
|
|
for (key in ref) {
|
||
|
|
manufacturer = ref[key];
|
||
|
|
if (manufacturer.id === manufacturerId) {
|
||
|
|
label = manufacturer.label;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return label;
|
||
|
|
}
|
||
|
|
|
||
|
|
getUserNameById(id) {
|
||
|
|
var i, label, len, ref, user, v;
|
||
|
|
label = "";
|
||
|
|
ref = this.config.users;
|
||
|
|
for (i = 0, len = ref.length; i < len; i++) {
|
||
|
|
v = ref[i];
|
||
|
|
if (v.id === parseInt(id)) {
|
||
|
|
user = v;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (user) {
|
||
|
|
label = user.name;
|
||
|
|
}
|
||
|
|
return label;
|
||
|
|
}
|
||
|
|
|
||
|
|
getCreatedForUserNameById(id) {
|
||
|
|
var i, label, len, ref, user, v;
|
||
|
|
label = "";
|
||
|
|
ref = this.config.users;
|
||
|
|
for (i = 0, len = ref.length; i < len; i++) {
|
||
|
|
v = ref[i];
|
||
|
|
if (v.id === parseInt(id)) {
|
||
|
|
user = v;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (user) {
|
||
|
|
label = user.availableToOrderName;
|
||
|
|
}
|
||
|
|
return label;
|
||
|
|
}
|
||
|
|
|
||
|
|
getAvailableToOrderManagerNameById(id) {
|
||
|
|
var i, label, len, ref, user, v;
|
||
|
|
label = "";
|
||
|
|
ref = this.config.availableToOrderManagers;
|
||
|
|
for (i = 0, len = ref.length; i < len; i++) {
|
||
|
|
v = ref[i];
|
||
|
|
if (v.id === parseInt(id)) {
|
||
|
|
user = v;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (user) {
|
||
|
|
label = user.name;
|
||
|
|
}
|
||
|
|
return label;
|
||
|
|
}
|
||
|
|
|
||
|
|
formatFileSize(bytes) {
|
||
|
|
var thresh, u, units;
|
||
|
|
thresh = 1024;
|
||
|
|
if (Math.abs(bytes) < thresh) {
|
||
|
|
return bytes + ' B';
|
||
|
|
}
|
||
|
|
units = ['KB', 'MB'];
|
||
|
|
u = -1;
|
||
|
|
while (true) {
|
||
|
|
bytes /= thresh;
|
||
|
|
++u;
|
||
|
|
if (!(Math.abs(bytes) >= thresh && u < units.length - 1)) {
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return bytes.toFixed(u > 0 ? u + 1 : 0) + ' ' + units[u];
|
||
|
|
}
|
||
|
|
|
||
|
|
getSelectedSheetsInStock(sheetId) {
|
||
|
|
var i, len, ref, result, selectedSheet, v;
|
||
|
|
result = null;
|
||
|
|
if (sheetId) {
|
||
|
|
ref = this.config.sheets;
|
||
|
|
for (i = 0, len = ref.length; i < len; i++) {
|
||
|
|
v = ref[i];
|
||
|
|
if (v.id === sheetId) {
|
||
|
|
selectedSheet = v;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (selectedSheet.quantityIn1C) {
|
||
|
|
result = parseInt(selectedSheet.quantityIn1C);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return result;
|
||
|
|
}
|
||
|
|
|
||
|
|
sortBy(group, field, defaultDirectionForField = 'asc') {
|
||
|
|
if (this.config.sortFields[group].field === field) {
|
||
|
|
this.config.sortFields[group].direction = angular.copy((this.config.sortFields[group].direction === 'desc' ? 'asc' : 'desc'));
|
||
|
|
} else {
|
||
|
|
this.config.sortFields[group].direction = angular.copy(defaultDirectionForField);
|
||
|
|
}
|
||
|
|
return this.config.sortFields[group].field = angular.copy(field);
|
||
|
|
}
|
||
|
|
|
||
|
|
getSortByClass(group, field) {
|
||
|
|
var result;
|
||
|
|
result = "";
|
||
|
|
if (this.config.sortFields[group].field === field) {
|
||
|
|
result = this.config.sortFields[group].direction;
|
||
|
|
}
|
||
|
|
return result;
|
||
|
|
}
|
||
|
|
|
||
|
|
getSortParams(group) {
|
||
|
|
var currSortDirection;
|
||
|
|
currSortDirection = ((this.config.sortFields[group].direction === "asc") ? false : true);
|
||
|
|
return {
|
||
|
|
reverse: currSortDirection,
|
||
|
|
field: this.config.sortFields[group].field
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
getSmsStatusClass(status) {
|
||
|
|
var result;
|
||
|
|
result = "";
|
||
|
|
if (status && (status.length > 0) && this.config.smsStatusList[status] && this.config.smsStatusList[status].class) {
|
||
|
|
result = this.config.smsStatusList[status].class;
|
||
|
|
}
|
||
|
|
return result;
|
||
|
|
}
|
||
|
|
|
||
|
|
getPaymentStatusClass(status) {
|
||
|
|
var result;
|
||
|
|
result = "";
|
||
|
|
if (status && (status.length > 0) && this.config.paymentStatusList[status] && this.config.paymentStatusList[status].class) {
|
||
|
|
result = this.config.paymentStatusList[status].class;
|
||
|
|
}
|
||
|
|
return result;
|
||
|
|
}
|
||
|
|
|
||
|
|
getSmsRuBalance() {
|
||
|
|
if (this.config.isAdmin && !this.smsRuBalanceIsLoading) {
|
||
|
|
this.smsRuBalanceIsLoading = true;
|
||
|
|
return this.http({
|
||
|
|
method: 'POST',
|
||
|
|
url: this.config.urls.subscribes,
|
||
|
|
data: {
|
||
|
|
action: 'getSmsRuBalance'
|
||
|
|
},
|
||
|
|
timeout: 30000
|
||
|
|
}).then((response) => {
|
||
|
|
var data, error, i, len, ref, results;
|
||
|
|
this.smsRuBalanceIsLoading = false;
|
||
|
|
if (response.data) {
|
||
|
|
data = response.data;
|
||
|
|
if (data.status && (data.status === "success")) {
|
||
|
|
this.smsRuBalanceIsLoaded = true;
|
||
|
|
return this.smsRuBalance = data.balance;
|
||
|
|
} else {
|
||
|
|
if (data.errors && data.errors.length) {
|
||
|
|
ref = data.errors;
|
||
|
|
results = [];
|
||
|
|
for (i = 0, len = ref.length; i < len; i++) {
|
||
|
|
error = ref[i];
|
||
|
|
results.push(toastr.error(error));
|
||
|
|
}
|
||
|
|
return results;
|
||
|
|
} else {
|
||
|
|
return toastr.error(this.config.global_labels.defaultErrorMessage.value);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}).catch(() => {
|
||
|
|
this.smsRuBalanceIsLoading = false;
|
||
|
|
return toastr.error('Произошла ошибка при запросе баланса, повторите позднее!');
|
||
|
|
});
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
};
|