What does it mean for a DataSet to be less than another DataSet?
I would think it would need to be something like:
if not currentValue.value.equals(previousValue.value):
system.perspective.openPopup('','Popup/New Message')
Since datasets are immutable, I would think this would be true any time the binding updates, even if the actual data hasn't changed? Which maybe isn't what you want?
The property change event itself does change de-duplication, except for the fact that datasets are compared by identity, so will always be different, even if the data within is the same. Depending on what changes you expect to happen to your dataset, perhaps you could compare the row count between currentValue and previousValue?
As a tangent, I considered adding system.dataset.valuesEqual(dataset, dataset), system.dataset.columnsEqual(dataset, dataset) to Ignition Extensions; might still do something like that.
What do you want to happen when the table is updated while there's already a popup opened ?
Replace the old one, or prevent the new one from popping up ?
First case, assign a fixed id to your popup, and call the close popup function with this id before opening a new one.
Second case, you'll need to keep track of whether or not a popup is already opened, and prevent any new one to pop before it's closed.
But if they keep popping up, you'll run into another issue: you'll always have one opened, has every time you close one, another one will pop soon. You might need to rethink the trigger.
I would like to be able to compare table1.previousValue to table1.currentValue as session or component custom props, but Im not sure how to write the expression for each one of those. I do know that if I did len(table1.props.data) would give me current value but not sure how get a previous row count. Then have that comparison run a openPopup script.