Novo git da alteração
This commit is contained in:
@@ -0,0 +1,437 @@
|
||||
/**
|
||||
* Toda a lógica para o correto funcionamento desse componente foi feito em cima das classes abaixo:
|
||||
* .componentAnexo, .descAnexo, .inputAnexo, .btnUpFile, .btnViewerFile, .btnDownloadFile e o atributo data-acao
|
||||
* Sem elas o código não irá funcionar, então se por acaso você quiser alterar os nomes dessas classes
|
||||
* lembre-se de alterar nas funções desse arquivo e também no css
|
||||
*/
|
||||
|
||||
/**
|
||||
* Direciona para cada função correspondente ao valor que esta no atributo data-acao do botão
|
||||
* @param {object} event Parâmetro obrigatório, o própio elemento que sofreu o evento click
|
||||
* @return {void}
|
||||
* @author Sérgio Machado
|
||||
*/
|
||||
function anexo(event){
|
||||
console.log("event")
|
||||
console.log(event)
|
||||
try{
|
||||
const acao = event.currentTarget.getAttribute("data-acao");
|
||||
const inputFile = $(event.currentTarget).parent().parent().find(".inputAnexo")[0]
|
||||
const fileDescription = $(event.currentTarget).parent().parent().find(".descAnexo").val()
|
||||
if(acao == "upload"){
|
||||
uploadFile(fileDescription, inputFile.id)
|
||||
}
|
||||
if(acao == "viewer"){
|
||||
viewerFile(fileDescription)
|
||||
}
|
||||
if(acao == "download"){
|
||||
downloadFile(fileDescription, inputFile.id)
|
||||
}
|
||||
if(acao == "delete"){
|
||||
removeFileConfirm(fileDescription, inputFile.id)
|
||||
}
|
||||
}catch(e){
|
||||
console.error("Houve um erro inesperado na função anexo")
|
||||
console.error(e)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Envia arquivos para a aba Anexos do Fluig
|
||||
* Função adaptada por Sérgio Machado
|
||||
* @param {String} fileDescription Parâmetro obrigatório, Descrição do arquivo que ficará na aba anexos do Fluig
|
||||
* @param {String} idInput Parâmetro obrigatório, Id do campo em que o nome do arquivo fisico é gravado
|
||||
* @return {void}
|
||||
*/
|
||||
function uploadFile(fileDescription, idInput) {
|
||||
try{
|
||||
var tabAttachments = parent.document.getElementById("tab-attachments");
|
||||
if (tabAttachments) {
|
||||
//Verifica se o navegador é o Ie9 para realizar o devido tratamento
|
||||
if (parent.WCMAPI.isIe9()) {
|
||||
$(".ecm-navigation-silverlight", parent.document).show("fade").css("top", 0);
|
||||
$("#ecm-navigation-silverlight", parent.document).attr({
|
||||
"data-on-camera": "true", "data-file-name-camera": fileDescription, "data-inputNameFile": idInput
|
||||
});
|
||||
$(parent.document).on("keyup", this.actionKeyup)
|
||||
} else {
|
||||
var element = parent.document.getElementById("ecm-navigation-inputFile-clone");
|
||||
if (element && document.createEvent) {
|
||||
element.setAttribute("data-on-camera", "true");
|
||||
if (fileDescription && idInput) {
|
||||
element.setAttribute("data-file-name-camera", fileDescription)
|
||||
element.setAttribute("data-inputNameFile", idInput)
|
||||
}
|
||||
//Realiza o click no botão "Carregar arquivos" que tem na aba de anexos
|
||||
element.click();
|
||||
}
|
||||
}
|
||||
}
|
||||
}catch(e){
|
||||
console.error("Houve um erro inesperado na função uploadFile")
|
||||
console.error(e)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Função executada após a escolha do arquivo a ser enviado para o Fluig.
|
||||
* Verifica se o anexo já existe, seta o valor do arquivo fisico no campo e altera o estado dos botões
|
||||
* @return {void}
|
||||
*/
|
||||
$(function(){
|
||||
try{
|
||||
window.parent.$("#ecm-navigation-inputFile-clone").on('change', function(e) {
|
||||
const inputNameFile = this.getAttribute("data-inputNameFile");
|
||||
const fileDescription = this.getAttribute("data-file-name-camera");
|
||||
const filePhisical = this.files[0].name;
|
||||
if(fileDescription && fileDescription){
|
||||
/**
|
||||
* O trecho de código abaixo percorre os anexos do Fluig e caso já exista um anexo com a mesma descrição, ele será removido.
|
||||
* Em seguida limpa o campo onde é armazenado o nome fisico do arquivo
|
||||
*/
|
||||
$.each(parent.ECM.attachmentTable.getData(), function(i, attachment) {
|
||||
var descricao = attachment.description;
|
||||
if (fileDescription == descricao) {
|
||||
parent.WKFViewAttachment.removeAttach([i]);
|
||||
setFilePhisicalName(inputNameFile, "");
|
||||
}
|
||||
});
|
||||
setFilePhisicalName(inputNameFile, filePhisical)
|
||||
if(getFormMode() == "ADD"){
|
||||
btnState(inputNameFile, 'delete', 'download');
|
||||
}
|
||||
if(getFormMode() == "MOD"){
|
||||
btnState(inputNameFile, 'delete', 'viewer');
|
||||
}
|
||||
if(getFormMode() == "VIEW"){
|
||||
btnState(inputNameFile, 'download', 'viewer');
|
||||
}
|
||||
}
|
||||
});
|
||||
}catch(e){
|
||||
console.error("Houve um erro inesperado ao selecionar o arquivo")
|
||||
console.error(e)
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* Visualizar arquivos que esta na aba Anexos do Fluig
|
||||
* @param {String} fileDescription Parâmetro obrigatório, Descrição do anexo
|
||||
* @return {void}
|
||||
*/
|
||||
function viewerFile(fileDescription) {
|
||||
try{
|
||||
if(hasFileFluig(fileDescription)){
|
||||
const anexos = parent.ECM.attachmentTable.getData();
|
||||
for(let i = 0; i < anexos.length; i++){
|
||||
var descricao = anexos[i].description;
|
||||
if (fileDescription == descricao) {
|
||||
parent.WKFViewAttachment.openAttachmentView('adm', anexos[i].documentId);
|
||||
return
|
||||
}
|
||||
}
|
||||
}else{
|
||||
FLUIGC.toast({
|
||||
title: "Atenção",
|
||||
message: "Anexo não encontrado",
|
||||
type: "warning"
|
||||
});
|
||||
}
|
||||
}catch(e){
|
||||
console.error("Houve um erro inesperado na função viewerFile")
|
||||
console.error(e)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Realiza o download do arquivo que esta na aba Anexos do Fluig
|
||||
* @param {String} idInput Parâmetro obrigatório, Id do campo em que o nome do arquivo fisico é gravado
|
||||
* @param {String} fileDescription Parâmetro obrigatório, Descrição do arquivo que esta na aba anexos do Fluig
|
||||
* @return {void}
|
||||
*/
|
||||
function downloadFile(fileDescription, idInput) {
|
||||
try{
|
||||
const filename = getFormMode() == "VIEW" ? $(`#${idInput}`).text() : $(`#${idInput}`).val()
|
||||
FLUIGC.message.confirm({
|
||||
message: `Deseja baixar o anexo <b>${filename}</b>?`,
|
||||
title: 'Confirmação',
|
||||
labelYes: 'Sim, quero baixar',
|
||||
labelNo: 'Não, quero cancelar',
|
||||
}, function(result) {
|
||||
if (result) {
|
||||
$.each(parent.ECM.attachmentTable.getData(), function(i, attachment) {
|
||||
var descricao = attachment.description;
|
||||
if (fileDescription == descricao) {
|
||||
parent.WKFViewAttachment.downloadAttach([i]);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}catch(e){
|
||||
console.error("Houve um erro inesperado na função downloadFile")
|
||||
console.error(e)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Confirmação para Remove arquivo que esta na aba Anexos do Fluig
|
||||
* @param {String} idInput Parâmetro obrigatório, Id do campo em que o nome do arquivo fisico é gravado
|
||||
* @param {String} fileDescription Parâmetro obrigatório, Descrição do arquivo que esta na aba anexos do Fluig
|
||||
* @return {void}
|
||||
* @author Sérgio Machado
|
||||
*/
|
||||
function removeFileConfirm(fileDescription, idInput) {
|
||||
try{
|
||||
const filename = $(`#${idInput}`).val()
|
||||
FLUIGC.message.confirm({
|
||||
message: `Deseja remover o anexo <b>${filename}</b>?`,
|
||||
title: 'Confirmação',
|
||||
labelYes: 'Sim, quero remover',
|
||||
labelNo: 'Não, quero cancelar',
|
||||
}, function(result) {
|
||||
if (result) {
|
||||
removeFile(fileDescription)
|
||||
setFilePhisicalName(idInput, "")
|
||||
btnState(idInput, "upload", "download")
|
||||
}
|
||||
});
|
||||
}catch(e){
|
||||
console.error("Houve um erro inesperado na função removeFileConfirm")
|
||||
console.error(e)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove arquivo que esta na aba Anexos do Fluig
|
||||
* @param {String} fileDescription Parâmetro obrigatório, Descrição do arquivo que esta na aba anexos do Fluig
|
||||
* @return {void}
|
||||
* @author Sérgio Machado
|
||||
*/
|
||||
function removeFile(fileDescription) {
|
||||
try{
|
||||
$.each(parent.ECM.attachmentTable.getData(), function(i, attachment) {
|
||||
if (attachment.description == fileDescription) {
|
||||
parent.WKFViewAttachment.removeAttach([i]);
|
||||
}
|
||||
});
|
||||
}catch(e){
|
||||
console.error("Houve um erro inesperado na função removeFile")
|
||||
console.error(e)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Seta o nome do arquivo fisico no campo e realiza tratativa caso o campo esteja bloqueado pelo enableFields
|
||||
* @param {String} idInput Parâmetro obrigatório, Id do campo em que o nome do arquivo fisico é gravado
|
||||
* @param {String} filePhisical Parâmetro obrigatório, nome do arquivo fisico
|
||||
* @return {void}
|
||||
* @author Sérgio Machado
|
||||
*/
|
||||
function setFilePhisicalName(idInput, filePhisical){
|
||||
try{
|
||||
if(idInput.indexOf("_") == 0){
|
||||
$("#" + idInput.substring(1)).val(filePhisical);
|
||||
}
|
||||
$("#" + idInput).val(filePhisical);
|
||||
}catch(e){
|
||||
console.error("Houve um erro inesperado na função setFilePhisicalName")
|
||||
console.error(e)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Altera o estado e visibilidade dos botões de anexos
|
||||
* @param {String} idInput Parâmetro obrigatório, Id do campo em que o nome do arquivo fisico é gravado
|
||||
* @param {String} acao Parâmetro obrigatório, ação para ser executada no momento do click, se é delete ou upload
|
||||
* @param {String} btn Parâmetro obrigatório, botão secundário que deve sofrer ação de ficar visível ou não. Botão de Download ou Viewer
|
||||
* @return {void}
|
||||
* @author Sérgio Machado
|
||||
*/
|
||||
function btnState(idInput, acao, btn){
|
||||
try{
|
||||
let btnUpFile = $(`#${idInput}`).parent().parent().find(".btnUpFile");
|
||||
let btnDownloadFile = $(`#${idInput}`).parent().parent().find(".btnDownloadFile");
|
||||
let btnViewerFile = $(`#${idInput}`).parent().parent().find(".btnViewerFile");
|
||||
if(acao == "delete"){
|
||||
btnUpFile.removeClass("btn-success").addClass("btn-danger");
|
||||
btnUpFile.attr({'data-acao': acao, 'title': 'Excluir'});
|
||||
btnUpFile.find("i").removeClass("fluigicon-file-upload").addClass("fluigicon-trash");
|
||||
if(btn == "download"){
|
||||
btnDownloadFile.prop("disabled", false);
|
||||
btnDownloadFile.show()
|
||||
}
|
||||
if(btn == "viewer"){
|
||||
btnViewerFile.prop("disabled", false);
|
||||
btnViewerFile.show()
|
||||
}
|
||||
}
|
||||
if(acao == "upload"){
|
||||
btnUpFile.removeClass("btn-danger").addClass("btn-success");
|
||||
btnUpFile.attr({'data-acao': acao, 'title': 'Selecionar'});
|
||||
btnUpFile.find("i").removeClass("fluigicon-trash").addClass("fluigicon-file-upload");
|
||||
btnDownloadFile.prop("disabled", true);
|
||||
btnDownloadFile.hide()
|
||||
btnViewerFile.prop("disabled", true);
|
||||
btnViewerFile.hide()
|
||||
}
|
||||
}catch(e){
|
||||
console.error("Houve um erro inesperado na função btnState")
|
||||
console.error(e)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Faz tratativa nos botões do anexos percorrente cada class .componentAnexo
|
||||
* Em modo de visualização o botão de upload é removido, e caso tenha anexo, habilita o botão de visualização do anexo
|
||||
* Se em modo de edição e conter anexo o botão de upload é alterado para o botão de deletar anexos e habilita o botão de visualização
|
||||
* @return {void}
|
||||
* @author Sérgio Machado
|
||||
*/
|
||||
function displayBtnFiles(){
|
||||
try{
|
||||
$('.componentAnexo').each(function(i, element) {
|
||||
let inputFile = $(element).find(".inputAnexo")
|
||||
let inputFileVew = $(element).find(".componentAnexo")
|
||||
let btnUpFile = $(element).find(".btnUpFile");
|
||||
let btnViewerFile = $(element).find(".btnViewerFile");
|
||||
let btnDownloadFile = $(element).find(".btnDownloadFile");
|
||||
|
||||
if(getFormMode() == "VIEW"){
|
||||
btnUpFile.remove();
|
||||
if(inputFileVew.val() != ""){
|
||||
btnViewerFile.prop("disabled", false);
|
||||
btnViewerFile.show()
|
||||
}
|
||||
}
|
||||
if(getFormMode() == "MOD" && inputFile.val() != ""){
|
||||
btnUpFile.remove();
|
||||
// btnState(inputFile[0].id, "delete", "viewer")
|
||||
btnViewerFile.prop("disabled", false);
|
||||
btnViewerFile.show()
|
||||
btnDownloadFile.prop("disabled", false);
|
||||
btnDownloadFile.show()
|
||||
}
|
||||
});
|
||||
}catch(e){
|
||||
console.error("Houve um erro inesperado na função displayBtnFiles")
|
||||
console.error(e)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Remove o botão de upload/delete
|
||||
* @param {String} inputFile Parâmetro obrigatório, Id do campo
|
||||
* @return {void}
|
||||
* @author Sérgio Machado
|
||||
*/
|
||||
function invisibleBtnUpload(inputFile){
|
||||
try{
|
||||
if(getFormMode() == "MOD" || getFormMode() == "VIEW"){
|
||||
if($(`#_${inputFile}`).length){
|
||||
let btnUpFile = $(`#_${inputFile}`).parent().parent().find(".btnUpFile");
|
||||
btnUpFile.remove();
|
||||
} else{
|
||||
let btnUpFile = $(`#${inputFile}`).parent().parent().find(".btnUpFile");
|
||||
btnUpFile.remove();
|
||||
}
|
||||
}
|
||||
if($(`#_${inputFile}`).length){
|
||||
if($(`#_${inputFile}`).val() == ""){
|
||||
$(`#_${inputFile}`).attr({placeholder:"Nenhum anexo selecionado"});
|
||||
}
|
||||
} else{
|
||||
if($(`#${inputFile}`).val() == ""){
|
||||
$(`#${inputFile}`).attr({placeholder:"Nenhum anexo selecionado"});
|
||||
}
|
||||
}
|
||||
}catch(e){
|
||||
console.error("Houve um erro inesperado na função invisibleBtnUpload")
|
||||
console.error(e)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Verifica se os campos do anexo de uma tabela pai e filho esta preenchido,
|
||||
* caso esteja, ele verifica se o anexo esta presente na aba de anexos do Fluig
|
||||
* @param {String} tablename Parâmetro obrigatório, tablename da tabela pai e filho.
|
||||
* @param {String} idInput Parâmetro obrigatório, Id do campo de anexo que deseja verificar
|
||||
* @return {String} - Retorna string de erros caso apresente erros
|
||||
* @author Sérgio Machado
|
||||
*/
|
||||
function invalidFilesTable(tablename, idInput){
|
||||
try {
|
||||
let errors = "";
|
||||
const countRows = $(`[tablename='${tablename}']`).find('tbody tr').not(':first');
|
||||
for(let i = 0; i < countRows.length; i++){
|
||||
let indice = getIndice(countRows.eq(i).find("input")[0].id);
|
||||
let inputNameFile = $(`#_${idInput}___${indice}`).length ? $(`#_${idInput}___${indice}`) : $(`#${idInput}___${indice}`)
|
||||
let fileDescription = inputNameFile.parent().find(".descAnexo").val()
|
||||
if(inputNameFile.val() && !hasFileFluig(fileDescription)){
|
||||
errors += `<li style='margin-bottom: 5px;'>O anexo <b>${inputNameFile.val()}</b> da linha <b>${i+1}</b> não foi encontrado</li>`
|
||||
}
|
||||
}
|
||||
return errors
|
||||
} catch (e) {
|
||||
console.error('Houve um erro inesperado na função invalidFileTable')
|
||||
console.error(e)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifica se o campo do anexo esta preenchido, caso esteja, ele verifica se o anexo esta válido
|
||||
* @param {String} idInput Parâmetro obrigatório, Id do campo em que o nome do arquivo fisico é gravado
|
||||
* @return {Boolean}
|
||||
* @author Sérgio Machado
|
||||
*/
|
||||
function invalidFile(idInput){
|
||||
try {
|
||||
const inputNameFile = $(`#${idInput}`).val()
|
||||
if(inputNameFile){
|
||||
if($(`#_${idInput}`).length){
|
||||
let fileDescription = $(`#_${idInput}`).parent().find(".descAnexo").val()
|
||||
return !hasFileFluig(fileDescription)
|
||||
} else{
|
||||
let fileDescription = $(`#${idInput}`).parent().find(".descAnexo").val()
|
||||
return !hasFileFluig(fileDescription)
|
||||
}
|
||||
}else{
|
||||
return false
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('Houve um erro inesperado na função invalidFile')
|
||||
console.error(e)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Verifica se o anexo existe na aba de anexos do Fluig
|
||||
* @param {String} fileDescription Parâmetro obrigatório, Descrição do arquivo
|
||||
* @return {Boolean} - Retorna verdadeiro caso o arquivo exista
|
||||
* @author Sérgio Machado
|
||||
*/
|
||||
function hasFileFluig(fileDescription){
|
||||
try {
|
||||
const anexos = parent.ECM.attachmentTable.getData();
|
||||
for(let i = 0; i < anexos.length; i++){
|
||||
var descricao = anexos[i].description;
|
||||
if (fileDescription == descricao) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
} catch (e) {
|
||||
console.error('Houve um erro inesperado na função hasFileFluig')
|
||||
console.error(e)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user