Jump to content

eiwes

Members
  • Content count

    32
  • Joined

  • Last visited

Community Reputation

0 Comum

About eiwes

Contato

  1. Eu tenho esse código, mas preciso retornar funções puras em vez de funções mutáveis. É possível? Talvez usando OOP? Não sei como melhorar isso. Tentei retornar os valores de cada função, mas não obtive sucesso. import { AssetStatusType } from '@domain/interfaces/common' import { BothComponentType, ComponentsType, GroupFiltersType, OperationType, OverviewModelType, PendenciesOverviewType, PendenciesType, StructurePendenciesCount, StructureStatusCount } from '../../types' const updateStatusCount = ( statusCount: StructureStatusCount, status: AssetStatusType ) => { statusCount[status] = (statusCount[status] || 0) + 1 } const updatePendenciesCount = ( pendenciesCount: StructurePendenciesCount, key: AssetStatusType, subKey: OperationType | PendenciesOverviewType ) => { pendenciesCount[key] = pendenciesCount[key] ?? {} pendenciesCount[key][subKey] = (pendenciesCount[key]?.[subKey] || 0) + 1 } const processOverviewPendencies = ( pendencies: PendenciesType[] | null | undefined, pendenciesCount: StructurePendenciesCount, countedIds: Set<string>, id: string ) => { if (pendencies?.length) { for (const { state, pendencyType } of pendencies) { const uniqueId = `${state}-${pendencyType}-${id}` if (!countedIds.has(uniqueId)) { updatePendenciesCount(pendenciesCount, state, pendencyType) countedIds.add(uniqueId) } } } } const processOverviewComponents = ( components: ComponentsType[], isGroupByTree: boolean, statusCount: StructureStatusCount, pendenciesCount: StructurePendenciesCount, countedIds: Set<string>, id: string, type: BothComponentType ) => { for (const { pendencies, status, operationType } of components) { if (isGroupByTree && type === 'location') { updateStatusCount(statusCount, status) if (operationType) { updatePendenciesCount(pendenciesCount, status, operationType) } } processOverviewPendencies(pendencies, pendenciesCount, countedIds, id) } } const processOverviewData = ( data: OverviewModelType[], groupBy: GroupFiltersType, statusCount: StructureStatusCount, pendenciesCount: StructurePendenciesCount, countedIds: Set<string> ) => { const isGroupByTree = groupBy === 'tree' const isGroupByAsset = groupBy === 'asset' for (const { id, status, components, operationType, type } of data) { if (isGroupByAsset || type === 'asset') { updateStatusCount(statusCount, status) if (operationType) { updatePendenciesCount(pendenciesCount, status, operationType) } } processOverviewComponents( components, isGroupByTree, statusCount, pendenciesCount, countedIds, id, type ) } } export const calculateOverviewCounts = ( data: OverviewModelType[], groupBy: GroupFiltersType ) => { const statusCount: StructureStatusCount = {} as StructureStatusCount const pendenciesCount: StructurePendenciesCount = {} as StructurePendenciesCount const countedIds = new Set<string>() processOverviewData(data, groupBy, statusCount, pendenciesCount, countedIds) return { ...statusCount, pendencies: pendenciesCount } } Existe uma maneira mais limpa e elegante de fazer isso? Preciso retornar um objeto como este: // calculateOverviewCounts return this { pendencies: StructurePendenciesCount; working: number; inAlert: number; warning: number; stopped: number; off: number; } StructurePendenciesCount é:
  2. eiwes

    Erro na junção de array com foreach

    Então, Williams. Agradeço muito pelo link, porém, gostaria de entender o porquê desse erro. Saberia me ajudar com isso? Pois estou encabulado tentando entender: no primeiro laço do array ele conclui com o fechamento e após ele não faz o fechamento.
  3. Fiz uma iteração foreach para gerar categorias e subcategorias, pois não queria fazer DOIS SELECTS, ficando assim: //----> Foreach para gerar a categoria, pois são vários items com as mesmas chaves, portanto agrupo foreach($exibeLista as $row){ $dlD[$row["nameD"]][] = [ "nameD"=>$row["nameD"], "idD"=>$row["idD"], "qtdR"=>$row["qtdR"], "qtdF"=>$row["qtdF"] ]; } //----> Foreach para gerar subcategorias foreach($exibeLista as $row){ $dLA[$row["nameP"]][] = [ "nameD"=>$row["nameD"], "idD"=>$row["idD"], "idAss"=>$row["idAss"], "idT"=>$row["idT"], "nameP"=>$row["nameP"], "qtdR"=>$row["qtdR"], "qtdF"=>$row["qtdF"] ]; } $fsHTML = []; $rateD = 0; $qtdAss = 0; if(is_array($dlD) || is_object($dlD)){ foreach ($dlD as $key => $ds) { if ($key <> '' && $key <> NULL) { $rateD += (($ds[0]["qtdR"]*100)/$ds[0]["qtdF"]); $qtdAss += count($dlD[$key]); //----> Array para inserir HTML da Categoria criada e criar accordion $fsHTML[] = ' <div class="col-md-12 col-sm-12 col-xs-12"> <div class="x_panel overflow_hidden padding-into-row-qsts bg-white-row filtro-on"> <span class="rateD">'.ceil($rateD/$qtdAss).'%</span> <span class="opcao-into-top">'.$ds[0]["idD"].' - '.$ds[0]["nameD"].' <a class="collapse-link open-filter-qsts border-radius8"><i class="fa fa-chevron-up"></i></a></span> <div class="x_content" style="display:none;padding-top:10px"> <div class="accordion" id="accordion" role="tablist" aria-multiselectable="true"> '; //----> Verificar se a subcategoria contém a categoria, se contém é incluída na array foreach ($dLA as $keys => $ass) { if($ass[0]["idD"] == $ds[0]["idD"] ){ if($ass[0]['idT'] <> 0){ $link = 't='.$ass[0]['idT']; }else{ $link = 'a='.$ass[0]['idAss'];} $fsHTML[] = ' <div class="panel"> <a class="panel-heading collapsed" href="/v/fs/st?mz=y&type=c&'.$link.'"> <span class="eficiencia-accordion">'.ceil(($ass[0]['qtdR']*100)/$ass[0]['qtdF']).'%</span> <h4 class="panel-title">'.$ass[0]['nameP'].'</h4> <span class="unicamente">'.$ass[0]['qtdR'].' respondido de '.$ass[0]['qtdF'].'</span> </a> </div> '; }//if ass }//foreach ass }//if ds //----> Aqui é aonde ocorre o ERRO! Era pra fazer o fechamento do Accordion e gerar uma nova DIV. //No índice [0] isso ocorre normalmente, porém no [1] ela agrupa todos os accordions. (abaixo farei a amostra) $fsHTML[] = '</div></div></div></div>'; }//foreach ds }//if verifica se é array e se é objeto return implode('', array_unique($fsHTML)); O correto seria assim: - Categoria - Subcategoria - Subcategoria - Categoria - Subcategoria - Subcategoria Como está acontecendo: - Categoria - Subcategoria - Subcategoria - Categoria - Subcategoria - Subcategoria - Categoria - Subcategoria - Subcategoria - Categoria - Subcategoria - Subcategoria - Categoria - Subcategoria - Subcategoria Não consigo entender de jeito nenhum pq o primeiro fecha corretamente e a partir do segundo não. Alguém me ajuda?
  4. Fala, galera Tenho duas Tabelas: 1 - dados 2 - respostas dados (usuários vão respondendo e é gravado aqui) Na verdade, não precisa ser nada pronto, mas sim um início, pois não consigo imaginar em nada que consiga dar certo. As respostas possuem níveis (como assim?), eles vão de 1 até 5. Na qual, 1 é Completamente Insatisfeito e 5 Completamente Satisfeito. Ao responder, o usuário “criteriza” aquela resposda de 1 até 5. Agora entra a inteligência que eu não consigo pensar em algo atingível. Caso ele aponte como 1: o usuário responderá +3 perguntas e aquela primeira voltaria na sequência. caso aponte 2: responderia +5 e voltaria aquela na sequência. caso aponte 3: responderia +7 e voltaria aquela na sequência. [...] e assim sucessivamente. Alguém teria alguma ideia de como daria pra filtrar esses dados e exibir com esses critérios inteligentes? Pois utilizar ORDER BY com CASE WHEN não daria, né?! Já utilizo o ORDER BY para colocar as respostas em ordem “cronológica”. Por favor, solicito ajuda para desencalhar esse projeto. Desde já, agradeço quaisquer comentários.
  5. Pessoal? Alguém me ajuda nesse tópico, por favor??
  6. Boa noite a todos, Estou iniciando os desenvolvimentos na plataforma Android e iOS, mas estou "CRU" nesse assunto. Possuo um site de notícias e gostaria de fazer um aplicativo para o mesmo. Agora o X da questão: como fazer essa sincronização de dados? Eu, como administrador, acessar o aplicativo e poder escrever notícias ali no celular mesmo e isso aparecer na página web e no próprio aplicativo. Resumindo mais ainda: um facebook da vida. O que eu posto no aplicativo, aparece no site. Não quero saber da programação por trás, mas sim um norte de como prosseguir. Alguém me ajuda?
  7. Olá a todos, Quando eu arrasto ou copio e colo, a imagem começa assim (até aí tudo certo) Depois que é realizado o upload, ela some, aparece a mensagem de sucesso e após, desaparece com a mensagem de erro. Posso estar errado, mas acredito que não seja erro de URL, senão nem seria realizado o UPLOAD da imagem, correto? Mas por via das dúvidas, segue URLs de configuração do arquivo CONFIG.JS config.filebrowserBrowseUrl = '/js/ckeditor/kcfinder/browse.php?type=files'; config.filebrowserImageBrowseUrl = '/js/ckeditor/kcfinder/browse.php?type=images'; config.filebrowserUploadUrl = '/js/ckeditor/kcfinder/upload.php?type=files'; config.filebrowserImageUploadUrl = '/js/ckeditor/kcfinder/upload.php?type=images'; Alguém suspeita o que pode ser? Ou já passou por algo parecido. OUUUU saiba como resolver kkkk Obs*: quando abro o local de FILES, a imagem está lá. Ela simplesmente não aparece naquele momento que arrasto (me faz perder muito tempo ter de ficar entrando no local do file).
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.