// Função para carregar o TOM SELECT com estilo/dados da empresa function loadSelectEmpresa(elemento = '#selectEmpresaChamado', placeholder = 'SELECIONE A EMPRESA') { const ts = new TomSelect(`${elemento}`, { maxItems: 1, create: false, allowEmptyOption: true, placeholder: placeholder, persist: false, searchField: ['cnpj', 'nome', 'fantasia'], render: { no_results(data, escape) { return `
Nenhum resultado encontrado
`; }, option(data, escape) { if (data.value == 0) { return `
TODAS EMPRESAS
`; } else if (data.value == -1) { return `
SELECIONE A EMPRESA
` } const cnpj = escape(data.cnpj); const nome = escape(data.nome); const nomeFantasia = escape(data.fantasia); const inativo = escape(data.inativo); return `
${cnpj}
${nome}
${nomeFantasia}
`; }, item(data, escape) { if (data.value == 0) { return `
TODAS EMPRESAS
`; } else if (data.value == -1) { return `
SELECIONE A EMPRESA
` } const cnpj = escape(data.cnpj); const nome = escape(data.nome); const inativo = escape(data.inativo); return `
${nome} (${cnpj})
`; } } }); return ts; } function loadSelectUsuario(elemento = '#selectAtendenteFiltroChamados', placeholderFull = '', allText = 'ATENDENTES', selectText = 'ATENDENTE') { new TomSelect(`${elemento}`, { maxItems: 1, create: false, allowEmptyOption: true, placeholder: placeholderFull == '' ? `SELECIONE O ${selectText}` : placeholderFull, persist: false, searchField: ['cnpj', 'nome', 'fantasia'], render: { no_results(data, escape) { return `
Nenhum resultado encontrado
`; }, option(data, escape) { if (data.value == 0) { return `
TODOS ${allText}
`; } else if (data.value == -1) { const texto = placeholderFull == '' ? `SELECIONE O ${selectText}` : placeholderFull; return `
${texto}
` } const nome = escape(data.nome); const email = escape(data.email); const foto = escape(data.foto); const srcFoto = foto ? URL_ARQUIVOS + '/' + foto : DEFAULT_PICTURE; return `
${nome}
${nome} ${email}
`; }, item(data, escape) { if (data.value == 0) { return `
TODOS ${allText}
`; } else if (data.value == -1) { const texto = placeholderFull == '' ? `SELECIONE O ${selectText}` : placeholderFull; return `
${texto}
` } const nome = escape(data.nome); const foto = escape(data.foto); const email = escape(data.email); const srcFoto = foto ? URL_ARQUIVOS + '/' + foto : DEFAULT_PICTURE; return `
${nome} ${nome} (${email})
`; } } }); } function loadSelectTiposDemanda(elemento = '#selectTiposDemanda') { const ts = new TomSelect(`${elemento}`, { maxItems: 1, create: false, allowEmptyOption: true, placeholder: 'SELECIONE O TIPO DE DEMANDA', persist: false, searchField: ['descricao', 'modelo'], render: { no_results(data, escape) { return `
Nenhum resultado encontrado
`; }, option(data, escape) { if (data.value == -1) { return `
SELECIONE O TIPO DE DEMANDA
`; } const descricao = escape(data.descricao || data.text); const tituloModelo = escape(data.modelo || ''); let etiquetasHtml = ''; if (data.etiquetas && data.etiquetas !== '') { let etiquetas = []; try { if (typeof data.etiquetas === 'string') { etiquetas = JSON.parse(data.etiquetas); } else if (Array.isArray(data.etiquetas)) { etiquetas = data.etiquetas; } } catch (e) { console.warn('Erro ao converter etiquetas:', data.etiquetas); etiquetas = []; } etiquetas.forEach(etq => { etiquetasHtml += ` ${escape(etq.nome)} `; }); } return `
${descricao}
${tituloModelo}
${etiquetasHtml}
`; }, item(data, escape) { if (data.value == -1) { return `
SELECIONE O TIPO DE DEMANDA
`; } const descricao = escape(data.descricao || data.text); return `
${descricao}
`; } } }); return ts; } function showTomSelectLoader(tsInstance, position = 'start') { if (!tsInstance || !tsInstance.wrapper) return; const control = tsInstance.wrapper.querySelector('.ts-control'); // Evita duplicação if (control.querySelector('.ts-loader')) return; const loader = document.createElement('div'); loader.classList.add('ts-loader'); loader.innerHTML = `
Loading...
`; if (position === 'start') { control.prepend(loader); } else { control.append(loader); } control.classList.add('ts-loading'); } function hideTomSelectLoader(tsInstance) { if (!tsInstance || !tsInstance.wrapper) return; const control = tsInstance.wrapper.querySelector('.ts-control'); const loader = control.querySelector('.ts-loader'); if (loader) loader.remove(); control.classList.remove('ts-loading'); } function resetTomSelectPlaceholder(ts, placeholder) { ts.clear(true); // limpa seleção ts.settings.placeholder = placeholder; if (ts.control_input) { ts.control_input.placeholder = placeholder; } ts.refreshState(); }