Initial commit

This commit is contained in:
Senad Uka
2018-06-11 11:09:35 +02:00
commit ed7df7b11f
1954 changed files with 483354 additions and 0 deletions

View File

@@ -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;
}
})();

View File

@@ -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);
});
}
}
}
})();

View File

@@ -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();
}
});
}
}
}
})();

View File

@@ -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;
}
}
})();

View 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%;
}
}