ForgeTotal.js 5
hu

Total.js 5

Két lista összehasonlítása a DIFFARR-ral: mit kell hozzáadni, frissíteni és eltávolítani

Total.js 5 · total5@0.0.19 utilitiesarraysforms Total.js 5-tel lefuttatva

A DIFFARR(property, saved, submitted) két objektumtömböt hasonlít össze egy tulajdonság alapján, és három listát tartalmazó objektumot ad vissza:

  • add: a submitted azon objektumai, amelyek tulajdonsága nincs a saved-ben
  • upd: a mindkettőben szereplő objektumoknál { db, form } a mentett és a beküldött objektummal
  • rem: a saved azon elemeinek tulajdonságértékei (nem az objektumok), amelyek nincsenek a submitted-ben

Ez a szokásos lépés egy szerkeszthető lista mentésekor: az űrlap a teljes listát elküldi, Önnek pedig tudnia kell, mi jött létre, mi változott és mit töröltek. Az értékeket ==-val hasonlítja össze, így az 1 és a '1' ugyanaz az elem.

controllers/lists.js
const saved = [
	{ id: 1, name: 'Book' },
	{ id: 2, name: 'Pen' },
	{ id: 3, name: 'Lamp' }
];

exports.install = function() {
	ROUTE('POST /sync/', sync);
};

function sync($) {
	const diff = DIFFARR('id', saved, $.body.items);
	$.json({
		add: diff.add,
		update: diff.upd.map(n => ({ id: n.db.id, from: n.db.name, to: n.form.name })),
		remove: diff.rem
	});
}