Skip to content

Latest commit

 

History

History
40 lines (28 loc) · 2.08 KB

README.md

File metadata and controls

40 lines (28 loc) · 2.08 KB

CompositeStateMachine

Track HTML element composite states

  Requires: jQuery v1.2.3+

  Purpose:
	As the name implies the purpose of this code is to track object states (specifically HTML elements).
	Often times the state of an element, whether it should be shown, or submitted, or pass validation,
	etc, is not a simple condition, but rather a list of conditions that all have to be met.  In order
	to allow for modulized designs, you have to be able to track these conditions and make sure any
	new code doesn't step on the toes of any other code. One appoach to this is the composite state
	machine, where the state of the element is tracked as a composite of all the conditions that have
	been applied against it.
	
	Usage:
	Instantiate with variable = new CompositeStateMachine('Application'), where "variable" is the name
	of the instance, and "Application" is the name of the application you will use the state machine for.
	For instance let's say we wanted to hide elements for various reasons, such as a filter search, we 
	ultimately want to know if the state of the element is hidden.  So we would:
	
	hiddenElements = new CompositeStateMachine('hidden');
	
	hiddenElements.add($('.foo'), 'bar'); 		//add the state 'bar' to all elements provided within the 'hidden' context.
	
	hiddenElements.present($('.foo'), 'bar'); 	//return all elements that have the simple state 'bar' within the 'hidden' context.
	
	hiddenElements.absent($('.foo'), 'bar'); 	//return all elements that do not have the simple state 'bar' within the 'hidden' context.
	
	hiddenElements.present($('.foo')); 			//return all elements that have the composite state 'hidden'.
	
	hiddenElements.absent($('.foo')); 			//return all elements that do not have the composite state 'hidden'.
	
	hiddenElements.remove($('.foo'), 'bar');	//remove the state 'bar' from all elements provided within the 'hidden' context.
	
	hiddenElements.remove($('.foo'));			//removes all sub states from all elements provided within the 'hidden' context.
	
	NOTE: You can pass in single elements, arrays of elements, or jQuery objects.