1.4.26 • Published 8 months ago

sidebargeovista v1.4.26

Weekly downloads
-
License
-
Repository
-
Last release
8 months 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

8 months ago

1.4.20

9 months ago

1.4.22

9 months ago

1.4.21

9 months ago

1.4.24

9 months ago

1.4.23

9 months ago

1.4.25

9 months ago

1.3.9

11 months ago

1.3.8

12 months ago

1.4.11

11 months ago

1.4.10

11 months ago

1.2.9

12 months ago

1.4.13

11 months ago

1.4.12

11 months ago

1.4.15

9 months ago

1.4.14

11 months ago

1.4.17

9 months ago

1.4.16

9 months ago

1.4.19

9 months ago

1.4.6

11 months ago

1.4.5

11 months ago

1.4.4

11 months ago

1.4.3

11 months ago

1.4.2

11 months ago

1.4.1

11 months ago

1.4.0

11 months ago

1.3.10

11 months ago

1.3.11

11 months ago

1.3.12

11 months ago

1.3.7

12 months ago

1.3.6

12 months ago

1.3.5

12 months ago

1.3.4

12 months ago

1.3.3

12 months ago

1.3.2

12 months ago

1.3.1

12 months ago

1.3.0

12 months ago

1.4.9

11 months ago

1.4.8

11 months ago

1.4.7

11 months ago

1.2.0

1 year ago

1.2.8

1 year ago

1.2.7

1 year ago

1.2.6

1 year ago

1.2.5

1 year ago

1.2.4

1 year ago

1.2.3

1 year ago

1.2.2

1 year ago

1.2.1

1 year ago

1.1.1

1 year ago

1.1.0

1 year ago

1.1.9

1 year ago

1.1.8

1 year ago

1.1.7

1 year ago

1.1.6

1 year ago

1.1.5

1 year ago

1.1.4

1 year ago

1.1.3

1 year ago

1.1.2

1 year ago

1.1.12

1 year ago

1.1.11

1 year ago

1.1.10

1 year ago

1.1.16

1 year ago

1.1.15

1 year ago

1.1.14

1 year ago

1.1.13

1 year ago

1.1.19

1 year ago

1.1.18

1 year ago

1.1.17

1 year ago

1.1.23

1 year ago

1.1.22

1 year ago

1.1.21

1 year ago

1.1.20

1 year ago

1.1.24

1 year ago

1.0.43

1 year ago

1.0.42

1 year ago

1.0.41

1 year ago

1.0.40

1 year ago

1.0.39

1 year ago

1.0.38

1 year ago

1.0.37

1 year ago

1.0.36

1 year ago

1.0.35

1 year ago

1.0.34

1 year ago

1.0.33

1 year ago

1.0.32

1 year ago

1.0.31

1 year ago

1.0.30

1 year ago

1.0.29

1 year ago

1.0.28

1 year ago

1.0.27

1 year ago

1.0.26

1 year ago

1.0.25

1 year ago

1.0.24

1 year ago

1.0.23

1 year ago

1.0.22

1 year ago

1.0.21

1 year ago

1.0.20

1 year ago

1.0.19

1 year ago

1.0.18

1 year ago

1.0.17

1 year ago

1.0.16

1 year ago

1.0.15

1 year ago

1.0.14

1 year ago

1.0.13

1 year ago

1.0.12

2 years ago

1.0.11

2 years ago

1.0.10

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago