1.4.26 • Published 2 years ago

sidebargeovista v1.4.26

Weekly downloads
-
License
-
Repository
-
Last release
2 years ago

Código Molde

Antes de qualquer coisa, no terminal rode os códigos npm i sidebargeovista chart.js@3.9.1 react-chartjs-2@4.3.1 e npm i chartjs-plugin-datalabels@2.2.0. Após isso insira no local de preferência do código estas funções:

import { Bar, Doughnut, Pie } from "react-chartjs-2";
import Chart from 'chart.js/auto'
import "chartjs-plugin-datalabels";

function handleHover(evt, item, legend) {
  legend.chart.data.datasets[0].backgroundColor.forEach((color, index, colors) => {
    colors[index] = index === item.index || color.length === 9 ? color : color + '4D';
  });
  legend.chart.update();
}

function handleLeave(evt, item, legend) {
  legend.chart.data.datasets[0].backgroundColor.forEach((color, index, colors) => {
    colors[index] = color.length === 9 ? color.slice(0, -2) : color;
  });
  legend.chart.update();
}

export function ChartModel(props) {
  let html, data, delayed;

  var options = {
    plugins: {
      datalabels: {
        formatter: function (value, context) {
          return context.chart.data.labels[context.dataIndex];
        }
      },
      legend: {
        display: () => {
          if (props.mode.toLowerCase() !== "bar") {
            return props.legend
          } else {
            return false
          }
        },
        onHover: handleHover,
        onLeave: handleLeave,
        labels: {
          usePointStyle: true,
        },
      },
      tooltip: {
        callbacks: {
          label: function (context) {
            if (props.counter !== undefined) {
              return context.formattedValue + props.counter;
            } else {
              return context.formattedValue;
            }
          }
        }
      },
      title: {
        display: () => {
          if (props.title !== undefined) {
            return true
          } else {
            return false
          }
        },
        text: props.title,
      }
    },
    responsive: () => {
      if (props.responsive === true) { return false }
      else { return true }
    },
    maintainAspectRatio: () => {
      if (props.responsive === true) { return false }
      else { return true }
    },
    onClick: (e, element) => {
    },
    animation: {
      onComplete: () => {
        delayed = true;
      },
      delay: (context) => {
        let delay = 0;
        if (context.type === 'data' && context.mode === 'default' && !delayed) {
          delay = context.dataIndex * 500 + context.datasetIndex * 100;
        }
        return delay;
      }
    }
  };


  data = {
    labels: props.labels,
    datasets: [
      {
        backgroundColor: props.colors,
        borderWidth: 1,
        data: props.datas,
      }
    ]
  };

  if (props.mode.toLowerCase() === "pie") {
    html = (
      <Pie
        data={data} options={options} height={props.height}
      />
    )
  } else if (props.mode.toLowerCase() === "bar") {
    html = (
      <Bar
        data={data} options={options} height={props.height}
      />
    )
  } else if (props.mode.toLowerCase() === "doughnut") {
    html = (
      <Doughnut
        data={data} options={options} height={props.height}
      />
    )
  }

  return (
    <div >
      {html}
    </div>
  );
}

Com isso pronto agora está tudo certo para começar a usar a biblioteca, insira no return da sua função que irá para o HTML o código abaixo de exemplo e mude conforme a sua necessidade!

  <SidebarGeovista
    logoURL="https://dev.drenagem.geovista.com.br/api/static/icones/logo.png"
    titlesBackground="#ebebeb"
    titlesColor="#000"
    titlesSize="20px"
    borderRadius="0px"
    borderRadiusSub="20px"
    titlesBorderColor="#000"
    modelHeight="30px"
    zIndex={1000}
    classesResponsiveResize={['classDescription']}
    NavigationMenuIcon={["fas fa-user", "fas fa-search", "fas fa-marker", "fas fa-map"]}
    buttons={{
      'icons': ['fas fa-exchange', 'fas fa-print'],
      'functions': ['toggleSidebar', 'printScreen']
    }}
  >
    <div>
      <div className="SidebarContentModel" checkboxcolor="blue" model="true/enable" value="Demandas" click={[() => console.log(teste()), () => console.log(teste())]}>
        <div className="SidebarContentModel" model="true/enable" value={'classe1'} key={'classe1'}
        >
          <ChartModel
            mode="bar"
            labels={['texto1', 'texto2', 'texto3']}
            datas={[10, 30, 20]}
            colors={['rgba(255, 0, 0)', 'rgba(0, 255, 0)', 'rgba(0, 0, 255)']}
            responsive={false}
            legend={true}
            counter="km"
          />
        </div>
        <div className="SidebarContentModel" model="true/enable" value={'classe2'} key={'classe2'}
        >
          <ChartModel
              mode="doughnut"
              labels={['texto1', 'texto2', 'texto3']}
              datas={[10, 30, 20]}
              colors={['rgba(255, 0, 0)', 'rgba(0, 255, 0)', 'rgba(0, 0, 255)']}
              responsive={false}
              legend={true}
              counter="km"
          />
        </div>
        <div className="SidebarContentModel" model="true/enable" value={'classe3'} key={'classe3'}
        >
          <ChartModel
              mode="pie"
              labels={['texto1', 'texto2', 'texto3']}
              datas={[10, 30, 20]}
              colors={['rgba(255, 0, 0)', 'rgba(0, 255, 0)', 'rgba(0, 0, 255)']}
              responsive={false}
              legend={true}
              counter="km"
          />
        </div>
      </div>
      <div className="SidebarContentModel" checkboxcolor="yellow" model="true/enable"       value="Empreendimentos" click={[() => console.log(teste()), () => console.log(teste())]}>
      </div>
      <div className="SidebarContentModel" checkboxcolor="pinkShock" model="true/enable"              value="Contrato" click={[() => console.log(teste()), () => console.log(teste())]}>
      </div>
    </div>
  </SidebarGeovista>

O componente SidebarGeovista aceita alguns parâmetros, que no caso são:

  PREENCHA TODOS OS CAMPOS NO FORMATO: parâmetro = "valor desejado"

  logoURL=('Inserir o link da imagem da logo')
  titlesBackground=('Inserir em formato hex ou rgba a cor que deseja que preencha os moldes')
  titlesColor=('Inserir em formato hex ou rgba a cor que deseja que os textos dos moldes')
  titlesSize=('Inserir a quantidade de pixels que deseja que seja a fonte dos textos')
  borderRadius=('Inserir a quantidade de pixels para o arredondamento das bordas dos moldes principais')
  borderRadiusSub=('Inserir a quantidade de pixels para o arredondamento das bordas dos moldes secundários')
  titlesBorderColor=('Inserir em formato hex ou rgba a cor que deseja que preencha a borda dos moldes')
  modelHeight=('Inserir a quantidade de pixels que deseja que ocupe a altura dos moldes')
  zIndex=('Em formato: {1000}, insira a numeração do zIndex da aba lateral')
  classesResponsiveResize=('Insira dentro de um vetor as classes que você deseja que sejam responsivas manualmente ao tamanho da aba lateral')
  NavigationMenuIcon=('Insira dentro de um vetor as classes do FontAwesome que representa os ícones que você deseja para a aba de navegação')
  buttons=('Leia os próximos passos para seguir um passo a passo do funcionamento dos botões')

Caso não queira espaço de logo somente é necessário não colocar o campo logoURL nos Props.

No parâmetro buttons você criará um objeto na qual o primeiro valor será icons e o segundo functions, no valor icons insira um vetor com os ícones do FontAwesome que representam a sua escolha, no segundo valor insira um vetor com as funções que você deseja que faça ao clicar no ícone que será apresentado na aba lateral, a ordem dos vetores serão apresentadas juntamente, ou seja, vetor de ícone na posição 1 funcionará com vetor de função da posição 1. Exemplo:

  buttons={{
    'icons': ['fas fa-exchange', 'fas fa-print', 'fas fa-exchange'],
    'functions': ['toggleSidebar', 'printScreen', função()]
  }}

as funções toggleSidebar e printScreen são funções da biblioteca na qual os objetivos delas são abrir e fechar a aba lateral e fazer uma captura da tela, caso queira utilizar uma função sua você pode seguir o molde utilizado na terceira posição do vetor, chamando normalmente sua função no molde função()

O Campo NavigationMenuIcon é necessário para inserir via classe os ícones FontAwesome versão 5.15.4, caso contrário não aparecerá a roda de navegação.

Caso não queira o molde de abre e fecha automaticamente gerado pela biblioteca basta colocar no local onde insere value="Nome desejado" o valor noModel, desse jeito:

<div value="noModel">
  DIV SEM MOLDE
</div>
<div value="Com Molde">
  DIV COM MOLDE
</div>
1.4.26

2 years ago

1.4.20

2 years ago

1.4.22

2 years ago

1.4.21

2 years ago

1.4.24

2 years ago

1.4.23

2 years ago

1.4.25

2 years ago

1.3.9

2 years ago

1.3.8

2 years ago

1.4.11

2 years ago

1.4.10

2 years ago

1.2.9

2 years ago

1.4.13

2 years ago

1.4.12

2 years ago

1.4.15

2 years ago

1.4.14

2 years ago

1.4.17

2 years ago

1.4.16

2 years ago

1.4.19

2 years ago

1.4.6

2 years ago

1.4.5

2 years ago

1.4.4

2 years ago

1.4.3

2 years ago

1.4.2

2 years ago

1.4.1

2 years ago

1.4.0

2 years ago

1.3.10

2 years ago

1.3.11

2 years ago

1.3.12

2 years ago

1.3.7

2 years ago

1.3.6

2 years ago

1.3.5

2 years ago

1.3.4

2 years ago

1.3.3

2 years ago

1.3.2

2 years ago

1.3.1

2 years ago

1.3.0

2 years ago

1.4.9

2 years ago

1.4.8

2 years ago

1.4.7

2 years ago

1.2.0

2 years ago

1.2.8

2 years ago

1.2.7

2 years ago

1.2.6

2 years ago

1.2.5

2 years ago

1.2.4

2 years ago

1.2.3

2 years ago

1.2.2

2 years ago

1.2.1

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.1.9

2 years ago

1.1.8

2 years ago

1.1.7

2 years ago

1.1.6

2 years ago

1.1.5

2 years ago

1.1.4

2 years ago

1.1.3

2 years ago

1.1.2

2 years ago

1.1.12

2 years ago

1.1.11

2 years ago

1.1.10

2 years ago

1.1.16

2 years ago

1.1.15

2 years ago

1.1.14

2 years ago

1.1.13

2 years ago

1.1.19

2 years ago

1.1.18

2 years ago

1.1.17

2 years ago

1.1.23

2 years ago

1.1.22

2 years ago

1.1.21

2 years ago

1.1.20

2 years ago

1.1.24

2 years ago

1.0.43

3 years ago

1.0.42

3 years ago

1.0.41

3 years ago

1.0.40

3 years ago

1.0.39

3 years ago

1.0.38

3 years ago

1.0.37

3 years ago

1.0.36

3 years ago

1.0.35

3 years ago

1.0.34

3 years ago

1.0.33

3 years ago

1.0.32

3 years ago

1.0.31

3 years ago

1.0.30

3 years ago

1.0.29

3 years ago

1.0.28

3 years ago

1.0.27

3 years ago

1.0.26

3 years ago

1.0.25

3 years ago

1.0.24

3 years ago

1.0.23

3 years ago

1.0.22

3 years ago

1.0.21

3 years ago

1.0.20

3 years ago

1.0.19

3 years ago

1.0.18

3 years ago

1.0.17

3 years ago

1.0.16

3 years ago

1.0.15

3 years ago

1.0.14

3 years ago

1.0.13

3 years ago

1.0.12

3 years ago

1.0.11

3 years ago

1.0.10

3 years ago

1.0.8

3 years ago

1.0.7

3 years ago

1.0.6

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago