release version 1.12.0

This commit is contained in:
2026-02-18 23:32:39 +03:00
parent 24ce86f470
commit 5d0e27b3e2
2858 changed files with 18366 additions and 113588 deletions

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
@@ -291,23 +291,9 @@ var EntaxyCICD;
if (objectsToAdd.length > 0) {
let sublist = objectsToAdd.map(object => {
addRelation(relations, object.fullId, objectsIds[i]);
return {
name: object.fullId,
fullId: object.fullId,
displayName: object.displayName,
additionalInfo: object.type,
parent: objectsIds[i],
disableRowExpansion: true
};
});
objectsTree.push({
name: objectsIds[i],
displayName: objectsMap[objectsIds[i]].displayName,
additionalInfo: objectsMap[objectsIds[i]].type,
isExpanded: true,
sublist: sublist.sort(Entaxy.compareBy('displayName'))
return getSublistItem(object, objectsIds[i]);
});
objectsTree.push(getObjectTreeItem(objectsIds[i], objectsMap, sublist, false));
}
}
}
@@ -440,30 +426,119 @@ var EntaxyCICD;
}
ctrl.removeSelected = function () {
const operationName = 'removeItems';
const successMessage = 'Selected items were successfully removed from the project';
let selectedIds = Object.keys(ctrl.selected);
if (selectedIds.length > 0) {
entaxyCICDService
.executeOperation(operationName, [ctrl.storage, ctrl.project, ctrl.version, selectedIds])
.then(result => {
let unremovedItems = JSON.parse(result);
if (unremovedItems && Object.keys(unremovedItems).length > 0) {
let message = 'There are items that cannot be removed ' +
'since they are required by some of remaining items';
let table = EntaxyCICD.createTableFromUnremovedItems(unremovedItems);
Entaxy.notificationWithDetails(Entaxy.NOTIFICATION_TYPE.INFO, message, table, 30000);
} else {
Entaxy.notificationSuccess(successMessage);
}
$route.reload();
}).catch(error => {
Entaxy.notificationError(error);
EntaxyCICD.log.error(error);
});
if (selectedIds.length == ctrl.items.length) {
removeSelected(selectedIds);
} else {
removeSelectedWithCheck(selectedIds);
}
}
}
function removeSelectedWithCheck (selectedIds) {
entaxyCICDService.executeOperation('getRequiredForRemoval',
[ctrl.storage, ctrl.project, ctrl.version, selectedIds])
.then(result => {
let objectsTree = [];
let requiredForRemovalList = JSON.parse(result);
let mainRequiredForRemovalIds = requiredForRemovalList
.map(requiredForRemovalObject => Object.keys(requiredForRemovalObject)[0]);
let subRequiredForRemovalIds = [];
if (mainRequiredForRemovalIds.length > 0) {
let requiredForRemoval = Object.fromEntries(requiredForRemovalList
.map(requiredForRemovalObject => Object.entries(requiredForRemovalObject)).flat());
let objectsMap = mainRequiredForRemovalIds.length > Object.keys(ctrl.selected).length ?
ctrl.items.reduce((obj, cur) => ({ ...obj, [cur.id] : cur }), {}) :
ctrl.selected;
mainRequiredForRemovalIds.forEach(itemId => {
let itemIds = ctrl.items.map(item => item.id);
let filtered = requiredForRemoval[itemId].filter(object => itemIds.includes(object.fullId));
if (filtered.length > 0) {
subRequiredForRemovalIds = subRequiredForRemovalIds
.concat(filtered.map(object => object.fullId));
let sublist = filtered.map(object => getSublistItem(object, itemId));
objectsTree.push(getObjectTreeItem(itemId, objectsMap, sublist, true));
}
});
if (objectsTree.length > 0) {
openRemoveObjectsModal(objectsTree)
.then(proceed => {
if (proceed) {
removeSelected(selectedIds.concat([...new Set(subRequiredForRemovalIds)]));
} else {
const idsToRemoval = selectedIds.filter(selectedId =>
!mainRequiredForRemovalIds.includes(selectedId));
if (idsToRemoval.length > 0) {
removeSelected(idsToRemoval);
}
}
}, reason => {
if (reason && reason !== Entaxy.MODAL_CANCEL_REASON.ESCAPE_KEY_PRESS) {
Entaxy.notificationError(reason);
}
});
} else {
removeSelected(selectedIds);
}
} else {
removeSelected(selectedIds);
}
});
}
function getSublistItem(object, parentId) {
return {
name: object.fullId,
fullId: object.fullId,
displayName: object.displayName,
additionalInfo: object.type,
parent: parentId,
disableRowExpansion: true
}
}
function getObjectTreeItem(objectId, objectsMap, sublist, useRuntimeType) {
return {
name: objectId,
displayName: objectsMap[objectId].displayName,
additionalInfo: useRuntimeType ? objectsMap[objectId].runtimeType : objectsMap[objectId].type,
isExpanded: true,
sublist: sublist.sort(Entaxy.compareBy('displayName'))
}
}
function openRemoveObjectsModal(toRemoval) {
return $uibModal.open({
component: 'entaxyCiCdRemoveObjectsModal',
resolve: {
project: () => ctrl.project,
toRemoval: () => toRemoval,
excludedObjectIds: () => ctrl.items.length > 0 ? ctrl.items.map(item => item.id) : []
},
size: 'xl',
backdrop: 'static'
}).result;
}
function removeSelected (idsToRemove) {
const operationName = 'removeItems';
const successMessage = 'Selected items were successfully removed from the project';
entaxyCICDService
.executeOperation(operationName, [ctrl.storage, ctrl.project, ctrl.version, idsToRemove])
.then(() => {
Entaxy.notificationSuccess(successMessage);
$route.reload();
}).catch(error => {
Entaxy.notificationError(error);
EntaxyCICD.log.error(error);
$route.reload();
});
}
function processOperationSelected(operationName, successMessage) {
let selectedIds = Object.keys(ctrl.selected);
if (selectedIds.length > 0) {
@@ -480,6 +555,7 @@ var EntaxyCICD;
}).catch(error => {
Entaxy.notificationError(error);
EntaxyCICD.log.error(error);
$route.reload();
});
}
}

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -0,0 +1,79 @@
/*-
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
* rights to the Software and any copies are the property of the Copyright Holder. Unless
* it is explicitly allowed the Copyright Holder, the User is prohibited from using the
* Software for commercial purposes to provide services to third parties.
*
* The Copyright Holder hereby declares that the Software is provided on an "AS IS".
* Under no circumstances does the Copyright Holder guarantee or promise that the
* Software provided by him will be suitable or not suitable for the specific purposes
* of the User, that the Software will meet all commercial and personal subjective
* expectations of the User, that the Software will work properly, without technical
* errors, quickly and uninterruptedly.
*
* Under no circumstances shall the Copyright Holder or its Affiliates is not liable
* to the User for any direct or indirect losses of the User, his expenses or actual
* damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
* or damage to data, property, etc.
* ~~~~~~/licensing~~~~~~
*/
var EntaxyCICD;
(function (EntaxyCICD) {
EntaxyCICD._module.component('entaxyCiCdRemoveObjectsModal', {
bindings: {
modalInstance: '<',
resolve: '<'
},
template:
`
<div class="entaxy-modal-container">
<div class="modal-header">
<button type="button" class="close" aria-label="Close" ng-click="$ctrl.cancel()">
<span class="pficon pficon-close" aria-hidden="true"></span>
</button>
<h4 class="modal-title">{{$ctrl.modalTitle}}</h4>
</div>
<div class="modal-body">
<div class="collocated-objects-message-container">
{{$ctrl.message}}
</div>
<entaxy-expandable-list items="$ctrl.resolve.toRemoval" use-toolbar="false" show-select-box="false">
</entaxy-expandable-list>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" ng-click="$ctrl.proceed(false)">Cancel</button>
<button type="submit" class="btn btn-primary" ng-click="$ctrl.proceed(true)">Proceed</button>
</div>
</div>
`,
controller: entaxyCICDRemoveObjectsModalController
})
.name;
function entaxyCICDRemoveObjectsModalController() {
let ctrl = this;
ctrl.$onInit = function() {
ctrl.modalTitle = 'Remove items from the Project: ' + ctrl.resolve.project;
ctrl.message = 'Removing next items will cause removing extra objects:';
}
ctrl.proceed = function (answer) {
ctrl.modalInstance.close(answer);
}
ctrl.cancel = function(reason) {
ctrl.modalInstance.dismiss(reason);
}
}
})(EntaxyCICD || (EntaxyCICD = {}));

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-management-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-management-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property

View File

@@ -2,7 +2,7 @@
* ~~~~~~licensing~~~~~~
* entaxy-cicd-plugin
* ==========
* Copyright (C) 2020 - 2025 EmDev LLC
* Copyright (C) 2020 - 2026 EmDev LLC
* ==========
* You may not use this file except in accordance with the License Terms of the Copyright
* Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property