move tags computing to view, while not in js. It will cache tags data when in js, which will be incorrect.