Evitar resultados de cache en las llamadas REST a SharePoint (HTTP 304)

Por defecto, si el contenido que estamos obteniendo no ha cambiado, obtendrá la respuesta de la cache del navegador, dándonos un código HTTP 304 (Not Modified). Un ejemplo en el que nos puede dar problemas es si trabajamos con una query para obtener una lista en SharePoint y utilizamos el $expand para incluir tambien los …

Sigue leyendo Evitar resultados de cache en las llamadas REST a SharePoint (HTTP 304)

Guardar traducciones del título y descripción de listas en SharePoint via REST API (SPFx, Batch y alternativa ProcessQuery)

Registrar traducciones para el título y la descripción de una lista es bastante sencillo por CSOM a través del comando: list.TitleResource.SetValueForUICulture("en-US", "TITLE_IN_ENGLISH"); Para que estos cambios funcionen es necesario hacer los SETs y ejecutar un UPDATE. Sin el update nunca se guardarán las traducciones, por lo que si llamamos por REST al endpoint SetValueForUICulture no …

Sigue leyendo Guardar traducciones del título y descripción de listas en SharePoint via REST API (SPFx, Batch y alternativa ProcessQuery)

Ordenar Array de objetos por property de texto (Título, etc) en Typescript

Si tenemos un array de objetos con multiples propiedades, podemos ordenarlo en base a una de sus propiedades de tipo texto, como puede ser, en muchos casos, el título. Utilizaremos la funcion "sort" comparando los títulos con "localeCompare", de la siguiente manera: let orderedArray = myOriginalArray.sort((a, b) => a.Title.localeCompare(b.Title));

Obtener y filtrar listas de SharePoint en SPFx con @pnp/sp

Con la libreria SP de PNP podemos obtener facilmente las listas de un site de SharePoint y filtrarlas, un ejemplo de una función que podemos incluir en nuestro código y reutilizarla en función del contexto. Primero deberéis instalar la librería @pnp/sp import { Web } from "@pnp/sp"; const getLists = async(webUrl: string, selectProperties: string[], expandProperties: …

Sigue leyendo Obtener y filtrar listas de SharePoint en SPFx con @pnp/sp

Controlar OnLoad para detectar la URL de navegación dentro de un iframe

Si queremos detectar cuando nuestro iframe cambia de página debemos sobreescribir el evento onLoad. Es importante que una vez capturemos esa navegación volvamos a aplicar el pushState por defecto para que el navegador tenga constancia del histórico. Ejemplo: <iframe onLoad { () => { const pushState = () => {              const defaultPushState = iframeContentRef.contentWindow.history.pushState; return function (data: any, title: string, url?: string | null) { //YOUR CODE return defaultPushState.apply(this, [data, title, url]); };            };            iframeContentRef.contentWindow.history.pushState = pushState();      }}             src={IFRAME_URL}>          </iframe>

Agrupar archivos MD en un único HTML y convertirlo a PDF

Si tenemos varios archivos Markdown (MD) y queremos exportarlos a un PDF necesitamos utilizar alguna aplicación de terceros. En este caso usaremos Pandoc. Pandoc es un conversor universal de documentos y lo podéis encontrar aquí: https://pandoc.org/ Una vez lo tengáis instalado, podeis abrir la consola Command Prompt (cmd), navegar hasta la carpeta donde tengamos los …

Sigue leyendo Agrupar archivos MD en un único HTML y convertirlo a PDF

Normalizar acentos en Javascript (y Typescript)

Si necesitamos normalizar palabras en nuestro código (por ejemplo, para usar keywords de búsqueda) existen multiples soluciones dependiendo de si utilizamos ES6 o no. Si usamos ES6 bastará con utilizar la funcion "normalize" incluida en String. Usando el parámetro "NFD" automáticamente dividirá cada letra con acento en dos ("á" pasaría a ser "a´"), de forma …

Sigue leyendo Normalizar acentos en Javascript (y Typescript)

Añadir estilos en un WebPart SPFx para los temas de Teams (Default, Dark, High Contrast)

Primero debemos añadir un bloque de código a ejecutar en el inicio de nuestro componente que se encargará de añadir un parametro que nos permitirá identificar en que tema estamos. Utilizaremos el contexto actual (puede ser this.context, this.props.context, props.context... dependiendo de cómo desarrolleis el componente). En mi caso trabajamos con React Function Components, y pasamos …

Sigue leyendo Añadir estilos en un WebPart SPFx para los temas de Teams (Default, Dark, High Contrast)

Llamar a una función asíncrona dentro del hook useEffect en React Function Components

Si habéis intentado llamar a una función asíncrona dentro del hook de useEffect es posible que os hayáis encontrado con un error que no os lo permite: Argument of type '() => Promise<void>' is not assignable to parameter of type 'EffectCallback'. El error aparece al intentar añadir el "async", pero no se puede asignar la …

Sigue leyendo Llamar a una función asíncrona dentro del hook useEffect en React Function Components