teste 1436
Organização
teste 1436
Java method "com.sun.proxy.$Proxy136.getOrganization(long)" threw an exception when invoked on com.sun.proxy.$Proxy136 object "com.liferay.portal.service.impl.OrganizationLocalServiceImpl@3d097ff7"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: organization = OrganizationLocalServi... [in template "34764#34807#null" at line 14, column 17] ----
1<#assign
2 OrganizationLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.OrganizationLocalService")
3/>
4
5<#assign
6 viewerHasPrivileges = false
7 userId = themeDisplay.getUserId()
8/>
9
10<#if userId?? && _CUSTOM_FIELD_organization.getData()?? && _CUSTOM_FIELD_organization.getData() !="" >
11 <#assign
12 orgId = _CUSTOM_FIELD_organization.getData()?number
13 viewerHasPrivileges = OrganizationLocalService.hasUserOrganization(userId, orgId)
14 organization = OrganizationLocalService.getOrganization(orgId)
15 />
16</#if>
17
18<#assign
19 nome = organization.getName()!""
20 imagem = (viewerHasPrivileges || DDMStructure_Field84114755.getData()!="0")?string(DDMStructure_CampoDeTexto18329557.getData()!"","")
21 tipo = (viewerHasPrivileges || DDMStructure_Numrico28474992.getData()!="0")?string(DDMStructure_Text61401294.getData()!"","")
22 tipo = tipo?replace("\n", "")
23 tipo = tipo?replace("\t", "")
24 tipo = tipo?replace("\r", "")
25 pais = (viewerHasPrivileges || DDMStructure_Field45654872.getData()!="0")?string(DDMStructure_Text47038833.getData()!"","")
26 cidade = (viewerHasPrivileges || DDMStructure_Field81614178.getData()!="0")?string(DDMStructure_Text38119908.getData()!"","")
27 estado = (viewerHasPrivileges || DDMStructure_Field89862022.getData()!="0")?string(DDMStructure_Text87845472.getData()!"","")!""
28
29 site = (viewerHasPrivileges || DDMStructure_Field62760436.getData()!="0")?string(DDMStructure_Text98734375.getData()!"","")
30 instagram = ""
31 linkedin = (viewerHasPrivileges || DDMStructure_Field18557678.getData()!="0")?string(DDMStructure_Text82629110.getData()!"","")
32 facebook = ""
33
34 sobre = (DDMStructure_Field80037203.getData()!="0")?string(DDMStructure_Text54730891.getData()!"","")
35 competencias = (DDMStructure_Numrico42321087.getData()!="0")?string(DDMStructure_Text51537691.getData()!"","")
36 setores = (DDMStructure_Field04200031.getData()!="0")?string("yes","")
37
38 instituicao = (viewerHasPrivileges || DDMStructure_Numrico42321087.getData()!="0")?string(DDMStructure_Text31001996.getData()!"","")
39 tipoDeEntidade = (viewerHasPrivileges || DDMStructure_Numrico28474992.getData()!="0")?string(DDMStructure_Text53411607.getData()!"","")
40
41
42>
43
44<div class="bioec_org_info_container">
45
46 <#if viewerHasPrivileges>
47 <!--<div class="botoesSidebarMobile mb-5">
48 <button class="bioec_secondary_button" data-toggle="modal" data-target="#bioec-org-delete-modal">
49 EXCLUIR ORGANIZAÇÃO
50 </button>
51 <button class="bioec_primary_button" data-toggle="modal" data-target="#bioec-org-edit-modal">
52 EDITAR
53 </button>
54 </div> -->
55 </#if>
56
57 <div id="profilePic">
58 <#if imagem?trim == "">
59 <div class="profilePic-container">
60 <i class="fa fa-user"></i>
61 <a id="btnEditOrgModal" type="button" data-toggle="modal" data-target="#bioec-org-edit-modal">
62 <i class="fa fa-edit"></i>
63 </a>
64 </div>
65 <#else>
66 <div id="ProfilePic_Frame">
67 <img src="${imagem}" />
68 <a id="btnEditOrgModal" type="button" data-toggle="modal" data-target="#bioec-org-edit-modal">
69 <i class="fa fa-edit"></i>
70 </a>
71 </div>
72 </#if>
73
74 </div>
75
76 <#if nome!="">
77 <label class="bioec_org_info_label">Nome da Organização</label>
78 <div class="bioec_org_info_content">${nome}</div>
79 </#if>
80
81 <#if tipo!="">
82 <label class="bioec_org_info_label">Tipo de Organização</label>
83 <div class="bioec_org_info_content">${tipo}</div>
84 </#if>
85
86 <#if instituicao!="" && tipo == "Grupo de Pesquisa/Universidade">
87 <label class="bioec_org_info_label">Instituição</label>
88 <div class="bioec_org_info_content">${instituicao}</div>
89 </#if>
90
91 <#if tipoDeEntidade!="" && tipo == "Investidor/Agência de Fomento">
92 <label class="bioec_org_info_label">Tipo de Entidade</label>
93 <div class="bioec_org_info_content">${tipoDeEntidade}</div>
94 </#if>
95
96 <#if cidade!="">
97 <label class="bioec_org_info_label">Cidade</label>
98 <div class="bioec_org_info_content">${cidade}</div>
99 </#if>
100
101 <#if estado!="">
102 <label class="bioec_org_info_label">Estado</label>
103 <div class="bioec_org_info_content">${estado}</div>
104 </#if>
105
106 <#if pais!="">
107 <label class="bioec_org_info_label">País</label>
108 <div class="bioec_org_info_content">${pais}</div>
109 </#if>
110
111 <div class="bioec_org_info_social_container">
112 <#if site != "">
113 <a href="${site}" target="_blank" rel="noopener noreferrer">
114 <i class="fa-solid fa-laptop"></i>
115 </a>
116 </#if>
117
118 <#if instagram != "">
119 <a href="${instagram}" target="_blank" rel="noopener noreferrer">
120 <i class="fa-brands fa-instagram"></i>
121 </a>
122 </#if>
123
124 <#if linkedin != "">
125 <a href="${linkedin}" target="_blank" rel="noopener noreferrer">
126 <i class="fa-brands fa-linkedin-in"></i>
127 </a>
128 </#if>
129
130 <#if facebook != "">
131 <a href="${facebook}" target="_blank" rel="noopener noreferrer">
132 <i class="fa-brands fa-facebook"></i>
133 </a>
134 </#if>
135
136 </div>
137
138 <#if false && viewerHasPrivileges>
139 <button data-toggle="modal" data-target="#privacyModal" class="bioec_primary_button">
140 CONFIGURAÇÕES DE PRIVACIDADE
141 </button>
142 </#if>
143</div>
144
145<style>
146.bioec_org_info_container {
147 display: flex;
148 flex-direction: column;
149 background-color: #E8ECEF;
150 height: 100%;
151 padding: 40px 24px 40px 0;
152}
153
154.bioec_org_info_img_placeholder {
155 align-self: center;
156 height: 120px;
157 width: 120px;
158 background-color: #595A5F;
159 border-radius: 50%;
160 display: flex;
161 align-items: center;
162 justify-content: center;
163 color: var(--white-1);
164 font-size: 72px;
165 cursor: default;
166}
167
168.bioec_org_info_label {
169 display: block;
170 font-weight: 700;
171 font-size: 20px;
172 line-height: 150%;
173 color: #5B5C61;
174 margin-bottom: 8px;
175 margin-top: 24px;
176 cursor: text;
177}
178
179.bioec_org_info_content {
180 display: block;
181 font-weight: 400;
182 font-size: 16px;
183 line-height: 150%;
184 color: #5B5C61;
185 border-bottom: 1px solid #BEBEBE;
186 padding-bottom: 4px;
187}
188
189.bioec_org_info_social_container {
190 display: flex;
191 flex-direction: row;
192 align-items: center;
193 justify-content: center;
194 margin: 40px 0;
195}
196
197.bioec_org_info_social_container a {
198 font-size: 35px;
199 color: #5B5C61;
200 margin: 0 15px;
201}
202
203.botoesSidebarMobile{
204display: none;
205justify-content: flex-end;
206gap: 20px;
207}
208#profilePic {
209 display: flex;
210 justify-content: center;
211 width: 120px;
212 height: 120px;
213 margin: auto;
214 position: relative;
215}
216
217#profilePic a:hover {
218 text-decoration: none;
219}
220
221#profilePic a#btnEditOrgModal {
222 text-decoration: none;
223 position: absolute;
224 right: 0;
225 bottom: 0;
226 color: var(--white);
227 background-color: var(--color-3);
228 height: 40px;
229 width: 40px;
230 border-radius: 50%;
231 border: none;
232 outline: none;
233 display: flex;
234 align-items: center;
235 justify-content: center;
236 padding: 0;
237 font-size: 18px;
238
239}
240
241#ProfilePic_Frame {
242 border-radius: 50%;
243 width: 100%;
244 height: 100%;
245 overflow: hidden;
246}
247 #ProfilePic_Frame img {
248 width: 100%;
249 height: 100%;
250 object-fit: cover;
251}
252
253.profilePic-container {
254 color: #FFF;
255 background-color: #595A5F;
256 border-radius: 50%;
257 position: relative;
258 display: flex;
259 align-items: center;
260 justify-content: center;
261 padding: 35px;
262 width: 100%;
263 height: 100%;
264 font-size: 70px;
265}
266
267
268@media (max-width: 1200px) {
269 .bioec_org_info_container {
270 padding: 40px 24px;
271 }
272}
273
274@media (max-width: 994px) {
275.botoesSidebarMobile{
276display: flex;
277}
278}
279</style>
Java method "com.sun.proxy.$Proxy136.getOrganization(long)" threw an exception when invoked on com.sun.proxy.$Proxy136 object "com.liferay.portal.service.impl.OrganizationLocalServiceImpl@3d097ff7"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: organization = OrganizationLocalServi... [in template "34764#34807#null" at line 20, column 17] ----
1<#assign
2 OrganizationLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.OrganizationLocalService")
3 JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
4/>
5
6<#assign
7 hasPrivileges = false
8 userId = themeDisplay.getUserId()
9/>
10
11<#assign
12 orgTypes = ["Entidade Governamental","Associação","Outras ICT's","Comunidade Tradicional/Cooperativa","Startup",
13 "Entidade do Terceiro Setor","Investidor/Agência de Fomento","Grupo de Pesquisa/Universidade","Empresa"]
14/>
15
16<#if userId?? && _CUSTOM_FIELD_organization.getData()?? && _CUSTOM_FIELD_organization.getData() !="" >
17<#assign
18 orgId = _CUSTOM_FIELD_organization.getData()?number
19 hasPrivileges = OrganizationLocalService.hasUserOrganization(userId, orgId)
20 organization = OrganizationLocalService.getOrganization(orgId)
21/>
22</#if>
23
24<#if hasPrivileges>
25 <#assign
26 organization = OrganizationLocalService.getOrganization(_CUSTOM_FIELD_organization.getData()?number)
27 articleId = organization.getExpandoBridge().getAttribute("journal-article")
28 journalArticle = JournalArticleLocalService.getArticle(themeDisplay.getLayout().getGroupId(),articleId?c)
29 articleXml = journalArticle.getDocument().getRootElement()
30
31 setoresXml = articleXml.selectNodes("dynamic-element[@name='Text40807358']")
32 setores = ""
33 />
34 <#list setoresXml as setor>
35 <#assign setores = setores + "'" + setor.getStringValue()?trim + "'," >
36 </#list>
37
38 <button class="bioec_secondary_button mx-3" data-toggle="modal" style="display: flex;margin-left: auto !important;margin-right: auto !important;margin-top: 24px;" data-target="#bioec-org-delete-modal">EXCLUIR ORGANIZAÇÃO</button>
39 <!-- <div class="mt-4 d-md-flex d-none align-items-center justify-content-end">
40 <button class="bioec_primary_button bioec_editar" data-toggle="modal" data-target="#bioec-org-edit-modal">EDITAR</button>
41 </div> -->
42
43 <#-- MODAL DE EXLUIR ORGANIZAÇÃO -->
44 <div id="bioec-org-delete-modal" class="modal fade" style="display: none;" role="dialog" aria-hidden="true">
45 <div class="modal-dialog" role="document">
46 <div class="modal-content px-4 py-3">
47 <div class="modal-header">
48 <h5 class="modal-title">Excluir organização</h5>
49 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
50 <span aria-hidden="true">×</span>
51 </button>
52 </div>
53 <div class="d-flex justify-content-end py-3">
54 <button type="button" class="bioec_secondary_button mx-3" data-dismiss="modal">CANCELAR</button>
55 <button type="button" class="bioec_primary_button" onclick="deleteOrg()" >CONTINUAR</button>
56 </div>
57 </div>
58 </div>
59 </div>
60
61
62
63 <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
64 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.3/jquery.min.js" integrity="sha512-STof4xm1wgkfm7heWqFJVn58Hm3EtS31XFaagaa8VMReCXAkQnJZ+jEy8PCC/iT18dFy95WcExNHFTqLyp72eQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
65 <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
66 <link
67 rel="stylesheet"
68 href="https://cdnjs.cloudflare.com/ajax/libs/croppie/2.6.5/croppie.min.css"
69 integrity="sha512-zxBiDORGDEAYDdKLuYU9X/JaJo/DPzE42UubfBw9yg8Qvb2YRRIQ8v4KsGHOx2H1/+sdSXyXxLXv5r7tHc9ygg=="
70 crossorigin="anonymous"
71 referrerpolicy="no-referrer"
72 />
73
74 <script
75 src="https://cdnjs.cloudflare.com/ajax/libs/croppie/2.6.5/croppie.min.js"
76 integrity="sha512-Gs+PsXsGkmr+15rqObPJbenQ2wB3qYvTHuJO6YJzPe/dTLvhy0fmae2BcnaozxDo5iaF8emzmCZWbQ1XXiX2Ig=="
77 crossorigin="anonymous"
78 referrerpolicy="no-referrer"
79 ></script>
80
81
82<style>
83
84 .bioec_profile-form h1 {
85 font-weight: 400;
86 font-size: 39px;
87 line-height: 150%;
88 color: #5B5C61;
89 }
90
91 .bioec_profile-form-control {
92 margin-bottom: 40px;
93 }
94
95 .bioec_profile-form-control label {
96 color: #5B5C61;
97 font-size: 20px;
98 font-weight: 700;
99 line-height: 30px;
100 margin-bottom: 8px;
101 }
102
103 .bioec_profile-form-control label[required]::before {
104 content: "*";
105 color: #ff0000;
106 margin-right: 0.4rem;
107 }
108
109 .bioec_profile-form-control input,
110 .bioec_profile-form-control select {
111 border-radius: 0;
112 outline: none;
113 border: none;
114 border-bottom: 1px solid #BEBEBE;
115 font-size: 16px;
116 font-weight: 400;
117 line-height: 24px;
118 color: #5B5C61;
119 width: 100%;
120 background-color: transparent;
121 padding: 2px;
122 margin: 0;
123 }
124
125 .submit-attempted .bioec_profile-form-control input:invalid,
126 .submit-attempted .bioec_profile-form-control select:invalid {
127 border-bottom: 1px solid #ff0000;
128 }
129
130 .bioec_profile-flex-container {
131 display: flex;
132 flex-direction: row;
133 justify-content: space-between;
134 flex-wrap: wrap;
135 }
136
137 .bioec_profile-flex-container .bioec_profile-form-control {
138 width: 50%;
139 padding-right: 1.5rem;
140 }
141
142 .bioec_profile-form-control textarea {
143 font-size: 16px;
144 font-weight: 400;
145 line-height: 24px;
146 color: #5B5C61;
147 width: 100%;
148 background-color: transparent;
149 border-radius: 0;
150 border: 1px solid #BEBEBE;
151 resize: none;
152 outline: none;
153 margin-top: 24px;
154 }
155
156 .modal-header h1{
157 color: #5B5C61;
158 margin-bottom: 0px;
159 font-size: 25px;
160 line-height: 58.5px;
161 font-weight: 400;
162 }
163
164 @media (max-width: 768px) {
165 .bioec_profile-flex-container .bioec_profile-form-control {
166 margin-bottom: 1.5rem;
167 width: 100%;
168 padding-right: 0rem;
169 }
170 }
171</style>
172
173<script>
174
175function deleteOrg() {
176 Liferay.Util.openToast({message: "Enviando requisição",type: "info",title: ""});
177 fetch(Liferay.ThemeDisplay.getPortalURL() + "/o/profile-management/organization/${_CUSTOM_FIELD_organization.getData()}",
178 {
179 method: "DELETE",
180 headers: {
181 "x-csrf-token": Liferay.authToken,
182 "Content-Type": "application/json",
183 "Accept": "application/json"
184 }
185 })
186 .then( Liferay.Util.openToast({
187 message: "Estamos processando seu arquivo. Favor aguarde por alguns segundos e redireciorameos você automaticamente.",
188 type: "success",
189 title: "",
190 toastProps: {
191 autoClose: 2000
192 }
193 }))
194 .then(setTimeout(() => { window.location.href = Liferay.ThemeDisplay.getPortalURL() + "/meu-perfil#deleteOrg" }, 2000))
195
196
197
198}
199
200
201
202</script>
203
204</#if>

Java method "com.sun.proxy.$Proxy136.getOrganization(long)" threw an exception when invoked on com.sun.proxy.$Proxy136 object "com.liferay.portal.service.impl.OrganizationLocalServiceImpl@3d097ff7"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: organization = OrganizationLocalServi... [in template "34764#34807#null" at line 20, column 17] ----
1<#assign
2 OrganizationLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.OrganizationLocalService")
3 JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
4/>
5
6<#assign
7 hasPrivileges = false
8 userId = themeDisplay.getUserId()
9/>
10
11<#assign
12 orgTypes = ["Entidade Governamental","Associação","Outras ICT's","Comunidade Tradicional/Cooperativa","Startup",
13 "Entidade do Terceiro Setor","Investidor/Agência de Fomento","Grupo de Pesquisa/Universidade","Empresa"]
14/>
15
16<#if userId?? && _CUSTOM_FIELD_organization.getData()?? && _CUSTOM_FIELD_organization.getData() !="" >
17<#assign
18 orgId = _CUSTOM_FIELD_organization.getData()?number
19 hasPrivileges = OrganizationLocalService.hasUserOrganization(userId, orgId)
20 organization = OrganizationLocalService.getOrganization(orgId)
21/>
22</#if>
23
24<#if hasPrivileges && _CUSTOM_FIELD_organization.getData()?? && _CUSTOM_FIELD_organization.getData() !="">
25 <#assign
26 organization = OrganizationLocalService.getOrganization(_CUSTOM_FIELD_organization.getData()?number)
27 articleId = organization.getExpandoBridge().getAttribute("journal-article")
28 journalArticle = JournalArticleLocalService.getArticle(themeDisplay.getLayout().getGroupId(),articleId?c)
29 articleXml = journalArticle.getDocument().getRootElement()
30
31 setoresXml = articleXml.selectNodes("dynamic-element[@name='Text40807358']")
32 setores = ""
33 />
34 <#list setoresXml as setor>
35 <#assign setores = setores + "'" + setor.getStringValue()?trim + "'," >
36 </#list>
37
38 <div class="mt-4 d-md-flex d-none align-items-center justify-content-end" style="display:none!important;" >
39 <button class="bioec_secondary_button mx-3" data-toggle="modal" data-target="#bioec-org-delete-modal" >EXCLUIR ORGANIZAÇÃO</button>
40 <button class="bioec_primary_button bioec_editar" data-toggle="modal" data-target="#bioec-org-edit-modal" >EDITAR</button>
41 </div>
42
43
44
45
46
47 <#-- MODAL DE EXLUIR ORGANIZAÇÃO -->
48 <div id="bioec-org-delete-modal" class="modal fade" style="display: none;" role="dialog" aria-hidden="true">
49 <div class="modal-dialog" role="document">
50 <div class="modal-content px-4 py-3">
51 <div class="modal-header">
52 <h5 class="modal-title">Excluir organização</h5>
53 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
54 <span aria-hidden="true">×</span>
55 </button>
56 </div>
57 <div class="d-flex justify-content-end py-3">
58 <button type="button" class="bioec_secondary_button mx-3" data-dismiss="modal">CANCELAR</button>
59 <button type="button" class="bioec_primary_button" onclick="deleteOrg()" >CONTINUAR</button>
60 </div>
61 </div>
62 </div>
63 </div>
64
65 <#-- MODAL DE EDIÇÃO -->
66 <div id="bioec-org-edit-modal" class="modal fade" style="display: none;" tabindex="-1" role="dialog" aria-hidden="true">
67 <div class="modal-dialog modal-lg" role="document">
68 <div class="modal-content px-4 py-3">
69
70 <div class="modal-header">
71 <h1>Sobre a organização</h1>
72 <button type="button" class="close" data-dismiss="modal" aria-label="Close" onclick="closeAndReset()">
73 <span aria-hidden="true">×</span>
74 </button>
75 </div>
76
77 <div class="modal-body">
78 <form id="organization-form" class="bioec_profile-form">
79<#assign imagemOrg = DDMStructure_CampoDeTexto18329557.getData() >
80
81 <div class="d-flex justify-content-center my-5" style="
82 flex-direction: column;
83 align-items: center;
84 ">
85 <div id="orgPicContainer" class="bioec_form-picture-container" ${(imagemOrg != "")?string("style='background-image: url("+ imagemOrg +")'","")} >
86 <i id="user-icon" class="fa fa-user"></i>
87 <button type="button" onclick="openFileSelectImagem()">
88 <i class="fa fa-edit"></i>
89 </button>
90 </div>
91 <input name="imagem" id="file-input" class="d-none" type="file" onchange="encodeImageAsURL(this)" accept="image/*"/>
92 <input class="d-none" id="inputOrgBase64OrgModal" />
93 <button type="button" onclick="removeImageOrgModal(this)" id="removerImagemOrgModal" ${(imagemOrg != "")?string("", "class='d-none'")}>
94 <i class="fa fa-trash"></i> Remover imagem
95 </button>
96 </div>
97
98 <div class="bioec_profile-flex-container">
99 <div class="bioec_profile-form-control">
100 <label required>Tipo de Organização</label>
101 <select id="tipo-de-organizacao" name="tipo" required title="Selecionar" value="${DDMStructure_Text61401294.getData()}">
102 <option value="" disabled selected>Selecionar</option>
103 <#list orgTypes as type>
104 <option value="${type}" ${(type==DDMStructure_Text61401294.getData())?string("selected","")} >${type}</option>
105 </#list>
106 </select>
107 </div>
108
109 <div class="bioec_profile-form-control">
110 <div id="org-tipo-6" class="d-none">
111 <label>Tipo de entidade</label>
112 <input name="investimento" type="text" id="tipodeentidadeOrganizacao" value="${DDMStructure_Text53411607.getData()}" />
113 </div>
114 <div id="org-tipo-7" class="d-none">
115 <label>Instituição</label>
116 <input name="instituicao" type="text" id="instituicaoOrganizacao" value="${DDMStructure_Text31001996.getData()}" />
117 </div>
118 </div>
119
120 <div class="bioec_profile-form-control">
121 <label required for="nomeOrganizacao">Nome da Organização</label>
122 <input id="nomeOrganizacao" name="nome" type="text" required value="${organization.getName()}" />
123 </div>
124
125 <div class="bioec_profile-form-control">
126 <label for="cidadeOrganizacao">Cidade</label>
127 <input id="cidadeOrganizacao" name="cidade" type="text" value="${DDMStructure_Text38119908.getData()}" />
128 </div>
129
130 <div class="bioec_profile-form-control">
131 <label for="estadoOrganizacao">Estado</label>
132 <input id="estadoOrganizacao" name="estado" type="text" value="${DDMStructure_Text87845472.getData()}" />
133 </div>
134
135
136 <div class="bioec_profile-form-control">
137 <label for="paisOrganizacao">País</label>
138 <input id="paisOrganizacao" name="pais" type="text" value="${DDMStructure_Text47038833.getData()}" />
139 </div>
140
141 </div>
142
143 <h1 class="my-5">Informações digitais</h1>
144
145 <div class="bioec_profile-flex-container">
146 <div class="bioec_profile-form-control">
147 <label for="siteOrganizacao">Site</label>
148 <input id="siteOrganizacao" name="site" type="url" value="${DDMStructure_Text98734375.getData()}" />
149 </div>
150 <div class="bioec_profile-form-control">
151 <label for="linkedinOrganizacao">Linkedin</label>
152 <input id="linkedinOrganizacao" name="linkedin" type="url" value="${DDMStructure_Text82629110.getData()}" />
153 </div>
154 <#-- <div class="bioec_profile-form-control">
155 <label>Instagram</label>
156 <input name="instagram" type="url" value="${Text28208517.getData()}" />
157 </div>
158 <div class="bioec_profile-form-control">
159 <label>Facebook</label>
160 <input name="facebook" type="url" value="${Text71851201.getData()}" />
161 </div> -->
162 </div>
163
164 <h1 class="my-5">Campo de atuação</h1>
165
166 <div>
167 <div class="bioec_profile-form-control">
168 <label required for="sobreOrganizacao">Sobre a organização</label>
169 <textarea id="sobreOrganizacao" name="sobre" rows="5" >${DDMStructure_Text54730891.getData()}</textarea>
170 </div>
171
172 <div class="bioec_profile-form-control">
173 <label required for="competenciasOrganizacao">Competências tecnológicas</label>
174 <textarea id="competenciasOrganizacao" name="competencias" rows="5" >${DDMStructure_Text51537691.getData()}</textarea>
175 </div>
176
177 <div class="bioec_profile-form-control">
178 <label required>Setores de atuação</label>
179 <select id="setores-de-atuacao" name="setores" multiple="multiple" style="width: 100%">
180 <option value="Agroindústria">Agroindústria</option>
181 <option value="Água Potável e Saneamento">Água Potável e Saneamento</option>
182 <option value="Alimentos e Bebidas">Alimentos e Bebidas</option>
183 <option value="Análise de Ciclo de Vida">Análise de Ciclo de Vida</option>
184 <option value="Biotecnologia">Biotecnologia</option>
185 <option value="Educação">Educação</option>
186 <option value="Energia e Biocombustíveis">Energia e Biocombustíveis</option>
187 <option value="Higiene Pessoal, Perfumaria e Cosméticos">Higiene Pessoal, Perfumaria e Cosméticos</option>
188 <option value="Inovação">Inovação</option>
189 </select>
190 </div>
191
192 <!-- <h1 class="mt-5 mb-4">Você na organização</h1>
193
194 <div class="bioec_profile-flex-container">
195 <div class="bioec_profile-form-control">
196 <label>Cargo/Função</label>
197 <input name="cargo" type="text" value="Administrador" />
198 </div>
199 </div> -->
200
201 </div>
202
203 <div class="d-flex justify-content-center my-5">
204 <button type="button" data-dismiss="modal" class="bioec_secondary_button mx-3" onclick="closeAndReset()">CANCELAR</a>
205 <button type="button" class="bioec_primary_button mx-3" onclick="submitOrganization()">SALVAR</button>
206 </div>
207
208 </form>
209 </div>
210 </div>
211 </div>
212 </div>
213
214 <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
215 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.3/jquery.min.js" integrity="sha512-STof4xm1wgkfm7heWqFJVn58Hm3EtS31XFaagaa8VMReCXAkQnJZ+jEy8PCC/iT18dFy95WcExNHFTqLyp72eQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
216 <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
217
218<script>
219
220
221function toggleSpecialFields(value) {
222 if(value == "Investidor/Agência de Fomento") {
223 $("#org-tipo-6").removeClass("d-none")
224 $("#org-tipo-7").addClass("d-none")
225 } else if(value == "Grupo de Pesquisa/Universidade") {
226 $("#org-tipo-7").removeClass("d-none")
227 $("#org-tipo-6").addClass("d-none")
228 } else {
229 $("#org-tipo-6").addClass("d-none")
230 $("#org-tipo-7").addClass("d-none")
231 }
232}
233
234$("#tipo-de-organizacao").change((obj) => {
235 const v = obj.target.value
236 toggleSpecialFields(v)
237});
238
239toggleSpecialFields(document.getElementById("tipo-de-organizacao").value)
240
241$(document).ready(() => {
242 $("#setores-de-atuacao").select2({
243 language: {
244 noResults: () => "Nenhum resultado encontrado",
245 },
246 selectionCssClass: "bioec_multi_select",
247 });
248 $("#setores-de-atuacao").val([${setores}]);
249 $("#setores-de-atuacao").trigger('change');
250
251 let urlSearchParams = new URLSearchParams(window.location.search);
252
253 if( urlSearchParams.has('popup_editar') == 1){
254 $('.bioec_editar').click();
255 urlSearchParams.delete('popup_editar');
256 if (history.replaceState) {
257 let searchString = urlSearchParams.toString().length > 0 ? '?' + urlSearchParams.toString() : '';
258 let newUrl = window.location.protocol + "//" + window.location.host + window.location.pathname + searchString + window.location.hash;
259 history.replaceState(null, '', newUrl);
260 }
261 }
262});
263
264function validImageSize(base64="") {
265 const decoded = atob(base64.substring(base64.indexOf(',') + 1));
266 const sizeMB = decoded.length / 1e+6;
267 console.log("MB: " + decoded.length / 1e+6);
268 if(sizeMB > 10) {
269 Liferay.Util.openToast({
270 message: "O tamanho da imagem não deve ultrapassar 10 MB.",
271 type: "danger",
272 title: "",
273 toastProps: {
274 autoClose: 5000
275 }
276 })
277 return false
278 }
279 return true
280}
281
282 function encodeImageAsURL(element) {
283 let file = element.files[0];
284 let reader = new FileReader();
285 reader.onloadend = () => {
286 if(reader.result) {
287 if(!validImageSize(reader.result)) return;
288 try {
289 console.log("hi!")
290 const pic_container = document.getElementById("orgPicContainer")
291 const base64_input = document.getElementById("inputOrgBase64OrgModal")
292 base64_input.value = reader.result
293 pic_container.style.backgroundImage = 'url(' + reader.result + ')'
294 const removeImageButton = document.getElementById(
295 "removerImagemOrgModal"
296 );
297 const user_icon = document.getElementById("user-icon")
298 user_icon.style.display = "none";
299 removeImageButton.classList.remove("d-none");
300 } catch (error) {
301 console.error(error)
302 }
303 }
304 }
305 reader.readAsDataURL(file);
306 }
307
308 function removeImageOrgModal(element) {
309 try {
310 const file_input = document.getElementById("file-input");
311 const pic_container = document.getElementById("orgPicContainer")
312 const base64_input = document.getElementById("inputOrgBase64OrgModal");
313
314 file_input.value = null;
315 base64_input.value = "";
316 pic_container.style.backgroundImage = null;
317
318 const user_icon = document.getElementById("user-icon")
319 user_icon.style.display = "block";
320
321 const removeImageButton = document.getElementById("removerImagemOrgModal");
322 removeImageButton.classList.add("d-none");
323 } catch (error) {
324 console.error(error);
325 }
326 }
327
328function openFileSelectImagem() {
329 document.getElementById("file-input").click();
330}
331
332function initUrl(input, defaulthost) {
333 const value = input.value;
334 if(!value) {
335 input.value = defaulthost;
336 }
337}
338
339function submitForm() {
340console.log("Tentativa de envio")
341const form = document.getElementById("organization-form")
342form.classList.add("submit-attempted")
343}
344
345function closeAndReset() {
346 document.getElementById("organization-form").reset();
347}
348
349</script>
350
351<style>
352
353 .bioec_profile-form #removerImagemOrgModal {
354 background: none;
355 cursor: pointer;
356 border: none;
357 outline: none;
358 color: #5b5c61;
359 font-size: 16px;
360 font-weight: 900;
361 line-height: 24px;
362 letter-spacing: 0em;
363 width: fit-content;
364 margin-left: 16px;
365 margin-top: 22px;
366 }
367
368
369 .bioec_profile-form h1 {
370 font-weight: 400;
371 font-size: 39px;
372 line-height: 150%;
373 color: #5B5C61;
374 }
375
376 .bioec_profile-form-control {
377 margin-bottom: 40px;
378 }
379
380 .bioec_profile-form-control label {
381 color: #5B5C61;
382 font-size: 20px;
383 font-weight: 700;
384 line-height: 30px;
385 margin-bottom: 8px;
386 }
387
388 .bioec_profile-form-control label[required]::before {
389 content: "*";
390 color: #ff0000;
391 margin-right: 0.4rem;
392 }
393
394 .bioec_profile-form-control input,
395 .bioec_profile-form-control select {
396 border-radius: 0;
397 outline: none;
398 border: none;
399 border-bottom: 1px solid #BEBEBE;
400 font-size: 16px;
401 font-weight: 400;
402 line-height: 24px;
403 color: #5B5C61;
404 width: 100%;
405 background-color: transparent;
406 padding: 2px;
407 margin: 0;
408 }
409
410 .submit-attempted .bioec_profile-form-control input:invalid,
411 .submit-attempted .bioec_profile-form-control select:invalid {
412 border-bottom: 1px solid #ff0000;
413 }
414
415 .bioec_profile-flex-container {
416 display: flex;
417 flex-direction: row;
418 justify-content: space-between;
419 flex-wrap: wrap;
420 }
421
422 .bioec_profile-flex-container .bioec_profile-form-control {
423 width: 50%;
424 padding-right: 1.5rem;
425 }
426
427 .bioec_profile-form-control textarea {
428 font-size: 16px;
429 font-weight: 400;
430 line-height: 24px;
431 color: #5B5C61;
432 width: 100%;
433 background-color: transparent;
434 border-radius: 0;
435 border: 1px solid #BEBEBE;
436 resize: none;
437 outline: none;
438 margin-top: 24px;
439 }
440
441 .bioec_form-picture-container {
442 color: var(--white);
443 background-color: #595A5F;
444 border-radius: 50%;
445 position: relative;
446 display: flex;
447 align-items: center;
448 justify-content: center;
449 padding: 35px;
450 width: 180px;
451 height: 180px;
452 font-size: 100px;
453 background-size: cover;
454 }
455
456 .bioec_form-picture-container[style] > i {
457 display: none;
458 }
459
460 .bioec_form-picture-container button {
461 position: absolute;
462 right: 0;
463 bottom: 0;
464 color: var(--white);
465 background-color: var(--color-3);
466 height: 40px;
467 width: 40px;
468 border-radius: 50%;
469 border: none;
470 outline: none;
471 display: flex;
472 align-items: center;
473 justify-content: center;
474 padding: 0;
475 font-size: 18px
476 }
477
478 .bioec_multi_select {
479 font-size: 16px;
480 font-weight: 400;
481 line-height: 24px;
482 color: #5B5C61;
483 width: 100%;
484 background-color: transparent;
485 border-radius: 0 !important;
486 border: 1px solid #BEBEBE !important;
487 resize: none;
488 outline: none;
489 padding: 12px !important;
490 }
491
492 .bioec_multi_select .select2-selection__choice {
493 background-color: transparent !important;
494 margin-left: 12px !important;
495 margin-top: 0px !important;
496 }
497
498 .modal-header h1{
499 color: #5B5C61;
500 margin-bottom: 0px;
501 font-size: 25px;
502 line-height: 58.5px;
503 font-weight: 400;
504 }
505
506 @media (max-width: 768px) {
507 .bioec_profile-flex-container .bioec_profile-form-control {
508 margin-bottom: 1.5rem;
509 width: 100%;
510 padding-right: 0rem;
511 }
512 }
513</style>
514
515<script>
516
517function deleteOrg() {
518 Liferay.Util.openToast({message: "Enviando requisição",type: "info",title: ""});
519 fetch(Liferay.ThemeDisplay.getPortalURL() + "/o/profile-management/organization/${_CUSTOM_FIELD_organization.getData()}",
520 {
521 method: "DELETE",
522 headers: {
523 "x-csrf-token": Liferay.authToken,
524 "Content-Type": "application/json",
525 "Accept": "application/json"
526 }
527 })
528 .then( Liferay.Util.openToast({
529 message: "Estamos processando seu arquivo. Favor aguarde por alguns segundos e redireciorameos você automaticamente.",
530 type: "success",
531 title: "",
532 toastProps: {
533 autoClose: 2000
534 }
535 }))
536 .then(setTimeout(() => { window.location.href = Liferay.ThemeDisplay.getPortalURL() + "/meu-perfil#deleteOrg" }, 2000))
537
538
539
540}
541
542
543function submitOrganization() {
544 Liferay.Util.openToast({
545 message: "Enviando requisição",
546 type: "info",
547 title: "",
548 });
549 console.log("submitOrganization");
550 let site = document.getElementById("siteOrganizacao").value;
551 let linkedin = document.getElementById("linkedinOrganizacao").value;
552
553 if (site != "") {
554 if (
555 !site.startsWith("https://") &&
556 !site.startsWith("http://") &&
557 !site.startsWith("https://www") &&
558 !site.startsWith("http://www")
559 ) {
560 Liferay.Util.openToast({
561 message:
562 "O campo 'site' precisa começar com 'https://', 'http://', 'https://www' ou 'http://www' para ser válido",
563 type: "danger",
564 title: "",
565 toastProps: {
566 autoClose: 5000,
567 },
568 });
569 return;
570 }
571 }
572
573 if (linkedin != "") {
574 if (
575 !linkedin.startsWith("https://www.linkedin.com") &&
576 !site.startsWith("http://www.linkedin.com") &&
577 !linkedin.startsWith("https://linkedin.com") &&
578 !site.startsWith("http://linkedin.com")
579 ) {
580 Liferay.Util.openToast({
581 message:
582 "O campo 'linkedin' precisa começar com 'https://www.linkedin.com' ou 'http://www.linkedin.com' com ou sem os 'www.' para ser válido",
583 type: "danger",
584 title: "",
585 toastProps: {
586 autoClose: 5000,
587 },
588 });
589 return;
590 }
591 }
592
593 fetch(
594 Liferay.ThemeDisplay.getPortalURL() +
595 "/o/profile-management/organization/${_CUSTOM_FIELD_organization.getData()}",
596 {
597 method: "PUT",
598 headers: {
599 "x-csrf-token": Liferay.authToken,
600 "Content-Type": "application/json",
601 },
602 body: JSON.stringify({
603 imagem: document.getElementById("inputOrgBase64OrgModal").value,
604 tipo: document.getElementById("tipo-de-organizacao").value,
605 nome: document.getElementById("nomeOrganizacao").value.trim(),
606 cidade: document.getElementById("cidadeOrganizacao").value,
607 estado: document.getElementById("estadoOrganizacao").value,
608 pais: document.getElementById("paisOrganizacao").value,
609 site: document.getElementById("siteOrganizacao").value,
610 linkedin: document.getElementById("linkedinOrganizacao").value,
611 sobre: document.getElementById("sobreOrganizacao").value,
612 setores: $("#setores-de-atuacao").select2("val"),
613 competencias: document.getElementById("competenciasOrganizacao").value,
614 tipodeentidade: document.getElementById("tipodeentidadeOrganizacao")
615 .value,
616 instituicao: document.getElementById("instituicaoOrganizacao").value,
617 }),
618 }
619 )
620 .then(
621 (response) =>
622 new Promise((resolve, reject) => {
623 resolve({
624 status: response.status,
625 ok: response.ok,
626 }).then((r) => console.log(r));
627 reject({}).then((c) => console.log(c));
628 })
629 )
630 .then((res) => {
631 if (res.status == "200") {
632 Liferay.Util.openToast({
633 message: "Perfil alterado com sucesso.",
634 type: "success",
635 title: "",
636 toastProps: {
637 autoClose: 5000,
638 },
639 });
640 location.reload();
641 } else if(res.status == "302"){
642 Liferay.Util.openToast({
643 message: "Cadastre uma organização com SITE diferente.",
644 type: "danger",
645 title: "Site inserido já existe",
646 toastProps: {
647 autoClose: 5000
648 }
649 })
650 } else if(res.status == "409"){
651 Liferay.Util.openToast({
652 message: "Cadastre uma organização com Nome da Organização diferente.",
653 type: "danger",
654 title: "Nome da Organização cadastrada já existe",
655 toastProps: {
656 autoClose: 5000
657 }
658 })
659 }
660 })
661 .catch((e) => console.log(e));
662}
663
664
665</script>
666
667</#if>
Java method "com.sun.proxy.$Proxy136.getOrganization(long)" threw an exception when invoked on com.sun.proxy.$Proxy136 object "com.liferay.portal.service.impl.OrganizationLocalServiceImpl@3d097ff7"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: organization = OrganizationLocalServi... [in template "34764#34807#null" at line 15, column 17] ----
1<#assign
2 OrganizationLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.OrganizationLocalService")
3 JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
4/>
5
6<#assign
7 viewerHasPrivileges = false
8 userId = themeDisplay.getUserId()
9/>
10
11<#if userId?? && _CUSTOM_FIELD_organization.getData()?? && _CUSTOM_FIELD_organization.getData() !="" >
12 <#assign
13 orgId = _CUSTOM_FIELD_organization.getData()?number
14 viewerHasPrivileges = OrganizationLocalService.hasUserOrganization(userId, orgId)
15 organization = OrganizationLocalService.getOrganization(orgId)
16 />
17</#if>
18
19
20<#if (viewerHasPrivileges || DDMStructure_Field04200031.getData() != "0") && _CUSTOM_FIELD_organization.getData()?? && _CUSTOM_FIELD_organization.getData() !="" >
21<#assign
22 organization = OrganizationLocalService.getOrganization(_CUSTOM_FIELD_organization.getData()?number)
23 articleId = organization.getExpandoBridge().getAttribute("journal-article")
24 journalArticle = JournalArticleLocalService.getArticle(themeDisplay.getLayout().getGroupId(),articleId?c)
25 articleXml = journalArticle.getDocument().getRootElement()
26
27 setores = articleXml.selectNodes("dynamic-element[@name='Text67772680']")
28/>
29<#else>
30<#assign setores = ["privado"] />
31</#if>
32
33<#assign
34
35 sobre = (viewerHasPrivileges || DDMStructure_Field80037203.getData()!="0")?string(DDMStructure_Text54730891.getData()!"","")
36 competencias = (viewerHasPrivileges || DDMStructure_Field75645729.getData()!="0")?string(DDMStructure_Text51537691.getData()!"","")
37
38>
39
40<div>
41
42 <#if viewerHasPrivileges || DDMStructure_Field80037203.getData()!="0" >
43 <div class="bioec_org_sobre">
44 <label>Sobre a organização</label>
45 <div class="bioec_org_sobre_container">
46 <#if sobre != "">
47 ${sobre}
48 <#else>
49 <div class="bioec_org_sobre_vazio">
50 Nenhuma descrição foi adicionada neste perfil ainda
51 </div>
52 </#if>
53 </div>
54 </div>
55 </#if>
56
57 <#if viewerHasPrivileges || DDMStructure_Field75645729.getData()!="0" >
58 <div class="bioec_org_sobre">
59 <label>Competências tecnológicas</label>
60 <div class="bioec_org_sobre_container">
61 <#if competencias != "">
62 ${competencias}
63 <#else>
64 <div class="bioec_org_sobre_vazio">
65 Nenhuma descrição foi adicionada neste perfil ainda
66 </div>
67 </#if>
68 </div>
69 </div>
70 </#if>
71
72 <#if viewerHasPrivileges || DDMStructure_Field04200031.getData()!="0" >
73 <div class="bioec_org_sobre">
74 <label>Setor(es) de atuação</label>
75 <div class="bioec_org_sobre_container">
76 <#if setores[0]!="privado">
77 <#if setores?size == 1 && setores[0].getStringValue()?trim == "" >
78 <div class="bioec_org_sobre_vazio">
79 Nenhum setor foi adicionado neste perfil ainda
80 </div>
81 <#else>
82 <#if setores?size != 0 >
83 <ul>
84 <#list setores as setor>
85 <li>${setor.getStringValue()}</li>
86 </#list>
87 </ul>
88 <#else>
89 <div class="bioec_org_sobre_vazio">
90 Nenhum setor foi adicionado neste perfil ainda
91 </div>
92 </#if>
93 </#if>
94 <#else>
95 <div class="bioec_org_sobre_vazio">
96 Nenhum setor foi adicionado neste perfil ainda
97 </div>
98 </#if>
99 </div>
100 </div>
101 </#if>
102
103</div>
104
105<style>
106.bioec_org_sobre label {
107 color: #5B5C61;
108 font-weight: 700;
109 margin-bottom: 10px;
110 font-size: 20px;
111 line-height: 30px;
112}
113
114.bioec_org_sobre_container {
115 font-size: 16px;
116 border: 1px solid #BEBEBE;
117 padding: 24px;
118 color: #5B5C61;
119 margin-bottom: 40px;
120}
121
122.bioec_org_sobre_vazio {
123 color: #5B5C61;
124 font-size: 16px;
125 text-align: center;
126 font-weight: 700;
127}
128
129.bioec_org_sobre_container ul {
130 color: #5B5C61;
131 margin: 0;
132}
133</style>
Java method "com.sun.proxy.$Proxy136.getOrganization(long)" threw an exception when invoked on com.sun.proxy.$Proxy136 object "com.liferay.portal.service.impl.OrganizationLocalServiceImpl@3d097ff7"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: organization = OrganizationLocalServi... [in template "34764#34807#null" at line 24, column 9] ----
1<#assign
2 viewerHasPrivileges = false
3 userId = themeDisplay.getUserId()
4/>
5<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
6
7
8<#if userId?? && _CUSTOM_FIELD_organization.getData()?? && _CUSTOM_FIELD_organization.getData() !="" >
9 <#assign
10 OrganizationLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.OrganizationLocalService")
11 />
12 <#assign
13 orgId = _CUSTOM_FIELD_organization.getData()?number
14 viewerHasPrivileges = OrganizationLocalService.hasUserOrganization(userId, orgId)
15 />
16</#if>
17
18<#assign
19 UserLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")
20/>
21<#assign
22 orgId = _CUSTOM_FIELD_organization.getData()?number
23 users = UserLocalService.getOrganizationUsers(orgId)
24 organization = OrganizationLocalService.getOrganization(orgId)
25 nomeDaOrg = organization.getName()!""
26/>
27
28<div class="bioec_org_admins">
29 <label>Administradores desse perfil</label>
30
31 <#list users as user>
32 <#assign userArticleId = user.getExpandoBridge().getAttribute("journal-article")!"0" >
33
34 <#assign urlWC = "">
35 <#if userArticleId != "0" && userArticleId != "">
36 <#assign userArticle = JournalArticleLocalService.getLatestArticle(themeDisplay.getLayout().getGroupId(), userArticleId?string) >
37 <#assign urlWC = userArticle.getUrlTitle()!"">
38 </#if>
39
40
41 <#assign
42 nome = user.getFullName()
43 />
44 <div class="bioec_org_admin_container">
45 <div class="bioec_org_admin_img_placeholder">
46 <i class="fa-solid fa-user"></i>
47 </div>
48 <div class="bioec_org_admin_content">
49 <b><a style="color: #5B5C61;" href="<#if urlWC != ''>/w/${urlWC}</#if>">${nome}</a></b>
50 Administrador
51 </div>
52 <#if viewerHasPrivileges>
53 <div class="bioec_org_admin_buttons_container">
54 <#if userId != user.getUserId() >
55 <button class="bioec_org_admin_button d-none" data-toggle="modal" data-target="#bioec-admin-modal">
56 <i class="fa-solid fa-pen-to-square"></i>
57 </button>
58 <button class="bioec_org_admin_button" onclick="removeAdminFromOrg(${user.getUserId()})">
59 <i class="fa-solid fa-trash-can"></i>
60 </button>
61 </#if>
62 </div>
63 </#if>
64 </div>
65 </#list>
66
67 <#if viewerHasPrivileges>
68 <div class="bioec_org_flex_end">
69 <#if (1 < users?size)>
70 <button class="bioec_secondary_button mx-3 mb-4 mb-md-0" data-toggle="modal" data-target="#bioec-leave-modal">DEIXAR DE SER ADMINISTRADOR</button>
71 </#if>
72 <button class="bioec_primary_button bioec_modal-adicionar" data-toggle="modal" data-target="#bioec-admin-modal">ADICIONAR ADMINISTRADOR</button>
73 </div>
74
75 <#-- MODAL DE ADICIONAR ADMINISTRADOR -->
76 <div id="bioec-admin-modal" class="modal fade" style="display: none;" role="dialog" aria-hidden="true">
77 <div class="modal-dialog modal-lg" role="document">
78 <div class="modal-content">
79 <div class="py-3 px-4 d-flex justify-content-between bioec_modal-line">
80 <div class="bioec_modal-title">Adicionar administrador</div>
81 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
82 <i class="fa-solid fa-xmark"></i>
83 </button>
84 </div>
85 <div class="bioec_modal-form">
86 <div class="py-3 px-4 bioec_modal-line">
87 <h1>${title.getData()}</h1>
88 <div class="bioec_modal-form-control">
89 <label>E-mail do administrador</label>
90 <input id="admin-email" type="text" placeholder="Digite aqui" value="" >
91 </div>
92 <div class="bioec_modal-form-control d-none">
93 <label>Cargo/Função</label>
94 <input id="admin-role" type="text" placeholder="Digite aqui" value="" >
95 </div>
96 </div>
97 <div class="py-3 px-4 d-flex justify-content-end">
98 <button type="button" class="bioec_secondary_button mx-3" data-dismiss="modal">CANCELAR</button>
99 <button type="button" class="bioec_primary_button" onclick="addAdminToOrg()">CONTINUAR</button>
100 </div>
101 </div>
102 </div>
103 </div>
104 </div>
105
106 <#-- MODAL DE DEIXAR ORGANIZAÇÃO -->
107 <div id="bioec-leave-modal" class="modal fade" style="display: none;" role="dialog" aria-hidden="true">
108 <div class="modal-dialog modal-lg" role="document">
109 <div class="modal-content px-4 py-4">
110 <div class="d-flex justify-content-between">
111 <h5 class="modal-title">Deixar de ser administrador</h5>
112 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
113 <span aria-hidden="true">×</span>
114 </button>
115 </div>
116 <div class="my-3">
117 <div class="mb-3">
118 ${title.getData()}
119 </div>
120 Ao clicar em continuar, a organização será removida do seu perfil. Caso possua outros administradores, ela continuará nos perfis desses usuários.
121 </div>
122 <div class="d-flex justify-content-end">
123 <button type="button" class="bioec_secondary_button mx-3" data-dismiss="modal">CANCELAR</button>
124 <button type="button" class="bioec_primary_button" onclick="quitOrganization()" >CONTINUAR</button>
125 </div>
126 </div>
127 </div>
128 </div>
129
130 </#if>
131</div>
132
133<script>
134
135$(document).ready(() => {
136 let urlSearchParams = new URLSearchParams(window.location.search);
137
138 if( urlSearchParams.has('popup_adicionar_admin') == 1){
139 $('.bioec_modal-adicionar').click();
140 urlSearchParams.delete("popup_adicionar_admin");
141 if (history.replaceState) {
142 let searchString = urlSearchParams.toString().length > 0 ? '?' + urlSearchParams.toString() : '';
143 let newUrl = window.location.protocol + "//" + window.location.host + window.location.pathname + searchString + window.location.hash;
144 history.replaceState(null, '', newUrl);
145 }
146 }
147});
148
149
150
151
152function quitOrganization() {
153 const url = Liferay.ThemeDisplay.getPortalURL() + "/o/profile-management/organization/${_CUSTOM_FIELD_organization.getData()}/user/" + ${userId}
154 fetch(url, {
155 method: 'DELETE',
156 "headers": {
157 "x-csrf-token": Liferay.authToken,
158 "Content-Type": "application/json"
159 }
160 })
161 .then(res => {
162 if(res.status == "200"){
163 Liferay.Util.openToast({
164 message: "Você deixou de ser Administrador",
165 type: "success",
166 title: "",
167 toastProps: {
168 autoClose: 5000
169 }
170 })
171 location.reload();
172 } else {throw "err";}
173 })
174 .catch(() => showErrorToast("Não foi possível adicionar o administrador. Verifique o email e tente novamente"))
175}
176
177function removeAdminFromOrg(userId) {
178 console.log(userId)
179 if(userId) {
180 const url = Liferay.ThemeDisplay.getPortalURL() + "/o/profile-management/organization/${_CUSTOM_FIELD_organization.getData()}/user/" + userId
181 fetch(url, {
182 method: 'DELETE',
183 "headers": {
184 "x-csrf-token": Liferay.authToken,
185 "Content-Type": "application/json"
186 }
187 })
188 .then(res => {
189 if(res.status == "200"){
190 Liferay.Util.openToast({
191 message: "Administrador deletado com sucesso.",
192 type: "success",
193 title: "",
194 toastProps: {
195 autoClose: 5000
196 }
197 })
198 location.reload();
199 } else {throw "err";}
200 })
201 .catch(() => showErrorToast("Não foi possível adicionar o administrador. Verifique o email e tente novamente"))
202 }
203}
204
205function addAdminToOrg() {
206 const userEmail = document.getElementById("admin-email").value
207 console.log(userEmail)
208 if(userEmail) {
209 const url = Liferay.ThemeDisplay.getPortalURL() + "/o/profile-management/organization/${_CUSTOM_FIELD_organization.getData()}/user/" + userEmail
210 fetch(url, {
211 method: 'POST',
212 "headers": {
213 "x-csrf-token": Liferay.authToken,
214 "Content-Type": "application/json"
215 }
216 })
217 .then(res => {
218 if(res.status == "200"){
219 Liferay.Util.openToast({
220 message: "Administrador adicionado com sucesso.",
221 type: "success",
222 title: "",
223 toastProps: {
224 autoClose: 5000
225 }
226 })
227 location.reload();
228 gtag('event', 'admnistrador_registrado', {
229 "orgName" : "${nomeDaOrg}"
230 });
231 } else {throw "err";}
232 })
233 .catch(() => showErrorToast("Não foi possível adicionar o administrador. Verifique o email e tente novamente"))
234 }
235}
236
237const showErrorToast = message => {
238 Liferay.Util.openToast({
239 message,
240 type: "danger",
241 title: "",
242 toastProps: {
243 autoClose: 5000,
244 style: { top: 0 },
245 }
246 })
247 }
248
249</script>
250
251<style>
252 .bioec_org_admins {
253 margin-bottom: 40px;
254 }
255
256 .bioec_org_admins label {
257 color: #5B5C61;
258 font-weight: 700;
259 margin-bottom: 10px;
260 font-size: 20px;
261 line-height: 30px;
262 }
263
264 .bioec_org_admin_container {
265 border: 1px solid #BEBEBE;
266 padding: 24px;
267 margin-bottom: 25px;
268 display: flex;
269 flex-direction: row;
270 align-items: center;
271 }
272
273 .bioec_org_flex_end {
274 display: flex;
275 flex-direction: row;
276 align-items: center;
277 justify-content: end;
278 }
279
280 .bioec_org_admin_img_placeholder {
281 align-self: center;
282 height: 48px;
283 width: 48px;
284 background-color: #595A5F;
285 border-radius: 50%;
286 display: flex;
287 align-items: center;
288 justify-content: center;
289 color: var(--white-1);
290 font-size: 28px;
291 }
292
293 .bioec_org_admin_content {
294 font-size: 16px;
295 color: #5B5C61;
296 flex: 1;
297 margin: 0 12px;
298 }
299
300 .bioec_org_admin_content b {
301 display: block;
302 }
303
304 .bioec_org_admin_button {
305 color: var(--white-1);
306 background-color: #595A5F;
307 border-radius: 8px;
308 border: none;
309 outline: none;
310 width: 34px;
311 height: 34px;
312 font-size: 16px;
313 padding: 0px;
314 margin-left: 12px;
315 }
316
317 .bioec_org_admin_buttons_container {
318 display: flex;
319 flex-direction: row;
320 }
321
322 .bioec_modal-title {
323 font-weight: 700;
324 font-size: 20px;
325 color: #5B5C61;
326 }
327
328 .bioec_modal-line {
329 border-bottom: 1px solid #E8ECEF;
330 }
331
332 .bioec_modal-form h1 {
333 font-weight: 400;
334 font-size: 24px;
335 line-height: 150%;
336 color: #5B5C61;
337 margin-bottom: 40px;
338 }
339
340 .bioec_modal-form-control {
341 margin-bottom: 24px;
342 }
343
344 .bioec_modal-form-control label {
345 color: #5B5C61;
346 font-size: 20px;
347 font-weight: 700;
348 line-height: 30px;
349 margin-bottom: 8px;
350 }
351
352 .bioec_modal-form-control label[required]::before {
353 content: "*";
354 color: #ff0000;
355 margin-right: 0.4rem;
356 }
357
358 .bioec_modal-form-control input {
359 border-radius: 0;
360 outline: none;
361 border: none;
362 border-bottom: 1px solid #BEBEBE;
363 font-size: 16px;
364 font-weight: 400;
365 line-height: 24px;
366 color: #5B5C61;
367 width: 100%;
368 background-color: transparent;
369 padding: 2px;
370 margin: 0;
371 }
372
373 @media (max-width: 767px) {
374 .bioec_org_admin_buttons_container {
375 flex-direction: column;
376 }
377 .bioec_org_admin_button {
378 margin-bottom: 12px;
379 }
380 .bioec_org_flex_end {
381 flex-direction: column;
382 align-items: center;
383 }
384 }
385</style>
Reatores de alta pressão em batelada 1L, 2L, 7L
Modelo: Series 4523/Series 4570/Series 4550
Marca: Parr
Função
Estes reatores de aço estão disponíveis com uma vedação O-ring FKM para temperaturas operacionais de até 225 °C e O-ring FFKM para temperaturas de até 300 °C, ou com uma vedação de PTFE plana para temperaturas de até 350 °C no máximo. Dois reatores de 1 litro de volume com pressões de 150 e 340 bars, sendo monitoramento com controle manual de temperatura e pressão. Um reator de 2 litros de volume com pressão de até 340 bar com sistema de monitoramento automatizado. Um reator de 7 litro de volume com pressão de até 150 bar.
Tensiômetro para baixas tensões interfaciais
Modelo: Spinning drop
Marca: Kruss
Função
Equipamento utilizado na medição de tensão interfacial extremamente baixa. A tensão interfacial é medida a partir de uma gota no interior de um capilar que é rotacionada, o diâmetro de curvatura da gota, que é consequência dos movimentos de rotação, pode ser relacionado com a tensão interfacial.
Analisador de tamanho de partícula
Modelo: MASTERSIZER 3000
Marca: MALVERN
Função
Proporciona a obtenção de distribuições rápidas e precisas do tamanho das partículas para dispersões secas e úmidas com o mínimo de esforço Com capacidade de medições que variam de nanômetros a milímetros, mede a intensidade da luz espalhada à medida que um feixe de laser interage com as partículas dispersas da amostra. Esses dados são então analisados para calcular a distribuição do tamanho das partículas obtidas a partir do padrão de espalhamento gerado. Métodos de análise: • Bancada óptica - A amostra devidamente dispersa atravessa a área de medição da bancada óptica, onde um feixe de laser incide sobre as partículas. Uma série de detectores medem precisamente a intensidade da luz difundida pelas partículas na amostra para comprimentos de onda de luz vermelha e azul e por uma ampla gama de ângulos. • Unidades de dispersão de amostras - A dispersão da amostra é controlada por várias unidades de dispersão em meio líquido ou a seco. Essas asseguram que as partículas cheguem à área de medição da bancada óptica na concentração correta e em estado de dispersão adequado e uniforme.
Potencial Zeta
Modelo: LITESIZER 500
Marca: ANTON PAAR
Função
É um instrumento para caracterização de nano e micropartículas em dispersões e soluções. Determina o tamanho de partícula, potencial zeta e a massa molecular através da medição da dispersão de luz dinâmica (DLS), dispersão de luz eletroforética (ELS) e dispersão de luz estática (SLS). Permite também a medição do índice de refração da amostra. Medição possível mesmo com tamanhos diferentes de partículas em uma única suspensão. A transmitância dá informações instantâneas sobre a amostra, além de permitir a otimização automática dos parâmetros de medição (ângulo, posição do foco e duração da medição).
Analisador de estabilidade coloidal
Modelo: Turbiscan Tower
Marca: Formulaction
Função
Analisador de estabilidade/instabilidade de suspensões e emulsões coloidais de formulações. Seu uso é interessante para a indústria de cosméticos, alimentos, farmacêutica e indústria química no geral, que trabalham com formulação. Realiza a análise dos fenômenos de migração (sedimentação e creme), separação de fase, variação de tamanho de partículas (floculação e coagulação). É possível avaliar a velocidade de desestabilização em dispersões e emulsões concentradas. Permite avaliar a estabilidade das formulações em temperaturas variando de 4 a 80 °C e de até 6 diferentes formulações ao mesmo tempo.
Análise Termogravimétrica com Calorimetria Exploratória Diferencial (TGA/DSC/DTA)
Modelo: STA 7300
Marca: Hitachi
Função
Este equipamento permite análises de DSC, TGA e DTA, fornecendo informações sobre temperatura de decomposição, análise de composição, estudos de inflamabilidade, estabilidades oxidativas e temperaturas de transição. A análise termogravimétrica (TGA) é uma técnica da análise térmica na qual a variação da massa da amostra (perda ou ganho) é determinada em função da temperatura e/ou tempo, enquanto a amostra é submetida a uma programação controlada de temperatura. A calorimetria exploratória diferencial (DSC) é utilizada para medir a diferença de energia entre uma amostra e um material de referência em função de um programa de aquecimento ou resfriamento sob atmosfera controlada. Capaz de medir: • Estabilidade térmica dos materiais; • Temperatura de decomposição térmica; • Acompanhar o andamento de diferentes reações (desidratação, oxidação, combustão, decomposição etc.) de 25 à 1500 °C; • Determinação de propriedades térmicas (transições vítreas, mudanças de fase, ponto de fusão e cristalização), estabilidade, cinética e pureza de algumas substâncias com alta sensibilidade na faixa de temperatura de -180 a 725 °C • Operação em pressões elevadas ou sob vácuo para a determinação de calor de vaporização, pressão de vapor, velocidade de reação em atmosfera controlada e reações sensíveis à pressão; • Avaliação de processos de fotopolimerização e fotocura na faixa de temperatura de -50 a 250 °C.
Equipamento de análise elementar de CHNS/O
Modelo: FlashSmart CHNS/O
Marca: Thermo
Função
Equipamento que permite determinar as porcentagens de carbono, hidrogênio e nitrogênio em uma amostra. Essas amostras são sujeitas à combustão em uma atmosfera de oxigênio puro, e os gases resultantes são quantificados em um detector TCD (detector de condutividade térmica). Essa análise pode ser aplicada em diversas aplicações, tais como: agronomia e ciência marinha, segurança alimentar, química orgânica e farmacêutica, petroquímica e energia, sendo essencial para a caracterização dos materiais. Em particular, o Analisador Elementar FlashSmart é equipado com dois fornos totalmente independentes permitindo a instalação de dois circuitos analíticos que podem ser usados sequencialmente e são completamente automatizados. Capaz de medir: • Analisa 5 elementos com o TCD e traça a determinação de enxofre com o detector de chama fotométrica (FPD); • Determinação de carbono, nitrogênio e hidrogênio, por análise de combustão; • Determinação de oxigênio por pirólise; • Determinação do Nitrogênio Total, Carbono Total e Carbono Orgânico Total.
Reator de Vidro de baixa pressão
Modelo: Série 5100
Marca: Parr
Função
Temperatura: -35°C/200°C; Agitação máxima: 1500 rpm; Pressão máxima: 10bar (no reator de vidro); Entrada de gás inerte; Avaliação online de pH; Coletas de amostras automatizada (6 amostras)
Equipamento para determinação de ponto de fusão
Modelo: PF 1500
Marca: GEHAKA
Função
O medidor de ponto de fusão digital microprocessado PF1500 FARMA da Gehaka foI desenvolvido para medir a pureza de uma infinidade de produtos; tais como insumos farmacêuticos, plásticos, resinas e produtos com temperatura de fusão até 350 °C. Seus resultados são obtidos após algumas operações simples e rápidas, emitindo um relatório completo da medida através da interface tipo Serial RS232C ou USB 2.0, quando conectado a uma impressora ou computador. Equipamento possui rampa de aquecimento para a determinação do ponto de fusão.
Analisador de área
Modelo: MicrotracBEL Corp. BELSORP-max
Marca:
Função
O equipamento faz as seguintes análises: • Área específica • Distribuição de tamanho de poro • Adsorção de vapor • Quimissorção Análises tipo BET permite ampla investigação de superfície de materiais sólidos. Ou seja, é um equipamento muito útil para trabalhos envolvendo o setor de biomassa, catálise, polímeros, agroindustrial entre outros. Esse equipamento utiliza o método de fluxo de gás para obter as curvas de adsorção e de dessorção de gás e assim calcular a área total da superfície de acordo com a conhecida teoria BET.
CG-MS
Modelo: 2010 Plus com Olfatômetro
Marca: Shimadzu
Função
O CG-MS poderá ser utilizado na análise de compostos voláteis e semi-voláteis presentes em misturas complexas acoplado a um espectrômetro de massas de modo a caracterizar cada composto eluído da coluna através da análise do espectro com os fragmentos característicos de cada molécula, configurando uma técnica poderosa para identificação de compostos desconhecidos. O equipamento ainda conta com um olfatômetro, um acessório que permite a análise sensorial de compostos que saem da coluna através do seu odor.
Ângulo de contato
Modelo: DSA30E
Marca: KRÜSS
Função
Permite que as fases sólida e líquida nos processos de molhagem e revestimento sejam analisadas com alto grau de automação. O DSA30E mede o ângulo de contato e a energia livre de superfície dos sólidos e a tensão superficial dos líquidos de forma confiável e precisa. O instrumento é ideal para garantia de qualidade padronizada com alta frequência de amostras. A medição da tensão superficial pode ser realizada sem reconfigurar o instrumento e pode ser incorporada em uma seqüência de medição automática. Combinar os dados de líquidos com os de um sólido permite que a compatibilidade das duas fases seja caracterizada de forma abrangente. Por este meio, por exemplo, é possível determinar a intensidade da adesão e a estabilidade a longo prazo de um revestimento
Tensiômetro
Modelo: FORCE TENSIOMETER K100
Marca: KRÜSS
Função
Realiza medições de alta precisão, automáticas e confiáveis de tensão superficial e tensão interfacial, concentração crítica de micelas (CMC) e ângulo de contato em sólidos, fibras e pós. Realiza muitas tarefas no campo da análise de surfactantes e medição de umectação para sua garantia de qualidade ou pesquisa. Aplicação: Determinação da eficácia e eficiência de surfactantes por medição de concentração micelar crítica (CMC); Comportamento molhante de comprimidos, princípios ativos farmacêuticos e excipientes; Molhagem de vernizes e tintas ; Conteúdo do produto de decomposição em óleos; Validação de limpeza na indústria alimentícia; Molhagem e adesão de revestimentos; Desenvolvimento de produtos cnosméticos; Propriedades molhantes das tintas; Molhagem de feixes de fibras e têxteis; Análise de modificações de superfície
Rotaevaporador
Modelo: Distimatic Bench-top Platinum 2 Package
Marca:
Função
O equipamento evaporador rotativo exerce papel fundamental na destilação. Mesmo soluções com pontos de ebulição diferentes podem ser identificadas e destiladas.
Reator Contínuo de Tanque Agitado de Alta Pressão
Modelo: HP CONTINUOUS REACTOR
Marca: Top Industrie
Função
Reator químico do tipo Continuous Stirred Flow Reactor (CSTR) de altas pressão e temperatura para condução de reações químicas em fluxo contínuo. O equipamento apresenta três vasos confeccionado em aço Hastelloy C276 nos volumes de 400 ml, 1 L e 1,5 L. Os vasos têm cabeçote com conexões para entrada de gases, entrada de purga, saída de líquido, saída de gases, disco de ruptura, transdutores de pressão, manômetros, medidor de temperatura do tipo termopar
Titulador automático
Modelo: 855 Robotic Titrosampler
Marca: Metrohm
Função
Integra a preparação automática da amostra e análise titrimétrica em um pequeno espaço. Economia de 40% no tempo de bancada em relação ao titulador convencional. Analisa grandes séries de amostras de forma rápida e precisa. Alta reprodutibilidade e precisão. Limpeza e condicionamento automático do sensor.
ULTRA-TURRAX®
Modelo: T 25 e T 50 digital
Marca: IKA
Função
Equipamento de alta performance, para homogeneização e dispersão eficiente de volumes entre 0,25 a 30 L. Amplo alcance de velocidade de 500 a 10.000 rpm mesmo com pequenos diâmetros de rotor. Operações reproduzíveis devido à velocidade constante mesmo com alterações na viscosidade. Garantem um tamanho final de partícula de 10 a 100 μm em suspensões e de 1 a 10 μm em emulsões, dependendo do elemento dispersor.
Centrífuga
Modelo: Heraeus Megafuge 8R
Marca: Thermo Fisher
Função
A centrífuga de bancada pode ser usada em química, biologia e bioquímica, e geralmente serve para fazer separação de amostras. Composta por diversos rotores e adaptadores, garantem o uso em uma grande variedade de volume de amostra, adequando-a para as mais diferentes aplicações.
Unidade Automática de Destilação
Modelo: DIANA 700
Marca: Anton Paar
Função
Além de caracterizar amostras de produtos petroquímicos, o Diana 700 é capaz de destilar hidrocarbonetos aromáticos e outros líquidos orgânicos voláteis. A série Diana é fácil de usar, altamente eficiente e de operação segura. Analisador de destilação de alta precisão e alto fluxo de amostras para combustíveis e solventes; Sensor de temperatura de vapor exclusivo e indestrutível; Sistema inteligente de monitoramento de condição garante manuseio sem erros; Resfriamento Peltier sem líquido acelerado para medições ininterruptas;
Moinho de facas
Modelo: PULVERISETTE 19
Marca: FRITSCH GMBH
Função
O moinho de corte universal de alta velocidade PULVERISETTE 19 com um torque de até 30 Nm tritura materiais de amostra secos, macios a médios e materiais fibrosos e plásticos com resultados reprodutíveis confiáveis com um tamanho de alimentação máximo de 70 x 80 mm e um rendimento de até 60 l/h. Ideal para: Plásticos e têxteis; Agricultura e florestamento; Meio ambiente; Rohs; Analítico; Materiais de construção; Química e Alimentos
Moinho de bolas
Modelo: E max
Marca: RETSCH
Função
Moagem mais rápida e fina do que com qualquer outro moinho de bolas ; Rotações de até 2.000 rpm possibilitam uma pulverização extremamente rápida da amostra; Um sistema inovador de resfriamento a água permite moagens demoradas sem fases de resfriamento; Monitoramento de temperatura com ativação e desativação automáticas e Um projeto inovador do vaso de moagem possibilita estreitas faixas granulométricas graças a uma homogeneização melhorada da amostra.
Condutivímetro
Modelo: mCA-150.1
Marca: MS Tecnopon Instruments
Função
Equipamento completo para medições exatas de condutividade totalmente microprocessado. Aceita 3 tipos de constantes de células, K = 0,1; K = 1 ou K = 10. Mede condutividade em águas (S/cm). Mede STD Sólidos Totais Dissolvidos com fator programável. Mede condutividade em álcool/água ultra-pura (S/m).
Moinho de Cisalhamento
Modelo: Supermasscolloider
Marca:
Função
O masuko é utilizado para promover o Cisalhamento de materiais com proposito de obter partículas manométricas. Diversas amostras podem ser utilizadas, como por exemplo, grãos, gengibre, mostardas, talco, sílica e celulose. Pode também ser utilizado para emulsionar graxa e cosméticos para obtenção de partículas em escala micro. É composto por dois discos, sendo um rotativo e um estático, com ajuste mecânico da distância entre eles, para que por meio do contato mecânico ocorra o processo de desfibrilação. Os discos de moagem não porosos patenteados são resistentes ao estresse térmico e inibem a formação de bactérias e a contaminação das amostras, atendendo, assim às exigências sanitárias das indústrias.
Colorímetro / Comparador cor Gardner
Modelo: 705-VA2 Daylight
Marca: Lovibond
Função
A escala de cor Gardner, conforme especificado na ASTM D1544, é uma escala de cores única, unidimensional, para classificar a cor de líquidos de cores semelhantes, tais como resinas, vernizes, lacas, óleos de secagem, ácidos gordos, lecitina, óleo de girassol e óleo de linhaça.
Balança de umidade (Infravermelho)
Modelo: HX204
Marca: Mettler Toledo
Função
Utilizado para determinar teores de umidade de amostras. Capacidade máxima de 200 g e resolução de até 0,1 mg com medição precisa de teor de umidade menor do que 1% até 100%. Apresenta programa de secagem e resultados de curva de secagem em tempo real. Pode ser utilizado nos setores de alimentos, sabões, têxteis, papéis, anilinas, pigmentos, pomadas, materiais plásticos, produtos da indústria farmacêutica, farelos diversos, rações, carvão, cimento, cal, etc. Seus resultados são obtidos após algumas operações simples e rápidas, dando a leitura do percentual de umidade em base seca e úmida.
Concentrador à vácuo
Modelo: Genevac Elite EZ-2
Marca: SP Scientific
Função
Utilizando a mais avançada tecnologia comprovada na ciência da evaporação, a série EZ-2 foi projetada especificamente para a remoção de solventes em diferentes áreas da pesquisa científica, quando a concentração de amostras ou secagem completa for necessária. Em particular, o Elite (Elite EZ-2) é recomendado para solventes com pontos de ebulição até 220°C. Mais fácil de usar do que um evaporador rotativo; A tecnologia avançada oferece proteção completa da amostra; O design versátil acomoda uma ampla variedade de porta-amostras.
Analisador de catalisador (TPD/TPR/BET)
Modelo: BELCAT II
Marca: MicrotracBel
Função
O BELCAT II permite o estudo abrangente de catalisadores usando as técnicas: Quimissorção de pulso; Dessorção a temperatura programada (TPD); Redução a temperatura programada (TPR); Oxidação a temperatura programada (TPO); Quimissorção a temperatura programada; Área específica (BET). Possíveis aplicações: Estudo de acidez/basicidade do catalisador; Determinação das condições ótimas de preparação do catalisador; Estudo desempenho de reação catalítica; Avaliação das propriedades superficiais dos catalisadores; Avaliação da cinética de adsorção dos catalisadores; Avaliação da taxa de dispersão de metal do catalisador.
Difração de raios X (XRD)
Modelo: Aeris
Marca: Malvern Panalytical
Função
Amplamente utilizado para fornecer informações a respeito da estrutura cristalina do material e identificar as fases presentes para entender suas propriedades. Difração de raio X é um técnica analítica que revela informações estruturais, como composição química, estrutura do cristal, tamanho do cristalito, orientação preferida e espessura da camada. Por esse motivo, é utilizado para analisar uma ampla gama de materiais, desde pós e sólidos até filmes finos e nanomateriais.
Fluorescência de raios X (XRF)
Modelo: Rigaku Nex DE
Marca:
Função
O equipamento Nex De permite análise elementar precisa do sódio (Na) ao urânio (U) por meio de ensaios não destrutivos em quase todas as matrizes, sólidas, ligas, pó, líquidos e materiais pastosos (slurry). É empregada em diversos setores e aplicações, como: produção de cimento, produção de vidro, mineração, beneficiamento mineral, ferro, aço e metais não ferrosos, petróleo e petroquímicas, polímeros e setores relacionados, perícia forense, produtos farmacêuticos, produtos de saúde, meio ambiente, alimentos e cosméticos. Ele permite a caracterização qualitativa e quantitativa de materiais usando um sistema de energia dispersiva (EDXRF), fornece análises rápidas e multielementares, de materiais com baixa concentração (ppm) ou altas concentrações. Com um design robusto, é possível ser utilizado em campo, por exemplo para monitoramento de produção e em ambientes remotos.
Sistema Kjeldhal
Modelo:
Marca: VELP Scientifica
Função
Sistema completo para determinação de proteína/nitrogênio pelo método KJELDAHL. O fornecimento inclui destilador (modelo DK 18/26), bloco digestor para seis provas (modelo UDK 149) e um sistema de neutralização de gases.
Reator de Vidro (vácuo)
Modelo:
Marca: Biofoco
Função
Sistema de reação com dois reatores para aplicação geral contendo dois banhos termostatizados para operação destes. O Equipamento acompanha duas bombas de vácuo de diafragma, duas balanças e um computador para monitoramento e controle dos processos. Dois vasos de processos; Operação à vácuo até 6 bar; Temperatura máxima: 200 °C; Vazão de alimentação líquida máxima: 340 ml/min; Sistema de controle de gases de alimentação/exaustão; Sistema de condensação de água contínua
Refratômetro de bancada
Modelo: Abbemat
Marca: Anton Paar
Função
Permite medições rápidas e não destrutivas do índice de refração. Fornece uma exatidão de ± 0,00002 nD. Sem preparação da amostra, leituras em segundos. É possível medir: Todas as amostras, de líquidos a pastas, de polímeros a sólidos. Amostras turvas, coloridas ou opacas. Líquidos contendo bolhas de ar ou partículas sólidas. Sem influência da umidade, temperatura ou vibrações. Uma ampla faixa de escalas é armazenada no equipamento para conversão do índice de refração em concentrações.
Microcentrífuga
Modelo: NT800
Marca: Nova Técnica
Função
Trabalha com rotor para microtubos com capacidade máxima para 24 microtubos de 1,5ml a 2 ml. Velocidade máxima até 15.000 rpm com ajuste de 10 rpm em 10 rpm. Rotor de Ângulo Fixo em alumínio; Tempo de processo de 1 a 999 minutos (ou segundos) com ajuste de 1 em 1 minuto (ou segundo) com disponibilidade para trabalho com tempo infinito.
Extrator Soxhlet
Modelo: SER158 Solvent Autoextrator
Marca: Velp Scientific
Função
Este extrator é totalmente automatizado, oferecendo tecnologia de ponta para extrações rápidas, precisas, com total segurança de acordo com as técnicas Randall ou Twisselmann. Operações autônomas 24/7 com desligamento automático para garantir alto rendimento, 6 copos para extração simultânea e extrações até 5 vezes mais rápidas que o sistema Soxhlet tradicional.
Espectrofotômetro
Modelo: UV VIS 1800
Marca: Shimadzu
Função
Mede a absorbância ou transmitância tanto em um comprimento de onda constante quanto em múltiplos comprimentos de onda (até 8). As alterações na amostra podem ser monitoradas por varreduras repetidas. Ele gera curvas de calibração a partir da análise de soluções padrão e as utiliza para calcular a concentração em incógnitas. Mede a mudança na absorbância em função do tempo, e assim obtém os valores da atividade enzimática. Permite uma análise de DNA e proteínas
Espectrofotômetro
Modelo: Evolution 220 - 840-210600
Marca: Thermofisher
Função
Possui largura de banda selecionável entre 1 ou 2nm. Capaz de fazer cinética de reação
infra sem img manual
Modelo: Waters
Marca: infra sem img manual
Função
misturar
Conteudo Em Análise Pelo Cetiqt:
Conteúdo recusado pelo CETIQT por violar as políticas de privacidade.
infra com img manual
Modelo: Waters
Marca: Acquity Arc
Função
misturar
Conteudo Em Análise Pelo Cetiqt:
Conteúdo recusado pelo CETIQT por violar as políticas de privacidade.
infra aqr 1
Modelo: eee
Marca: ffff
Função
aaa
infra aqr 2
Modelo: ssss
Marca: dddd
Função
aaa
infra aqr 3
Modelo: ssss
Marca: ccccc
Função
aaa
Cromatógrafo líquido (HPLC)
Modelo: Acquity Arc
Marca: Waters
Função
Equipamento de cromatografia líquida de alta eficiência capaz de separar e quantificar dezenas de compostos presentes em uma mesma análise. Os HPLC’s possuem a configuração descrita a seguir: Detecção por UV, onde é possível a análise de compostos com cromóforos, alta sensibilidade e possibilidade de eluição por gradiente; índice de refração, que é um detector universal e espalhamento de luz (Evaporative light scattering), este último capaz de detectar compostos que não possuem cromóforos, porém sem as desvantagens do índice de refração como a capacidade de usar eluição por gradiente.
Cromatógrafo líquido (HPLC)
Modelo:
Marca: Waters
Função
Possui configuração com UV, IR e um detector de massas que possibilita a análise dos fragmentos moleculares de cada componente da amostra, fornecendo desta forma uma poderosa ferramenta para identificação de compostos desconhecidos.
APC
Modelo: Acquity
Marca: Waters
Função
Possui algumas inovações em relação à técnica de GPC convencional: Resolução mais alta; Consistência e qualidade de dados melhorada permitindo uma calibração rápida e diária; Tecnologia de sistema avançada com desenvolvimento de método automatizado; Tempos de análise de 5 a 20 vezes mais rápido.
Potencial zeta de sólidos macroscópicos
Modelo: SurPASS 3
Marca: Anton Paar
Função
Determina o potencial zeta de superfícies sólidas macroscópicas de praticamente qualquer forma e tamanho e permite o estudo da cinética de adsorção em materiais. Análise totalmente automática do potencial zeta superficial a diferentes pH e uma determinação totalmente automatizada do ponto isoelétrico (IEP). Com a célula de medição apropriada para sua amostra, o equipamento permite a análise de superfícies de sólidos, tais como, alguns tipos de fibras naturais e sintéticas, lâminas, folhas, tecidos, pós e amostras granulares.