store.ts 922 B

12345678910111213141516171819202122232425262728
  1. import { AddressSpace } from '@/ua/AddressSpace'
  2. import { type UABaseNode } from '@/ua/UABaseNode'
  3. import type { UANodeSet } from '@/ua/UANodeSet'
  4. import { defineStore } from 'pinia'
  5. import { ref } from 'vue'
  6. import { ServerConfig } from './ServerConfig'
  7. import type { IAddressSpace } from '@/ua/IAddressSpace'
  8. export const useStore = defineStore('user', {
  9. state: () => ({
  10. addressSpace: new AddressSpace([]) as IAddressSpace,
  11. rootNode: ref<UABaseNode | null>(null),
  12. selectedNode: ref<UABaseNode | null>(null),
  13. config: ServerConfig.load({})
  14. }),
  15. actions: {
  16. setAddressSpace(as: AddressSpace) {
  17. this.addressSpace=as;
  18. this.rootNode=this.addressSpace.findNode("ns=0;i=84")||null;
  19. this.selectedNode=null;
  20. },
  21. addNodeset(nodeset: UANodeSet) {
  22. this.addressSpace?.addNodeset(nodeset);
  23. this.rootNode=this.addressSpace?.findNode("ns=0;i=84")||null;
  24. }
  25. }
  26. })