HistorySnapshot - Образ изменений в таблице
=================================================

.. currentmodule:: axioma.core.dp

.. class:: HistorySnapshot

	Образ изменений в таблице. Используется редактируемой таблицей :class:`~axioma.core.dp.EditableTable`

	Методы:

		.. method:: HistorySnapshot(comparator)

			Конструктор класса

			:param comparator: функтор сравнения
			:type comparator: :class:`~axioma.core.dp.VariantComparator`

		.. method:: insertedFeatureSequence(range=PageRange())

			Получить итератор по записям, которые были добавлены

			:param range: диапазон записей
			:type range: :class:`~axioma.core.dp.PageRange`
			:return: итератор по добавленным записям
			:rtype: :class:`~axioma.core.dp.Cursor`

		.. method:: inserted()

			Список записей, которые были добавлены

			:return: список добавленных записей
			:rtype: :class:`list` [:class:`~axioma.core.dp.Feature`]

		.. method:: newfoundIds()

			Список обновленных записей

			:return: добавленные записи
			:rtype: :class:`list` [:class:`~PyQt5.QtCore.QVariant`]

		.. method:: storeNewfoundFeature(feature)

			Поместить в таблицу запись для добавления

			:param feature: запись для добавления
			:type feature: :class:`~axioma.core.dp.Feature`

		.. method:: storeUpdatedFeature(feature)

			Поместить в таблицу запись для обновления

			:param feature: запись для обновления
			:type feature: :class:`~axioma.core.dp.Feature`

		.. method:: storeGoneFeature(id)

			Поместить идентификатор записи для удаления

			:param id: идентификатор записи для удаления
			:type id: :class:`~PyQt5.QtCore.QVariant`

		.. method:: clear()

			удалить все изменения

		.. method:: isEmpty()

			:return: является ли пустым
			:rtype: :class:`bool`

		.. method:: idComparator()

			:return: компаратор идентификаторов
			:rtype: :class:`~axioma.core.dp.VariantComparator`

		.. method:: numInsertedFeatures()

			:return: количество записей для добавления
			:rtype: :class:`int`

		.. method:: numNewfoundIds()

			:return: количество записей для обновления
			:rtype: :class:`int`

		.. method:: numGoneFeatures()

			:return: количество записей для удаления
			:rtype: :class:`int`

Пример использования:

.. literalinclude:: ../../../../../../examples/edit_table.py
	:language: python
	:linenos:


.. note:: Для редактирования открытой таблицы лучшим решением будет создать для нее обертку :class:`~axioma.core.dp.TransactionalTable` посредством метода :func:`~axioma.core.open_json`
