Initial commit
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
(function () {
|
||||
global.dashModule
|
||||
.controller('documentsAddCtrl', ['$scope', '$http', '$', '$translate', 'Upload', 'utilsService', documentsAddController])
|
||||
.directive('documentsAdd', [documentsAddDirective]);
|
||||
|
||||
function documentsAddDirective() {
|
||||
return {
|
||||
restrict: 'E',
|
||||
templateUrl: 'documents/html/documentsAddTemplate'
|
||||
};
|
||||
}
|
||||
|
||||
function documentsAddController($scope, $http, $, $translate, Upload, utilsService) {
|
||||
$scope.getDocumentTypes = getDocumentTypes;
|
||||
$scope.setDocumentTypes = setDocumentTypes;
|
||||
$scope.uploadFile = uploadFile;
|
||||
$scope.selectType = selectType;
|
||||
$scope.getTypeRowClass = getTypeRowClass;
|
||||
$scope.addNewType = addNewType;
|
||||
$scope.hasInfo = hasInfo;
|
||||
$scope.documentTypes = [];
|
||||
$scope.documentName = '';
|
||||
$scope.documentNewType = '';
|
||||
$scope.selectedType = {};
|
||||
|
||||
function getDocumentTypes() {
|
||||
$http({
|
||||
method: 'GET',
|
||||
url: 'documents/api/getDocumentTypes'
|
||||
}).then(setDocumentTypes, utilsService.onHttpError);
|
||||
}
|
||||
|
||||
function setDocumentTypes(response) {
|
||||
if (response.data && response.data.length) {
|
||||
$scope.documentTypes = response.data;
|
||||
}
|
||||
}
|
||||
|
||||
function uploadFile(file) {
|
||||
if (parseInt($scope.selectedType.isSpecialType) === 1) {
|
||||
displayMessage({data: {messages: [{code:'error', 'message': 'INVALID_DOC_TYPE'}]}});
|
||||
} else {
|
||||
Upload.upload({
|
||||
url: 'documents/api/uploadNewDocument',
|
||||
method: 'POST',
|
||||
file: file,
|
||||
data: {
|
||||
idDocumentType: $scope.selectedType.idDocumentType || 0,
|
||||
documentName: $scope.documentName
|
||||
}
|
||||
}).then(displayMessage, utilsService.onHttpError);
|
||||
}
|
||||
}
|
||||
|
||||
function displayMessage(response) {
|
||||
if (typeof response.data.messages !== 'undefined') {
|
||||
response.data.messages.forEach((messageObj) => {
|
||||
const translatedMessage = $translate.instant('documents.messages.' + messageObj.message);
|
||||
utilsService.displayMessage(messageObj.code, translatedMessage);
|
||||
if (messageObj.code === 'success') {
|
||||
getDocumentTypes();
|
||||
$scope.documentName = '';
|
||||
$scope.documentNewType = '';
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function getTypeRowClass(docType) {
|
||||
let rowClass = parseInt(docType.isSpecialType) === 0 ? 'can-add-document' : 'special-document';
|
||||
rowClass += $scope.selectedType === docType ? ' selected-document' : '';
|
||||
return rowClass;
|
||||
}
|
||||
|
||||
function selectType(docType) {
|
||||
$scope.selectedType = docType;
|
||||
}
|
||||
|
||||
function addNewType() {
|
||||
const params = $.param({
|
||||
documentNewType: $scope.documentNewType
|
||||
});
|
||||
|
||||
$http({
|
||||
method: 'POST',
|
||||
url: 'documents/api/addNewDocumnetType',
|
||||
data: params
|
||||
}).then(displayMessage, utilsService.onHttpError);
|
||||
}
|
||||
}
|
||||
|
||||
function hasInfo(selectedType) {
|
||||
return parseInt(selectedType.isSpecialType) === 1 || parseInt(selectedType.idDocumentType) === 1 || parseInt(selectedType.idDocumentType) === 6;
|
||||
}
|
||||
})();
|
||||
@@ -0,0 +1,120 @@
|
||||
(function () {
|
||||
global.dashModule
|
||||
.controller('documentsLinkCtrl', ['$scope', '$http', '$', '$translate', 'utilsService', documentsLinkController])
|
||||
.directive('documentsLink', [documentsLinkDirective]);
|
||||
|
||||
function documentsLinkDirective() {
|
||||
return {
|
||||
restrict: 'E',
|
||||
templateUrl: 'documents/html/documentsLinkTemplate'
|
||||
};
|
||||
}
|
||||
|
||||
function documentsLinkController($scope, $http, $, $translate, utilsService) {
|
||||
$scope.getDocumentsAndPackages = getDocumentsAndPackages;
|
||||
$scope.selectPackage = selectPackage;
|
||||
$scope.getPackageClass = getPackageClass;
|
||||
$scope.documentDragStart = documentDragStart;
|
||||
$scope.documentDragStop = documentDragStop;
|
||||
$scope.documentDropped = documentDropped;
|
||||
$scope.updatePackageDocuments = updatePackageDocuments;
|
||||
$scope.documents = [];
|
||||
$scope.packages = [];
|
||||
$scope.selectedPackage = {};
|
||||
|
||||
function getDocumentsAndPackages() {
|
||||
$http({
|
||||
method: 'POST',
|
||||
url: 'documents/api/getDocumentsAndPackages'
|
||||
}).then(setDocumentsAndPackages, utilsService.onHttpError);
|
||||
}
|
||||
|
||||
function setDocumentsAndPackages(response) {
|
||||
if (response.data && response.data.documents && response.data.packages) {
|
||||
$scope.documents = response.data.documents;
|
||||
$scope.packages = response.data.packages;
|
||||
$scope.documents.forEach(hideLinkedDocuments);
|
||||
$scope.selectedPackage = response.data.packages[0] || {};
|
||||
}
|
||||
}
|
||||
|
||||
function hideLinkedDocuments(curentDocument) {
|
||||
let isDocumentInArray = false;
|
||||
if ($scope.selectedPackage.documents) {
|
||||
isDocumentInArray = $scope.selectedPackage.documents.find((doc) => {
|
||||
return doc.idDocument === curentDocument.idDocument;
|
||||
});
|
||||
}
|
||||
|
||||
curentDocument.isNotLinked = isDocumentInArray ? curentDocument.isNotLinked = false : curentDocument.isNotLinked = true;
|
||||
}
|
||||
|
||||
function selectPackage(selected) {
|
||||
$scope.selectedPackage = selected;
|
||||
$scope.documents.forEach(hideLinkedDocuments);
|
||||
}
|
||||
|
||||
function getPackageClass(curent) {
|
||||
return curent === $scope.selectedPackage ? 'selected-package' : '';
|
||||
}
|
||||
|
||||
function documentDragStart(event, ui, selector) {
|
||||
$('#'+selector).css({
|
||||
overflow: 'visible',
|
||||
});
|
||||
}
|
||||
|
||||
function documentDragStop(event, ui, selector) {
|
||||
$('#'+ selector).css({
|
||||
'overflow': 'auto'
|
||||
});
|
||||
}
|
||||
|
||||
function documentDropped(event, ui, dropContainer) {
|
||||
const dropToSelector = $(ui.helper).attr('drop-to');
|
||||
const idDocument = $(ui.helper).attr('id-document');
|
||||
|
||||
if(dropContainer !== dropToSelector){
|
||||
return;
|
||||
}
|
||||
|
||||
if (dropToSelector === 'linked-documents') {
|
||||
const dragedDocument = $scope.documents.find((doc) => {
|
||||
return doc.idDocument === idDocument;
|
||||
});
|
||||
|
||||
$scope.selectedPackage.documents.push(dragedDocument);
|
||||
$scope.documents.forEach(hideLinkedDocuments);
|
||||
} else if(dropToSelector === 'all-documents') {
|
||||
const dragedDocumentIndex = $scope.selectedPackage.documents.findIndex((doc) => {
|
||||
return doc.idDocument === idDocument;
|
||||
});
|
||||
$scope.selectedPackage.documents.splice(dragedDocumentIndex, 1);
|
||||
$scope.documents.forEach(hideLinkedDocuments);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function updatePackageDocuments() {
|
||||
const params = $.param({
|
||||
idPackage: $scope.selectedPackage.idPackage,
|
||||
documents: JSON.stringify($scope.selectedPackage.documents)
|
||||
});
|
||||
|
||||
$http({
|
||||
method: 'POST',
|
||||
url: 'documents/api/updatePackageDocuments',
|
||||
data: params
|
||||
}).then(updateMessage, utilsService.onHttpError);
|
||||
}
|
||||
|
||||
function updateMessage(response) {
|
||||
if (typeof response.data.messages !== 'undefined') {
|
||||
response.data.messages.forEach((messageObj) => {
|
||||
let translatedMessage = $translate.instant('documents.messages.' + messageObj.message);
|
||||
utilsService.displayMessage(messageObj.code, translatedMessage);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
})();
|
||||
@@ -0,0 +1,70 @@
|
||||
(function () {
|
||||
global.dashModule
|
||||
.controller('documentsViewCtrl', ['$scope', '$http', '$', '$translate', 'utilsService', documentsViewController])
|
||||
.directive('documentsView', [documentsViewDirective]);
|
||||
|
||||
function documentsViewDirective() {
|
||||
return {
|
||||
restrict: 'E',
|
||||
templateUrl: 'documents/html/documentsViewTemplate'
|
||||
};
|
||||
}
|
||||
|
||||
function documentsViewController($scope, $http, $, $translate, utilsService) {
|
||||
$scope.getDocuments = getDocuments;
|
||||
$scope.showHideRemoveDialog = showHideRemoveDialog;
|
||||
$scope.removeDocument = removeDocument;
|
||||
$scope.documents = [];
|
||||
$scope.isRemoveDialogVisible = false;
|
||||
|
||||
function getDocuments() {
|
||||
$http({
|
||||
method: 'POST',
|
||||
url: 'documents/api/getDocuments',
|
||||
data: $.param({
|
||||
idDocument: global.getParameterByName('idDocument') || 0,
|
||||
idPackage: global.getParameterByName('idPackage') || 0
|
||||
})
|
||||
}).then(setDocuments, utilsService.onHttpError);
|
||||
}
|
||||
|
||||
function setDocuments(response) {
|
||||
if (response.data) {
|
||||
$scope.documents = response.data;
|
||||
}
|
||||
}
|
||||
|
||||
function showHideRemoveDialog(document) {
|
||||
if(document){
|
||||
$scope.selectedDocument = document;
|
||||
}
|
||||
$scope.$evalAsync(() => {
|
||||
$scope.isRemoveDialogVisible = !$scope.isRemoveDialogVisible;
|
||||
});
|
||||
}
|
||||
|
||||
function removeDocument(document) {
|
||||
const params = $.param({
|
||||
idDocument: document.idDocument
|
||||
});
|
||||
|
||||
$http({
|
||||
method: 'POST',
|
||||
url: 'documents/api/removeDocument',
|
||||
data: params
|
||||
}).then(displayMessage, utilsService.onHttpError);
|
||||
}
|
||||
|
||||
function displayMessage(response) {
|
||||
if (typeof response.data.messages !== 'undefined') {
|
||||
response.data.messages.forEach((messageObj) => {
|
||||
const translatedMessage = $translate.instant('documents.messages.' + messageObj.message);
|
||||
utilsService.displayMessage(messageObj.code, translatedMessage);
|
||||
if (messageObj.code === 'success') {
|
||||
getDocuments();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
})();
|
||||
@@ -0,0 +1,38 @@
|
||||
(function () {
|
||||
global.dashModule
|
||||
.controller('documentsCtrl', ['$scope', documentsController])
|
||||
.directive('documents', [documentsDirective]);
|
||||
|
||||
function documentsDirective() {
|
||||
return {
|
||||
restrict: 'E',
|
||||
templateUrl: 'documents/html/documentsTemplate'
|
||||
};
|
||||
}
|
||||
|
||||
function documentsController($scope) {
|
||||
$scope.isSubmoduleVisible = isSubmoduleVisible;
|
||||
$scope.setSubModule = setSubModule;
|
||||
$scope.subModule = global.getParameterByName('subModule') || 'documentsView';
|
||||
addUrlListener();
|
||||
|
||||
function addUrlListener() {
|
||||
window.addEventListener('popstate', function (e) {
|
||||
$scope.$evalAsync($scope => {
|
||||
$scope.subModule = e.state ? e.state.subModule : 'documentsView';
|
||||
});
|
||||
}, false);
|
||||
}
|
||||
|
||||
function setSubModule($event) {
|
||||
$scope.subModule = $event.currentTarget.attributes.subModule.value;
|
||||
history.pushState({
|
||||
subModule: $scope.subModule
|
||||
}, null, '?subModule=' + $scope.subModule);
|
||||
}
|
||||
|
||||
function isSubmoduleVisible(subModule) {
|
||||
return subModule === $scope.subModule;
|
||||
}
|
||||
}
|
||||
})();
|
||||
198
api-wiaas/client/js/components/documents/documents.less
Normal file
198
api-wiaas/client/js/components/documents/documents.less
Normal file
@@ -0,0 +1,198 @@
|
||||
@background-layer: rgba(255, 255, 255, 0.8);
|
||||
|
||||
.module-layer {
|
||||
background: @background-layer;
|
||||
margin-top: 1%;
|
||||
margin-bottom: 2%;
|
||||
}
|
||||
|
||||
#documents-module {
|
||||
.document-icon-layer {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.document-icon {
|
||||
font-size: 200%;
|
||||
}
|
||||
|
||||
.document-icon-text {
|
||||
position: absolute;
|
||||
bottom: 5%;
|
||||
color: #FFF;
|
||||
padding: 2px;
|
||||
font-size: 61%;
|
||||
}
|
||||
|
||||
.docx, .doc {
|
||||
color: rgb(35, 114, 186);
|
||||
}
|
||||
|
||||
.pdf {
|
||||
color: rgb(231, 76, 60);
|
||||
}
|
||||
|
||||
.xlsx, .xls {
|
||||
color: rgb(0, 102, 0);
|
||||
}
|
||||
}
|
||||
|
||||
#documents-view-layer {
|
||||
.module-layer;
|
||||
|
||||
.document-categ {
|
||||
margin-top: 1%;
|
||||
}
|
||||
|
||||
.document-layer {
|
||||
padding: 1% 0;
|
||||
border-bottom: 2px solid #337ab7;
|
||||
}
|
||||
|
||||
.document-layer:hover {
|
||||
background: rgba(59, 185, 255, 0.5);
|
||||
}
|
||||
|
||||
.document-name {
|
||||
font-size: 130%;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
#documents-link-layer {
|
||||
.module-layer;
|
||||
padding-top: 2%;
|
||||
|
||||
.documents-header {
|
||||
padding: 1%;
|
||||
text-align: center;
|
||||
background: #337ab7;
|
||||
color: #FFF;
|
||||
font-size: 120%;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.documents-big-container{
|
||||
height: 445px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.documents-container {
|
||||
border: 2px solid #337ab7;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.documents-list{
|
||||
min-height: 400px;
|
||||
height: 400px;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.package-layer {
|
||||
padding: 1%;
|
||||
border-bottom: 2px solid #337ab7;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.document-row {
|
||||
padding: 1%;
|
||||
border-bottom: 2px solid #337ab7;
|
||||
cursor: move;
|
||||
}
|
||||
|
||||
.document-row:hover,
|
||||
.package-layer:hover {
|
||||
background: rgba(59, 185, 255, 0.5);
|
||||
}
|
||||
|
||||
.selected-package {
|
||||
background: rgba(59, 185, 255, 1);
|
||||
}
|
||||
|
||||
.document-icon-layer {
|
||||
display: inline-block;
|
||||
margin-right: 2%;
|
||||
}
|
||||
|
||||
.documents-link-buttons {
|
||||
margin: 2% 0;
|
||||
}
|
||||
}
|
||||
|
||||
#documents-add-layer {
|
||||
.module-layer;
|
||||
|
||||
.documents-add-layer {
|
||||
padding: 2% 0;
|
||||
}
|
||||
|
||||
.documents-header {
|
||||
padding: 1%;
|
||||
text-align: center;
|
||||
background: #337ab7;
|
||||
color: #FFF;
|
||||
font-size: 120%;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.documetns-types {
|
||||
border: 2px solid #337ab7;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.document-types-list{
|
||||
overflow-y: scroll;
|
||||
max-height: 30rem;
|
||||
border-bottom: 2px solid #337ab7;
|
||||
}
|
||||
|
||||
.add-type-layer{
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.document-type-row{
|
||||
padding: 1%;
|
||||
border-bottom: 2px solid #337ab7;
|
||||
}
|
||||
|
||||
.can-add-document {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.can-add-document:hover {
|
||||
background: rgba(59, 185, 255, 0.5);
|
||||
}
|
||||
|
||||
.special-document {
|
||||
cursor: pointer;
|
||||
background: rgba(192, 192, 192, 0.5);
|
||||
}
|
||||
|
||||
.special-document:hover {
|
||||
background: rgba(59, 185, 255, 0.5);
|
||||
}
|
||||
|
||||
.selected-document {
|
||||
background: rgba(59, 185, 255, 1);
|
||||
}
|
||||
|
||||
|
||||
.drop-box {
|
||||
margin-top: 2%;
|
||||
color: #337ab7;
|
||||
border: 5px dashed #337ab7;
|
||||
border-radius: 10px;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
font-size: 150%;
|
||||
padding: 10% 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dragover {
|
||||
border: 5px dashed #4CC417;
|
||||
}
|
||||
|
||||
.doc-type-info {
|
||||
margin-top: 1%;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user