App.vue 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <script setup lang="ts">
  2. import TheAddressspace from './components/TheAddressspace.vue'
  3. import TheInstance from './components/TheInstance.vue'
  4. import TheParent from './components/TheParent.vue'
  5. import TheMapping from './components/TheMapping.vue'
  6. import TheDynamics from './components/TheDynamics.vue'
  7. import { ServerConfig } from '@/ServerConfig'
  8. import TheModels from './components/TheModels.vue'
  9. import { useStore } from './store';
  10. import { AddressSpace } from './ua/AddressSpace';
  11. import { assert } from './util/assert';
  12. import { ref } from 'vue'
  13. import { storeToRefs } from 'pinia'
  14. const store = useStore();
  15. const { selectedNode } = storeToRefs(store);
  16. async function load(): Promise<AddressSpace> {
  17. const files=['nodesets/Opc.Ua.NodeSet2.xml',
  18. 'nodesets/Opc.Ua.Di.NodeSet2.xml',
  19. 'nodesets/Opc.Ua.Ia.NodeSet2.xml',
  20. 'nodesets/Opc.Ua.Machinery.NodeSet2.xml',
  21. 'nodesets/Opc.Ua.MachineTool.Nodeset2.xml',
  22. 'nodesets/emco_machine_tools.xml']
  23. const as=await AddressSpace.load(files);
  24. return as;
  25. }
  26. const loadData = async () => {
  27. const store = useStore();
  28. store.serverConfig = ServerConfig.load({});
  29. store.addressSpace=await load();
  30. assert(store.addressSpace)
  31. const rootNode=store.addressSpace.findNode("ns=0;i=84");
  32. assert(rootNode)
  33. store.rootNode=rootNode;
  34. }
  35. loadData();
  36. const childParentRef = ref();
  37. const childDetailRef = ref();
  38. const childEditorRef = ref();
  39. const childDynamicsRef = ref();
  40. function okPressed(){
  41. childParentRef.value.okPressed();
  42. childDetailRef.value.okPressed();
  43. childEditorRef.value.okPressed();
  44. childDynamicsRef.value.okPressed();
  45. }
  46. </script>
  47. <template>
  48. <div class="container text-left">
  49. <div class="row align-items-start">
  50. <div class="col col-6">
  51. <TheModels />
  52. <TheAddressspace />
  53. </div>
  54. <div class="col col-6">
  55. <TheParent ref="childParentRef"/>
  56. <TheInstance ref="childDetailRef"/>
  57. <TheMapping ref="childEditorRef"/>
  58. <TheDynamics ref="childDynamicsRef"/>
  59. <button class="btn btn-light" v-if="selectedNode!=null" @click.prevent="okPressed()">OK</button>
  60. </div>
  61. </div>
  62. </div>
  63. </template>
  64. <style>
  65. </style>