JavaScript Funciones auxiliares

Las reglas de automatización incluyen una biblioteca de funciones auxiliares que ayudan a resolver tareas comunes en JavaScript el código.

Cargando funciones auxiliares

Las funciones auxiliares no están disponibles de forma predeterminada. Deben cargarse en JavaScript rule. Hay varias formas de cargarlos:

const utils = require("utils");
const utils = require("utils");

return utils.createResource("Task", {
  Project: { Id: args.Current.Project.Id },
  UserStory: {Id: args.ResourceId},
  Name: "Created Automatically"
});
const {createResource, updateResource, addDays} = require("utils");
const { createResource } = require("utils");

return createResource("Task", {
  Project: { Id: args.Current.Project.Id },
  UserStory: { Id: args.ResourceId },
  Name: "Created Automatically"
});

La lista de funciones auxiliares

Mandatos

Comando para crear un nuevo recurso:

createResource(resourceType: string, fields?: ResourceFields)

const utils = require("utils");

return utils.createResource("UserStory", {
  Project: { Id: args.Current.Project.Id },
  Feature: { Id: args.ResourceId },
  Name: "Created Automatically"
});
Comando para actualizar un recurso existente: updateResource(resourceType: string, resourceId: number, fields: ResourceFields)
const utils = require("utils");

return utils.updateResource("Feature", args.ResourceId, { Release: { id: 100 } });
Comando para eliminar un recurso existente: deleteResource(resourceType: string, resourceId: number)
const utils = require("utils");

return utils.deleteResource("TeamAssignment", 50);
Comando para mover un recurso existente a otro estado: moveToState(resourceType: string, resourceId: number, stateKind: 'Initial' | 'Planned' | 'Final')
const utils = require("utils");

return utils.moveToState("Epic", args.ResourceId, "Final");
Comando para mover un recurso existente a otro estado por su nombre: moveToStateByName(resourceType: string, resourceId: number, stateKind: string)
const utils = require("utils");

return utils.moveToStateByName("UserStory", args.ResourceId, "In Progress");
Comando para enviar HTTP solicitud: sendHttpRequest(url: string, options?: { method?: 'POST' | 'PUT' | 'DELETE', body?: any, headers?: { [key: string]: string } })
const utils = require("utils");

return utils.sendHttpRequest("https://hooks.slack.com/services/...", {
  body: { 
    text: ___PROTECTED_6___ 
  }
});
const utils = require("utils");

return utils.sendHttpRequest("https://webhook.site/...",
  {
    method: "POST",
    body: "Hello", 
    headers: {"additional-info": "test message" }
  }
);

Trabajar con fechas

Funciones que añaden un periodo a una fecha

Añadir el número especificado de milisegundos a la fecha dada: addMilliseconds(date: DateLike, milliseconds: number): Date Añadir el número especificado de segundos a la fecha dada: addSeconds(date: DateLike, seconds: number): Date Añadir el número especificado de minutos a la fecha dada: addMinutes(date: DateLike, minutes: number): Date Añadir el número especificado de horas a la fecha dada: addHours(date: DateLike, hours: number): Date Añadir el número especificado de días a la fecha dada: addDays(date: DateLike, days: number): Date Añadir el número especificado de semanas a la fecha dada: addWeeks(date: DateLike, weeks: number): Date Añadir el número especificado de meses completos a la fecha dada: addMonths(date: DateLike, months: number): Date Añadir el número especificado de años completos a la fecha dada: addYears(date: DateLike, years: number): Date Aquí hay un ejemplo de cómo calcular una fecha basándose en otra fecha:
const utils = require("utils");

const kickStartDate = new Date("2019-03-15T12:00:00Z");
const demoDate = utils.addDays(kickStartDate, 14);

console.log(kickStartDate); // 2019-03-15T12:00:00Z
console.log(demoDate); // 2019-03-29T12:00:00Z

Funciones que calculan la diferencia entre las fechas dadas

El número de milisegundos entre las fechas indicadas: differenceInMilliseconds(date: DateLike, deduction: DateLike): number El número de segundos entre las fechas indicadas. El resultado se trunca a cero decimales de forma predeterminada. Pase «true» como tercer argumento para obtener un resultado de punto flotante: differenceInSeconds(date: DateLike, deduction: DateLike, asFloat?: boolean): number El número de minutos entre las fechas dadas: differenceInMinutes(date: DateLike, deduction: DateLike, asFloat?: boolean): number El número de horas entre las fechas dadas: differenceInHours(date: DateLike, deduction: DateLike, asFloat?: boolean): number El número de días entre las fechas dadas: differenceInDays(date: DateLike, deduction: DateLike, asFloat?: boolean): number El número de semanas entre las fechas dadas: differenceInWeeks(date: DateLike, deduction: DateLike, asFloat?: boolean): number El número de meses entre las fechas dadas: differenceInMonths(date: DateLike, deduction: DateLike, asFloat?: boolean): number El número de años entre las fechas dadas: differenceInYears(date: DateLike, deduction: DateLike, asFloat?: boolean): number Comprueba si las fechas dadas son iguales y devuelve verdadero o falso: equalDates(date: DateLike, other: DateLike): boolean
const utils = require("utils");

const plannedFeatureStartDate = "2019-04-01T00:00:00Z";
const plannedFeatureEndDate = "2019-05-15T00:00:00Z";
const featureDurationInWeeks = utils.differenceInWeeks(plannedFeatureEndDate, plannedFeatureStartDate, true);

console.log(featureDurationInWeeks); // 6.285714285714286

Trabajar con números y cadenas

Función redondear

Redondea a un número específico de decimales: round(value: number, precision?: number): number
const utils = require("utils");

const spentHours = args.Current.TimeSpent; // 11
const spentDays = spentHours / 8;  // 1.375
const roundedSpentDays = utils.round(spentDays, 2);

console.log(roundedSpentDays); // 1.38

Función truncada

Trunca la cadena si es más larga que la longitud especificada. Los últimos caracteres de la cadena truncada se sustituyen por «...»: truncate(text: string, length?: number): string
const utils = require("utils");

const name = args.Current.Name;
const truncatedName = utils.truncate(name, 50);

console.log(truncatedName); // Lorem ipsum dolor sit amet, consectetur adipisc...