Olá, Gostaria de remover todos os itens do objeto que não tem valores unicos. No caso do objeto abaixo ficaria só o segundo item e o último [pendente]

{   text = (todos), value = }, {   text = categoria 1,   categoria 3,   categoria 2,   value = 8A81881E6B484397016BE12A6A756103,   8A81881E6B484397016BE12A9F57636E,   8A81881E6B484397016BE12AC0196609 }, {   text = categoria 2,   value = 8A81881E6B484397016BE12A9F57636E }, {   text = categoria 3,   categoria 2,   value = 8A81881E6B484397016BE12A9F57636E,   8A81881E6B484397016BE12AC0196609 }, {   text = categoria 1,   categoria 2,   value = 8A81881E6B484397016BE12A6A756103,   8A81881E6B484397016BE12A9F57636E }, {   text = categoria 1,   value = 8A81881E6B484397016BE12A6A756103 } 

transformar itens de uma lista em colunas separadas ou estender dataframe até o final

Tenho uma classe com um elemento que é uma lista estou tentando exibir em um dataframe do pandas essa lista em uma unica linha para representar o inventario do personagem.

atribuição dos itens na lista:

if self.wealth == "rich":         self.inventory = ["dagger","nobles's clothing", "cloak","backpack","rations for a week","waterskin",                           "potion of healing","pouch for coins","personal servant","personal guard", " three saddled horses"] 

estou fazendo o dataframe dessa forma porem acaba cortando a lista por ser muito grande, gostaria de fazer de um jeito que não cortasse essa linha.

inventory = pd.DataFrame({"Inventory": [self.inventory]," ": " "}) inventory.set_index(" ", inplace=True)  display(inventory) 

Como gravar um modelo Card contente vários itens em CakePHP2.x

Estou tentando gravar os itens de um carrinho em um modelo Card eu consigo obter os itens do carrinho passando o id da sessão do usuário, mas gostaria de saber como gravar em itens em associados a Orders e OrderProducts uando CakePHP2.x, segue o método na controller.

  public function payment_free($  product_id = null){      $  this->__verifySecurity( Group::CLIENTE );     if( $  product_id ){          //$  product_id = base64_decode($  product_id);         $  this->loadModel('Cart');         $  carts = $  this->Cart->__getCartsInSession($  this->Session->id());          $  this->loadModel('Product');         $  product = $  this->Order->OrderProduct->Product->__getProduct($  product_id);          $  method_id = Method::PRODUTO_ZERADO;          $  infoPayment = [             Method::PRODUTO_ZERADO => 'Produto Zerado',             Method::CUPOM_100_PORCENTO => 'Cupom 100%'         ];          $  data = [];         $  data['Order']['approved']  = date('Y-m-d H:i:s');         $  data['Order']['client_id'] = $  this->Auth->user('client_id');         $  data['Order']['method_id'] = $  method_id;         $  data['Order']['payment']   = $  infoPayment[$  method_id];         $  data['Order']['status']    = $  this->Order->Payment->getStatusAprovado();         $  data['Order']['value']     = '0.00';         $  data['Order']['value_discount'] = '0.00';         $  data['Order']['sessionid'] = $  this->Session->id();          $  data['OrderProduct'][0]['product_id'] = $  product_id;         $  data['OrderProduct'][0]['amount'] = 1;         $  data['OrderProduct'][0]['value'] = '0.00';         $  data['OrderProduct'][0]['discount'] = '0.00';          if( $  this->Order->saveAll($  data) ){             $  this->Session->setFlash('Curso Grátis obtido com sucesso!', 'site/popup-success');             $  this->__clearCart($  this->Session->id());             $  this->__clearTicket();             return $  this->redirect(array('controller'=>'virtual_rooms','action' => 'mycourses', 'prefixes' => false));         }         else{             $  this->Session->setFlash('Não foi possível obter o curso grátis!', 'site/popup-error');             return $  this->redirect( $  this->referer() );         }     }     else{         $  this->Session->setFlash('Não foi possível identificar o curso desejado!', 'site/popup-error');         return $  this->redirect( $  this->referer() );     } } 

Obter o resultado com multiplos itens selecionado ao Fazer F4

Pretendo aceder a lista de itens selecionados populada atravez do F4.

Public Function ListaArtigos() As String     Dim strSql As StdBEStringBuilder     Dim strResultado As String      Set strSql = New StdBEStringBuilder      strSql.Append ("SELECT Artigo, Descricao FROM Artigo")     strResultado = PSO.Listas.GetF4SQL("Artigos", strSql.Value, "Artigo")      'Pretendo a lista de artigos aqui     ListaArtigos = strResultado End Function 

Obrigado!

Android – Remover Espaço em Branco Entre os Itens da RecyclerView

Tenho um problema igual a este aqui. Estou usando o ‘com.android.support:recyclerview-v7:28.0.0‘. O XML é o seguinte:

        <android.support.v7.widget.RecyclerView         android:id="@+id/recyclerOverlay"         android:layout_width="wrap_content"         android:layout_height="50dp"         android:layout_gravity="bottom"         android:background="#444" /> 

JAVA:

                mAdapter = new StickersAdapter(stickerArrayList);                 LinearLayoutManager layoutManager                         = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.HORIZONTAL, false);                 recyclerOverlay.setLayoutManager(layoutManager);                 recyclerOverlay.setAdapter(mAdapter); 

OBS: nas versões antigas o espaço em branco não aparece. Mesmo utilizando o wrap_content os espaços em branco continuam na versão 28.0.0. Alguém pode me ajudar com essa questão?

Problemas com arraylist listar itens do firebase Index: 0, Size: 0

tenho esse erro. Coloquei os códigos de PesquisaFragment,Usuario.java,AdapterPesquisa.java consigo efetuar a pesquisa é exibida no recyclerview mas ao clicar por não ter um arraylist correto acaba dando esse erro. já tentei de varias formas e não consigo corrigir isso alguém poderia me orientar de como adaptar esse arraylist para o nó grupos corretamente? erro marcado com a tag “LINHA89” no fragment_pesquisa agradeço desde já qualquer ajuda. abaixo uma img da estrutura do meu banco de dados. ->>

ESTRUTURA FIREBASE REALTIME DATABASE IMG

 W/PersistentConnection: pc_0 - Using an unspecified index. Consider adding '".indexOn": "nome"' at grupos to your security and Firebase Database rules for better performance W/ClassMapper: No setter/field for membros found on class xxx.xxx.model.Usuario     No setter/field for id found on class xxx.xxx.model.Usuario W/ClassMapper: No setter/field for membros found on class xxx.xxx.model.Usuario W/ClassMapper: No setter/field for id found on class xxx.xxx.model.Usuario W/PersistentConnection: pc_0 - Using an unspecified index. Consider adding '".indexOn": "nome"' at grupos to your security and Firebase Database rules for better performance     java.lang.IndexOutOfBoundsException: Index: 0, Size: 0         at java.util.ArrayList.get(ArrayList.java:437)         at xxx.xxx.fragment.PesquisaFragment$  1.onItemClick(PesquisaFragment.java:89)         at xxx.xxx.helper.RecyclerItemClickListener.onInterceptTouchEvent(RecyclerItemClickListener.java:21) 

PESQUISA FRAGMENT

public class PesquisaFragment extends Fragment {      //Widget     private SearchView searchViewPesquisa;     private RecyclerView recyclerPesquisa;     private List<Conversa> listaConversas = new ArrayList<>();     private ConversasAdapter adapter;     private List<Usuario> listaUsuarios;     private DatabaseReference usuariosRef;     private AdapterPesquisa adapterPesquisa;     private String idUsuarioLogado;      public PesquisaFragment() {         // Required empty public constructor     }       @Override     public View onCreateView(LayoutInflater inflater, ViewGroup container,                              Bundle savedInstanceState) {         // Inflate the layout for this fragment         View view = inflater.inflate(R.layout.fragment_pesquisa, container, false);          searchViewPesquisa = view.findViewById(R.id.searchViewPesquisa);         recyclerPesquisa   = view.findViewById(R.id.recyclerPesquisa);         adapter = new ConversasAdapter(listaConversas, getActivity());          //Configurações iniciais         listaUsuarios = new ArrayList<>();         usuariosRef = ConfiguracaoFirebase.getFirebaseDatabase()                 .child("grupos");         idUsuarioLogado = UsuarioFirebase.getIdentificadorUsuario();          //Configura RecyclerView         recyclerPesquisa.setHasFixedSize(true);         recyclerPesquisa.setLayoutManager(new LinearLayoutManager(getActivity()));          adapterPesquisa = new AdapterPesquisa(listaUsuarios, getActivity());         recyclerPesquisa.setAdapter( adapterPesquisa );          //Configurar evento de clique         recyclerPesquisa.addOnItemTouchListener(new RecyclerItemClickListener(                 getActivity(),                 recyclerPesquisa,                 new RecyclerItemClickListener.OnItemClickListener() {                     @Override                     public void onItemClick(View view, int position) {                         List<Conversa> listaConversasAtualizada = adapter.getConversas();                         LINHA89 - > Conversa conversaSelecionada = listaConversasAtualizada.get( position );                          if( conversaSelecionada.getIsGroup().equals("true") ){                              Intent i = new Intent(getActivity(), ChatActivity.class);                             i.putExtra("chatGrupo", conversaSelecionada.getGrupo() );                             startActivity( i );                          }else {                             Intent i = new Intent(getActivity(), ChatActivity.class);                             i.putExtra("chatContato", conversaSelecionada.getUsuarioExibicao() );                             startActivity( i );                         }                      }                      @Override                     public void onLongItemClick(View view, int position) {                      }                      @Override                     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                      }                 }         ));          //Configura searchview         searchViewPesquisa.setQueryHint("Buscar usuários");         searchViewPesquisa.setOnQueryTextListener(new SearchView.OnQueryTextListener() {             @Override             public boolean onQueryTextSubmit(String query) {                  return false;             }              @Override             public boolean onQueryTextChange(String newText) {                 String textoDigitado = newText.toUpperCase();                 pesquisarUsuarios( textoDigitado );                 return true;             }         });            return view;     }      private void pesquisarUsuarios(String texto){          //limpar lista         listaUsuarios.clear();          //Pesquisa usuários caso tenha texto na pesquisa         if( texto.length() >= 2 ){              Query query = usuariosRef.orderByChild("nome")                     .startAt(texto)                     .endAt(texto + "\uf8ff" );              query.addListenerForSingleValueEvent(new ValueEventListener() {                 @Override                 public void onDataChange(DataSnapshot dataSnapshot) {                      //limpar lista                     listaUsuarios.clear();                      for( DataSnapshot ds : dataSnapshot.getChildren() ){                          //verifica se é usuário logado e remove da lista                         Usuario usuario = ds.getValue(Usuario.class);                         if ( idUsuarioLogado.equals( usuario.getId() ) )                             continue;                          //adiciona usuário na lista                         listaUsuarios.add( usuario );                      }                      adapterPesquisa.notifyDataSetChanged();                      /*                     int total = listaUsuarios.size();                     Log.i("totalUsuarios", "total: " + total );                     */                 }                  @Override                 public void onCancelled(DatabaseError databaseError) {                  }             });          }      }  } 

USUARIO.JAVA

public class Usuario implements Serializable {      private String id;     private String nome;     private String email;     private String senha;     private String foto;       public Usuario() {     }      public void salvar(){          DatabaseReference firebaseRef = ConfiguracaoFirebase.getFirebaseDatabase();         DatabaseReference usuario = firebaseRef.child("usuarios").child( getId() );          usuario.setValue( this );      }      public void atualizar(){          String identificadorUsuario = UsuarioFirebase.getIdentificadorUsuario();         DatabaseReference database = ConfiguracaoFirebase.getFirebaseDatabase();          DatabaseReference usuariosRef = database.child("usuarios")                 .child( identificadorUsuario );          Map<String, Object> valoresUsuario = converterParaMap();          usuariosRef.updateChildren( valoresUsuario );      }      @Exclude     public Map<String, Object> converterParaMap(){          HashMap<String, Object> usuarioMap = new HashMap<>();         usuarioMap.put("email", getEmail() );         usuarioMap.put("nome", getNome() );         usuarioMap.put("foto", getFoto() );          return usuarioMap;      }      public String getFoto() {         return foto;     }      public void setFoto(String foto) {         this.foto = foto;     }      @Exclude     public String getId() {         return id;     }      public void setId(String id) {         this.id = id;     }      public String getNome() {         return nome;     }      public void setNome(String nome) {         this.nome = nome;     }      public String getEmail() {         return email;     }      public void setEmail(String email) {         this.email = email;     }      @Exclude     public String getSenha() {         return senha;     }      public void setSenha(String senha) {         this.senha = senha;     } } 

ADAPTER PESQUISA

public class AdapterPesquisa extends RecyclerView.Adapter<AdapterPesquisa.MyViewHolder> {      private List<Usuario> listaUsuario;     private Context context;      public AdapterPesquisa(List<Usuario> l, Context c) {         this.listaUsuario = l;         this.context = c;     }      @Override     public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {          View itemLista = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_pesquisa_usuario, parent, false);         return new MyViewHolder(itemLista);      }      @Override     public void onBindViewHolder(MyViewHolder holder, int position) {          Usuario usuario = listaUsuario.get(position);          holder.nome.setText( usuario.getNome() );          //if( usuario.getCaminhoFoto() != null ){           //  Uri uri = Uri.parse( usuario.getCaminhoFoto() );          //   Glide.with(context).load(uri).into(holder.foto);         //}else {        //     holder.foto.setImageResource(R.drawable.avatar);         }      //}      @Override     public int getItemCount() {         return listaUsuario.size();     }      public class MyViewHolder extends RecyclerView.ViewHolder {          CircleImageView foto;         TextView nome;           public MyViewHolder(View itemView) {             super(itemView);              foto = itemView.findViewById(R.id.imageFotoPesquisa);             nome = itemView.findViewById(R.id.textNomePesquisa);          }     }  } 

Verificar itens checados e aplicar a lógica

Bom dia, estou estudando javascript e me deparei com um problema: Criei uma lógica onde disponibilizo dois botões, um para liberar acesso que quando clicado fica na tela apenas o ícone de check, e o bloquear que quando clicado fica apenas o ícone de bloqueado. O problema é que se podem ser mudado os ícones dos itens checados, porém, mesmo com os dois itens checados o único que muda o ícone é o primeiro. Estou mudando o ícone deixando seu display “none” e “initial” fiz dessa forma porque não conheço outra forma, se souberem algo com javascript agradeço, mas, a questão é como faço para a mudança de ícone acontecerem em todos itens checados e não apenas no primeiro ? Obrigado.

JS:

    function bloquearAcesso(){     let inputs = document.querySelectorAll(".checar");      for(let i = 0; i< inputs.length; i++){         if(inputs[i].checked == true){            document.getElementById("liberado").style.display = "none";           document.getElementById("bloqueado").style.display = "initial";       }   };      };    function liberarAcesso(){     let inputs = document.querySelectorAll(".checar");          for(let i = 0; i < inputs.length; i++){       if (inputs[i].checked == true){       document.getElementById("bloqueado").style.display = "none";       document.getElementById("liberado").style.display = "initial";       };   };   } 

HTML:

<html>     <body> <div class="box-body no-padding">         <table class="table table-striped">           <thead>             <tr>               <th>Patio</th>               <th>Acessar Desktop</th>               <th>Criado em</th>              </tr>           </thead>           <tbody>              <tr>               <td><input class="checar" type="checkbox">Patio1</td>               <td> <i id="liberado" class="fa fa-check"></i> &nbsp; <i id="bloqueado" class="far fa-times-circle"></i></td>               <td>02/04/2018</td>               <td>                </td>             </tr>              <tr>                     <td><input class="checar" type="checkbox">Patio2</td>                     <td> <i id="liberado" class="fa fa-check"></i> &nbsp; <i id="bloqueado" class="far fa-times-circle"></i></td>                     <td>02/04/2018</td>                   </tr>                     <br/>             </tbody>           </table>         <button onclick="liberarAcesso()" type="button" class="btn btn-primary btn-xs btn-flat">Liberar acesso</button>         <button onclick="bloquearAcesso()" type="button" class="btn btn-danger btn-xs btn-flat">Bloquear acesso</button>         </div>        <script src="./curso.js">       </script> </body> </html> 

Desafio JSON e JS separar itens

tenho seguinte código, que e verifica quando o número foi pulado

const dados = [   { "cnpj": "1234567891011", "serie": "1", "numero": "1" },   { "cnpj": "1234567891011", "serie": "1", "numero": "2" },   { "cnpj": "1234567891011", "serie": "1", "numero": "3" },   { "cnpj": "1234567891011", "serie": "1", "numero": "4" },   { "cnpj": "1234567891011", "serie": "1", "numero": "5" },   { "cnpj": "1234567891011", "serie": "1", "numero": "6" },   { "cnpj": "1234567891011", "serie": "1", "numero": "7" },   { "cnpj": "1234567891011", "serie": "1", "numero": "9" },   { "cnpj": "1234567891011", "serie": "1", "numero": "10" },   { "cnpj": "1213141516171", "serie": "1", "numero": "1" },   { "cnpj": "1213141516171", "serie": "1", "numero": "2" },   { "cnpj": "1213141516171", "serie": "1", "numero": "4" },   { "cnpj": "1213141516171", "serie": "1", "numero": "5" },   { "cnpj": "1213141516171", "serie": "1", "numero": "6" },   { "cnpj": "1213141516171", "serie": "1", "numero": "7" },   { "cnpj": "1213141516171", "serie": "1", "numero": "9" },   { "cnpj": "1213141516171", "serie": "2", "numero": "10" },   { "cnpj": "1213141516171", "serie": "2", "numero": "11" },   { "cnpj": "1213141516171", "serie": "2", "numero": "12" },   { "cnpj": "1213141516171", "serie": "2", "numero": "15" },   { "cnpj": "1213141516171", "serie": "2", "numero": "16" },   { "cnpj": "1213141516171", "serie": "2", "numero": "17" },   { "cnpj": "1213141516171", "serie": "2", "numero": "21" },   { "cnpj": "9090909871234", "serie": "1", "numero": "22" },   { "cnpj": "9090909871234", "serie": "1", "numero": "1" },   { "cnpj": "9090909871234", "serie": "1", "numero": "2" },   { "cnpj": "9090909871234", "serie": "1", "numero": "3" },   { "cnpj": "9090909871234", "serie": "1", "numero": "4" },   { "cnpj": "9090909871234", "serie": "1", "numero": "6" },   { "cnpj": "9090909871234", "serie": "1", "numero": "7" },   { "cnpj": "9090909871234", "serie": "1", "numero": "8" },   { "cnpj": "9090909871234", "serie": "3", "numero": "2" },   { "cnpj": "9090909871234", "serie": "3", "numero": "1" },   { "cnpj": "9090909871234", "serie": "3", "numero": "3" },   { "cnpj": "9090909871234", "serie": "3", "numero": "4" },   { "cnpj": "9090909871234", "serie": "3", "numero": "5" },   { "cnpj": "9090909871234", "serie": "3", "numero": "6" },   { "cnpj": "9090909871234", "serie": "3", "numero": "7" },   { "cnpj": "9090909871234", "serie": "3", "numero": "8" },   { "cnpj": "9090909871234", "serie": "3", "numero": "9" },   { "cnpj": "9090909871234", "serie": "3", "numero": "10" } ];  const organizados = dados.reduce((acumulador, { cnpj, numero }) => {   const copia = { ...acumulador };   copia[cnpj] = [...(copia[cnpj] || []), parseInt(numero, 10)];   return copia; }, {});  const faltando = Object.keys(organizados).reduce((acumulador, cnpj) => {   const numeros = organizados[cnpj];   const [minimo, maximo] = [Math.min(...numeros), Math.max(...numeros)];   const copia = { ...acumulador };   copia[cnpj] = Array.from(Array(maximo-minimo), (v, indice) => indice + minimo).filter(item => !numeros.includes(item));   return copia; }, {});  console.log('CNPJs organizados: ', JSON.stringify(organizados)); console.log('Números faltando: ', JSON.stringify(faltando));

gostaria que a saída fosse organizada por exemplo:

cnpj: 1234567891011 série 1: 19 série 2: 13, 18, 19, 20

Como contar os itens e paginar o resultado da query no Loopback 4?

Tenho o seguinte repositório:

import { DefaultCrudRepository } from '@loopback/repository'; import { User } from '../models'; import { DbDataSource } from '../datasources'; import { inject } from '@loopback/core';  export class UserRepository extends DefaultCrudRepository<User,typeof User.prototype.id> {   constructor(     @inject('datasources.db') dataSource: DbDataSource,   ) {     super(User, dataSource);   } } 

No meu controlador, quando executo this.userRepository.find() é retornado todos os usuários cadastrados na minha base de dados, porém, preciso retornar este resultado paginado,eu passei as opções limit e offset para o método find() mas preciso da quantidade total de usuários que foram encontrados.