Skip to content

Instantly share code, notes, and snippets.

View ChemaCLi's full-sized avatar
👨‍💻

Jose Maria CLi ChemaCLi

👨‍💻
View GitHub Profile
@ChemaCLi
ChemaCLi / bitrix.api.ts
Last active February 25, 2024 08:43
Bitrix 24 CRM Rest API - NodeJS Usage
export const API = ({ baseUrl }: { baseUrl: string }) => ({
async get(url: string, options: { params?: any } = {}) {
const paramsString = Object.entries(options.params || {})
.map(([key, value]) => `${key}=${value}`)
.join('&')
const endpoint = `${baseUrl}${url}?${paramsString}`;
const response = await fetch(endpoint, {
method: 'GET',
import { forwardRef } from "react"
import { Button as AButton } from "antd"
import { ModalContext, ModalContextProvider } from "../../../contexts"
function ModalButtonComponent({
button: Button = AButton,
modalProps,
modal,
title,
...props
import { forwardRef, useImperativeHandle, useState } from "react"
import { ModalContext } from "./context"
export const ModalContextProvider = forwardRef(({
children,
modalProps,
modal: Modal
}, ref) => {
const [state, setState] = useState({
isModalOpen: false,
import { useRef, useEffect } from "react";
// Hook taken from here https://usehooks.com/usePrevious/
export function usePrevious(value) {
// The ref object is a generic container whose current property is mutable ...
// ... and can hold any value, similar to an instance property on a class
const ref = useRef();
// Store current value in ref
useEffect(() => {
ref.current = value;
@ChemaCLi
ChemaCLi / pdf-charts-generator.js
Last active May 7, 2025 11:44
Generate PDF with ChartJS and PDFKit
const fs = require('fs')
const tmp = require("tmp");
const PDFDocument = require('pdfkit');
const MemoryStream = require('memorystream');
const { ChartJSNodeCanvas } = require('chartjs-node-canvas');
export async function generatePDFWithCharts() {
// Sample chart with ChartJS
const chartJSNodeCanvas = new ChartJSNodeCanvas({ type: 'png', width: 800, height: 600 });
const configuration = {