bianjiang 1 an în urmă
părinte
comite
c942115eb2

+ 4 - 4
src/comm/controllers/appMsgRecvCtrl.ts

@@ -6,7 +6,7 @@ import { Controller } from "../core/controller";
 import { useCtx } from "../ctx";
 
 export type AssetSendedCallback = (assetUri:string)=>Promise<boolean>;
-export type AssetType = "empty" | "image"
+export type AssetType = "empty" | "Pack"
 const RevcChangeEvent = "app.recv.change"
 class AssetListener {
     id = "";
@@ -61,15 +61,15 @@ export class AppMsgRecvController extends Controller {
         natsCtrl.publish(RevcChangeEvent, JSON.stringify({Guid: this.appGuid}))
     }
 
-    //添加图片监听者
-    addImageListener(actionName:string, handle: AssetSendedCallback) {
+    //添加资源监听者  
+    addAssetsListener(actionName:string, handle: AssetSendedCallback) {
         let listen = this.listeners.find(item=>item.actionName == actionName);
         if (listen)  {
             listen.callback = handle;
             return listen.id;
         }
         listen = new AssetListener(actionName, handle)
-        listen.type = "image";
+        listen.type = "Pack";
         this.listeners.push(listen);
     }
 

+ 4 - 1
src/comm/controllers/appMsgCtrl.ts → src/comm/controllers/appScreenMsgCtrl.ts

@@ -9,7 +9,7 @@ import { Controller } from "../core/controller";
 import { useCtx } from "../ctx";
 import { queenApi } from "queenjs";
 
-export class AppMsgController extends Controller {
+export class AppScreenMsgController extends Controller {
   constructor() {
     super();
     this.init();
@@ -21,4 +21,7 @@ export class AppMsgController extends Controller {
   onReady() {
     console.log("here can call other controller");
   }
+  saveFiles(){
+    console.log("");
+  }
 }

+ 0 - 25
src/comm/controllers/cmdsvcCtrl.ts

@@ -1,25 +0,0 @@
-import { queenApi } from "queenjs";
-import { connect, StringCodec, Empty, ErrorCode } from "nats.ws";
-import { Controller } from "../core/controller";
-import { useCtx } from "../ctx";
-import { reactive } from "vue";
-
-export class CmdSvcController extends Controller {
-  
-    state = reactive({
-        list: [] as {f:string,m:string}[]
-    })
-
-    async onReady() {
-      const {natsCtrl} = useCtx();
-      const params = new URLSearchParams(decodeURIComponent(location.search));
-      const guid = params.get("guid");
-
-      const state = this.state;
-      console.log("substring", `${guid}.cmdmsg`)
-      natsCtrl.subscribe(`${guid}.cmdmsg`, (msg:any)=>{
-        console.log("cmdMsg=>", msg);
-        state.list.push(msg);
-      }, {queue: "cmdsvc"})
-    }
-}

+ 2 - 4
src/comm/controllers/index.ts

@@ -1,15 +1,13 @@
 import { DeviceController } from "./deviceCtrl";
 import { NatsController } from "./natsCtrl";
 import { ProjectController } from "./lancherPrjCtrl";
-import { CmdSvcController } from "./cmdsvcCtrl";
 import { AppMsgRecvController } from "./appMsgRecvCtrl";
-import { AppMsgController } from "./appMsgCtrl";
+import { AppScreenMsgController } from "./appScreenMsgCtrl";
 
 export {
   DeviceController,
   ProjectController,
   NatsController,
-  CmdSvcController,
   AppMsgRecvController,
-  AppMsgController
+  AppScreenMsgController
 };

+ 14 - 19
src/comm/controllers/natsCtrl.ts

@@ -4,27 +4,24 @@ import { Controller } from "../core/controller";
 import { useCtx } from "../ctx";
 
 export class NatsController extends Controller {
- 
   _conn: any;
   _isConned = false;
   _startInit = false;
 
   async onReady() {
-      await this.initConn();
+    await this.initConn();
   }
 
   async initConn() {
     if (this._startInit) return;
     this._startInit = true;
 
-    const {deviceCtrl} = useCtx()
-
+    const { deviceCtrl } = useCtx();  
     const profile = deviceCtrl.profile;
 
     if (!profile.wsPort) return;
-    
-    
-    const wsHost = `nats://localhost:${profile.wsPort}`
+
+    const wsHost = `nats://localhost:${profile.wsPort}`;
     console.log("ws host=>", wsHost);
     let ret = false;
 
@@ -40,13 +37,12 @@ export class NatsController extends Controller {
     this._startInit = false;
     return ret;
   }
-  
+
   async GetConn() {
     return this._conn;
   }
 
-  async subscribe(subject: string, callback: any, options:any = {}) {
-  
+  async subscribe(subject: string, callback: any, options: any = {}) {
     if (!this._isConned) {
       console.error("建立连接失败");
       return;
@@ -63,11 +59,10 @@ export class NatsController extends Controller {
           if (ret) {
             const msg = JSON.parse(ret);
             const out = await callback(msg);
-            m.respond(sc.encode(out))
-
+            m.respond(sc.encode(out));
           } else {
             const out = await callback(ret);
-            m.respond(sc.encode(out))
+            m.respond(sc.encode(out));
           }
         } catch (error) {
           console.log(subject, "=>recieved json parse eror", ret);
@@ -101,18 +96,18 @@ export class NatsController extends Controller {
       console.error(error);
     }
   }
-  
-  async publish(subject:string, value:string) {
-    
-    if (!this._isConned) {return}
+
+  async publish(subject: string, value: string) {
+    if (!this._isConned) {
+      return;
+    }
 
     const sc = StringCodec();
 
-    return await this._conn.publish(subject,  sc.encode(value));
+    return await this._conn.publish(subject, sc.encode(value));
   }
 
   async request(subject: string, data?: any, timeout?: number) {
-
     const ret: { error: string; result: any } = { error: "", result: null };
     if (!this._isConned) {
       console.error("建立连接失败");

+ 1 - 1
src/comm/ctx/config.ts

@@ -4,7 +4,7 @@ const ctx = {
   prjCtrl: new Controls.ProjectController(),
   natsCtrl: new Controls.NatsController(),
   recvCtrl: new Controls.AppMsgRecvController(),
-  msgCtrl:new Controls.AppMsgController(),
+  msgCtrl:new Controls.AppScreenMsgController(),
 }
 
 export {ctx};

+ 31 - 32
src/comm/ctx/index.ts

@@ -1,51 +1,50 @@
-import {ctx} from "./config";
+import { ctx } from "./config";
 
-let initOrder =  ["deviceCtrl", "natsCtrl", "prjCtrl", "installCtrl", "runCtrl"];
+let initOrder = ["deviceCtrl", "natsCtrl", "prjCtrl", "recvCtrl", "msgCtrl"];
 export async function SetInitOrder<K extends keyof typeof ctx>(ctrls: K[]) {
-    initOrder = ctrls;
+  initOrder = ctrls;
 }
 
 let OnReadyCtrls = Object.keys(ctx);
 export async function SetOnReadyCtrls<K extends keyof typeof ctx>(ctrls: K[]) {
-    OnReadyCtrls = ctrls;
+  OnReadyCtrls = ctrls;
 }
 
 let excludeCtrls = [] as string[];
 export async function SetExcludeCtrls<K extends keyof typeof ctx>(ctrls: K[]) {
-    excludeCtrls = ctrls;
+  excludeCtrls = ctrls;
 }
 
-
 export async function InitControllers() {
-    console.log("begin init ");
-    let n = initOrder.length;
-    for(let i= 0; i<n; i++) {
-        //@ts-ignore
-        await ctx[initOrder[i]].onReady();
-    }
-    const keys = OnReadyCtrls.slice(0)
-    while(n--) {
-        if (initOrder.indexOf(keys[n]) != -1 ) {
-            keys.splice(n, 1);
-        }
+  console.log("begin init ");
+  let n = initOrder.length;
+  for (let i = 0; i < n; i++) {
+    //@ts-ignore
+    await ctx[initOrder[i]].onReady();
+  }
+  const keys = OnReadyCtrls.slice(0);
+  while (n--) {
+    if (initOrder.indexOf(keys[n]) != -1) {
+      keys.splice(n, 1);
     }
-    
-    if (excludeCtrls.length > 0 ) {
-        n = keys.length;
-        while(n--) {
-            if (excludeCtrls.indexOf(keys[n]) != -1 ) {
-                keys.splice(n, 1);
-            }
-        }
+  }
+
+  if (excludeCtrls.length > 0) {
+    n = keys.length;
+    while (n--) {
+      if (excludeCtrls.indexOf(keys[n]) != -1) {
+        keys.splice(n, 1);
+      }
     }
+  }
 
-    keys.forEach(k=>{
-        //@ts-ignore
-        ctx[k].onReady();
-    })
-    console.log("end init");
+  keys.forEach((k) => {
+    //@ts-ignore
+    ctx[k].onReady();
+  });
+  console.log("end init");
 }
 
 export function useCtx() {
-    return ctx;
-}
+  return ctx;
+}

+ 1 - 0
src/modules/list/actions/list.ts

@@ -16,4 +16,5 @@ export default ListModule.action({
       console.error(e);
     }
   },
+  
 });

+ 0 - 11
src/modules/list/actions/load.ts

@@ -35,11 +35,6 @@ function loadImg(url: string, id: string, name: string): Promise<ShowItem> {
   });
 }
 export default ListModule.action({
-  // async initListData(wWidth: number, wHeight: number) {
-  //   const items = await this.actions.loadData();
-
-  //   this.actions.initLoadShowItems(items);
-  // },
   async shuffleSelf(arr, size) {
     let index = -1;
     const length = arr.length;
@@ -56,13 +51,7 @@ export default ListModule.action({
     return arr;
   },
   async loadData() {
-    const dbId = localStorage.getItem("dbId");
-    const defineId = localStorage.getItem("defineId");
-    if (!dbId || !defineId) {
-      return;
-    }
     await this.actions.getAssetList();
-
     const ps = this.store.list.map((item: ItemObject, index) =>
       loadImg(item.thumbnail, item._id, item.name)
     );

+ 60 - 39
src/pages/website/routes/backend/components/layout/BasicLayout.tsx

@@ -1,15 +1,17 @@
+import { css } from "@linaria/core";
+import { Layout, Menu, Spin } from "ant-design-vue";
 import { defineComponent, onMounted, reactive } from "vue";
 import { useRoute } from "vue-router";
-import { Layout, Menu } from "ant-design-vue";
-import { css } from "@linaria/core";
 
+import { InitControllers } from "@/comm/ctx";
 import { menuData } from "@/pages/website/routes";
 
-const { Header, Sider, Content } = Layout;
+const { Sider, Content } = Layout;
 
 export default defineComponent({
   setup() {
     const state = reactive({
+      loading: true,
       menuKey: ["/backend/upload"],
     });
 
@@ -18,51 +20,70 @@ export default defineComponent({
     };
 
     onMounted(() => {
+      try {
+        InitControllers().then(() => {
+          state.loading = false;
+        });
+      } catch (error) {
+        console.error(error);
+        state.loading = true;
+      }
+
       const data = useRoute();
       state.menuKey = [data.path];
     });
 
-    return () => (
-      <Layout class={HomeStyle}>
-        <Sider width={200} trigger={null} collapsible>
-          <div class="layout_menu">
-            <Menu
-              theme="dark"
-              selectedKeys={state.menuKey}
-              mode="inline"
-              onSelect={(item: any) => {
-                menuChange(item.keyPath);
+    return () => {
+      if (state.loading) {
+        return <Spin class={SpinStyle} tip={"初始加载中..."}></Spin>;
+      }
+      return (
+        <Layout class={HomeStyle}>
+          <Sider width={200} trigger={null} collapsible>
+            <div class="layout_menu">
+              <Menu
+                theme="dark"
+                selectedKeys={state.menuKey}
+                mode="inline"
+                onSelect={(item: any) => {
+                  menuChange(item.keyPath);
+                }}
+              >
+                {menuData?.children &&
+                  menuData.children.map((menu: any) => {
+                    return (
+                      <Menu.Item key={menu.path}>
+                        <router-link to={menu.path}>
+                          {menu.meta.title}
+                        </router-link>
+                      </Menu.Item>
+                    );
+                  })}
+              </Menu>
+            </div>
+          </Sider>
+          <Layout>
+            <Content
+              class="layout_background"
+              style={{
+                margin: "24px 16px",
+                minHeight: 280,
               }}
             >
-              {menuData?.children &&
-                menuData.children.map((menu: any) => {
-                  return (
-                    <Menu.Item key={menu.path}>
-                      <router-link to={menu.path}>
-                        {menu.meta.title}
-                      </router-link>
-                    </Menu.Item>
-                  );
-                })}
-            </Menu>
-          </div>
-        </Sider>
-        <Layout>
-          <Content
-            class="layout_background"
-            style={{
-              margin: "24px 16px",
-              minHeight: 280,
-            }}
-          >
-            <router-view />
-          </Content>
+              <router-view />
+            </Content>
+          </Layout>
         </Layout>
-      </Layout>
-    );
+      );
+    };
   },
 });
-
+const SpinStyle = css`
+  position: absolute;
+  top: 50px;
+  left: 50%;
+  transform: translateX(-50%);
+`;
 const HomeStyle = css`
   width: 100%;
   min-height: 100vh;