Nav Bar do usuário deslogado.

Organização

Agrotec – Bioeconomia no Agronegócio

Agrotec – Bioeconomia no Agronegócio
Outras ICT's
Campo Grande
Mato Grosso do Sul
Brasil
  • Sobre
  • Infraestruturas
  • Demandas
  • Ofertas
  • Publicações
Sobre drop zone
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> organization.getExpandoBridge().getAttribute("journal-article")  [in template "34764#34807#null" at line 23, column 21]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: articleId = organization.getExpandoBr...  [in template "34764#34807#null" at line 23, column 9]
----
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?? > 
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"> 
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> 
Lohanna Santos Paiva Administrador
Infraestruturas drop zone
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> autorId  [in template "34764#34807#41130" at line 84, column 46]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #if autorId != "" && autorId??  [in template "34764#34807#41130" at line 84, column 41]
----
1<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
2<#assign UserLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")> 
3<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 
4<#assign OrganizationLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.OrganizationLocalService") > 
5<#assign AssetTagLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService")> 
6<#-- <#assign  
7journalArticle = JournalArticleLocalService.getArticle(themeDisplay.getSiteGroupId(),.data_model["reserved-article-id"].data) 
8AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
9assetEntry = AssetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
10--> 
11<#assign  
12mbMessageLocalService = serviceLocator.findService("com.liferay.message.boards.service.MBMessageLocalService") 
13
14 
15<div id="upload-notice-container" style="display: none;"> 
16						<span id="close-btn-upload-container"> <i class="fa fa-xmark"></i> </span> 
17						<h5 class="upload-notice-title"> 
18							<i class="fa-sharp fa-solid fa-circle-exclamation"></i> 
19							Upload de infraestrutura em andamento 
20						</h5> 
21						<p> 
22							Caso os itens adicionados não estejam visíveis na página, aguarde um instante e <span>atualize a página</span> para visualizá-los. 
23						</p> 
24					</div> 
25				 
26<div class="bioec-profile-estrutura-main"> 
27		 
28    <div id="estruturas-lista" class="d-flex flex-column"> 
29				 
30				<#if entries?has_content> 
31					<#list entries as entry> 
32					 
33					<#assign journalArticle = JournalArticleLocalService.getLatestArticle(entry.getClassPK()) > 
34					<#assign articleXml = journalArticle.getDocument().getRootElement() > 
35					<#assign JournalArticleID = journalArticle.getId()> 
36					<#assign JournalArticleFrontId = journalArticle.getArticleId()> 
37					<#assign  
38						userIsAdmin = false 
39						orgId = "" 
40
41						<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text57816561']")??> 
42								<#assign  
43						modelo = articleXml.selectSingleNode("dynamic-element[@field-reference='Text57816561']").getStringValue()!"" 
44						modelo = modelo?replace("\n\t\t", "") 
45						modelo = modelo?replace("\n\t", "")		 
46
47						</#if> 
48							 
49						<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text23707291']")??> 
50							<#assign  
51						marca = articleXml.selectSingleNode("dynamic-element[@field-reference='Text23707291']").getStringValue()!"" 
52						marca = marca?replace("\n\t\t", "") 
53						marca = marca?replace("\n\t", "")		 
54
55						</#if> 
56							 
57						<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text74754192']")??> 
58						    <#assign  
59						funcao = articleXml.selectSingleNode("dynamic-element[@field-reference='Text74754192']").getStringValue()!"" 
60						funcao = funcao?replace("\n\t\t", "") 
61						funcao = funcao?replace("\n\t", "")		 
62
63						</#if> 
64							 
65							<#if articleXml.selectSingleNode("dynamic-element[@field-reference='CampoDeTexto02890219']")??> 
66								<#assign  
67						imageSrc = articleXml.selectSingleNode("dynamic-element[@field-reference='CampoDeTexto02890219']").getStringValue()!"" 
68												  
69
70						</#if> 
71							 
72							<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text93109394']")??> 
73								<#assign  
74						autorId = articleXml.selectSingleNode("dynamic-element[@field-reference='Text93109394']").getStringValue()!"" 
75						autorId = autorId?replace("\n\t\t", "") 
76						autorId = autorId?replace("\n\t", "")		 
77						autorArticleId = "" 
78
79						</#if> 
80								<#assign  
81						commentsCount = mbMessageLocalService.getDiscussionMessagesCount(entry.getClassName(), entry.getClassPK(), 0)!"0" 
82					/> 
83					 
84					<#if autorId != "" && autorId??> 
85						<#assign 
86							autor = UserLocalService.fetchUser(autorId?number)!"" 
87							autorArticleId = autor.getExpandoBridge().getAttribute("journal-article")!"0" 
88						/> 
89						<#if autor != ""> 
90							<#assign autor = autor.getFullName()!""> 
91						<#else> 
92							<#assign autor = "Anônimo" > 
93						</#if> 
94					<#else>  
95						<#assign autor = "Anônimo" > 
96					</#if> 
97					 
98					<#assign categorias = AssetCategoryLocalService.getCategoryNames(entry.getClassName(), entry.getClassPK())!"" > 
99					 
100					<#assign 	categorias = AssetCategoryLocalService.getCategoryNames(entry.getClassName(), entry.getClassPK())!"" > 
101 
102					<#assign urlWC = ""> 
103					<#if autorArticleId != "0" && autorArticleId != "" && autor != "Anônimo"> 
104					<#assign autorArticle = JournalArticleLocalService.getLatestArticle(themeDisplay.getLayout().getGroupId(), autorArticleId?string) > 
105					<#assign urlWC = autorArticle.getUrlTitle()!""> 
106					</#if> 
107					 
108									 
109					<#assign tags = AssetTagLocalService.getTagNames("com.liferay.journal.model.JournalArticle", journalArticle.getResourcePrimKey()?number )  
110				 tagName = tags[0]!"" 
111				  
112
113				<#if tagName?contains("organization") && tagName != "" > 
114 
115					<#assign 
116					orgId = tagName?keep_after("organization-")				 
117					organization =  OrganizationLocalService.fetchOrganization(orgId?number)!"" 
118
119			 
120					 
121					<#if organization != "" && autor != "Anônimo" && autorArticleId != ""> 
122						<#assign	orgArticleId = organization.getExpandoBridge().getAttribute("journal-article") 
123							orgJournalArticle = JournalArticleLocalService.getArticle(themeDisplay.getLayout().getGroupId(),orgArticleId?c)  
124							urlWC = orgJournalArticle.getUrlTitle()!"" 
125							autor = organization.getName()!"" 
126
127					</#if> 
128				</#if> 
129					 
130					<#if themeDisplay.isSignedIn() > 
131						<#assign tags = AssetTagLocalService.getTagNames(entry.getClassName(), entry.getClassPK()) > 
132						<#assign orgId = (tags[0]!"")?remove_beginning("organization-") > 
133						<#assign userIsAdmin = OrganizationLocalService.hasUserOrganization(themeDisplay.getUserId(), orgId?number)> 
134					</#if> 
135					 
136					<div class="estruturas-lista-item" id="InfraItem${JournalArticleID}"> 
137							<div class="lista-checkmark"> 
138								<#if categorias?seq_contains("aprovado") > <i title="Aprovado" style="color: #4ECD66" class="fa-solid fa-circle-check"></i> </#if> 
139								<#if categorias?seq_contains("pendente") >	<i title="Em análise" style="color: #D90000"class="fa-solid fa-spinner"></i> </#if> 
140								<#if categorias?seq_contains("recusado") >	<i title="Recusado" style="color: #D90000"class="fa-solid fa-exclamation-circle"></i> </#if> 
141							</div> 
142 
143							<div class="lista-pic"> 
144									<#if imageSrc?trim !="" > 
145										<div class="bioec_infra_img" style="background-image: url(${imageSrc})"> 
146										</div> 
147									<#else> 
148										<div class="bioec_infra_img_placeholder"> 
149											<i class="fa-solid fa-image"></i> 
150											sem imagem 
151										</div> 
152									</#if> 
153							</div> 
154 
155							<div class="lista-desc"> 
156									<h5>${entry.getHighlightedTitle()}</h5> 
157									<p>Modelo: ${modelo}</p> 
158									<p>Marca: ${marca}</p> 
159							</div> 
160 
161							<div class="lista-arrow"> 
162									<button class="btn" type="button" data-toggle="collapse" data-target="#collapse-${entry.getClassPK()}" aria-expanded="false" aria-controls="collapse-${entry.getClassPK()}"> 
163											<i class="fa-solid fa-chevron-down"></i> 
164									</button> 
165							</div> 
166 
167							<span id="collapse-${entry.getClassPK()}" class="collapse lista-collapse"> 
168									<div class="lista-func"> 
169											<h5>Função </h5> 
170											<p>${funcao}</p> 
171									</div> 
172									 
173							<#if categorias?seq_contains("recusado") > 
174							<div style="border-top: 1px solid #E8ECEF; font-weight: bold; padding-top: 24px;"> 
175							<p>Conteudo Em Análise Pelo Cetiqt:</p> 
176							<p>Conteúdo recusado pelo CETIQT por violar as políticas de privacidade.</p> 
177							</div> 
178							</#if > 
179							 
180									<div class="lista-footnote"> 
181											<div> 
182													<span class="lista-date">${journalArticle.getDisplayDate()?string('dd/MM/yyyy')}</span> | <span class="lista-commentNumber">${commentsCount} comentários</span> <span class="barra-pipe"> | </span> <span class="lista-author">Publicado por <a <#if urlWC != ''>href="/w/${urlWC}</#if>">${autor}</a></span> 
183											</div> 
184											<#if userIsAdmin> 
185											<div class="buttonsActions"> 
186												<div style="cursor: pointer;font-size: 16px;" data-toggle="modal" data-target="#modalInfra${JournalArticleID}"> 
187													<i class="fa-solid fa-edit"></i> 
188												</div> 
189												<div style="cursor: pointer;font-size: 16px;" data-toggle="modal" data-target="#modal-infra-${entry.getClassPK()}"> 
190													<i class="fa-solid fa-trash-can"></i> 
191												</div> 
192												 
193											</div> 
194											</#if> 
195									</div> 
196							</span> 
197					</div> 
198					 
199					<#if userIsAdmin> 
200					<div style="display: none;" id="modal-infra-${entry.getClassPK()}" class="modal fade" role="dialog"> 
201						<div class="modal-dialog modal-lg" role="document"> 
202							<div class="modal-content"> 
203								<div class="modal-header" > 
204									<h4 class="m-0">Remover Infraestrutura</h4> 
205									<button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
206										<span aria-hidden="true"> 
207											<i class="fa-solid fa-close"></i> 
208										</span> 
209									</button>    
210								</div> 
211								<div class="modal-body"> 
212									<h5>Você tem certeza que deseja remover essa infraestrutura?</h5> 
213									<div> 
214										Ao clicar em continuar, a infraestrutura será removida do seu perfil. 
215									</div> 
216								</div> 
217								<div class="modal-footer justify-content-end"> 
218										<button class="bioec_secondary_button" data-dismiss="modal">CANCELAR</button> 
219										<button class="bioec_primary_button" type="button" onclick="excluirInfra(${JournalArticleFrontId}, ${orgId})">CONTINUAR</button>  
220								</div> 
221							</div> 
222						</div>			 
223					</div> 
224					</#if> 
225					 
226					<#-- modal edição --> 
227 
228<#if userIsAdmin> 
229<div style="display: none;" id="modalInfra${JournalArticleID}" class="modal fade bioec-profile-infra-modal" role="dialog"> 
230	<div  class="modal-dialog modal-lg" role="document"> 
231 
232		<form class="form-group modal-content" id="formularioInfraestrutura${JournalArticleID}"> 
233			<div id="infraModal-l1-${JournalArticleID}" class="modal-header infraModal-l1" > 
234				<h5>Adicionar Infraestrutura</h5> 
235				<button id="fecharModal${JournalArticleID}" type="button" class="close" data-dismiss="modal" aria-label="Close"> 
236					<span aria-hidden="true">&times;</span> 
237				</button>    
238			</div> 
239			<div id="infraModal-l2-${JournalArticleID}" class="modal-body infraModal-l2"> 
240				<div id="infraName${JournalArticleID}" class="infraName"> 
241					<label class="ReqLabel" for="inputInfraName${JournalArticleID}">Nome da infraestrutura</label> 
242					<input type="text" id="inputInfraName${JournalArticleID}" value="${entry.getHighlightedTitle()}" placeholder="Nome da infraestrutura" required> 
243				</div> 
244			<div id="infraModel${JournalArticleID}" class="infraModel"> 
245				<label class="ReqLabel" for="inputInfraModel${JournalArticleID}">Modelo</label> 
246				<input type="text" id="inputInfraModel${JournalArticleID}" value="${modelo}" placeholder="Modelo" required> 
247			</div> 
248			<div id="infraBrand${JournalArticleID}" class="infraBrand"> 
249				<label class="ReqLabel" for="inputInfraBrand${JournalArticleID}">Marca</label> 
250				<input type="text" id="inputInfraBrand${JournalArticleID}" value="${marca}" placeholder="Marca" required> 
251			</div> 
252			 
253			<div id="infraImg${JournalArticleID}" class="infraImg"> 
254				<div style="display: flex; flex-direction: column; gap: 8px"> 
255					<label>Imagem da infraestrutura (Máx. 10 MB)</label> 
256					<label class="bioec_secondary_button" id="carregarImagem${JournalArticleID}" for="inputCarregarImagemInfra${JournalArticleID}" style="font-size: 16px;color: #333244;align-self:start;"> 
257						CARREGAR IMAGEM 
258					</label> 
259					<input id="inputCarregarImagemInfra${JournalArticleID}" class="inputCarregarImagemInfra" type="file" accept="image/*" onchange="encodeInfraImageAsURL${JournalArticleID}(this)"> 
260					<input class="d-none" id="inputInfraBase64${JournalArticleID}" value="${imageSrc}" /> 
261					<div class="imagemCarregadaInfra${JournalArticleID} d-md-none d-block" style="background-image: url(${imageSrc})"></div> 
262					<button type="button" id="removerImagemInfra${JournalArticleID}" class="<#if imageSrc == "" || imageSrc?? == false> d-none </#if> removerImagemInfra" > 
263						<i class="fa fa-trash"></i> Remover imagem	 
264					</button> 
265				</div> 
266				<div class="imagemCarregadaInfra${JournalArticleID} d-md-block d-none" style="background-image: url(${imageSrc})"></div> 
267			</div> 
268			 
269			<div id="infraFunction${JournalArticleID}" class="infraFunction"> 
270				<label class="ReqLabel" for="inputInfraFunction${JournalArticleID}">Função</label> 
271				<input type="text" id="inputInfraFunction${JournalArticleID}" class="inputInfraFunction" value="${funcao}" placeholder="Função" required> 
272			</div> 
273		</div> 
274		<div class="TextImportant"> 
275			<p> 
276			Importante: O conteúdo enviado passará por um processo interno de aprovação. Só então o conteúdo adicionado aparecerá no portal. 
277			</p> 
278		</div> 
279		<div id="infraModal-l3-${JournalArticleID}" class="modal-footer infraModal-l3"> 
280					<button class="bioec_secondary_button" onclick="">SALVAR E FECHAR</button> 
281		</div> 
282	</form> 
283	 
284	</div>			 
285</div> 
286</#if>					 
287					 
288 
289 
290 
291<script> 
292const SHOW_NOTICE_CONTAINER_BIOECONOMIA = "SHOW_NOTICE_CONTAINER_BIOECONOMIA"; 
293	 
294 
295 
296function closeNoticeContainer() { 
297  document.getElementById("upload-notice-container").style.display = "none"; 
298 
299  window.localStorage.removeItem(SHOW_NOTICE_CONTAINER_BIOECONOMIA); 
300
301 
302document 
303  .getElementById("close-btn-upload-container") 
304  .addEventListener("click", closeNoticeContainer); 
305 
306document.addEventListener("DOMContentLoaded", function(event) {  
307	console.log('chegou aqui', window.localStorage.getItem(SHOW_NOTICE_CONTAINER_BIOECONOMIA)); 
308  var showNoticeContainer = window.localStorage.getItem(SHOW_NOTICE_CONTAINER_BIOECONOMIA); 
309  if (showNoticeContainer == "true") { 
310    document.getElementById("upload-notice-container").style.display = "block"; 
311    window.localStorage.removeItem(SHOW_NOTICE_CONTAINER_BIOECONOMIA); 
312
313}); 
314 
315 
316 
317<#if userIsAdmin> 
318 
319document.querySelector('#formularioInfraestrutura${JournalArticleID}').addEventListener('submit', event => { 
320	event.preventDefault(); 
321	if (boolAddInfraestrutura == 0){ 
322		event.preventDefault(); 
323
324	editarSubmissao${JournalArticleID}(); 
325}); 
326 
327function editarSubmissao${JournalArticleID}(){ 
328 
329 
330		Liferay.Util.openToast({message: "Enviando requisição",type: "info",title: ""}); 
331		const infraData = { 
332			nome: document.getElementById("inputInfraName${JournalArticleID}").value, 
333			marca: document.getElementById("inputInfraBrand${JournalArticleID}").value, 
334			funcao: document.getElementById("inputInfraFunction${JournalArticleID}").value, 
335			modelo: document.getElementById("inputInfraModel${JournalArticleID}").value, 
336			autor: Liferay.ThemeDisplay.getUserName(), 
337			imagem: document.getElementById("inputInfraBase64${JournalArticleID}").value, 
338
339		console.log(JSON.stringify(infraData)); 
340 
341		fetch(Liferay.ThemeDisplay.getPortalURL() + "/o/infraestrutura/equipamento/${JournalArticleFrontId}", { 
342			method: 'PUT', 
343			"headers": { 
344				"x-csrf-token": Liferay.authToken, 
345				"Content-Type": "application/json" 
346			}, 
347			body: JSON.stringify(infraData) 
348		}) 
349		.then(res => { 
350			if(res.status == 200) { 
351			 
352				Liferay.Util.openToast({ 
353            message: "Infraestrutura editada com sucesso. Após a submissão, será iniciado um novo processo interno de aprovação do conteúdo enviado. Só então o conteúdo submetido aparecerá novamente no portal.", 
354            type: "success", 
355            title: "", 
356            toastProps: { 
357                autoClose: 5000 
358
359        }) 
360			 
361setTimeout(function(){ location.reload(); }, 2000); 
362				 
363			} else { 
364				Liferay.Util.openToast({ 
365            message: "Erro ao editar infraestrutura", 
366            type: "danger", 
367            title: "", 
368            toastProps: { 
369                autoClose: 5000 
370
371        }) 
372
373		}); 
374
375</#if> 
376 
377function excluirInfra(wcId, orgId) { 
378		Liferay.Util.openToast({message: "Enviando requisição",type: "info",title: ""}); 
379		fetch(Liferay.ThemeDisplay.getPortalURL() + "/o/infraestrutura/equipamento/" + wcId , { 
380			method: 'DELETE', 
381			"headers": { 
382				"x-csrf-token": Liferay.authToken, 
383				"Content-Type": "application/json" 
384
385		}) 
386		.then(res => { 
387			if(res.status == 200) { 
388				Liferay.Util.openToast({ 
389            message: "Infraestrutura excluida com sucesso", 
390            type: "success", 
391            title: "", 
392            toastProps: { 
393                autoClose: 5000 
394
395        }) 
396				setTimeout(function(){ location.reload(); }, 2000) 
397			} else { 
398				Liferay.Util.openToast({ 
399            message: "Erro ao excluir infraestrutura", 
400            type: "danger", 
401            title: "", 
402            toastProps: { 
403                autoClose: 5000 
404
405        }) 
406
407		}); 
408
409	 
410 
411	function encodeInfraImageAsURL${JournalArticleID}(element) { 
412  	let file = element.files[0]; 
413    let reader = new FileReader(); 
414    reader.onloadend = () => { 
415			if(reader.result)   { 
416				if(!validImageSize(reader.result)) return; 
417				try { 
418					Array.from(document.getElementsByClassName("imagemCarregadaInfra${JournalArticleID}")).forEach( el => el.style.backgroundImage = 'url(' + reader.result + ')' ) 
419					const base64_input = document.getElementById("inputInfraBase64${JournalArticleID}") 
420					base64_input.value = reader.result 
421					 
422					 
423					const removeImageButton = document.getElementById("removerImagemInfra${JournalArticleID}") 
424					removeImageButton.classList.remove("d-none") 
425				} catch (error) { 
426					console.error(error) 
427
428
429
430		reader.readAsDataURL(file); 
431
432	 
433	function removeImageInfra${JournalArticleID}() { 
434	try { 
435		const file_input = document.getElementById("inputCarregarImagemInfra${JournalArticleID}") 
436Array.from(document.getElementsByClassName("imagemCarregadaInfra${JournalArticleID}")).forEach( el => el.style.backgroundImage = "" ) 
437		const base64_input = document.getElementById("inputInfraBase64${JournalArticleID}") 
438		file_input.value = null 
439		base64_input.value = "" 
440		console.log("foi") 
441		const removeImageButton = document.getElementById("removerImagemInfra${JournalArticleID}") 
442		removeImageButton.classList.add("d-none") 
443	} catch (error) { 
444		console.error(error) 
445
446
447 
448 
449document.getElementById("removerImagemInfra${JournalArticleID}").addEventListener("click", removeImageInfra${JournalArticleID}); 
450	 
451</script> 
452<style> 
453 
454#upload-notice-container { 
455  background: var(--cinza-claro, #e8ecef); 
456  padding: 24px 24px 16px; 
457  width: 100%; 
458  position: relative; 
459  margin-bottom: 40px; 
460
461 
462#upload-notice-container #close-btn-upload-container { 
463  position: absolute; 
464  top: 0px; 
465  right: 2px; 
466  height: 24px; 
467  margin: 8px; 
468  cursor: pointer; 
469
470 
471#upload-notice-container #close-btn-upload-container i { 
472  font-size: 22px; 
473  color: #5B5C61; 
474
475 
476#upload-notice-container .upload-notice-title { 
477  font-size: 20px; 
478  /* font-family: Roboto; */ 
479  font-weight: 700; 
480  line-height: 150%; 
481  color: var(--texto, #5b5c61); 
482  display: flex; 
483  align-items: center; 
484  margin-bottom: 12px; 
485
486 
487#upload-notice-container .upload-notice-title i { 
488  color: #ffc806; 
489  margin-right: 12px; 
490  font-size: 24px; 
491
492 
493#upload-notice-container p { 
494  color: var(--texto, #5b5c61); 
495  font-size: 16px; 
496  /* font-family: Roboto; */ 
497  line-height: 150%; 
498  margin-bottom: 8px; 
499
500 
501#upload-notice-container p > span { 
502  font-weight: 700; 
503
504 
505 
506.imagemCarregadaInfra${JournalArticleID} { 
507	background-size: contain; 
508	background-position: center; 
509	background-repeat: no-repeat; 
510	height: 100px; 
511	width: 100px; 
512
513 
514#removerImagemInfra${JournalArticleID} { 
515	background: none; 
516	border: none; 
517	outline: none; 
518	color: #5B5C61; 
519	font-size: 16px; 
520	font-weight: 900; 
521	line-height: 24px; 
522	letter-spacing: 0em; 
523	width: fit-content; 
524	margin-left: 16px; 
525
526</style> 
527				</#list> 
528			</#if> 
529    </div> 
530</div> 
531 
532 
533<style> 
534 
535.bioec_infra_img { 
536    width: 140px; 
537    height: 140px; 
538    overflow: hidden; 
539		background-size: contain; 
540    background-position: center; 
541    background-repeat: no-repeat; 
542
543 
544.bioec_infra_img_placeholder { 
545    width: 140px; 
546    height: 140px; 
547    background-color: #E8ECEF; 
548    display: flex; 
549    flex-direction: column; 
550    align-items: center; 
551    justify-content: center; 
552    font-size: 14px; 
553    color: #5B5C61; 
554
555 
556.bioec_infra_img_placeholder i { 
557    font-size: 44px; 
558
559 
560 
561.bioec-profile-estrutura-main{ 
562	display: flex; 
563	gap: 40px; 
564	flex-direction: column; 
565	padding-bottom: 20px; 
566
567 
568.bioec-profile-estrutura-main h5, .bioec-profile-estrutura-main p, .bioec-profile-estrutura-main a{ 
569	color: #5B5C61; 
570
571 
572.bioec-profile-estrutura-main h5{ 
573	font-weight: 700; 
574
575.bioec-profile-estrutura-main h5, .bioec-profile-estrutura-main p{ 
576	 
577	font-size: 16px; 
578 
579
580 
581.bioec-profile-estrutura-main #estruturas-lista .estruturas-lista-item { 
582	border: 1px #BEBEBE solid;  
583	padding: 24px; 
584	display: grid; 
585	grid-template-columns: 24px 12px 138px 46px 1fr 12px 15px; 
586	grid-template-areas: "ck . pic . desc . arrw" 
587		". . clps clps clps clps clps"; 
588	margin-bottom: 40px; 
589
590 
591.bioec-profile-estrutura-main .lista-checkmark { grid-area: ck; } 
592.bioec-profile-estrutura-main .lista-pic { grid-area: pic; display: flex; justify-content: center;} 
593.bioec-profile-estrutura-main .lista-arrow { grid-area: arrw; } 
594.bioec-profile-estrutura-main .lista-collapse { grid-area: clps; } 
595 
596.bioec-profile-estrutura-main .lista-desc {  
597	grid-area: desc;  
598	display: flex;  
599	flex-direction: column; 
600	justify-content: center; 
601	 
602
603 
604.bioec-profile-estrutura-main .lista-desc h5{ 
605	margin-bottom: 12px; 
606}  
607 
608.bioec-profile-estrutura-main .lista-desc p{  
609	margin: 0; 
610
611 
612.bioec-profile-estrutura-main .lista-func {  
613	 
614	margin: 24px 0; 
615
616 
617.bioec-profile-estrutura-main .lista-footnote {  
618 
619	display: flex; 
620	justify-content: space-between; 
621	border-top: 1px solid #E8ECEF; 
622	padding-top: 12px; 
623	font-size: 14px; 
624	font-weight: 300; 
625	gap: 15px; 
626	color: #5B5C61; 
627 
628
629 
630.pagination-items-per-page.active > a,  
631.pagination-items-per-page.active > button,  
632.pagination-items-per-page.show > a,  
633.pagination-items-per-page.show > button, 
634.page-item.active .page-link,  
635.page-item.show .page-link{ 
636    border-color: #4ECD66; 
637    background-color: #4ECD66; 
638
639 
640.pagination-results, 
641.pagination-items-per-page > a,  
642.pagination-items-per-page > button, 
643.pagination-items-per-page > a:hover,  
644.pagination-items-per-page > button:hover, 
645.page-link{ 
646	color: #4ebe66; 
647
648 
649.estruturas-port{ 
650	border: 1px #BEBEBE solid;  
651	padding: 24px; 
652	display: flex; 
653	flex-direction: column; 
654	align-items: center; 
655	gap: 24px; 
656
657 
658.estruturas-port p{ 
659		text-align: center;	 
660    max-width: 760px; 
661    font-size: 18px; 
662    color: #5B5C61; 
663
664 
665.estruturas-port div{ 
666display: flex; 
667	justify-content: space-between; 
668	width: min(558px, 100%); 
669
670 
671.lista-arrow button{ 
672	padding: 0; 
673
674 
675.lista-arrow button:focus{ 
676	box-shadow: none; 
677
678 
679@media(max-width: 1100px){ 
680	.estruturas-port div{ 
681	flex-direction: column; 
682		gap: 30px; 
683
684 
685
686 
687@media(max-width: 450px){ 
688	.bioec-profile-estrutura-main .lista-footnote{ 
689		flex-direction: column; 
690		gap: 10px; 
691		align-items: flex-end; 
692		text-align: right; 
693
694
695 
696.bioec-profile-estrutura-main .lista-footnote .buttonsActions { 
697  display: flex; 
698  gap: 17px; 
699
700 
701@media(max-width:  768px){ 
702	.bioec-profile-estrutura-main #estruturas-lista .estruturas-lista-item{ 
703		grid-template-columns: 24px 1fr 10px 1fr 15px; 
704		grid-template-areas: "ck desc desc desc arrw" 
705													". pic pic pic ." 
706													"clps clps clps clps clps"; 
707 
708
709 
710	.bioec-profile-estrutura-main .lista-desc{ 
711	align-items: center; 
712
713 
714	.lista-pic{ 
715	display: flex; 
716	justify-content: center; 
717
718	 
719	.bioec-profile-estrutura-main .lista-footnote{ 
720		flex-direction: column; 
721    align-items: center; 
722
723	 
724	.bioec-profile-estrutura-main .lista-footnote > div { 
725    text-align: center; 
726
727   
728  .bioec-profile-estrutura-main .lista-footnote .barra-pipe { 
729    display: none; 
730
731  .bioec-profile-estrutura-main .lista-footnote .lista-author { 
732    display: flex; 
733    gap: 4px; 
734    justify-content: center; 
735
736  .bioec-profile-estrutura-main .lista-footnote .buttonsActions { 
737    width: 100%; 
738    justify-content: space-between; 
739
740
741</style> 
Demandas drop zone
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> autorId  [in template "34764#34807#41127" at line 71, column 46]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #if autorId != "" && autorId??  [in template "34764#34807#41127" at line 71, column 41]
----
1<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
2<#assign UserLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")> 
3<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 
4<#assign  
5mbMessageLocalService = serviceLocator.findService("com.liferay.message.boards.service.MBMessageLocalService") 
6	tagsLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService") 
7	 OrganizationLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.OrganizationLocalService") 
8
9 
10 
11<div class="bioec-profile-demanda-main"> 
12	<div id="demanda-lista-container" class="d-flex flex-column"> 
13			<#if entries?has_content> 
14				<#list entries as entry> 
15					<#assign journalArticle = JournalArticleLocalService.getLatestArticle(entry.getClassPK()) > 
16					<#assign JournalArticleID = journalArticle.getId()> 
17					<#assign JournalArticleFrontId = journalArticle.getArticleId()> 
18					<#assign articleXml = journalArticle.getDocument().getRootElement()  
19									 userIsAdmin = false 
20									 orgId = "" 
21
22					 
23					<#assign nomeParaContato = ""> 
24					 
25					<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text77253735']")??> 
26					 
27					<#assign nomeParaContato = articleXml.selectSingleNode("dynamic-element[@field-reference='Text77253735']").getStringValue()!"" 
28								 nomeParaContato = nomeParaContato?replace("\n\t\t", "") 
29								 nomeParaContato = nomeParaContato?replace("\n\t", "")					 
30
31					 
32					</#if> 
33					<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text94974146']")??> 
34					<#assign telefone = articleXml.selectSingleNode("dynamic-element[@field-reference='Text94974146']").getStringValue()!"" 
35								 telefone = telefone?replace("\n\t\t", "") 
36								 telefone = telefone?replace("\n\t", "")						 
37
38					</#if> 
39						 
40						<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text68569631']")??> 
41				<#assign email = articleXml.selectSingleNode("dynamic-element[@field-reference='Text68569631']").getStringValue()!"" 
42								 email = email?replace("\n\t\t", "") 
43								 email = email?replace("\n\t", "")					 
44				>  
45					</#if> 
46							 
47				<#if articleXml.selectSingleNode("dynamic-element[@field-reference='CopyOfCopyOfText18267936']")??> 
48					<#assign desc = articleXml.selectSingleNode("dynamic-element[@field-reference='CopyOfCopyOfText18267936']").getStringValue()!"" 
49								 desc = desc?replace("\n\t\t", "") 
50								 desc = desc?replace("\n\t", "")		 
51
52						</#if> 
53					<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text97565506']")??> 
54				<#assign imagem = articleXml.selectSingleNode("dynamic-element[@field-reference='Text97565506']").getStringValue()!""				 
55							imagem = imagem?replace("(\r\n)+", "",'r') 
56							imagem = imagem?replace(" ", "",'r') 
57
58						</#if> 
59						<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text99746569']")??> 
60					<#assign 
61						autorId = articleXml.selectSingleNode("dynamic-element[@field-reference='Text99746569']").getStringValue()!"" 
62						autorId = autorId?replace("\n\t\t", "") 
63						autorId = autorId?replace("\n\t", "")		 
64						autorArticleId = "" 
65
66						</#if> 
67						<#assign 
68						commentsCount = mbMessageLocalService.getDiscussionMessagesCount(entry.getClassName(), entry.getClassPK(), 0)!"0" 
69
70				 
71					<#if autorId != "" && autorId??> 
72					<#assign 
73						autor = UserLocalService.fetchUser(autorId?number)!"" 
74						autorArticleId = autor.getExpandoBridge().getAttribute("journal-article")!"0"  
75				/> 
76				<#if autor != ""> 
77				<#assign autor = autor.getFullName()!""> 
78				<#else> 
79				<#assign autor = "Anônimo" > 
80				</#if> 
81				<#else>  
82				<#assign autor = "Anônimo" > 
83		</#if>		 
84				<#assign 	categorias = AssetCategoryLocalService.getCategoryNames(entry.getClassName(), entry.getClassPK())!"" > 
85				<#assign urlWC = ""> 
86				<#if autorArticleId != "0" && autorArticleId != "" && autor != "Anônimo"> 
87					<#assign autorArticle = JournalArticleLocalService.getLatestArticle(themeDisplay.getLayout().getGroupId(), autorArticleId?string) > 
88					<#assign urlWC = autorArticle.getUrlTitle()!""> 
89				</#if> 
90								 
91				<#assign tags = tagsLocalService.getTagNames("com.liferay.journal.model.JournalArticle", journalArticle.getResourcePrimKey()?number )  
92								 tagName = tags[0]!"" 
93								 orgOrUser = "" 
94
95				  
96				 <#if tagName?contains("organization") && tagName != "" > 
97					 <#assign orgOrUser = "org"> 
98					<#else> 
99					 <#assign orgOrUser = "user"> 
100				 </#if> 
101				  
102				<#if orgOrUser == "org" > 
103 
104					<#assign 
105					orgId = tagName?keep_after("organization-")				 
106					organization =  OrganizationLocalService.fetchOrganization(orgId?number)!"" 
107
108			 
109					 
110					<#if organization != "" && autor != "Anônimo"> 
111					 
112						<#assign	orgArticleId = organization.getExpandoBridge().getAttribute("journal-article") 
113							orgJournalArticle = JournalArticleLocalService.getArticle(themeDisplay.getLayout().getGroupId(),orgArticleId?c)  
114							urlWC = orgJournalArticle.getUrlTitle()!"" 
115							autor = organization.getName()!"" 
116
117 
118					</#if> 
119				</#if> 
120				 
121				<#if themeDisplay.isSignedIn() > 
122							<#if tagName?contains("organization-")> 
123								<#assign userIsAdmin = OrganizationLocalService.hasUserOrganization(themeDisplay.getUserId(), orgId?number)> 
124								<#else> 
125								<#if autorId?number == themeDisplay.getUserId()> 
126								<script>console.log("oi");</script> 
127									<#assign userIsAdmin = true> 
128								</#if> 
129							</#if> 
130							 
131						 
132					</#if> 
133							 
134					 
135 
136				<div class="demanda-lista-item"> 
137				 
138				<div class="lista-checkmark"> 
139								<#if categorias?seq_contains("aprovado") > <i title="Aprovado" style="color: #4ECD66" class="fa-solid fa-circle-check"></i> </#if> 
140								<#if categorias?seq_contains("pendente") >	<i title="Em análise" style="color: #D90000"class="fa-solid fa-spinner"></i> </#if> 
141								<#if categorias?seq_contains("recusado") >	<i title="Recusado" style="color: #D90000"class="fa-solid fa-exclamation-circle"></i> </#if> 
142				</div> 
143	 
144 
145					<div class="lista-titulo"> 
146						<h5>${entry.getHighlightedTitle()}</h5> 
147					</div> 
148 
149					<div class="lista-arrow"> 
150						<button style="padding: 0;" class="btn" type="button" data-toggle="collapse" data-target="#collapseID${entry.getClassPK()}" aria-expanded="false" aria-controls="collapseID${entry.getClassPK()}"> 
151							<i class="fa-solid fa-chevron-down"></i> 
152						</button> 
153					</div> 
154 
155					<div class="lista-desc"> 
156						<p>${desc}</p> 
157					</div> 
158 
159					<div class="lista-collapse collapse" id="collapseID${entry.getClassPK()}"> 
160					<#if nomeParaContato != "" || telefone != "" || email != "" || imagem?trim !=""> 
161					<div class="lista-details"> 
162								<div class="lista-pic"> 
163									<i class="fa-solid fa-image-slash"></i> 
164									<#if imagem?trim !="" > 
165											<img class="bioec_demanda_img" src="${imagem}"> 
166										<#else> 
167											<div class="bioec_demanda_img_placeholder"> 
168												<i class="fa-solid fa-image"></i> 
169													sem imagem 
170											</div> 
171									</#if> 
172								</div> 
173							<#if nomeParaContato != "" || telefone != "" || email != "" > 
174							<div class="lista-contato"> 
175								<p>Contato</p> 
176								<p class="lista-author">${nomeParaContato}</p> 
177								<p class="lista-phone">${telefone}</p> 
178								<p class="lista-email">${email}</p> 
179							</div> 
180							</#if> 
181						</div> 
182						</#if> 
183						 
184							<#if categorias?seq_contains("recusado") > 
185							<div style="border-top: 1px solid #E8ECEF; font-weight: bold; padding-top: 24px;"> 
186							<p>Conteúdo Em Análise Pelo Cetiqt:</p> 
187							<p>Conteúdo recusado pelo CETIQT por violar as políticas de privacidade.</p> 
188							</div> 
189							</#if> 
190						<div class="lista-footnote"> 
191								<div> 
192									<span class="lista-date">${journalArticle.getDisplayDate()?string('dd/MM/yyyy')}</span> | <span class="lista-commentNumber">${commentsCount} cometários</span> <span class="barra-pipe"> | </span> <span class="lista-author">Publicado por <a <#if urlWC != ''>href="/w/${urlWC}</#if>">${autor}</a></span> 
193								</div> 
194								<#if userIsAdmin> 
195									<div class="buttonsActions"> 
196									<div style="cursor: pointer;font-size: 16px;" data-toggle="modal" data-target="#modalDemanda${JournalArticleID}"> 
197											<i class="fa-solid fa-edit"></i> 
198										</div> 
199										<div style="cursor: pointer;font-size: 16px;" data-toggle="modal" data-target="#modal-demanda-${entry.getClassPK()}"> 
200												<i class="fa-solid fa-trash-can"></i> 
201										</div> 
202										 
203									</div> 
204								</#if>		 
205						</div> 
206					</div> 
207				</div> 
208				 
209					<#if userIsAdmin> 
210						<div style="display: none;" id="modal-demanda-${entry.getClassPK()}" class="modal fade" role="dialog"> 
211							<div class="modal-dialog modal-lg" role="document"> 
212								<div class="modal-content"> 
213									<div class="modal-header" > 
214										<h4 class="m-0">Remover Demanda</h4> 
215										<button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
216											<span aria-hidden="true"> 
217												<i class="fa-solid fa-close"></i> 
218											</span> 
219										</button>    
220									</div> 
221									<div class="modal-body"> 
222										<h5>Você tem certeza que deseja remover essa demanda?</h5> 
223										<div> 
224											Ao clicar em continuar, a demanda será removida do seu perfil. 
225										</div> 
226									</div> 
227									<div class="modal-footer justify-content-end"> 
228											<button class="bioec_secondary_button" data-dismiss="modal">CANCELAR</button> 
229											<button class="bioec_primary_button" type="button" onclick="excluirDemanda(${JournalArticleFrontId}, ${orgId})">CONTINUAR</button>  
230									</div> 
231								</div> 
232							</div>			 
233						</div> 
234						 
235						<#-- modal edição --> 
236						 
237						 
238						<div style="display: none;" id="modalDemanda${JournalArticleID}" class="modal fade bioec-profile-demanda-modal modalDemanda" role="dialog"> 
239									<div class="modal-dialog modal-lg" role="document"> 
240										<form id="formularioDemanda${JournalArticleID}" class="form-group modal-content formularioDemanda"> 
241												<div id="demandaModal-l1${JournalArticleID}" class="modal-header demandaModal-l1"> 
242													<h5>Adicionar demanda</h5> 
243														<button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
244															 <span aria-hidden="true">&times;</span> 
245														</button> 
246												</div> 
247												<div id="demandaModal-l2${JournalArticleID}" class="modal-body demandaModal-l2"> 
248														<div id="demandaTitle${JournalArticleID}" class="demandaTitle"> 
249																<label class="ReqLabel" for="demandaInputTitle${JournalArticleID}">Título da demanda</label> 
250																<input id="demandaInputTitle${JournalArticleID}" value="${entry.getHighlightedTitle()}" type="text" placeholder="Inserir um título" required> 
251														</div> 
252														<div id="demandaName${JournalArticleID}" class="demandaName"> 
253																<label class="" for="demandaInputName${JournalArticleID}">Nome para contato</label> 
254																<input value="${nomeParaContato}" id="demandaInputName${JournalArticleID}" placeholder="Inserir nome" type="text"> 
255														</div> 
256														<div id="demandaTelephone${JournalArticleID}" class="demandaTelephone"> 
257																<label class="" for="demandaInputPhone${JournalArticleID}">Telefone para contato</label> 
258																<input value="${telefone}" id="demandaInputPhone${JournalArticleID}" name="demandaInputPhone" type="text" placeholder ='(__)_____-_____' minlength="14"  /> 
259														</div> 
260														<div id="demandaEmail${JournalArticleID}" class="demandaEmail"> 
261																<label class="" for="demandaInputEmail${JournalArticleID}">E-mail para contato</label> 
262																<input value="${email}" id="demandaInputEmail${JournalArticleID}" placeholder="Inserir e-mail" type="text"> 
263														</div> 
264														<div id="demandaDesc${JournalArticleID}" class="demandaDesc"> 
265																<label class="ReqLabel" for="demandaInputDesc${JournalArticleID}">Descrição</label> 
266																<textarea id="demandaInputDesc${JournalArticleID}" style="max-width: 100%;font-size: 16px;height: 80px;border: 1px solid #BEBEBE;" required>${desc}</textarea> 
267														</div> 
268														<div id="demandaImg${JournalArticleID}" class="demandaImg"> 
269																<div style="display: flex; flex-direction: column; gap: 8px"> 
270																		<label>Imagem da demanda (Máx. 10 MB)</label> 
271																		<label class="btn carregarImagem" id="carregarImagem${JournalArticleID}" for="inputCarregarImagemDemanda${JournalArticleID}" style="font-size: 16px; cursor: pointer;">CARREGAR IMAGEM</label> 
272																		<input class="inputCarregarImagemDemanda" id="inputCarregarImagemDemanda${JournalArticleID}" type="file" accept="image/*" onchange="encodeDemandaImageAsURL${JournalArticleID}(this)"> 
273																		<input class="d-none" id="inputDemandaBase64${JournalArticleID}" value="${imagem}" /> 
274																		<div class="imagemCarregadaDemanda imagemCarregadaDemanda${JournalArticleID} d-md-none d-block" style="background-image: url(${imagem})"></div> 
275																		<button type="button" id="removerImagemDemanda${JournalArticleID}" class="<#if imagem == "" || imagem?? == false> d-none </#if> removerImagemDemanda" > 
276																			<i class="fa fa-trash"></i> Remover imagem	 
277																		</button> 
278																	</div> 
279																	<div class="imagemCarregadaDemanda imagemCarregadaDemanda${JournalArticleID} d-md-block d-none" style="background-image: url(${imagem})"></div> 
280														</div> 
281												</div> 
282													<div class="TextImportant"> 
283														<p> 
284															Importante: O conteúdo enviado passará por um processo interno de aprovação. Só então o conteúdo adicionado aparecerá no portal. 
285														</p> 
286													</div> 
287 
288												<div id="demandaModal-l3${JournalArticleID}" class="modal-footer demandaModal-l3"> 
289														<button  class="btn button-empty" onclick="" id="demandas-saveAndClose${JournalArticleID}">SALVAR E FECHAR</button> 
290												</div> 
291										</form> 
292									</div> 
293								</div> 
294						 
295						</#if> 
296						<#--  
297						 
298						 
299						 
300						 
301						<div style="display: none;" id="modalInfra${JournalArticleID}" class="modal fade bioec-profile-infra-modal" role="dialog"> 
302							<div  class="modal-dialog modal-lg" role="document"> 
303 
304								<form class="form-group modal-content" id="formularioInfraestrutura${JournalArticleID}"> 
305									<div id="infraModal-l1-${JournalArticleID}" class="modal-header infraModal-l1" > 
306										<h5>Adicionar Infraestrutura</h5> 
307										<button id="fecharModal${JournalArticleID}" type="button" class="close" data-dismiss="modal" aria-label="Close"> 
308											<span aria-hidden="true">&times;</span> 
309										</button>    
310									</div> 
311									<div id="infraModal-l2-${JournalArticleID}" class="modal-body infraModal-l2"> 
312										<div id="infraName${JournalArticleID}" class="infraName"> 
313											<label class="ReqLabel" for="inputInfraName${JournalArticleID}">Nome da infraestrutura</label> 
314											<input type="text" id="inputInfraName${JournalArticleID}" value="${entry.getHighlightedTitle()}" placeholder="Nome da infraestrutura" required> 
315										</div> 
316									<div id="infraModel${JournalArticleID}" class="infraModel"> 
317										<label class="ReqLabel" for="inputInfraModel${JournalArticleID}">Modelo</label> 
318										<input type="text" id="inputInfraModel${JournalArticleID}" value="${modelo}" placeholder="Modelo" required> 
319									</div> 
320									<div id="infraBrand${JournalArticleID}" class="infraBrand"> 
321										<label class="ReqLabel" for="inputInfraBrand${JournalArticleID}">Marca</label> 
322										<input type="text" id="inputInfraBrand${JournalArticleID}" value="${marca}" placeholder="Marca" required> 
323									</div> 
324 
325									<div id="infraImg${JournalArticleID}" class="infraImg"> 
326										<div style="display: flex; flex-direction: column; gap: 8px"> 
327											<label>Imagem da infraestrutura (Máx. 10 MB)</label> 
328											<label class="bioec_secondary_button" id="carregarImagem${JournalArticleID}" for="inputCarregarImagemInfra${JournalArticleID}" style="font-size: 16px;color: #333244;align-self:start;"> 
329												CARREGAR IMAGEM 
330											</label> 
331											<input id="inputCarregarImagemInfra${JournalArticleID}" class="inputCarregarImagemInfra" type="file" accept="image/*" onchange="encodeInfraImageAsURL${JournalArticleID}(this)"> 
332											<input class="d-none" id="inputInfraBase64${JournalArticleID}" /> 
333											<div class="imagemCarregadaInfra${JournalArticleID} d-md-none d-block"></div> 
334											<button type="button" id="removerImagemInfra${JournalArticleID}" class="d-none removerImagemInfra" > 
335												<i class="fa fa-trash"></i> Remover imagem	 
336											</button> 
337										</div> 
338										<div class="imagemCarregadaInfra${JournalArticleID} d-md-block d-none"></div> 
339									</div> 
340 
341									<div id="infraFunction${JournalArticleID}" class="infraFunction"> 
342										<label class="ReqLabel" for="inputInfraFunction${JournalArticleID}">Função</label> 
343										<input type="text" id="inputInfraFunction${JournalArticleID}" class="inputInfraFunction" value="${funcao}" placeholder="Função" required> 
344									</div> 
345								</div> 
346								<div class="TextImportant"> 
347									<p> 
348									Importante: O conteúdo enviado passará por um processo interno de aprovação. Só então o conteúdo adicionado aparecerá no portal. 
349									</p> 
350								</div> 
351								<div id="infraModal-l3-${JournalArticleID}" class="modal-footer infraModal-l3"> 
352											<button class="bioec_secondary_button" id="demandas-saveAndClose${JournalArticleID}" onclick="">SALVAR E FECHAR</button> 
353								</div> 
354							</form> 
355 
356							</div>			 
357						 
358						 
359						--> 
360						 
361					 
362 
363						<script> 
364						<#if userIsAdmin> 
365						function excluirDemanda(wcId, orgId) { 
366								Liferay.Util.openToast({message: "Enviando requisição",type: "info",title: ""}); 
367								fetch(Liferay.ThemeDisplay.getPortalURL() + "/o/demanda/" + wcId, { 
368									method: 'DELETE', 
369									"headers": { 
370										"x-csrf-token": Liferay.authToken, 
371										"Content-Type": "application/json" 
372
373								}) 
374								.then(res => { 
375									if(res.status == 200) { 
376										Liferay.Util.openToast({ 
377												message: "Infraestrutura excluida com sucesso", 
378												type: "success", 
379												title: "", 
380												toastProps: { 
381														autoClose: 5000 
382
383										}) 
384										setTimeout(function(){ location.reload(); }, 2000) 
385									} else { 
386										Liferay.Util.openToast({ 
387												message: "Erro ao excluir infraestrutura", 
388												type: "danger", 
389												title: "", 
390												toastProps: { 
391														autoClose: 5000 
392
393										}) 
394
395								}); 
396
397							 
398						 
399							 
400							 
401	function validImageSize(base64="") { 
402		const decoded = atob(base64.substring(base64.indexOf(',') + 1)); 
403		const sizeMB = decoded.length / 1e+6; 
404		console.log("MB: " + decoded.length / 1e+6); 
405		if(sizeMB > 10) { 
406			Liferay.Util.openToast({ 
407				message: "O tamanho da imagem não deve ultrapassar 10 MB.", 
408				type: "danger", 
409				title: "", 
410				toastProps: { 
411					autoClose: 5000 
412
413			}) 
414			return false 
415
416		return true 
417
418 
419	function encodeDemandaImageAsURL${JournalArticleID}(element) { 
420  	let file = element.files[0]; 
421    let reader = new FileReader(); 
422    reader.onloadend = () => { 
423			if(reader.result) { 
424				if(!validImageSize(reader.result)) return; 
425				try { 
426					const base64_input = document.getElementById("inputDemandaBase64${JournalArticleID}") 
427					base64_input.value = reader.result 
428					Array.from(document.getElementsByClassName("imagemCarregadaDemanda${JournalArticleID}")).forEach( el => el.style.backgroundImage = 'url(' + reader.result + ')' ) 
429					 
430					const removeImageButton = document.getElementById("removerImagemDemanda${JournalArticleID}") 
431					removeImageButton.classList.remove("d-none") 
432				} catch (error) { 
433					console.error(error) 
434
435
436
437		reader.readAsDataURL(file); 
438
439	 
440	function removeImageDemanda${JournalArticleID}() { 
441	try { 
442		const file_input = document.getElementById("inputCarregarImagemDemanda${JournalArticleID}") 
443		Array.from(document.getElementsByClassName("imagemCarregadaDemanda${JournalArticleID}")).forEach( el => el.style.backgroundImage = "" ) 
444		const base64_input = document.getElementById("inputDemandaBase64${JournalArticleID}") 
445		file_input.value = null 
446		base64_input.value = "" 
447		 
448		const removeImageButton = document.getElementById("removerImagemDemanda${JournalArticleID}") 
449		removeImageButton.classList.add("d-none") 
450	} catch (error) { 
451		console.error(error) 
452
453
454 
455 
456document.getElementById("removerImagemDemanda${JournalArticleID}").addEventListener("click", removeImageDemanda${JournalArticleID}); 
457 
458<#-- Rest da edição de organização --> 
459 
460<#if orgOrUser == "org"> 
461document.querySelector('#formularioDemanda${JournalArticleID}').addEventListener('submit', event => { 
462	event.preventDefault(); 
463	adicionarDemanda${JournalArticleID}();  
464}); 
465 
466function adicionarDemanda${JournalArticleID}() {		 
467		Liferay.Util.openToast({message: "Enviando requisição",type: "info",title: ""}); 
468		$("#demandas-saveAndClose${JournalArticleID}").prop("disabled",true); 
469	 
470		 
471		 
472		const demandaData = { 
473			titulo: document.getElementById("demandaInputTitle${JournalArticleID}").value, 
474			nomeContato: document.getElementById("demandaInputName${JournalArticleID}").value, 
475			telefoneContato: document.getElementById("demandaInputPhone${JournalArticleID}").value, 
476			emailContato: document.getElementById("demandaInputEmail${JournalArticleID}").value, 
477			descricao: document.getElementById("demandaInputDesc${JournalArticleID}").value, 
478			imagem: document.getElementById("inputDemandaBase64${JournalArticleID}").value, 
479
480		 
481		console.log(demandaData); 
482	 
483			fetch(Liferay.ThemeDisplay.getPortalURL() + "/o/demanda/${JournalArticleFrontId}", { 
484				method: 'PUT', 
485				"headers": { 
486					"x-csrf-token": Liferay.authToken, 
487					"Content-Type": "application/json" 
488				}, 
489				body: JSON.stringify(demandaData) 
490			}) 
491			.then(res => { 
492				if(res.status == 200) { 
493					Liferay.Util.openToast({ 
494							message: "Demanda editada com sucesso. Após a submissão, será iniciado o processo interno de aprovação do conteúdo enviado. Só então o conteúdo submetido aparecerá no portal.", 
495							type: "success", 
496							title: "", 
497							toastProps: { 
498									autoClose: 5000 
499
500					}) 
501					 setTimeout(function(){ location.reload(); }, 2000); 
502				} else { 
503				 $("#demandas-saveAndClose${JournalArticleID}").prop("disabled",false); 
504					Liferay.Util.openToast({ 
505							message: "Erro ao editada demanda", 
506							type: "danger", 
507							title: "", 
508							toastProps: { 
509									autoClose: 5000 
510
511					}) 
512
513			}) 
514		 
515
516</#if> 
517 
518<#-- Rest da edição de pessoa fisica --> 
519							 
520							 
521				<#if orgOrUser == "user"> 
522				 
523					document.querySelector('#formularioDemanda${JournalArticleID}').addEventListener('submit', event => { 
524					event.preventDefault(); 
525					adicionarDemanda${JournalArticleID}();  
526				});			 
527						 
528						function adicionarDemanda${JournalArticleID}() { 
529							Liferay.Util.openToast({message: "Enviando requisição",type: "info",title: ""}); 
530							$("#demandas-saveAndClose${JournalArticleID}").prop("disabled",true); 
531	 
532							const demandaData = { 
533								titulo: document.getElementById("demandaInputTitle${JournalArticleID}").value, 
534								nomeContato: document.getElementById("demandaInputName${JournalArticleID}").value, 
535								telefoneContato: document.getElementById("demandaInputPhone${JournalArticleID}").value, 
536								emailContato: document.getElementById("demandaInputEmail${JournalArticleID}").value, 
537								descricao: document.getElementById("demandaInputDesc${JournalArticleID}").value, 
538								imagem: document.getElementById("inputDemandaBase64${JournalArticleID}").value, 
539
540							 
541							console.log(demandaData); 
542 
543							fetch(Liferay.ThemeDisplay.getPortalURL() + "/o/demanda/${JournalArticleFrontId}", { 
544											method: 'PUT', 
545											"headers": { 
546													"x-csrf-token": Liferay.authToken, 
547													"Content-Type": "application/json" 
548											}, 
549											body: JSON.stringify(demandaData) 
550									}) 
551									.then( res => { 
552								if(res.status == 200) { 
553									Liferay.Util.openToast({ 
554										message: "Demanda editada com sucesso. Após a submissão, será iniciado o processo interno de aprovação do conteúdo enviado. Só então o conteúdo submetido aparecerá no portal.", 
555										type: "success", 
556										title: "", 
557										toastProps: { 
558											autoClose: 5000 
559
560									}) 
561									 setTimeout(function(){ location.reload(); }, 2000); 
562								} else { 
563								 $("#demandas-saveAndClose${JournalArticleID}").prop("disabled",false); 
564									Liferay.Util.openToast({ 
565										message: "Erro ao editar Demanda", 
566										type: "danger", 
567										title: "", 
568										toastProps: { 
569											autoClose: 5000 
570
571									}) 
572
573							}); 
574							 
575					}; 
576						 
577						 
578				</#if> 
579							 
580							 
581								</#if> 
582						</script> 
583					 
584				 
585				 
586				 
587			</#list> 
588		</#if> 
589	</div> 
590</div> 
591 
592<style> 
593.bioec_demanda_img { 
594    overflow: hidden; 
595		background-size: contain; 
596    background-position: center; 
597    background-repeat: no-repeat; 
598
599 
600.bioec_demanda_img_placeholder { 
601    width: 140px; 
602    height: 140px; 
603    background-color: #E8ECEF; 
604    display: flex; 
605    flex-direction: column; 
606    align-items: center; 
607    justify-content: center; 
608    font-size: 14px; 
609    color: #5B5C61; 
610
611 
612.bioec_demanda_img_placeholder i { 
613    font-size: 44px; 
614
615 
616 
617.pagination-items-per-page.active > a,  
618.pagination-items-per-page.active > button,  
619.pagination-items-per-page.show > a,  
620.pagination-items-per-page.show > button, 
621.page-item.active .page-link,  
622.page-item.show .page-link{ 
623    border-color: #4ECD66; 
624    background-color: #4ECD66; 
625
626 
627.pagination-results, 
628.pagination-items-per-page > a,  
629.pagination-items-per-page > button, 
630.pagination-items-per-page > a:hover,  
631.pagination-items-per-page > button:hover, 
632.page-link{ 
633	color: #4ebe66; 
634
635 
636.bioec-profile-demanda-main{ 
637	display: flex; 
638	gap: 40px; 
639	flex-direction: column; 
640	padding-bottom: 20px; 
641
642.bioec-profile-demanda-main h5{ 
643	font-weight: 700; 
644
645.bioec-profile-demanda-main h5, .bioec-profile-demanda-main p{ 
646	color: #5B5C61; 
647	margin-bottom: 0px; 
648	font-size: 16px; 
649 
650
651 
652.bioec-profile-demanda-main #demanda-lista-container>div{ 
653	border: 1px #BEBEBE solid;  
654	padding: 24px 24px 0 24px; 
655	margin-bottom: 40px; 
656	display: grid; 
657	grid-row-gap: 24px; 
658	grid-template-columns: 24px 12px 1fr 15px; 
659	grid-template-areas:  
660		"ck . tit arrw" 
661		"desc desc desc desc" 
662		"clps clps clps clps"; 
663
664 
665.bioec-profile-demanda-main .lista-checkmark { grid-area: ck; display: flex; } 
666.bioec-profile-demanda-main .lista-checkmark i { font-size: 24px; } 
667.bioec-profile-demanda-main .lista-pic { grid-area: pic; display: flex; justify-content: center;} 
668.bioec-profile-demanda-main .lista-arrow { grid-area: arrw; } 
669 
670.bioec-profile-demanda-main .lista-titulo {  
671	grid-area: tit;  
672	display: flex;  
673	flex-direction: column; 
674	justify-content: center; 
675	 
676
677 
678.bioec-profile-demanda-main .lista-titulo h5{ 
679	margin-bottom: 0px; 
680}  
681 
682.bioec-profile-demanda-main .lista-desc { 
683grid-area: desc;  
684}  
685 
686.bioec-profile-demanda-main .lista-desc p{  
687	margin: 0; 
688
689 
690.bioec-profile-demanda-main a{ 
691	color: #5B5C61; 
692
693 
694.demanda-port{ 
695	border: 1px #BEBEBE solid;  
696	padding: 24px; 
697	display: flex; 
698	flex-direction: column; 
699	align-items: center; 
700	gap: 24px; 
701
702 
703.demanda-port p{ 
704text-align: center;	 
705	 
706
707 
708.demanda-port div{ 
709display: flex; 
710	justify-content: space-between; 
711	width: min(558px, 100%); 
712
713 
714.button-empty { 
715border: solid 1px #4ECD66; 
716padding: 8px 24px; 
717color: #333244; 
718	transition: 250ms; 
719
720 
721.button-empty:hover{ 
722	background-color: #4ECD66; 
723
724 
725.button-filled { 
726background-color: #4ECD66; 
727border: solid 1px #4ECD66; 
728padding: 8px 24px; 
729color: #333244; 
730transition: 250ms; 
731	 
732
733 
734.button-filled:hover{ 
735	background-color: transparent; 
736
737 
738.bioec-profile-demanda-main .lista-footnote {  
739 
740	display: flex; 
741	justify-content: space-between; 
742	border-top: 1px solid #E8ECEF; 
743	padding-top: 12px; 
744	font-size: 14px; 
745	font-weight: 300; 
746	gap: 15px; 
747	color: #5B5C61; 
748 
749
750.lista-collapse{ 
751display: flex; 
752flex-direction: column; 
753gap: 24px; 
754grid-area: clps; 
755padding-bottom: 24px; 
756
757 
758 .lista-details{ 
759	display: flex; 
760	justify-content: flex-start; 
761	gap: 24px; 
762
763.lista-pic img { 
764	max-height: 138px; 
765	max-width: 138px; 
766
767 
768.bioec-profile-demanda-main p{ 
769 
770
771 
772.imagemCarregadaDemanda { 
773	height: 100px; 
774	width: 100px; 
775	background-size: contain; 
776	background-position: center; 
777	background-repeat: no-repeat; 
778
779 
780 
781.ButtonAddDemanda { 
782    background: #4ECD66; 
783    border-radius: 8px; 
784    padding: 8px 24px; 
785    border: none; 
786    font-weight: 700; 
787    color: #333244; 
788    font-family: 'Roboto'; 
789    float: right; 
790    text-transform: uppercase; 
791
792.ButtonAddDemanda:hover{ 
793	color: #333244; 
794	text-decoration: none; 
795
796 
797.bioec-profile-demanda-modal label { 
798    margin: 0; 
799    cursor: default; 
800    font-size: 20px; 
801    font-weight: 700; 
802    color: #5B5C61; 
803
804 
805.bioec-profile-demanda-modal div { 
806    width: 100%; 
807
808 
809#demandaModal-l1, .demandaModal-l1 { 
810    padding: 18px 24px; 
811    display: flex; 
812    justify-content: space-between; 
813
814 
815#demandaModal-l1 img, .demandaModal-l1 img { 
816    cursor: pointer; 
817
818 
819#demandaModal-l1 h5, .demandaModal-l1 h5 { 
820   	margin: 0; 
821    font-size: 20px; 
822    font-weight: 700; 
823    color: #5B5C61; 
824
825 
826#demandaModal-l2, .demandaModal-l2 { 
827		border-top: 1px solid #E8ECEF; 
828    display: grid; 
829    grid-template-columns: 1fr 1fr; 
830    grid-template-areas: 
831        "titu nome" 
832        "fone mail" 
833        "desc desc" 
834        "imagem ." 
835
836    column-gap: 24px; 
837    row-gap: 40px; 
838    padding: 24px; 
839
840 
841#demandaModal-l2>div, .demandaModal-l2>div { 
842    display: flex; 
843    flex-direction: column; 
844    gap: 8px; 
845
846 
847#demandaTitle, .demandaTitle { 
848    grid-area: titu; 
849
850 
851#demandaName, .demandaName { 
852    grid-area: nome; 
853
854 
855#demandaTelephone, .demandaTelephone { 
856    grid-area: fone; 
857
858 
859#demandaEmail, .demandaEmail { 
860    grid-area: mail; 
861
862 
863#demandaBrand, .demandaBrand { 
864    grid-area: marca; 
865
866 
867#demandaModal-l2>#demandaImg, .demandaModal-l2>.demandaImg { 
868    grid-area: imagem; 
869    display: flex; 
870    flex-direction: column; 
871
872 
873#demandaDesc, .demandaDesc { 
874    grid-area: desc; 
875 
876
877 
878#demandaDesc input, .demandaDesc input { 
879    height: 80px; 
880
881 
882.TextImportant{ 
883    border-bottom: 1px solid #E8ECEF; 
884 		padding: 24px; 
885		color: #5B5C61;		 
886
887 
888.bioec-profile-demanda-modal input[type="text"] { 
889    border-top: none; 
890    border-left: none; 
891    border-right: none; 
892    border-bottom: 1px solid #BEBEBE; 
893    width: 100%; 
894    font-size: 16px; 
895 
896
897 
898 
899.bioec-profile-demanda-modal input[type="text"]:focus-visible { 
900    outline: none; 
901    border-bottom: 1px solid black; 
902 
903
904 
905.bioec-profile-demanda-modal .ReqLabel:before { 
906    content: "* "; 
907    color: #D90000; 
908 
909
910 
911#inputCarregarImagemDemanda, .inputCarregarImagemDemanda { 
912    display: none; 
913
914 
915#carregarImagem, .carregarImagem  { 
916    padding: 8px 24px; 
917    border: 1px solid #4ECD66; 
918    width: fit-content; 
919    transition: 250ms; 
920 
921
922 
923#carregarImagem:hover, .carregarImagem:hover { 
924    background-color: #4ECD66; 
925
926 
927.button-empty { 
928    border: solid 1px #4ECD66; 
929    padding: 8px 24px; 
930    color: #333244; 
931    transition: 250ms; 
932    font-weight: bold; 
933
934 
935.button-empty:hover { 
936    background-color: #4ECD66; 
937
938 
939.button-filled { 
940    background-color: #4ECD66; 
941    border: solid 1px #4ECD66; 
942    padding: 8px 24px; 
943    color: #333244; 
944    transition: 250ms; 
945    font-weight: bold; 
946
947 
948.button-filled:hover { 
949    background-color: transparent; 
950
951 
952#demandaModal-l3, .demandaModal-l3 { 
953    gap: 24px; 
954    display: flex; 
955    justify-content: flex-end; 
956    padding: 24px; 
957
958 
959.modal { 
960    padding: initial !important; 
961    border-radius: 4px !important; 
962    
963
964 
965.modal a.close-modal { 
966    display: none; 
967
968 
969#removerImagemDemanda, .removerImagemDemanda { 
970	background: none; 
971	border: none; 
972	outline: none; 
973	color: #5B5C61; 
974	font-size: 16px; 
975	font-weight: 900; 
976	line-height: 24px; 
977	letter-spacing: 0em; 
978	width: fit-content; 
979	margin-left: 16px; 
980
981 
982 
983@media(max-width: 964px){ 
984    .lista-pic img { 
985        width: 100%; 
986        max-height: unset; 
987        max-width: unset; 
988 
989
990
991 
992@media (max-width: 550px) { 
993    #demandaModal-l2, .demandaModal-l2 { 
994        display: flex; 
995        flex-direction: column; 
996
997 
998    #demandaModal-l3, .demandaModal-l3 { 
999        display: flex; 
1000        flex-direction: column; 
1001
1002
1003 
1004@media(max-width: 450px){ 
1005	.bioec-profile-demanda-main .lista-details{ 
1006		flex-direction: column; 
1007
1008 
1009	.lista-contato{ 
1010		text-align: center; 
1011
1012 
1013	.bioec-profile-demanda-main .lista-footnote{ 
1014	flex-direction: column; 
1015		gap: 10px; 
1016		align-items: flex-end; 
1017		text-align: right; 
1018
1019
1020 
1021@media(max-width: 992px){ 
1022	#demanda-lista-container { 
1023		padding-inline: 15px; 
1024
1025
1026 
1027.bioec-profile-demanda-main .lista-footnote .buttonsActions { 
1028  display: flex; 
1029  gap: 17px; 
1030
1031 
1032@media (max-width: 768px) { 
1033  .bioec-profile-demanda-main .lista-desc { 
1034    gap: 24px; 
1035    flex-direction: column-reverse; 
1036
1037  .bioec-profile-demanda-main .lista-footnote { 
1038    flex-direction: column; 
1039    align-items: center; 
1040
1041  .bioec-profile-demanda-main .lista-footnote > div { 
1042    text-align: center; 
1043
1044   
1045  .bioec-profile-demanda-main .lista-footnote .barra-pipe { 
1046    display: none; 
1047
1048  .bioec-profile-demanda-main .lista-footnote .lista-author { 
1049    display: flex; 
1050    gap: 4px; 
1051    justify-content: center; 
1052
1053  .bioec-profile-demanda-main .lista-footnote .buttonsActions { 
1054    width: 100%; 
1055    justify-content: space-between; 
1056
1057
1058 
1059 
1060</style> 
1061 
1062 
1063<script> 
1064 
1065 
1066 
1067</script> 
Ofertas drop zone
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> autorId  [in template "34764#34807#41133" at line 81, column 54]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #if autorId != "" && autorId??  [in template "34764#34807#41133" at line 81, column 49]
----
1<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
2<#assign UserLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")> 
3<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 
4<#assign mbMessageLocalService = serviceLocator.findService("com.liferay.message.boards.service.MBMessageLocalService")> 
5<#assign OrganizationLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.OrganizationLocalService") 
6	tagsLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService") 
7
8 
9 
10 
11 
12	 
13 
14 
15 
16<div class="bioec-profile-oferta-main"> 
17	<div id="oferta-lista-container" class="d-flex flex-column"> 
18		<#if entries?has_content> 
19			<#list entries as entry> 
20				<#assign journalArticle = JournalArticleLocalService.getLatestArticle(entry.getClassPK()) > 
21				<#assign JournalArticleID = journalArticle.getId()> 
22				<#assign JournalArticleFrontId = journalArticle.getArticleId()> 
23				<#assign articleXml = journalArticle.getDocument().getRootElement()  
24				userIsAdmin = false 
25				orgId = "" 
26
27						 
28				<#if articleXml.selectSingleNode("dynamic-element[@field-reference='CampoDeTexto50355704']")??> 
29					 
30				<#assign nomeParaContato = articleXml.selectSingleNode("dynamic-element[@field-reference='CampoDeTexto50355704']").getStringValue()!"" 
31								 nomeParaContato = nomeParaContato?replace("\n\t\t", "") 
32								 nomeParaContato = nomeParaContato?replace("\n\t", "")			 
33
34				</#if> 
35	 
36			<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text90715721']")??> 
37				<#assign telefone = articleXml.selectSingleNode("dynamic-element[@field-reference='Text90715721']")!"" 
38				telefone = telefone.getStringValue()!"" 
39								 telefone = telefone?replace("\n\t\t", "") 
40								 telefone = telefone?replace("\n\t", "")	 
41
42 
43				</#if> 
44		 
45				<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text68569631']")??> 
46				<#assign email = articleXml.selectSingleNode("dynamic-element[@field-reference='Text68569631']").getStringValue()!"" 
47								 email = email?replace("\n\t\t", "") 
48								 email = email?replace("\n\t", "")					 
49
50        </#if> 
51				 
52 
53				<#if articleXml.selectSingleNode("dynamic-element[@field-reference='CopyOfText18267936']")??> 
54				<#assign desc = articleXml.selectSingleNode("dynamic-element[@field-reference='CopyOfText18267936']").getStringValue()!"" 
55								 desc = desc?replace("\n\t\t", "") 
56								 desc = desc?replace("\n\t", "")		 
57
58       </#if> 
59					 
60					<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text80669990']")??> 
61				<#assign imagem = articleXml.selectSingleNode("dynamic-element[@field-reference='Text80669990']").getStringValue()!"" 
62								imagem = imagem?replace("\n\t\t", "") 
63								 imagem = imagem?replace("\n\t", "")		 
64
65					</#if> 
66 
67						<#if articleXml.selectSingleNode("dynamic-element[@field-reference='CampoDeTexto97452704']")??> 
68				<#assign autorId = articleXml.selectSingleNode("dynamic-element[@field-reference='CampoDeTexto97452704']").getStringValue()!"" 
69						autorId = autorId?replace("\n\t\t", "") 
70						autorId = autorId?replace("\n\t", "")			 
71							autorArticleId = "" 
72
73					</#if> 
74					 
75					<#assign 
76						commentsCount = mbMessageLocalService.getDiscussionMessagesCount(entry.getClassName(), entry.getClassPK(), 0)!"0" 
77				>	 
78				 
79				 
80			 
81						<#if autorId != "" && autorId??> 
82					<#assign 
83						autor = UserLocalService.fetchUser(autorId?number)!"" 
84						autorArticleId = autor.getExpandoBridge().getAttribute("journal-article")!"0" 
85				/> 
86				<#if autor != ""> 
87				<#assign autor = autor.getFullName()!""> 
88				<#else> 
89				<#assign autor = "Anônimo" > 
90				</#if> 
91				<#else>  
92				<#assign autor = "Anônimo" > 
93		</#if>		 
94		<#assign 	categorias = AssetCategoryLocalService.getCategoryNames(entry.getClassName(), entry.getClassPK())!"" > 
95		<#assign urlWC = ""> 
96		 
97		<#if autorArticleId != "0" && autorArticleId != "" && autor != "Anônimo"> 
98		<#assign autorArticle = JournalArticleLocalService.getLatestArticle(themeDisplay.getLayout().getGroupId(), autorArticleId?string) > 
99		<#assign urlWC = autorArticle.getUrlTitle()!""> 
100		</#if> 
101		 
102		 
103				<#assign tags = tagsLocalService.getTagNames("com.liferay.journal.model.JournalArticle", journalArticle.getResourcePrimKey()?number )  
104				 tagName = tags[0]!"" 
105				 orgOrUser = "" 
106
107				  
108				 <#if tagName?contains("organization") && tagName != "" > 
109					 <#assign orgOrUser = "org"> 
110					<#else> 
111					 <#assign orgOrUser = "user"> 
112				 </#if> 
113			 
114				<#if orgOrUser == "org" > 
115 
116					<#assign 
117					orgId = tagName?keep_after("organization-")				 
118					organization =  OrganizationLocalService.fetchOrganization(orgId?number)!"" 
119
120			 
121					 
122					<#if organization != "" && autor != "Anônimo"> 
123						<#assign	orgArticleId = organization.getExpandoBridge().getAttribute("journal-article") 
124							orgJournalArticle = JournalArticleLocalService.getArticle(themeDisplay.getLayout().getGroupId(),orgArticleId?c)  
125							urlWC = orgJournalArticle.getUrlTitle()!"" 
126							autor = organization.getName()!"" 
127
128 
129					</#if> 
130				</#if> 
131				 
132					<#if themeDisplay.isSignedIn() > 
133							<#if tagName?contains("organization-")> 
134								<#assign userIsAdmin = OrganizationLocalService.hasUserOrganization(themeDisplay.getUserId(), orgId?number)> 
135								<#else> 
136								<#if autorId?number == themeDisplay.getUserId()> 
137								<script>console.log("oi");</script> 
138									<#assign userIsAdmin = true> 
139								</#if> 
140							</#if> 
141							 
142						 
143					</#if> 
144				 
145 
146				<div class="oferta-lista-item"> 
147				<div class="lista-checkmark"> 
148								<#if categorias?seq_contains("aprovado") > <i title="Aprovado" style="color: #4ECD66" class="fa-solid fa-circle-check"></i> </#if> 
149								<#if categorias?seq_contains("pendente") >	<i title="Em análise" style="color: #D90000"class="fa-solid fa-spinner"></i> </#if> 
150								<#if categorias?seq_contains("recusado") >	<i title="Recusado" style="color: #D90000"class="fa-solid fa-exclamation-circle"></i> </#if> 
151				</div> 
152	 
153 
154					<div class="lista-titulo"> 
155						<h5>${entry.getHighlightedTitle()}</h5> 
156					</div> 
157 
158					<div class="lista-arrow"> 
159						<button style="padding: 0;" class="btn" type="button" data-toggle="collapse" data-target="#collapseID${entry.getClassPK()}" aria-expanded="false" aria-controls="collapseID${entry.getClassPK()}"> 
160							<i class="fa-solid fa-chevron-down"></i> 
161						</button> 
162					</div> 
163 
164					<div class="lista-desc"> 
165						<p>${desc}</p> 
166					</div> 
167 
168					<div class="lista-collapse collapse" id="collapseID${entry.getClassPK()}"> 
169					<#if nomeParaContato != "" || telefone != "" || email != "" || imagem?trim !=""> 
170					<div class="lista-details"> 
171								<div class="lista-pic"> 
172									<i class="fa-solid fa-image-slash"></i> 
173									<#if imagem?trim !="" > 
174											<img class="bioec_oferta_img" src="${imagem}"> 
175										<#else> 
176											<div class="bioec_oferta_img_placeholder"> 
177												<i class="fa-solid fa-image"></i> 
178													sem imagem 
179											</div> 
180									</#if> 
181								</div> 
182							<#if nomeParaContato != "" || telefone != "" || email != "" > 
183							<div class="lista-contato"> 
184								<p>Contato</p> 
185								<p class="lista-author">${nomeParaContato}</p> 
186								<p class="lista-phone">${telefone}</p> 
187								<p class="lista-email">${email}</p> 
188							</div> 
189							</#if> 
190						</div> 
191						</#if> 
192						 
193							<#if categorias?seq_contains("recusado") > 
194							<div style="border-top: 1px solid #E8ECEF; font-weight: bold; padding-top: 24px;"> 
195							<p>Conteúdo Em Análise Pelo Cetiqt:</p> 
196							<p>Conteúdo recusado pelo CETIQT por violar as políticas de privacidade.</p> 
197							</div> 
198							</#if> 
199						<div class="lista-footnote"> 
200								<div> 
201									<span class="lista-date">${journalArticle.getDisplayDate()?string('dd/MM/yyyy')}</span> | <span class="lista-commentNumber">${commentsCount} cometários</span> <span class="barra-pipe"> | </span> <span class="lista-author">Publicado por <a <#if urlWC != ''>href="/w/${urlWC}</#if>">${autor}</a></span> 
202								</div> 
203								<#if userIsAdmin> 
204									<div class="buttonsActions"> 
205									<div style="cursor: pointer;font-size: 16px;" data-toggle="modal" data-target="#modalOferta${JournalArticleID}"> 
206											<i class="fa-solid fa-edit"></i> 
207										</div> 
208										<div style="cursor: pointer;font-size: 16px;" data-toggle="modal" data-target="#modal-oferta-${entry.getClassPK()}"> 
209												<i class="fa-solid fa-trash-can"></i> 
210										</div> 
211										 
212									</div> 
213								</#if>		 
214						</div> 
215					</div> 
216				</div> 
217				 
218					<#if userIsAdmin> 
219						<div style="display: none;" id="modal-oferta-${entry.getClassPK()}" class="modal fade" role="dialog"> 
220							<div class="modal-dialog modal-lg" role="document"> 
221								<div class="modal-content"> 
222									<div class="modal-header" > 
223										<h4 class="m-0">Remover Oferta</h4> 
224										<button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
225											<span aria-hidden="true"> 
226												<i class="fa-solid fa-close"></i> 
227											</span> 
228										</button>    
229									</div> 
230									<div class="modal-body"> 
231										<h5>Você tem certeza que deseja remover essa oferta?</h5> 
232										<div> 
233											Ao clicar em continuar, a oferta será removida do seu perfil. 
234										</div> 
235									</div> 
236									<div class="modal-footer justify-content-end"> 
237											<button class="bioec_secondary_button" data-dismiss="modal">CANCELAR</button> 
238											<button class="bioec_primary_button" type="button" onclick="excluirOferta(${JournalArticleFrontId}, ${orgId})">CONTINUAR</button>  
239									</div> 
240								</div> 
241							</div>			 
242						</div> 
243						 
244						<#-- modal edição --> 
245						 
246						 
247						<div style="display: none;" id="modalOferta${JournalArticleID}" class="modal fade bioec-profile-oferta-modal modalOferta" role="dialog"> 
248									<div class="modal-dialog modal-lg" role="document"> 
249										<form id="formularioOferta${JournalArticleID}" class="form-group modal-content formularioOferta"> 
250												<div id="ofertaModal-l1${JournalArticleID}" class="modal-header ofertaModal-l1"> 
251													<h5>Adicionar oferta</h5> 
252														<button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
253															 <span aria-hidden="true">&times;</span> 
254														</button> 
255												</div> 
256												<div id="ofertaModal-l2${JournalArticleID}" class="modal-body ofertaModal-l2"> 
257														<div id="ofertaTitle${JournalArticleID}" class="ofertaTitle"> 
258																<label class="ReqLabel" for="ofertaInputTitle${JournalArticleID}">Título da oferta</label> 
259																<input id="ofertaInputTitle${JournalArticleID}" value="${entry.getHighlightedTitle()}" type="text" placeholder="Inserir um título" required> 
260														</div> 
261														<div id="ofertaName${JournalArticleID}" class="ofertaName"> 
262																<label class="" for="ofertaInputName${JournalArticleID}">Nome para contato</label> 
263																<input value="${nomeParaContato}" id="ofertaInputName${JournalArticleID}" placeholder="Inserir nome" type="text"> 
264														</div> 
265														<div id="ofertaTelephone${JournalArticleID}" class="ofertaTelephone"> 
266																<label class="" for="ofertaInputPhone${JournalArticleID}">Telefone para contato</label> 
267																<input value="${telefone}" id="ofertaInputPhone${JournalArticleID}" name="ofertaInputPhone" type="text" placeholder ='(__)_____-_____' minlength="14"  /> 
268														</div> 
269														<div id="ofertaEmail${JournalArticleID}" class="ofertaEmail"> 
270																<label class="" for="ofertaInputEmail${JournalArticleID}">E-mail para contato</label> 
271																<input value="${email}" id="ofertaInputEmail${JournalArticleID}" placeholder="Inserir e-mail" type="text"> 
272														</div> 
273														<div id="ofertaDesc${JournalArticleID}" class="ofertaDesc"> 
274																<label class="ReqLabel" for="ofertaInputDesc${JournalArticleID}">Descrição</label> 
275																<textarea id="ofertaInputDesc${JournalArticleID}" style="max-width: 100%;font-size: 16px;height: 80px;border: 1px solid #BEBEBE;" required>${desc}</textarea> 
276														</div> 
277														<div id="ofertaImg${JournalArticleID}" class="ofertaImg"> 
278																<div style="display: flex; flex-direction: column; gap: 8px"> 
279																		<label>Imagem da oferta (Máx. 10 MB)</label> 
280																		<label class="btn carregarImagem" id="carregarImagem${JournalArticleID}" for="inputCarregarImagemOferta${JournalArticleID}" style="font-size: 16px; cursor: pointer;">CARREGAR IMAGEM</label> 
281																		<input class="inputCarregarImagemOferta" id="inputCarregarImagemOferta${JournalArticleID}" type="file" accept="image/*" onchange="encodeOfertaImageAsURL${JournalArticleID}(this)"> 
282																		<input class="d-none" id="inputOfertaBase64${JournalArticleID}" value="${imagem}"/> 
283																		<div class="imagemCarregadaOferta imagemCarregadaOferta${JournalArticleID} d-md-none d-block" style="background-image: url(${imagem})"></div> 
284																		<button type="button" id="removerImagemOferta${JournalArticleID}" class="<#if imagem == "" || imagem?? == false> d-none </#if>  removerImagemOferta" > 
285																			<i class="fa fa-trash"></i> Remover imagem	 
286																		</button> 
287																	</div> 
288																	<div class="imagemCarregadaOferta imagemCarregadaOferta${JournalArticleID} d-md-block d-none" style="background-image: url(${imagem})"></div> 
289														</div> 
290												</div> 
291													<div class="TextImportant"> 
292														<p> 
293															Importante: O conteúdo enviado passará por um processo interno de aprovação. Só então o conteúdo adicionado aparecerá no portal. 
294														</p> 
295													</div> 
296 
297												<div id="ofertaModal-l3${JournalArticleID}" class="modal-footer ofertaModal-l3"> 
298														<button  class="btn button-empty" onclick="" id="ofertas-saveAndClose${JournalArticleID}">SALVAR E FECHAR</button> 
299												</div> 
300										</form> 
301									</div> 
302								</div> 
303						 
304						</#if> 
305						<#--  
306						 
307						 
308						 
309						 
310						<div style="display: none;" id="modalInfra${JournalArticleID}" class="modal fade bioec-profile-infra-modal" role="dialog"> 
311							<div  class="modal-dialog modal-lg" role="document"> 
312 
313								<form class="form-group modal-content" id="formularioInfraestrutura${JournalArticleID}"> 
314									<div id="infraModal-l1-${JournalArticleID}" class="modal-header infraModal-l1" > 
315										<h5>Adicionar Infraestrutura</h5> 
316										<button id="fecharModal${JournalArticleID}" type="button" class="close" data-dismiss="modal" aria-label="Close"> 
317											<span aria-hidden="true">&times;</span> 
318										</button>    
319									</div> 
320									<div id="infraModal-l2-${JournalArticleID}" class="modal-body infraModal-l2"> 
321										<div id="infraName${JournalArticleID}" class="infraName"> 
322											<label class="ReqLabel" for="inputInfraName${JournalArticleID}">Nome da infraestrutura</label> 
323											<input type="text" id="inputInfraName${JournalArticleID}" value="${entry.getHighlightedTitle()}" placeholder="Nome da infraestrutura" required> 
324										</div> 
325									<div id="infraModel${JournalArticleID}" class="infraModel"> 
326										<label class="ReqLabel" for="inputInfraModel${JournalArticleID}">Modelo</label> 
327										<input type="text" id="inputInfraModel${JournalArticleID}" value="${modelo}" placeholder="Modelo" required> 
328									</div> 
329									<div id="infraBrand${JournalArticleID}" class="infraBrand"> 
330										<label class="ReqLabel" for="inputInfraBrand${JournalArticleID}">Marca</label> 
331										<input type="text" id="inputInfraBrand${JournalArticleID}" value="${marca}" placeholder="Marca" required> 
332									</div> 
333 
334									<div id="infraImg${JournalArticleID}" class="infraImg"> 
335										<div style="display: flex; flex-direction: column; gap: 8px"> 
336											<label>Imagem da infraestrutura (Máx. 10 MB)</label> 
337											<label class="bioec_secondary_button" id="carregarImagem${JournalArticleID}" for="inputCarregarImagemInfra${JournalArticleID}" style="font-size: 16px;color: #333244;align-self:start;"> 
338												CARREGAR IMAGEM 
339											</label> 
340											<input id="inputCarregarImagemInfra${JournalArticleID}" class="inputCarregarImagemInfra" type="file" accept="image/*" onchange="encodeInfraImageAsURL${JournalArticleID}(this)"> 
341											<input class="d-none" id="inputInfraBase64${JournalArticleID}" /> 
342											<div class="imagemCarregadaInfra${JournalArticleID} d-md-none d-block"></div> 
343											<button type="button" id="removerImagemInfra${JournalArticleID}" class="d-none removerImagemInfra" > 
344												<i class="fa fa-trash"></i> Remover imagem	 
345											</button> 
346										</div> 
347										<div class="imagemCarregadaInfra${JournalArticleID} d-md-block d-none"></div> 
348									</div> 
349 
350									<div id="infraFunction${JournalArticleID}" class="infraFunction"> 
351										<label class="ReqLabel" for="inputInfraFunction${JournalArticleID}">Função</label> 
352										<input type="text" id="inputInfraFunction${JournalArticleID}" class="inputInfraFunction" value="${funcao}" placeholder="Função" required> 
353									</div> 
354								</div> 
355								<div class="TextImportant"> 
356									<p> 
357									Importante: O conteúdo enviado passará por um processo interno de aprovação. Só então o conteúdo adicionado aparecerá no portal. 
358									</p> 
359								</div> 
360								<div id="infraModal-l3-${JournalArticleID}" class="modal-footer infraModal-l3"> 
361											<button class="bioec_secondary_button" id="ofertas-saveAndClose${JournalArticleID}" onclick="">SALVAR E FECHAR</button> 
362								</div> 
363							</form> 
364 
365							</div>			 
366						 
367						 
368						--> 
369						 
370				 
371 
372						<script> 
373						<#if userIsAdmin> 
374						function excluirOferta(wcId, orgId) { 
375								Liferay.Util.openToast({message: "Enviando requisição",type: "info",title: ""}); 
376								fetch(Liferay.ThemeDisplay.getPortalURL() + "/o/oferta/" + wcId, { 
377									method: 'DELETE', 
378									"headers": { 
379										"x-csrf-token": Liferay.authToken, 
380										"Content-Type": "application/json" 
381
382								}) 
383								.then(res => { 
384									if(res.status == 200) { 
385										Liferay.Util.openToast({ 
386												message: "Infraestrutura excluida com sucesso", 
387												type: "success", 
388												title: "", 
389												toastProps: { 
390														autoClose: 5000 
391
392										}) 
393										setTimeout(function(){ location.reload(); }, 2000) 
394									} else { 
395										Liferay.Util.openToast({ 
396												message: "Erro ao excluir infraestrutura", 
397												type: "danger", 
398												title: "", 
399												toastProps: { 
400														autoClose: 5000 
401
402										}) 
403
404								}); 
405
406							 
407						 
408							 
409							 
410	function validImageSize(base64="") { 
411		const decoded = atob(base64.substring(base64.indexOf(',') + 1)); 
412		const sizeMB = decoded.length / 1e+6; 
413		console.log("MB: " + decoded.length / 1e+6); 
414		if(sizeMB > 10) { 
415			Liferay.Util.openToast({ 
416				message: "O tamanho da imagem não deve ultrapassar 10 MB.", 
417				type: "danger", 
418				title: "", 
419				toastProps: { 
420					autoClose: 5000 
421
422			}) 
423			return false 
424
425		return true 
426
427 
428	function encodeOfertaImageAsURL${JournalArticleID}(element) { 
429  	let file = element.files[0]; 
430    let reader = new FileReader(); 
431    reader.onloadend = () => { 
432			if(reader.result) { 
433				if(!validImageSize(reader.result)) return; 
434				try { 
435					const base64_input = document.getElementById("inputOfertaBase64${JournalArticleID}") 
436					base64_input.value = reader.result 
437					Array.from(document.getElementsByClassName("imagemCarregadaOferta${JournalArticleID}")).forEach( el => el.style.backgroundImage = 'url(' + reader.result + ')' ) 
438					 
439					const removeImageButton = document.getElementById("removerImagemOferta${JournalArticleID}") 
440					removeImageButton.classList.remove("d-none") 
441				} catch (error) { 
442					console.error(error) 
443
444
445
446		reader.readAsDataURL(file); 
447
448	 
449	function removeImageOferta${JournalArticleID}() { 
450	try { 
451		const file_input = document.getElementById("inputCarregarImagemOferta${JournalArticleID}") 
452		Array.from(document.getElementsByClassName("imagemCarregadaOferta${JournalArticleID}")).forEach( el => el.style.backgroundImage = "" ) 
453		const base64_input = document.getElementById("inputOfertaBase64${JournalArticleID}") 
454		file_input.value = null 
455		base64_input.value = "" 
456		 
457		const removeImageButton = document.getElementById("removerImagemOferta${JournalArticleID}") 
458		removeImageButton.classList.add("d-none") 
459	} catch (error) { 
460		console.error(error) 
461
462
463 
464 
465 
466document.getElementById("removerImagemOferta${JournalArticleID}").addEventListener("click", removeImageOferta${JournalArticleID}); 
467 
468<#-- Rest da edição de organização --> 
469 
470<#if orgOrUser == "org"> 
471document.querySelector('#formularioOferta${JournalArticleID}').addEventListener('submit', event => { 
472	event.preventDefault(); 
473	adicionarOferta${JournalArticleID}();  
474}); 
475 
476function adicionarOferta${JournalArticleID}() {		 
477		Liferay.Util.openToast({message: "Enviando requisição",type: "info",title: ""}); 
478		$("#ofertas-saveAndClose${JournalArticleID}").prop("disabled",true); 
479	 
480		 
481		 
482		const ofertaData = { 
483			titulo: document.getElementById("ofertaInputTitle${JournalArticleID}").value, 
484			nomeContato: document.getElementById("ofertaInputName${JournalArticleID}").value, 
485			telefoneContato: document.getElementById("ofertaInputPhone${JournalArticleID}").value, 
486			emailContato: document.getElementById("ofertaInputEmail${JournalArticleID}").value, 
487			descricao: document.getElementById("ofertaInputDesc${JournalArticleID}").value, 
488			imagem: document.getElementById("inputOfertaBase64${JournalArticleID}").value, 
489
490		 
491		console.log(ofertaData); 
492		 
493			fetch(Liferay.ThemeDisplay.getPortalURL() + "/o/oferta/${JournalArticleFrontId}", { 
494				method: 'PUT', 
495				"headers": { 
496					"x-csrf-token": Liferay.authToken, 
497					"Content-Type": "application/json" 
498				}, 
499				body: JSON.stringify(ofertaData) 
500			}) 
501			.then(res => { 
502				if(res.status == 200) { 
503					Liferay.Util.openToast({ 
504							message: "Oferta editada com sucesso. Após a submissão, será iniciado o processo interno de aprovação do conteúdo enviado. Só então o conteúdo submetido aparecerá no portal.", 
505							type: "success", 
506							title: "", 
507							toastProps: { 
508									autoClose: 5000 
509
510					}) 
511					 setTimeout(function(){ location.reload(); }, 2000); 
512				} else { 
513				 $("#ofertas-saveAndClose${JournalArticleID}").prop("disabled",false); 
514					Liferay.Util.openToast({ 
515							message: "Erro ao editar oferta", 
516							type: "danger", 
517							title: "", 
518							toastProps: { 
519									autoClose: 5000 
520
521					}) 
522
523			}) 
524
525</#if> 
526 
527<#-- Rest da edição de pessoa fisica --> 
528 
529							 
530							 
531				<#if orgOrUser == "user"> 
532				 
533								document.querySelector('#formularioOferta${JournalArticleID}').addEventListener('submit', event => { 
534					event.preventDefault(); 
535					adicionarOferta${JournalArticleID}();  
536				});			 
537						 
538						function adicionarOferta${JournalArticleID}() { 
539							Liferay.Util.openToast({message: "Enviando requisição",type: "info",title: ""}); 
540							$("#ofertas-saveAndClose${JournalArticleID}").prop("disabled",true); 
541	 
542							const ofertaData = { 
543								titulo: document.getElementById("ofertaInputTitle${JournalArticleID}").value, 
544								nomeContato: document.getElementById("ofertaInputName${JournalArticleID}").value, 
545								telefoneContato: document.getElementById("ofertaInputPhone${JournalArticleID}").value, 
546								emailContato: document.getElementById("ofertaInputEmail${JournalArticleID}").value, 
547								descricao: document.getElementById("ofertaInputDesc${JournalArticleID}").value, 
548								imagem: document.getElementById("inputOfertaBase64${JournalArticleID}").value, 
549
550							 
551							console.log(ofertaData); 
552 
553							fetch(Liferay.ThemeDisplay.getPortalURL() + "/o/oferta/${JournalArticleFrontId}", { 
554											method: 'PUT', 
555											"headers": { 
556													"x-csrf-token": Liferay.authToken, 
557													"Content-Type": "application/json" 
558											}, 
559											body: JSON.stringify(ofertaData) 
560									}) 
561									.then( res => { 
562								if(res.status == 200) { 
563									Liferay.Util.openToast({ 
564										message: "Oferta editada com sucesso. Após a submissão, será iniciado o processo interno de aprovação do conteúdo enviado. Só então o conteúdo submetido aparecerá no portal.", 
565										type: "success", 
566										title: "", 
567										toastProps: { 
568											autoClose: 5000 
569
570									}) 
571									 setTimeout(function(){ location.reload(); }, 2000); 
572								} else { 
573								 $("#ofertas-saveAndClose${JournalArticleID}").prop("disabled",false); 
574									Liferay.Util.openToast({ 
575										message: "Erro ao editar Oferta", 
576										type: "danger", 
577										title: "", 
578										toastProps: { 
579											autoClose: 5000 
580
581									}) 
582
583							}); 
584							 
585					}; 
586						 
587						 
588				</#if> 
589							 
590							 
591								</#if> 
592						</script> 
593					 
594				 
595				 
596				 
597			</#list> 
598		</#if> 
599	</div> 
600</div> 
601 
602<style> 
603.bioec_oferta_img { 
604    overflow: hidden; 
605		background-size: contain; 
606    background-position: center; 
607    background-repeat: no-repeat; 
608
609 
610.bioec_oferta_img_placeholder { 
611    width: 140px; 
612    height: 140px; 
613    background-color: #E8ECEF; 
614    display: flex; 
615    flex-direction: column; 
616    align-items: center; 
617    justify-content: center; 
618    font-size: 14px; 
619    color: #5B5C61; 
620
621 
622.bioec_oferta_img_placeholder i { 
623    font-size: 44px; 
624
625 
626 
627.pagination-items-per-page.active > a,  
628.pagination-items-per-page.active > button,  
629.pagination-items-per-page.show > a,  
630.pagination-items-per-page.show > button, 
631.page-item.active .page-link,  
632.page-item.show .page-link{ 
633    border-color: #4ECD66; 
634    background-color: #4ECD66; 
635
636 
637.pagination-results, 
638.pagination-items-per-page > a,  
639.pagination-items-per-page > button, 
640.pagination-items-per-page > a:hover,  
641.pagination-items-per-page > button:hover, 
642.page-link{ 
643	color: #4ebe66; 
644
645 
646.bioec-profile-oferta-main{ 
647	display: flex; 
648	gap: 40px; 
649	flex-direction: column; 
650	padding-bottom: 20px; 
651
652.bioec-profile-oferta-main h5{ 
653	font-weight: 700; 
654
655.bioec-profile-oferta-main h5, .bioec-profile-oferta-main p{ 
656	color: #5B5C61; 
657	margin-bottom: 0px; 
658	font-size: 16px; 
659 
660
661 
662.bioec-profile-oferta-main #oferta-lista-container>div{ 
663	border: 1px #BEBEBE solid;  
664	padding: 24px 24px 0 24px; 
665	margin-bottom: 40px; 
666	display: grid; 
667	grid-row-gap: 24px; 
668	grid-template-columns: 24px 12px 1fr 15px; 
669	grid-template-areas:  
670		"ck . tit arrw" 
671		"desc desc desc desc" 
672		"clps clps clps clps"; 
673
674 
675.bioec-profile-oferta-main .lista-checkmark { grid-area: ck; display: flex; } 
676.bioec-profile-oferta-main .lista-checkmark i { font-size: 24px; } 
677.bioec-profile-oferta-main .lista-pic { grid-area: pic; display: flex; justify-content: center;} 
678.bioec-profile-oferta-main .lista-arrow { grid-area: arrw; } 
679 
680.bioec-profile-oferta-main .lista-titulo {  
681	grid-area: tit;  
682	display: flex;  
683	flex-direction: column; 
684	justify-content: center; 
685	 
686
687 
688.bioec-profile-oferta-main .lista-titulo h5{ 
689	margin-bottom: 0px; 
690}  
691 
692.bioec-profile-oferta-main .lista-desc { 
693grid-area: desc;  
694}  
695 
696.bioec-profile-oferta-main .lista-desc p{  
697	margin: 0; 
698
699 
700.bioec-profile-oferta-main a{ 
701	color: #5B5C61; 
702
703 
704.oferta-port{ 
705	border: 1px #BEBEBE solid;  
706	padding: 24px; 
707	display: flex; 
708	flex-direction: column; 
709	align-items: center; 
710	gap: 24px; 
711
712 
713.oferta-port p{ 
714text-align: center;	 
715	 
716
717 
718.oferta-port div{ 
719display: flex; 
720	justify-content: space-between; 
721	width: min(558px, 100%); 
722
723 
724.button-empty { 
725border: solid 1px #4ECD66; 
726padding: 8px 24px; 
727color: #333244; 
728	transition: 250ms; 
729
730 
731.button-empty:hover{ 
732	background-color: #4ECD66; 
733
734 
735.button-filled { 
736background-color: #4ECD66; 
737border: solid 1px #4ECD66; 
738padding: 8px 24px; 
739color: #333244; 
740transition: 250ms; 
741	 
742
743 
744.button-filled:hover{ 
745	background-color: transparent; 
746
747 
748.bioec-profile-oferta-main .lista-footnote {  
749 
750	display: flex; 
751	justify-content: space-between; 
752	border-top: 1px solid #E8ECEF; 
753	padding-top: 12px; 
754	font-size: 14px; 
755	font-weight: 300; 
756	gap: 15px; 
757	color: #5B5C61; 
758 
759
760.lista-collapse{ 
761display: flex; 
762flex-direction: column; 
763gap: 24px; 
764grid-area: clps; 
765padding-bottom: 24px; 
766
767 
768 .lista-details{ 
769	display: flex; 
770	justify-content: flex-start; 
771	gap: 24px; 
772
773.lista-pic img { 
774	max-height: 138px; 
775	max-width: 138px; 
776
777 
778.bioec-profile-oferta-main p{ 
779 
780
781 
782.imagemCarregadaOferta { 
783	height: 100px; 
784	width: 100px; 
785	background-size: contain; 
786	background-position: center; 
787	background-repeat: no-repeat; 
788
789 
790 
791.ButtonAddOferta { 
792    background: #4ECD66; 
793    border-radius: 8px; 
794    padding: 8px 24px; 
795    border: none; 
796    font-weight: 700; 
797    color: #333244; 
798    font-family: 'Roboto'; 
799    float: right; 
800    text-transform: uppercase; 
801
802.ButtonAddOferta:hover{ 
803	color: #333244; 
804	text-decoration: none; 
805
806 
807.bioec-profile-oferta-modal label { 
808    margin: 0; 
809    cursor: default; 
810    font-size: 20px; 
811    font-weight: 700; 
812    color: #5B5C61; 
813
814 
815.bioec-profile-oferta-modal div { 
816    width: 100%; 
817
818 
819#ofertaModal-l1, .ofertaModal-l1 { 
820    padding: 18px 24px; 
821    display: flex; 
822    justify-content: space-between; 
823
824 
825#ofertaModal-l1 img, .ofertaModal-l1 img { 
826    cursor: pointer; 
827
828 
829#ofertaModal-l1 h5, .ofertaModal-l1 h5 { 
830   	margin: 0; 
831    font-size: 20px; 
832    font-weight: 700; 
833    color: #5B5C61; 
834
835 
836#ofertaModal-l2, .ofertaModal-l2 { 
837		border-top: 1px solid #E8ECEF; 
838    display: grid; 
839    grid-template-columns: 1fr 1fr; 
840    grid-template-areas: 
841        "titu nome" 
842        "fone mail" 
843        "desc desc" 
844        "imagem ." 
845
846    column-gap: 24px; 
847    row-gap: 40px; 
848    padding: 24px; 
849
850 
851#ofertaModal-l2>div, .ofertaModal-l2>div { 
852    display: flex; 
853    flex-direction: column; 
854    gap: 8px; 
855
856 
857#ofertaTitle, .ofertaTitle { 
858    grid-area: titu; 
859
860 
861#ofertaName, .ofertaName { 
862    grid-area: nome; 
863
864 
865#ofertaTelephone, .ofertaTelephone { 
866    grid-area: fone; 
867
868 
869#ofertaEmail, .ofertaEmail { 
870    grid-area: mail; 
871
872 
873#ofertaBrand, .ofertaBrand { 
874    grid-area: marca; 
875
876 
877#ofertaModal-l2>#ofertaImg, .ofertaModal-l2>.ofertaImg { 
878    grid-area: imagem; 
879    display: flex; 
880    flex-direction: column; 
881
882 
883#ofertaDesc, .ofertaDesc { 
884    grid-area: desc; 
885 
886
887 
888#ofertaDesc input, .ofertaDesc input { 
889    height: 80px; 
890
891 
892.TextImportant{ 
893    border-bottom: 1px solid #E8ECEF; 
894 		padding: 24px; 
895		color: #5B5C61;		 
896
897 
898.bioec-profile-oferta-modal input[type="text"] { 
899    border-top: none; 
900    border-left: none; 
901    border-right: none; 
902    border-bottom: 1px solid #BEBEBE; 
903    width: 100%; 
904    font-size: 16px; 
905 
906
907 
908 
909.bioec-profile-oferta-modal input[type="text"]:focus-visible { 
910    outline: none; 
911    border-bottom: 1px solid black; 
912 
913
914 
915.bioec-profile-oferta-modal .ReqLabel:before { 
916    content: "* "; 
917    color: #D90000; 
918 
919
920 
921#inputCarregarImagemOferta, .inputCarregarImagemOferta { 
922    display: none; 
923
924 
925#carregarImagem, .carregarImagem  { 
926    padding: 8px 24px; 
927    border: 1px solid #4ECD66; 
928    width: fit-content; 
929    transition: 250ms; 
930 
931
932 
933#carregarImagem:hover, .carregarImagem:hover { 
934    background-color: #4ECD66; 
935
936 
937.button-empty { 
938    border: solid 1px #4ECD66; 
939    padding: 8px 24px; 
940    color: #333244; 
941    transition: 250ms; 
942    font-weight: bold; 
943
944 
945.button-empty:hover { 
946    background-color: #4ECD66; 
947
948 
949.button-filled { 
950    background-color: #4ECD66; 
951    border: solid 1px #4ECD66; 
952    padding: 8px 24px; 
953    color: #333244; 
954    transition: 250ms; 
955    font-weight: bold; 
956
957 
958.button-filled:hover { 
959    background-color: transparent; 
960
961 
962#ofertaModal-l3, .ofertaModal-l3 { 
963    gap: 24px; 
964    display: flex; 
965    justify-content: flex-end; 
966    padding: 24px; 
967
968 
969.modal { 
970    padding: initial !important; 
971    border-radius: 4px !important; 
972    
973
974 
975.modal a.close-modal { 
976    display: none; 
977
978 
979#removerImagemOferta, .removerImagemOferta { 
980	background: none; 
981	border: none; 
982	outline: none; 
983	color: #5B5C61; 
984	font-size: 16px; 
985	font-weight: 900; 
986	line-height: 24px; 
987	letter-spacing: 0em; 
988	width: fit-content; 
989	margin-left: 16px; 
990
991 
992 
993@media(max-width: 964px){ 
994    .lista-pic img { 
995        width: 100%; 
996        max-height: unset; 
997        max-width: unset; 
998 
999
1000
1001 
1002@media (max-width: 550px) { 
1003    #ofertaModal-l2, .ofertaModal-l2 { 
1004        display: flex; 
1005        flex-direction: column; 
1006
1007 
1008    #ofertaModal-l3, .ofertaModal-l3 { 
1009        display: flex; 
1010        flex-direction: column; 
1011
1012
1013 
1014@media(max-width: 450px){ 
1015	.bioec-profile-oferta-main .lista-details{ 
1016		flex-direction: column; 
1017
1018 
1019	.lista-contato{ 
1020		text-align: center; 
1021
1022 
1023	.bioec-profile-oferta-main .lista-footnote{ 
1024	flex-direction: column; 
1025		gap: 10px; 
1026		align-items: flex-end; 
1027		text-align: right; 
1028
1029
1030 
1031@media(max-width: 992px){ 
1032	#oferta-lista-container { 
1033		padding-inline: 15px; 
1034
1035
1036 
1037.bioec-profile-oferta-main .lista-footnote .buttonsActions { 
1038  display: flex; 
1039  gap: 17px; 
1040
1041 
1042@media (max-width: 768px) { 
1043  .bioec-profile-oferta-main .lista-desc { 
1044    gap: 24px; 
1045    flex-direction: column-reverse; 
1046
1047  .bioec-profile-oferta-main .lista-footnote { 
1048    flex-direction: column; 
1049    align-items: center; 
1050
1051  .bioec-profile-oferta-main .lista-footnote > div { 
1052    text-align: center; 
1053
1054   
1055  .bioec-profile-oferta-main .lista-footnote .barra-pipe { 
1056    display: none; 
1057
1058  .bioec-profile-oferta-main .lista-footnote .lista-author { 
1059    display: flex; 
1060    gap: 4px; 
1061    justify-content: center; 
1062
1063  .bioec-profile-oferta-main .lista-footnote .buttonsActions { 
1064    width: 100%; 
1065    justify-content: space-between; 
1066
1067
1068 
1069 
1070</style> 
1071 
1072 
1073<script> 
1074 
1075 
1076 
1077</script> 
Publicações drop zone
Notícia
sem imagem

Pesquisadores criam concreto sustentável feito de bagaço de cana

Apelidado de Sugarcrete, concreto ssustentável feito de bagaço de cana promete emitir 20 vezes menos carbono que o convencional.

Para ler a notícia completa, clique aqui.

Notícia | 19/07/2023 | 0 comentários | Publicado por Anônimo
Notícia
sem imagem

Café com Bioeconomia #34: Rumo à transição verde: A integração de cadeias produtivas como agente transformador

A edição do dia 19 de julho de 2023 do Café com Bioeconomia reuniu Edvaldo de Morais (Líder da Divisão de Biorrefinarias & Recursos Naturais do LNBR do CNPEM) e Mateus Chagas (Pesquisador da Divisão de Biorrefinarias & Recursos Naturais do LNBR do CNPEM). O encontro, que acontece quinzenalmente, foi mediado por Patrícia Toledo (Gerente de Inovação e da Unidade Embrapii Biotecnologia do CNPEM).

Patrícia indagou os participantes sobre o papel real do hidrogênio na transição verde no contexto brasileiro e sobre a importância da diversificação de portfólio de produtos das empresas. Os principais gargalos enfrentados pela indústria para a integração das cadeias produtivas também foram discutidos durante o evento, bem como o propósito das análises de ciclo de vida como suporte para a transição para uma economia mais circular e sustentável. Os participantes também foram questionados sobre como as biorrefinarias podem contribuir com o desenvolvimento regional do país fora do eixo sul-sudeste e sobre como a exploração da biodiversidade está sendo vista pela indústria.

Edvaldo ressaltou que o hidrogênio tem papel fundamental na estratégia brasileira como gerador de energia, mas mais ainda como insumo, especialmente para a siderurgia e para a produção de fertilizantes. Ele indicou que além das análises de ciclo de vida, que foram sendo incorporadas aos serviços do CNPEM, agora são disponibilizados serviços de avaliação ecossistêmica, que analisam o uso racional de recursos naturais, além de modelar os ecossistemas. Para ele, o Brasil tem oportunidade única de exploração da diversidade biológica, e nesse sentido, Patrícia complementou informando que o CNPEM está mapeando bancos de dados da biodiversidade brasileira.

Mateus indicou que explorar outras possibilidades de incorporação do hidrogênio como insumo nas cadeias produtivas pode ser interessante para o país. Para ele, as soluções mais interessantes para Europa e EUA podem não ser as mais vantajosas para o Brasil e que, mesmo dentro do país, é importante avaliar as características de cada região. Em termos de biodiversidade, Mateus citou o uso da macaúba como exemplo de espécie nativa que pode ser usada no desenvolvimento de produtos de alto valor agregado. Mateus discutiu ainda que plantas industriais relacionadas à bioeconomia são, muitas vezes, pioneiras. Dessa maneira, a viabilidade econômica e a resistência à inovação foram indicadas por ele como alguns dos gargalos principais para a integração das cadeias produtivas.

O Café com Bioeconomia é um evento quinzenal, on-line e interativo, no qual palestrantes e público discutem temas relevantes para a área. Quer receber nossa agenda e participar? Inscreva-se em: https://portaldebioeconomia.com/ 

Quer ouvir este e outros Cafés? Estamos no Spotify em Café com Bioeconomia.

Notícia | 21/07/2023 | 0 comentários | Publicado por Anônimo
Notícia
sem imagem

Inscrições abertas para projeto "Amazônia em Casa, Floresta em Pé" até 31 de julho

O programa "Amazônia em Casa, Floresta em Pé" irá selecionar até 50 negócios que comercializem produtos da Amazônia e estejam focados em manter a floresta de pé. As incrições vão até dia 31 de julho de 2023. Para se inscrever, clique aqui.

Notícia | 21/07/2023 | 0 comentários | Publicado por Anônimo
Notícia
sem imagem

Café com Bioeconomia #35: Infraestrutura de pesquisa para a bioeconomia

A edição do dia 2 de agosto de 2023 do Café com Bioeconomia reuniu Cristiano Guimarães (Fundador e CSO na Nintx), Francisco Razzolini (CTO da Klabin) e Patrícia Léo (Gerente técnica do Laboratório de Biotecnologia Industrial do IPT). O encontro, que acontece quinzenalmente, foi mediado por Paulo Coutinho (Pesquisador-chefe do Instituto SENAI de Inovação em Biossintéticos e Fibras do SENAI CETIQT).


Paulo iniciou a discussão questionando os participantes sobre a relação entre ICTs e empresas e sobre a situação atual do Brasil em termos de infraestrutura para pesquisa em bioeconomia. Ao longo da conversa foram levantadas possíveis ações para solucionar a escassez de equipamentos, particularmente em escala piloto no país. Paulo destacou que o Brasil não conhece plenamente sua biodiversidade e comentou que além de haver uma série de bancos de dados de moléculas no país que não são compatíveis entre si, a descoberta das moléculas requer grande esforço de automação.  Nesse sentido, ele citou uma nota técnica que será lançada pelo Instituto SENAI de Inovação em Biossintéticos e Fibras sobre o que está sendo chamado de biodiversity business discovery, e consiste na criação de diferentes pipelines para identificar compostos de interesse para diferentes setores industriais.

Cristiano pontuou que um dos desafios para os empreendedores e prestadores de serviço é inconstância das demandas por parte das empresas. Segundo ele, torna-se difícil custear os investimentos sem essa regularidade. Por isso, a Nintx possui parceria com o CNPEM, um dos únicos centros no Brasil capazes de auxiliar com a bioprospecção de suas moléculas. Cristiano ressaltou ainda que é necessário pensar a longo prazo para gerar projetos mais disruptivos, que realmente transformem o país.

Francisco enumerou uma série de iniciativas da Klabin em inovação e indicou que o Brasil evoluiu muito ao longo dos anos em termos de competências, mas ainda precisa evoluir em questões de suporte e infraestrutura, apesar de hoje já direcionar esforços para isso.  Para ele, é mais interessante realizar projetos no país ao invés de no exterior, pois há uma carga de impostos muito pesada para contratações internacionais.

Para Patrícia, o escalonamento dos processos ainda é um desafio, particularmente para organismos geneticamente modificados. Nesse sentido, considera fundamental haver mais sinergia entre organizações públicas e privadas para viabilizar avanços nesse aspecto. 

O Café com Bioeconomia é um evento quinzenal, on-line e interativo, no qual palestrantes e público discutem temas relevantes para a área. Quer receber nossa agenda e participar? Inscreva-se em: https://portaldebioeconomia.com/ 

Quer ouvir este e outros Cafés? Estamos no Spotify em Café com Bioeconomia.
 

Notícia | 18/08/2023 | 0 comentários | Publicado por Anônimo
Notícia
sem imagem

Instituto SENAI de Inovação em Biossintéticos e Fibras desenvolve biocorante azul

O Instituto SENAI de Inovação em Biossintéticos e Fibras desenvolveu biocorante azul, que pode substituir o índigo. O processo consiste em alterativa sustentável para a indústria têxtil e cosmética. Para ler mais, clique aqui.

Notícia | 05/09/2023 | 0 comentários | Publicado por Anônimo
Notícia
sem imagem

PPBio e Idesam detalham bioplástico produzido a partir da casca da castanha do Brasil

Parceria entre PPBio, Idesam, empresas, ONGs e pesquisadores de universidades, entra em fase montagem da cadeia de produção. Para saber mais, clique aqui.

Notícia | 05/09/2023 | 0 comentários | Publicado por Anônimo
Notícia
sem imagem

Café com Bioeconomia #36: Bioeconomia brasileira e colombiana: Lições e desafios

A edição do dia 16 de agosto de 2023 do Café com Bioeconomia reuniu representantes do Brasil e da Colômbia para um bate-papo sobre lições e desafios do desenvolvimento da bioeconomia de ambos os países.

O encontro, que acontece quinzenalmente, foi mediado por Victória Santos (Coordenadora da Iniciativa de Descarbonização da Indústria do Instituto Clima e Sociedade) e contou com a presença de Claudia Betancur (Diretora executiva da Biointropic), Claudia Montoya (Pesquisadora da Universidade Católica de Manizales), Liliana Ayala (Coordenadora do programa Colômbia Bio do Ministério da Ciência, Tecnologia e Inovação), Cláudia Magalhães (Analista em C&T do MCTI), Rosângela de Souza (Assistente em C&T no MCTI) e Nabil Kadri (Superintendente de Meio Ambiente do BNDES). 

Victória iniciou a conversa questionando os participantes sobre como as organizações públicas e privadas de ambas as nações estão atuando no fortalecimento da pauta de bioeconomia. Os principais acertos e desafios encontrados na implementação da agenda também foram discutidos, assim como o desenvolvimento de projetos de cooperação entre Brasil e Colômbia e suas principais particularidades. 

Claudia Betancur vislumbra maior potencial no desenvolvimento dos mercados de cosméticos, medicamentos e bioinsumos, com destaque para biorrefinarias, e mencionou que a Biointropic apoia a gestão de projetos de bioeconomia e de inovação aberta. Para ela, é fundamental auxiliar micro e pequenas empresas a crescer e colocar seus produtos no mercado.

Claudia Montoya pontuou que a aliança entre a academia e a indústria, a capacitação dos colaboradores e a dinamização orgânica são os principais gargalos frente à temática e frisou que o governo Colombiano vem estimulando a criação de programas que impulsionam projetos de PD&I. Claudia ressaltou ainda que a cooperação entre os países é um ponto chave para a aceleração da bioeconomia. 

Cláudia Magalhães mencionou que o MCTI já trabalha há alguns anos com cadeias produtivas da bioeconomia através do desenvolvimento de projetos piloto, em que são empregadas matérias primas como o açaí, licuri e pirarucu. Rosângela complementou informando que tais projetos são focados em auxiliar as comunidades e os povos tradicionais da Amazônia. Para Cláudia, a bioeconomia tem que ser pensada de forma integrada e sistêmica pelos países amazônicos.

Liliana colocou que a criação do programa Colômbia Bio permitiu o desenvolvimento de diferentes estratégias, que antes não recebiam destaque na Colômbia, além de envolver as comunidades locais. Liliana ressaltou também a necessidade articular um sistema para harmonizar as muitas iniciativas já existentes no país.

Nabil explicou que o BNDES vem fortalecendo a integração regional através de diálogos sobre a Amazônia e ressaltou que o Brasil possui um conjunto enorme de experiências bem-sucedidas relacionadas à bioeconomia, porém ainda encontra o desafio de transformar os projetos em políticas de escala. Ele entende que já houve progresso através da lei da inovação e da Embrapii, porém ainda é preciso avançar na dinamização orgânica de tais iniciativas.
De modo geral, os representantes da Colômbia e do Brasil demonstraram interesse em continuar fortalecendo os laços para o intercâmbio de boas práticas e destacaram a importância de participar da Rede Latino-Americana de Bioeconomia para o benefício da região.

O Café com Bioeconomia é um evento quinzenal, on-line e interativo, no qual palestrantes e público discutem temas relevantes para a área. Quer receber nossa agenda e participar? Inscreva-se em: https://portaldebioeconomia.com/ 

Quer ouvir este e outros Cafés? Estamos no Spotify em Café com Bioeconomia.

------------- \---------------\ ---------------

La edición del 16 de agosto de 2023 de Café con Bioeconomía reunió a representantes del Brasil y Colombia para una charla sobre las lecciones y desafíos del desarrollo de la bioeconomía en ambos países.


La reunión, que se lleva a cabo cada quince días, fue moderada por Victória Santos (Coordinadora de la Iniciativa de Descarbonización Industrial del Instituto Clima y Sociedad) y contó con la presencia de Claudia Betancur (Directora ejecutiva de la empresa Biointropic), Claudia Montoya (Investigadora de la Universidad Católica de Manizales), Liliana Ayala (Coordinadora del programa Colombia Bio del Ministerio de Ciencia, Tecnología e Innovación), Cláudia Magalhães (Analista en C&T del MCTI), Rosângela de Souza (Asistente en C&T en el MCTI) y Nabil Kadri (Superintendente de Medio Ambiente del BNDES).


Victória inició la conversación cuestionando a los participantes sobre cómo las organizaciones públicas y privadas de ambos países están contribuyendo al fortalecimiento de la agenda de bioeconomía. Seguidamente se discutieron los principales logros y desafíos en la implementación de la agenda, así como el desarrollo de proyectos de cooperación entre Brasil y Colombia y sus particularidades principales.


Claudia Betancur ve un mayor potencial en el desarrollo de los mercados de cosméticos, medicamentos y bioinsumos, destacando las biorrefinerías, y mencionó que Biointropic apoya la gestión de proyectos en bioeconomía e innovación abierta. Para ella, es fundamental ayudar a las micro y pequeñas empresas a crecer y poner sus productos en el mercado.


Claudia Montoya señaló que la alianza entre la academia y la industria, la capacitación de los empleados y la dinamización orgánica son los principales desafíos frente al tema. Asimismo, destacó que el gobierno colombiano está estimulando la creación de programas que impulsan proyectos de I+D+i. y destinando esfuerzos para el desarrollo de nuevos productos y negocios. Claudia enfatizó que la cooperación entre los países es clave para acelerar la bioeconomía.


Cláudia Magalhães mencionó que el MCTI ha estado trabajando durante varios años en cadenas productivas de bioeconomía a través del desarrollo de proyectos piloto que utilizan materias primas como el açaí, licuri y pirarucu. Rosângela complementó la información indicando que estos proyectos se centran en ayudar a las comunidades y pueblos tradicionales de la Amazonia. Para Cláudia, la bioeconomía debe ser considerada de manera integrada y sistémica por los países amazónicos.


Liliana Ayala mencionó que la creación del programa Colombia Bio ha permitido el desarrollo de diferentes estrategias que antes no tenían visibilidad en Colombia, además de involucrar a las comunidades locales. Liliana también resaltó la necesidad de articular un sistema para armonizar las numerosas iniciativas y de incentivar la comercialización de los diversos productos ya existentes en dicho país.


Nabil Kadri explicó que el BNDES está fortaleciendo la integración regional por medio de diálogos sobre la Amazonia y destacó que el Brasil tiene una gran cantidad de experiencias exitosas relacionadas con bioeconomía, pero que aún enfrenta el desafío de convertir los proyectos en políticas a gran escala. Él entiende que ha habido avances a través de la ley de innovación y vía Embrapii, sin embargo, aún es necesario avanzar en la dinamización orgánica de estas iniciativas.


De manera general, las y los representantes de Colombia y Brasil demostraron interés en continuar estrechando lazos para el intercambio de buenas prácticas y resaltaron la importancia de participar en la Red Latinoamericana de Bioeconomía en beneficio de la región.


Café con Bioeconomía es un evento quincenal en línea e interactivo en el que los ponentes y el público discuten temas relevantes sobre el tema. ¿Quiere recibir nuestra agenda y participar? Regístrese en: https://portaldebioeconomia.com/ 
  
¿Quiere escuchar este y otros Cafés? Estamos en Spotify como Café con Bioeconomía.

Notícia | 11/09/2023 | 0 comentários | Publicado por Anônimo
Notícia
sem imagem

Café com Bioeconomia #37 - Mapeamento de Oportunidades a partir da Biodiversidade Brasileira

A edição do dia 30 de agosto de 2023 do Café com Bioeconomia reuniu Denise Ferreira (Gerente Nacional do CAS), Lucas Cespedes (Consultor Pesquisador do Instituto SENAI de Inovação em Biossintéticos e Fibras do SENAI CETIQT) e Mário Frota Júnior (Presidente-Diretor da Regenera Moléculas do Mar). O encontro, que acontece quinzenalmente, foi mediado por Cláudia Magalhães (Analista em C&T do MCTI).


Cláudia iniciou a conversa mencionando a riqueza da biodiversidade brasileira. Nesse sentido, questionou os participantes sobre potenciais ações para que bioeconomia do país não permaneça baseada apenas no extrativismo. Os principais desafios encontrados pela indústria e pela academia frente à bioeconomia foram ressaltados durante o evento, assim como a atuação do governo para estimular a união entre ICTs e empresas. Os participantes também foram indagados sobre o atual cenário brasileiro no depósito de patentes.


Denise colocou que ainda há gargalos para que a biodiversidade seja transformada em produtos competitivos e mencionou que hoje existem muitos dados descentralizados, que acabam não se transformando em conhecimento. Para ela, a nova geração está preocupada com a rastreabilidade das matérias-primas. Quanto às patentes, Denise ressaltou a ocorrência de mudanças significativas no INPI nos últimos anos, o que acelerou o processo de depósito.


Lucas indicou que o Instituto SENAI de Inovação (ISI) em Biossintéticos e Fibras possui diversas iniciativas relacionadas ao aproveitamento da biodiversidade e consiste em uma unidade credenciada à Embrapii, o que possibilita a divisão de riscos do projeto com as empresas. Lucas citou ainda que a instituição irá lançar uma nota técnica que trata da automação na exploração de novas moléculas. 


Mário pontou que a Regenera possui um mapeamento de microrganismos que ainda não estão descritos na literatura e, que atualmente, a empresa consegue transformar ativos do fundo do mar em produtos diferenciados no mercado. Além disso, destacou a importância de formalizar parcerias entre empresas e instituições a fim de compartilhar riscos.


O Café com Bioeconomia é um evento quinzenal, on-line e interativo, no qual palestrantes e público discutem temas relevantes para a área. Quer receber nossa agenda e participar? Inscreva-se em: https://portaldebioeconomia.com/


Quer ouvir este e outros Cafés? Estamos no Spotify em Café com Bioeconomia.

Notícia | 11/09/2023 | 0 comentários | Publicado por Anônimo
Notícia
sem imagem

Café #40 – Bioeconomia circular: Estratégias circulares para um mundo sustentável

A edição do dia 11 de outubro de 2023 do Café com Bioeconomia reuniu Arilma Tavares (Coordenadora do Núcleo de Sustentabilidade e Meio Ambiente do SENAI CIMATEC), Beatriz Luz (Fundadora da Exchange 4 Change Brasil) e Marilia Nery (CEO da Amazon Reuse). O encontro, que acontece quinzenalmente, foi mediado por Carolina Zoccoli (Doutoranda do PPED/IE/UFRJ e pesquisadora em Economia Circular).

Carolina iniciou a discussão confrontando a perspectiva de crescimento populacional com a produção sustentável e solicitando às participantes que indicassem como a bioeconomia se relaciona com as propostas da circularidade. Carolina indagou ainda sobre os desafios para que a pauta supere obstáculos, pontuando a cultura de sustentabilidade, formação profissional, desafios sociais, indicadores, entre outros.


Arilma pontuou que, para além de viabilizar o retorno financeiro, o desafio é repensar os processos. Além disso, a participante abordou o conceito de ética e de pensamento sistêmico para avaliar os impactos de diversos ângulos.


Beatriz ressaltou que a economia circular não resolve o problema dos resíduos, mas redefine os sistemas e elimina a visão de poluição. Ela citou um case de sucesso de uma indústria que empregava apenas 6% do coco de babaçu e atualmente consegue aproveitar a matéria-prima em sua totalidade. Para Beatriz, para inspirar mudança é preciso nova narrativa e cultura.


Marilia destacou que é necessário pensar em soluções dentro das ciências sociais, uma vez que a circularidade e suas ferramentas, como reutilização, reciclagem, logística reversa, educação ambiental, possuem potencial de transformação social. Para ela deve haver uma reflexão sobre nossos hábitos para integrar o ser social às tecnologias.


O Café com Bioeconomia é um evento quinzenal, on-line e interativo, no qual palestrantes e público discutem temas relevantes para a área. Quer receber nossa agenda e participar? Inscreva-se em: https://portaldebioeconomia.com/


Quer ouvir este e outros Cafés? Estamos no Spotify em Café com Bioeconomia.

Notícia | 24/10/2023 | 0 comentários | Publicado por Anônimo
Notícia
sem imagem

Café #41 – Prospectando alternativas proteicas sustentáveis para o futuro

A edição do dia 25 de outubro de 2023 do Café com Bioeconomia reuniu Anna Paola Pierucci (Coordenadora de Relações Internacionais do Instituto de Nutrição Josué de Castro da UFRJ), Cristiana Ambiel (Gerente de Ciência e Tecnologia do The Good Food Institute) e Ricardo Laurino (Presidente da Sociedade Vegetariana Brasileira). O encontro, que acontece quinzenalmente, foi mediado por Fernanda Cardoso (Pesquisadora do Instituto SENAI de Inovação em Biossintéticos e Fibras).


Fernanda iniciou o debate solicitando aos convidados que indicassem as principais oportunidades e desafios ligados à produção de proteínas alternativas no Brasil em termos tecnológicos, geográficos e culturais. Além disso, as tendências de mercado da área e vantagens nutricionais também foram tema da discussão.


Anna Paola destacou que ao abordar as proteínas alternativas devem ser consideradas questões que vão desde a produção no campo até a mesa do consumidor. Ela citou oportunidades relacionadas à obtenção de ingredientes a partir da biodiversidade brasileira e de coprodutos que atualmente não são aproveitados. Em termos de desafios, foram citados a logística de distribuição dos alimentos, a oferta constante das matérias-primas, a escala de produção, e a necessidade de mudanças de hábitos dos grandes produtores, que possuem cadeias produtivas voltadas para produtos de origem animal. Anna Paola pontuou ainda que estudos mais recentes indicam que as proteínas vegetais promovem maior biodiversidade da microbiota intestinal e, consequentemente, impactam na redução do risco de determinadas doenças.


Cristiana ressaltou que por muito tempo o mercado priorizou matrizes de origem animal como fontes de proteínas na dieta, mas que atualmente são vislumbradas outras fontes proteicas e de nutrientes para a alimentação. Nesse contexto, para ela o grande desafio é tornar os produtos acessíveis, além de melhorar aspectos sensoriais para que tenham maior aceitação pela população. Cristiana explicou que a fonte de proteína mais promissora no Brasil é a do feijão, mas pontuou que os produtos derivados de processos fermentativos são uma tendência, e que também existe a possibilidade de utilização de microrganismos como fontes proteicas em formulações alimentícias.


Ricardo indicou que por ser um mercado recente, é natural que existam desafios a serem vencidos em termos de regulamentações e desenvolvimento da cadeia produtiva. Pesquisas internas da SVB indicaram que produtos com o selo vegano dão mais segurança ao consumidor. Ricardo explicou ainda que as empresas tendem a desenvolver produtos com características semelhantes aos produtos comerciais já existentes, mas que há um leque de possibilidades na criação produtos plant-based com experiências sensoriais que surpreendam o consumidor. Ele citou como tendência de longo prazo a criação de equipamentos domésticos, como impressoras 3D, que possibilitem à população formular o produto em suas residências.


O Café com Bioeconomia é um evento quinzenal, on-line e interativo, no qual palestrantes e público discutem temas relevantes para a área. Quer receber nossa agenda e participar? Inscreva-se em: https://portaldebioeconomia.com/


Quer ouvir este e outros Cafés? Estamos no Spotify em Café com Bioeconomia.

Notícia | 27/10/2023 | 0 comentários | Publicado por Anônimo
Notícia

Mercado de CBios segue em alta

Na primeira quinzena de maio, os créditos de descarbonização (CBios), criados pelo programa RenovaBio, registraram seu maior valor desde o início do programa, em 2020, com um preço médio de R$ 100,80 por título. Clique aqui e saiba mais sobre esse novo mercado.
Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

LanzaTech e Danone se unem para produzir MEG de CO2

LanzaTech, especialista em conversão de carbono, e Danone, gigante de alimentos, desenvolveram juntas uma tecnologia que permite transformar CO2 em monoetilenoglicol (MEG), que é um componente essencial na produção do polietileno tereftalato (PET) que pode ser utilizado na produção de garrafas, fibras, resina, entre outros produtos.

Utilizando uma bactéria modificada geneticamente, esta nova tecnologia irá produzir MEG a partir de CO2 emitido de resíduos de biomassa ou usinas siderúrgicas.

Clique aqui e saiba mais.

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

SENAI CETIQT e Musa Fiber criam tecido a partir de casca de banana

A indústria caminha para uma moda sustentável, versátil e moderna com a ajuda do desenvolvimento de pesquisas inovadoras que tem contribuído com a criação de tecidos a base de resíduos de produtos alimentares. Com o objetivo de agregar valor ao resíduo agrícola da bananicultura, o SENAI CETIQT e a Musa Fiber desenvolveram produtos têxteis, a partir da fibra de banana.

Clique aqui e confira o resultado desta parceria.

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Cientistas da UFC criam biolubrificante em parceria com a Petrobras

Com o objetivo de reduzir o uso de recursos de origem fóssil empregando matérias-primas renováveis um novo lubrificante foi desenvolvido. Este produto é fruto de uma parceria da Petrobras com cientistas da Universidade Federal do Ceará.
O biolubrificante pode ser obtido por rota química de soja, girassol, babaçu, algodão, carnaúba, entre outras oleaginosas, destacando-se o resultado quando é produzido a partir da mamona.

Clique aqui e saiba mais.

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Braskem e Veolia iniciam Projeto Energia Limpa e Eficiente no nordeste

Com início das operações previsto para o final de 2023, Braskem e Veolia iniciam obras de construção de usina de biomassa em Alagoas.

Os investimentos estão na ordem de R$ 400 milhões e a planta terá capacidade para gerar 900 mil toneladas de vapor/ano a partir de biomassa de eucalipto e de outros tipos com uma redução anual de aproximadamente 150 mil toneladas de Gases de Efeito Estufa (GEE).

Clique aqui e saiba mais.

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Em encontro Frente Parlamentar da Bioeconomia e convidados discutem modelos para uma economia circular

No dia 08 de junho, a Frente Parlamentar da Bioeconomia realizou um encontro para debater o tema "Economia Circular: Um modelo econômico para o desenvolvimento sustentável no Brasil", em Brasília.

No evento, além de membros do executivo, parlamentares e representantes do setor produtivo apresentaram as oportunidades para alavancar o setor em um debate enriquecedor, com o alerta da importância do Brasil se preparar para o mercado internacional.

Clique aqui e confira o evento na íntegra.

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Como o Brasil pode se tornar um grande player da energia verde

Pesquisadores da ESALQ-USP discutem o potencial brasileiro para se tornar um grande player na transição energética. Neste contexto, os autores destacam a importância do hidrogênio verde como rota energética para a descarbonização dos transportes, principalmente a partir de bioinsumos.

Clique aqui e acesse ao artigo completo.

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Startup.Tech - Conexsus e Senai CETIQT abrem chamada para startups e empresas interessadas em solucionar desafios da sociobioeconomia amazônica

*texto produzido por Bruno Maranhão

O Instituto Senai de Inovação em Biossintéticos e Fibras (ISI B&F), do SENAI CETIQT, e a Conexsus tornam pública a chamada para a segunda edição do Startup.Tech, iniciativa do ISI B&F que conecta demandas de indústrias às soluções de startups ou empresas de base tecnológica.

A parceria busca soluções para os desafios da sociobioeconomia da Amazônia com o objetivo de fomentar a economia sustentável e a conservação da biodiversidade do território. “O único caminho para conservação desta importante floresta, e dos povos que dependem dela, é aquele no qual as pessoas e a natureza prosperam juntas”, afirma Maíra Vasconcellos, da área de Acesso a Mercado da Conexsus.

Segundo ela, a inovação social, sob a ótica da floresta e dos seus povos, “garante desenvolvimento sustentável às presentes e futuras gerações”, e é essa a principal motivação da iniciativa, que recebe inscrições ao longo de todo o mês de agosto.

Qual o objetivo da chamada

Fomentar a sociobioeconomia amazônica por meio de apoio técnico e financeiro a startups e/ou empresas que buscam desenvolver soluções inovadoras e sustentáveis no território, valorizando seus recursos naturais e os saberes dos povos da floresta.

Quem pode participar

  • Startups de base tecnológica com CNPJ ativo há até dez anos - completados antes da data da contratação do projeto;
  • Empresas de base tecnológica que possuam CNAE Industrial Primário;
  • Médias e grandes empresas que atuarão como demandantes de soluções tecnológicas envolvendo sociobioeconomia amazônica.

Quais benefícios serão oferecidos

As startups e empresas de base tecnológica selecionadas pela iniciativa serão beneficiadas com:

● Acesso ao Habitat de Inovação do ISI B&F, localizado no Parque Tecnológico da Universidade Federal do Rio de Janeiro (UFRJ), para reuniões e interações com potenciais parceiros;
● Interação com equipe multidisciplinar altamente qualificada, aceleradoras, mentores de negócios e outros parceiros do ISI B&F;
● Financiamentos a partir de R$180 mil reais, com a possibilidade de aplicar R$25 mil das contrapartidas financeiras em serviços de aceleração e mentoria de negócios com organizações parceiras.

Ao final, o plano apresentado pela startup ou empresa, em conjunto com a indústria demandante, deverá ter sua perspectiva de mercado e produto mínimo viável (MVP) validado em até um ano.

Serão selecionados até 03 (três) projetos de startups ou empresas de base tecnológica para financiamento pela Conexsus e ISI B&F.

Para acessar o edital da chamada e saber mais informações sobre participar, clique aqui.

Instituto Conexões Sustentáveis

O Instituto Conexões Sustentáveis – Conexsus é uma organização da sociedade civil de interesse público (OSCIP) que tem como missão ativar o ecossistema de negócios comunitários de impacto socioambiental (NCIS), ampliando sua contribuição para a geração de renda no campo e conservação de florestas e biomas naturais. Estes negócios são cooperativas e associações produtivas que atuam nas cadeias da alimentação saudável e sustentável, agroflorestal, da sociobiodiversidade e do extrativismo, da pesca artesanal sustentável e do manejo florestal comunitário. Estas organizações geram benefícios ambientais, contribuindo para a conservação de florestas e biomas, a resiliência dos territórios e a mitigação e adaptação às mudanças do clima.

Instituto Senai de Inovação em Biossintéticos e Fibras

O Instituto SENAI de inovação em Biossintéticos e Fibras é referência nacional em PD&I para a indústria e atua na identificação e no desenvolvimento de novos produtos e processos químicos, bioquímicos e têxteis, a partir de recursos renováveis e não renováveis.

O Instituto integra o SENAI CETIQT e desenvolve processos de identificação de oportunidades e soluções para empresas por meio de análises tecnológicas, mercadológicas e de sustentabilidade, contribuindo para a tomada de decisão e a integração do ecossistema de inovação. Além disso, desenvolve projetos de alto valor agregado, alinhados às tendências tecnológicas da indústria de processos químicos e bioquímicos, tendo como diferencial a intensificação de processos e a biologia sintética, de acordo com as demandas atuais e perspectivas futuras.

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Embrapa desenvolve película biodegradável para embalar alimentos

Pesquisadores da parceria entre a Embrapa, a UFSCar e a universidade francesa de Grenoble Alpes conseguiram incorporar nanocristais de celulose à gelatina. O resultado foi uma película resistente para proteger alimentos, antimicrobiana, antioxidante, estável, biodegradável e até comestível. A técnica empregada na produção permite o uso de soluções à base de água, sem a necessidade de empregar aditivos de processamento, além da vantagem de possuir um tempo de processamento mais curto com perspectiva para produção em escala industrial.

Clique aqui e saiba mais.

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

A bioeconomia como parte da solução para os desafios da mudança climática

Em entrevista ao website Indústria Verde, Paulo Coutinho, pesquisador-chefe do Instituto SENAI de Inovação em Biossintéticos e Fibras, falou da importância dos modelos de produção da bioeconomia para a transição para uma economia de baixo carbono no Brasil.

Clique aqui e leia a entrevista completa.

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Cada vez mais usinas de cana-de-açúcar consideram a produção de Biogás e Biometano

Incentivadas pelo programa Metano Zero lançado pelo Governo Federal que visa incentivar a geração de biometano e d biogás através do auxílio de bancos públicos, as usinas de cana-de-açúcar passaram a incluir em seus planos o investimento em novas plantas industriais de biogás e biometano. Inclusive os grandes grupos do setor estão firmando parcerias com universidades renomadas e financiando pesquisas na área de biocombustíveis e biogás.

Clique aqui e saiba mais.

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Matérias-primas renováveis são utilizadas na produção de ácidos orgânicos

Pesquisadores da Embrapa Agroenergia desenvolveram bioprocessos que exigem poucas adaptações nas instalações industriais atuais para produzir os ácidos lático, cítrico, xilônico e kójico, muito utilizados nas indústrias alimentícia, química, cosmética e farmacêutica, bem como na agricultura. Sendo possível agregar valor a biomassas e residuos agroindustriais de cadeias relacionadas a produção de biocombustíveis.

Clique aqui e saiba mais.

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Estudo da Embrapa apresenta os resultados da expansão sustentável do cacau

Durante a programação do Chocolat Xingu 2022 – Festival Internacional do Cacau e Chocolate, no Pará, a Embrapa Amazônia Oriental apresentou os resultados do estudo “A (Theobroma cacao) no estado do Pará e sua contribuição para a recuperação de áreas degradadas e redução do fogo”.

Clique aqui para saber mais e acesse o estudo completo.

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Acordo entre EMBRAPII e IDESAM beneficiarão pequenas empresas e startups da região Amazônica

Dia 1º de julho, durante a Expo Amazônia Bio&TIC, a Empresa Brasileira de Inovação Industrial (EMBRAPII) e o IDESAM – Instituto de Conservação e Desenvolvimento Sustentável da Amazônia assinam um acordo de cooperação com o objetivo de beneficiar diretamente a inovação por pequenas empresas e startups que atuam na região, preservando a biodiversidade e a sustentabilidade ao mesmo tempo em que fomentam a produtividade local.

Clique aqui para saber mais

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Em parceira Petrobras e Vallourec vão testar uso de óleo vegetal no refino

O objeto da parceria entre Petrobras e Vallorec é o bio-óleo — óleo de origem vegetal, 100% renovável que já está em fase de testes no Centro de Pesquisas e Inovação da Petrobras (Cenpes) e tem potencial para ser utilizado como matéria-prima na geração de produtos renováveis.


Neste acordo as empresas vão avaliar oportunidades de cooperação tecnológica na produção e uso do bio-óleo, resultante da condensação de gases produzidos durante a transformação da madeira em carvão vegetal.

Clique aqui para saber mais.

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Couro de micélio pode ser um dos aliados do mundo da moda rumo à sustentabilidade

Sendo uma das indústrias mais poluentes do mundo emitindo 10% do carbono global, a moda tem buscado soluções alternativas para ser reduzir suas contribuições as mudanças climáticas. Neste contexto o couro de micélio, feito com a parte vegetativa do fungo de cogumelos, surge como uma alternativa mais sustentável, para substituir o couro bovino e o couro de plástico sintético. Clique aqui para saber mais.
Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Juntas Petrobras e Braskem irão impulsionar tecnologias e produtos mais sustentáveis

A Petrobras e a Braskem fecharam parceria para prospectar oportunidades de cooperação tecnológica e negócios que sejam mais sustentáveis com foco no desenvolvimento de produtos circulares com menor emissão de CO2.

A parceria possui três linhas de atuação: uso de matérias-primas renováveis para a produção de insumos petroquímicos mais sustentáveis; estímulo à economia circular no processo de refino (com uso de plástico reciclado) e estudo para avaliar oportunidades de desenvolvimento de um “Hub” de Captura, Uso e Armazenamento Geológico de CO2 (ou Hub de CCUS), com potencial de reduzir a emissão de gases de efeito estufa para a atmosfera.

Clique aqui e saiba mais.

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Amyris inicia operação de sua nova planta em Barra Bonita

Em press release, dia 23 de junho, a Amyris, empresa americana de biotecnologia com sede no Vale do Silício, nos Estados Unidos, anunciou o início da operação do processo industrial de fermentação de sua nova planta em Barra Bonita-SP.

A empresa foca no desenvolvimento de ingredientes sustentáveis utilizando fontes de carbono renováveis, como a cana-de-açúcar.

Clique aqui e saiba mais.

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Hidrogênio Verde: a nova commoditie energética do Brasil?

O hidrogênio, pode ser usado como fonte de energia para diversas aplicações despertando o interesse do mercado externo. Segundo Paulo Emílio Valadão, presidente da Associação Brasileira de Hidrogênio (ABH2), diante da expectativa de crescimento e demanda, as empresas brasileiras estão olhando com extremo interesse ao que pode ser considerado a nova “commoditie energética”.

Clique aqui e saiba mais.

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

SENAI CETIQT debate a Biologia Sintética como um dos pilares para o desenvolvimento da bioeconomia

*texto produzido por Aimee Farias

No dia 25 de maio, aconteceu mais uma edição do Café com Bioeconomia, um espaço de diálogo onde convidados e público podem interagir para discutir temas centrais da bioeconomia.

Nesta edição, o Café abordou como a biologia sintética pode ser uma grande aliada no desenvolvimento da bioeconomia. O ‘Café’ contou com a presença de Aline Dumaresq – especialista em Engenharia Metabólica e Biotecnologia na Braskem; Fernando Torres – pesquisador no INCT – Biologia Sintética; Maria Astolfi – pesquisadora no JBEI Join BioEnergy Institute, Universidade da Califórnia, e foi moderado por Lucas Cespedes – pesquisador na Coordenação de Biotecnologia do SENAI CETIQT.

Lucas Cespedes iniciou o bate-papo convidando os participantes a trazerem suas perspectivas a respeito do papel da biologia sintética na bioeconomia. Aline declarou que, de fato, enxerga a biologia sintética como um pilar: “Ela sozinha é difícil de caminhar.  Nós temos diversas outras tecnologias que vão convergir para entregar soluções, mas o que a biologia sintética traz são novas possibilidades, soluções que antes eram impossíveis. Eu vejo a biologia sintética como uma importante ferramenta para trazer inovação. Além disso, é importante mencionar que o papel dela para trazer soluções é fundamental, mas também precisamos pensar que isso talvez venha cominado com processos químicos ou processos enzimáticos, então, talvez, a solução ideal nem sempre venha sozinha. Por isso achei a definição como um ‘pilar’ muito adequada”, disse.

Em seguida, Fernando Torres afirmou que a grande vantagem da biologia sintética é a celeridade das novas ferramentas. “O tempo é uma variável de luxo! Hoje em dia não podemos mais esperar que as coisas aconteçam espontaneamente. Um exemplo clássico foi o que aconteceu com a pandemia da Covid-19. Em 2003, quando surgiu a epidemia de SARS-CoV, levaram dois meses para sequenciar o genoma do vírus. Em 2020, com a Covid-19, levamos algumas horas para sequenciar o genoma para saber com o que estávamos lidando. Quando me formei, jamais poderia imaginar que estaríamos fazendo o que nós estamos fazendo hoje em dia: sequenciando genomas em um dia”, ressalta.

Maria Atolfi, Pesquisadora no JBEI, reforçou o aspecto da acessibilidade e rapidez do sequenciamento na atualidade com uma de suas experiências na região norte do Brasil: “O sequenciamento é muito mais acessível hoje do que há 20 anos. Em Manaus, nós sequenciamos uma bactéria da biodiversidade amazônica para encontrar enzimas. A quantidade de dados genéticos gerados no Brasil que fomentam inteligência artificial para minerar, predizer novas enzimas, pode realmente ser o diferencial brasileiro. Nós temos tudo para fazer algo de escala nacional. Inteligência artificial mesclada com o poder da biodiversidade brasileira pode ser o nosso diferencial”.

Para encerrar a edição, Lucas pediu para que os convidados respondessem em qual bioproduto eles apostariam. Fernando Torres declara que, pessoalmente, investiria em biohidrogênio: “O hidrogênio deve ser um combustível que vai dominar o mercado nas próximas décadas. Existem microorganismos que produzem hidrogênio e eles podem ser alimentados por resíduos da sociedade que não teriam outro destino a não ser um lixão, ou então seriam queimados. Esses resíduos poderiam ser utilizados para a produção de hidrogênio”, declarou. Maria Atolfi, por outro lado, ressaltou que optaria por captar a atenção da sociedade através do paladar: “Eu investiria nessa parceria entre biodiversidade, metagenômica, genômica, inteligência artificial, como plataforma horizontal para impactar muitos mercados. Investiria em algo computacional pesadamente, e como prova de conceito, eu gostaria de ver exemplos em ingredientes de produtos alimentícios”. Já Aline, destacou que, como todo empresário, visa o retorno financeiro: “Pensando em lucrar, iria fazer algo de grande volume e provavelmente faria uma parceria com o Fernando para pegar o biohidrogênio dele para utilizar na fixação de CO2 e produzir uma commodity”, finalizou.

O Café com Bioeconomia é uma iniciativa do Portal de Bioeconomia e ocorre a cada 15 dias, das 8h30 às 10h e ficam disponíveis no Spotify ‘Café com Bioeconomia’.

Para receber a agenda dos próximos Cafés, cadastre-se aqui.

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Iniciativa Amazônia+10 anuncia primeira chamada de propostas

Elton Alisson, de Manaus | Agência FAPESP – Será lançado nos próximos dias o primeiro edital da iniciativa Amazônia+10, um programa de desenvolvimento de ciência, tecnologia e inovação (C,T&I) na Amazônia Legal criado em novembro de 2021 pela FAPESP, em parceria com os conselhos nacionais de Secretários Estaduais para Assuntos de CT&I (Consecti) e das Fundações Estaduais de Amparo à Pesquisa (Confap).

O anúncio foi feito ontem (09/06) durante a abertura do Fórum Nacional do Consecti e do Confap, que ocorre até hoje (10/06) em Manaus, no Amazonas.

“O propósito da iniciativa Amazônia+10 é mobilizar pesquisadores de todo o Brasil, especialmente da Amazônia Legal, dedicados a estudar e oferecer soluções concretas para os desafios para o desenvolvimento sustentável da Amazônia, que passam pela criação de alternativas de emprego e renda para a população que vive na região”, disse Carlos Américo Pacheco, diretor-presidente do Conselho Técnico-Administrativo (CTA) da FAPESP.

A iniciativa, que já conta com R$ 100 milhões da Fundação para os próximos cinco anos, apoiará projetos de pesquisa em colaboração voltados à conservação da biodiversidade e adaptação às mudanças climáticas, à proteção de populações e comunidades tradicionais, aos desafios urbanos e à bioeconomia como política de desenvolvimento econômico na região. A expectativa é que os recursos para o financiamento de pesquisa atinjam a marca dos R$ 500 milhões com a adesão de governos, empresas e organizações sociais.

O programa inicialmente reunia a FAPESP e os nove Estados da região amazônica: Amazonas, Acre, Rondônia, Roraima, Pará, Maranhão, Amapá, Tocantins e Mato Grosso. Agora, neste primeiro edital, 18 fundações de amparo à pesquisa estaduais (FAPs) participam: São Paulo, Amazonas, Rio de Janeiro, Pará, Paraná, Maranhão, Mato Grosso, Rio Grande do Sul, Amapá, Distrito Federal, Alagoas, Goiás, Paraíba, Pernambuco, Rondônia, Espírito Santo, Piauí e Santa Catarina.

"Esse é um trabalho construído com várias mãos. Temos a participação de praticamente todas as FAPs da Amazônia Legal, além do Consecti, do Confap e da FAPESP, que foi muito importante nesse processo", disse Márcia Perales, diretora-presidente da Fundação de Amparo à Pesquisa do Estado do Amazonas (Fapeam) e vice-presidente do Confap.

Os recursos previstos totalizam mais de R$ 50 milhões, dos quais R$ 30 milhões serão alocados pela FAPESP.

A expectativa é que outras FAPs e instituições públicas e privadas, além de empresas, também apoiem a chamada.

“Estabelecemos o prazo de até 15 de julho para outras FAPs e instituições públicas e privadas, além de empresas, aderirem ao edital. A meta é que a iniciativa envolva todas as 26 FAPs existentes, além de uma série de instituições nacionais e internacionais”, afirmou Pacheco.

Durante o evento, representantes do Ministério da Ciência, Tecnologia e Inovações (MCTI) anunciaram a adesão do órgão à iniciativa. Por sua vez, o governador do Amazonas, Wilson Miranda de Lima, anunciou que o Estado aportará R$ 5 milhões na chamada.

“Não tenho dúvida de que a Amazônia é a solução do planeta. Temos uma possibilidade imensa de realizar estudos na região que resultem na obtenção de matérias-primas e soluções para problemas que temos no dia a dia”, avaliou.

Conhecimento sobre a Amazônia

O objetivo da chamada de propostas da Amazônia+10 é apoiar a pesquisa científica e o desenvolvimento tecnológico em instituições de ensino e pesquisa e em empresas sobre os problemas atuais da Amazônia que tenham como foco o estreitamento das interações natureza-sociedade para o desenvolvimento sustentável e inclusivo da região.

Os projetos apoiados no âmbito do edital deverão avançar o conhecimento científico e tecnológico sobre a região propondo soluções baseadas na comunidade, ou seja, desenvolvidas conjuntamente com a população local, de forma a promover o bem-estar das populações amazônicas de forma consistente e a longo prazo.

“Não teremos propostas razoáveis para o desenvolvimento da Amazônia se não tivermos alternativas sustentáveis tanto do ponto de vista ambiental como econômico para a população de mais de 30 milhões de pessoas que vivem na região”, avaliou Pacheco.

As propostas devem ter a participação de pesquisadores responsáveis de pelo menos três Estados das FAPs que aderiram à chamada, sendo que um deles deve ser obrigatoriamente vinculado a instituições de ensino superior ou pesquisa situadas nos Estados da região amazônica.

Cada proposta deve ser constituída por um único projeto de pesquisa, preparado conjuntamente pelos proponentes. Um dos pesquisadores do grupo deve fazer a submissão das propostas ao Confap.

“O edital demonstra a sinergia que existe entre as diferentes unidades da Federação e mostra também a importância que tem a Amazônia nos contextos nacional e mundial”, disse Odir Antônio Dellagostin, presidente do Confap.

Os projetos apoiados deverão ter duração de, no máximo, três anos. 

“A Amazônia+10 demonstra a capacidade de integração entre diferentes atores, de dar a uma iniciativa pensada para uma região uma dimensão nacional. São 18 FAPs que aplicarão recursos financeiros, humanos, ideias e estratégias para que essa iniciativa dê certo”, disse Rafael Pontes Lima, presidente do Consecti.

Este texto foi originalmente publicado por Agência FAPESP de acordo com a licença Creative Commons CC-BY-NC-ND. Leia o original aqui.

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Transformação digital pode acelerar desenvolvimento do mercado de carbono

Com os efeitos das mudanças climáticas estando mais óbvios a cada dia o conceito de máquinas de captura de carbono se faz cada vez mais necessário. Além disso, o mercado de carbono vem expandindo nos últimos anos principalmente devido a cobrança da sociedade. Entretanto, para o avanço do mercado de carbono uma disrupção tecnológica faz-se necessária. Para que processos de certificação, auditoria e monitoramento de áreas e projetos de carbono possam migrar de processos manuais para controles que se beneficiam da eficiência de processos digitalizados. Clique aqui e saiba mais.
Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Biosoluções são grandes aliadas contra as mudanças climáticas.

Com os diversos desafios a serem resolvidos – alimentar populações em crescimento, mitigar as mudanças climáticas e aproveitar melhor nossos recursos compartilhados. Precisamos de respostas para os desafios mundiais de clima, saúde e sustentabilidade.

A biotecnologia pode fornecer biosoluções poderosas para resolver esses problemas com redução significativa do impacto climático e o uso da terra. Entre elas, bioprodutos que não prejudiquem a biodiversidade, fixação de CO2 e diminuição da dependência da indústria de combustíveis fósseis, ou ainda se as proteínas alternativas que pudessem substituir as proteínas animais.

Clique aqui e saiba mais.

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Títulos Verdes podem financiar a bioeconomia

A bioeconomia possui um papel fundamental na uma transição para uma economia de baixo carbono. Porém, nesta transição será observada uma quebra de paradigma em relação a indústria de origem fóssil.

Para o desenvolvimento tecnológico da bioeconomia serão necessárias fontes de financiamento diversificadas. Neste contexto, o uso de títulos verdes surgem como uma das opções para o financiamento dessas inovações.

Clique aqui e confira este artigo que aborda mais sobre este tema.

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Cinco setores assinam acordo com MMA para reduzir emissão de carbono

Durante o Congresso Mercado Global de Carbono, os setores de biogás, energia eólica, etanol, resíduos e alumínio se comprometeram a redução de gases do efeito estufa e assinaram um acordo com o Ministério do Meio Ambiente (MMA) para pôr em prática o mercado regulado brasileiro de carbono.

Clique aqui e saiba mais.

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Conexsus lança estudo com mapeamento de oportunidades do mercado internacional para produtos da sociobiodiversidade

O diagnóstico apresentado no relatório Panorama e Oportunidades do Mercado Internacional para Produtos da Sociobiodiversidade lançado pela Conexus em parceria com o Partnership For Forest (P4F) e o Programa de Facilitação do Comércio Brasil-Reino Unido apontou que a demanda por produtos alimentícios e cosméticos da sociobiodiversidade estão em alta no mercado internacional. O estudo é parte do esforço de projetar e testar soluções que viabilizam as exportações de produtos da sociobiodiversidade brasileira e que promovam a conservação de biomas ameaçados como a Amazônia e o Cerrado. Clique aqui e acesse o relatório.
Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

SENAI CETIQT e abit promovem debate no Café com Bioeconomia as Janelas de Oportunidades para Indústria Têxtil

*texto produzido por Aimee Farias

No dia 11 de maio, aconteceu mais uma edição do Café com Bioeconomia, que teve como enfoque discutir quais ações que a indústria têxtil vem realizando para ser mais sustentável e circular, além de quais são as fronteiras tecnológicas na adoção de novas matérias-primas renováveis. O debate contou com a presença de Adriano Passos – Coordenador da Plataforma de Inovação em Fibras do SENAI CETIQT; Leandro Alves Silva – Sócio Fundador da Musafiber e Morgana Stegemann – Diretora de Marketing da DuMeio e foi moderado por Fernando Pimentel – Presidente da Associação Brasileira da Indústria Têxtil e de Confecção (Abit).

É evidente que no momento atual a agenda da sustentabilidade, inovação e tecnologia está acelerando. A bioeconomia coloca a Indústria Têxtil e de Confecção do Brasil em um patamar que poderá alçá-la a uma posição privilegiada. Fernando Pimentel introduz declarando: “Vejo nossa indústria têxtil com espaço enorme para conquistar o mercado tanto nacional como mundial”.

O debate se iniciou com o seguinte questionamento: Quais poderão ser as principais oportunidades para o segmento no âmbito dessa jornada da bioeconomia? Morgana Stegemann iniciou: “É um grande desafio falar sobre biofabricação no Brasil, ainda falamos pouco e produzimos menos ainda. Dentro da minha área de microorganismos, nós já temos couros de bactérias, fungos… A DuMeio é pioneira na fabricação de biotecidos com bactérias. Nosso grande desafio é conseguir tornar esses materiais tão eficientes quanto os materiais sintéticos que vemos circulando por aí. Então ainda temos muito trabalho nesse sentido”, ressalta.

Em seguida, Leandro Alves compartilhou sua posição sobre fibras naturais alternativas. “Existe um movimento crescente para utilização em produtos finais de maior valor agregado. A tendência para o futuro é buscarmos outras alternativas que sejam focadas em coisas renováveis. Tem fibras sendo desenvolvidas com fibras de coco e de abacaxi, por exemplo, que fazem muito sentido para o futuro. Essas fibras estão em abundância na natureza, então faz sentido usarmos os resíduos que vêm dessas plantações.”

Adriano Passos comentou também sobre outras oportunidades de inovações além das fibras: “A tecnologia vem avançando bastante e as oportunidades estão aí. O interessante disso tudo é conseguirmos realizar não somente estudos, pesquisa, mas trabalhar e fazer protótipos. Isso nos dá a possibilidade de recebermos materiais que não tem estudo nenhum, avaliarmos esse material e entender o movimento da fibra, qual químico sai dalí. Vejo uma oportunidade não somente na parte de produzir fibras, mas também novos químicos e produtos como corantes naturais.”

O papel dos centros de inovação para iniciar projetos na área também foi discutido por Morgana: “Começamos a incubadora em Jaraguá do Sul, em Santa Catarina, e nos últimos dois anos, muitas oportunidades surgiram. Tenham força de vontade e procurem por institutos. Nesta trajetória pudemos contar com o apoio do SENAI CETIQT que sempre nos deu muito suporte e muita abertura. Faz sentido inovar para sustentabilidade”, declara.

Finalizando o bate papo, Fernando Pimentel ressalta: “É animador participar de eventos como esse, pessoas jovens dedicadas a uma atividade inovativa para atender demandas de um setor que é enorme. Vamos continuar inovando, gerando riqueza, emprego e renda para nossa sociedade.”

O Café com Bioeconomia é uma iniciativa do Portal de Bioeconomia e ocorre a cada 15 dias, das 8h30 às 10h e ficam disponíveis no Spotify ‘Café com Bioeconomia’.

Para receber a agenda dos próximos Cafés, cadastre-se aqui.

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Shell e Prumo Logística investirão até US$ 120 milhões na produção de hidrogênio verde

No decorrer do Congresso Mercado Global de Carbono no Jardim Botânico, a Shell e Prumo Logística anunciaram que irão construir uma planta-piloto de geração de hidrogênio verde em suas instalações do Porto do Açu, no norte fluminense. Com este investimento a viabilização da produção deste combustível fica mais próxima, assim como o avanço na obtenção e energia com menor emissão de CO2 associada. Clique aqui e saiba mais.
Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Biometano e gás natural como aliados da transição energética

Desde o Acordo de Paris, em 2015, aumentou-se a busca por soluções que reduzir substancialmente as emissões globais de gases de efeito estufa com o objetivo de atingir a meta de limitar o aumento da temperatura global neste século a 2,0°C. Neste contexto, um caminho para a transição energética no Brasil é o uso do gás natural no transporte público e de cargas, como transição para o biometano, enquanto aumentamos a capacidade de produção deste combustível derivado do biogás. Clique aqui e saiba mais.
Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
Notícia

Resíduo do cacau é transformado em matéria-prima de cosméticos

Elton Alisson | Agência FAPESP – Durante sua pesquisa de doutorado na Universidade Estadual de Campinas (Unicamp), em que caracterizou os principais microrganismos causadores de doenças no cacau (Theobroma cacao L) no Brasil, o químico Fábio Neves dos Santos observou em visitas a fazendas na região de Ilhéus, na Bahia, que durante a extração da amêndoa, usada como matéria-prima do chocolate, é obtido um líquido na prensagem manual da polpa do fruto cuja maior parte é descartada como resíduo agrícola.

“Uma fração muito pequena desse líquido, que tem sabor bastante adocicado e, por isso, é chamado de mel de cacau, é consumida como bebida em regiões como o sul da Bahia, maior produtora do fruto no país. Mas grande parte não é aproveitada”, constatou Santos.

Ao analisar o líquido, que é pouco viscoso, com grande quantidade de açúcares, como frutose e sacarose, o pesquisador avaliou que o produto possui atividade antioxidante devido a compostos orgânicos bioativos, além de fibras alimentares, altos teores de vitamina C e minerais essenciais, como potássio, sódio, cálcio, ferro, manganês e zinco. Por isso, teria potencial para ser utilizado como ingrediente em produtos alimentícios e cosméticos.

Com base nessa constatação, Santos fundou a startup Cacaus Biocosmetics com o objetivo de desenvolver uma nova geração de cosméticos com propriedades antioxidante, antimicrobiana e anti-inflamatória associadas ao mel de cacau.

Por meio de um projeto apoiado pelo Programa Pesquisa Inovativa em Pequenas Empresas (PIPE) da FAPESP, a startup já elaborou um creme facial e uma loção corporal hidratante à base do insumo.

“Os resultados dos testes in vitro, feitos em modelo celular, indicaram que tanto o mel de cacau como os cosméticos contendo essa matéria-prima não causaram irritação cutânea. Além disso, promoveram a regeneração celular”, diz Santos.

O pesquisador pretende agora angariar mais recursos para iniciar os testes clínicos dos produtos com o objetivo de comprovar as propriedades antioxidante e regenerativas do ingrediente na pele e, com isso, obter a aprovação da Agência Nacional de Vigilância Sanitária (Anvisa) para uso das alegações de que os produtos à base dele retardam o envelhecimento cutâneo, por exemplo.

Antes disso, porém, a startup já deve iniciar a produção e a comercialização dos produtos como de grau 1, como são classificados pela Anvisa cosméticos que possuem propriedades básicas que não precisam ser comprovadas inicialmente e não requerem informações detalhadas quanto ao modo e restrições de uso, como perfumes, loções e cremes sem ação fotoprotetora.

“Já comprovamos que os produtos são seguros e por isso podem ser comercializados como de grau 1. Também já entramos com o pedido de patente das formulações e, para lançá-las no mercado e iniciar as vendas mais rapidamente, iremos terceirizar a produção e comercializá-las por meio de e-commerce”, afirma Santos.

Treinamento no Reino Unido

O empreendedor foi um dos cinco selecionados para a edição de 2022 do programa de treinamento Leaders in Innovation Fellowships Programme (LIF) e venceu o Simulation Game no In Country Event do LIF no Brasil. O Simulation Game é uma competição de simulação de operação de negócio por meio de um software, chamado SimVenture Evolution, que mimetiza todos os parâmetros do desenvolvimento de uma tecnologia no mundo real, como pesquisa e desenvolvimento (P&D), produção, vendas, marketing e financiamento, entre outros.

Oferecido pela Royal Academy of Engineering (RAE), com apoio do Fundo Newton, o LIF tem o objetivo de capacitar líderes emergentes que estão desenvolvendo inovações baseadas em engenharia com potencial de contribuir para o desenvolvimento econômico e social de seus respectivos países.

A iniciativa é destinada a pesquisadores de países parceiros da RAE que estão em processo de desenvolvimento de um plano de comercialização para sua inovação.

Os empreendedores selecionados participam de um período de treinamento imersivo no Reino Unido, em que têm acesso a mentores especializados e oportunidades de networking internacional.

A curto prazo, eles desenvolvem, com o apoio do programa, um plano de comercialização para sua inovação. A longo prazo, têm acesso a uma rede internacional de inovadores e mentores para levar adiante seu plano de negócios.

“A participação no LIF será muito importante e providencial na atual etapa do nosso projeto, de levar o produto para o mercado. Por meio do programa, estou tendo acesso a uma rede de mentores que têm possibilitado avançarmos no plano de comercialização”, diz Santos.

Um grupo de 70 pesquisadores, de dez países, foi selecionado para a edição deste ano do programa. No Brasil, a FAPESP é a responsável pela seleção dos participantes.

“O principal critério de seleção para participação no programa é a qualidade das aplicações. As vagas dos países não são preenchidas por sistema de quotas. Entre todas as aplicações de cada país participante selecionamos cinco”, explica Gaelle Elisha, gerente do programa de empreendedorismo para o desenvolvimento na Royal Academy of Engineering.

Os outros quatro representantes brasileiros selecionados para a atual edição do programa foram Marina Trevelin Souza, que está desenvolvendo um novo vidro bioativo que pode acelerar a proliferação celular, levando um tecido danificado a cicatrizar mais rapidamente; Thomaz Augusto Guisard Restivo, que está empregando diamantes metálicos e produtos derivados para criar materiais de construção com melhor desempenho, custos razoáveis e menor impacto ambiental; Gustavo de Souza, que está produzindo uma embalagem biodegradável inovadora que elimina a necessidade de materiais plásticos multicamadas, sem comprometer a vida útil de alimentos; e Marzieh Kadirav, que está criando materiais de alto desempenho feitos de bambu natural, usando um processo de desperdício zero para atender às preocupações ambientais relacionadas à construção.
 

Este texto foi originalmente publicado por Agência FAPESP de acordo com a licença Creative Commons CC-BY-NC-ND. Leia o original aqui.https://agencia.fapesp.br/republicacao_frame?url=https://agencia.fapesp.br/residuo-do-cacau-e-transformado-em-materia-prima-de-cosmeticos/38731/&utm_source=republish&utm_medium=republish&utm_content=https://agencia.fapesp.br/residuo-do-cacau-e-transformado-em-materia-prima-de-cosmeticos/38731/

Notícia | 22/09/2022 | 0 comentários | Publicado por Anônimo
  • Sobre
  • Infraestruturas
  • Demandas
  • Ofertas
  • Publicações
Ordenar
Categoria
Marcador