Commit bbecfbba authored by WuFeiyang's avatar WuFeiyang

添加了cardreader

parent 8f2d40e9
......@@ -5056,10 +5056,9 @@
"dev": true
},
"eventemitter3": {
"version": "3.1.2",
"resolved": "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-3.1.2.tgz?cache=0&sync_timestamp=1560950873670&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feventemitter3%2Fdownload%2Feventemitter3-3.1.2.tgz",
"integrity": "sha1-LT1I+cNGaY/Og6hdfWZOmFNd9uc=",
"dev": true
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz",
"integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg=="
},
"events": {
"version": "3.0.0",
......@@ -5560,19 +5559,17 @@
}
},
"follow-redirects": {
"version": "1.7.0",
"resolved": "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.7.0.tgz",
"integrity": "sha1-SJ68GY3A5/ZBZ70jsDxMGbV4THY=",
"dev": true,
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz",
"integrity": "sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==",
"requires": {
"debug": "^3.2.6"
"debug": "^3.0.0"
},
"dependencies": {
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz",
"integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=",
"dev": true,
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"requires": {
"ms": "^2.1.1"
}
......@@ -7365,26 +7362,64 @@
"dev": true
},
"http-proxy": {
"version": "1.17.0",
"resolved": "https://registry.npm.taobao.org/http-proxy/download/http-proxy-1.17.0.tgz",
"integrity": "sha1-etOElGWPhGBeL220Q230EPTlvpo=",
"dev": true,
"version": "1.18.0",
"resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz",
"integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==",
"requires": {
"eventemitter3": "^3.0.0",
"eventemitter3": "^4.0.0",
"follow-redirects": "^1.0.0",
"requires-port": "^1.0.0"
}
},
"http-proxy-middleware": {
"version": "0.19.1",
"resolved": "https://registry.npm.taobao.org/http-proxy-middleware/download/http-proxy-middleware-0.19.1.tgz?cache=0&sync_timestamp=1562701920015&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-proxy-middleware%2Fdownload%2Fhttp-proxy-middleware-0.19.1.tgz",
"integrity": "sha1-GDx9xKoUeRUDBkmMIQza+WCApDo=",
"dev": true,
"version": "0.20.0",
"resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.20.0.tgz",
"integrity": "sha512-dNJAk71nEJhPiAczQH9hGvE/MT9kEs+zn2Dh+Hi94PGZe1GluQirC7mw5rdREUtWx6qGS1Gu0bZd4qEAg+REgw==",
"requires": {
"http-proxy": "^1.17.0",
"is-glob": "^4.0.0",
"lodash": "^4.17.11",
"micromatch": "^3.1.10"
"is-glob": "^4.0.1",
"lodash": "^4.17.14",
"micromatch": "^4.0.2"
},
"dependencies": {
"braces": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
"requires": {
"fill-range": "^7.0.1"
}
},
"fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
"requires": {
"to-regex-range": "^5.0.1"
}
},
"is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
},
"micromatch": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
"integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
"requires": {
"braces": "^3.0.1",
"picomatch": "^2.0.5"
}
},
"to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"requires": {
"is-number": "^7.0.0"
}
}
}
},
"http-signature": {
......@@ -7789,8 +7824,7 @@
"is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz",
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
"dev": true
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
},
"is-finite": {
"version": "1.0.2",
......@@ -7820,7 +7854,6 @@
"version": "4.0.1",
"resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz",
"integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=",
"dev": true,
"requires": {
"is-extglob": "^2.1.1"
}
......@@ -8217,8 +8250,7 @@
"lodash": {
"version": "4.17.15",
"resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz",
"integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=",
"dev": true
"integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg="
},
"lodash.defaultsdeep": {
"version": "4.6.1",
......@@ -8786,8 +8818,7 @@
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz",
"integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=",
"dev": true
"integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk="
},
"multicast-dns": {
"version": "6.2.3",
......@@ -9640,6 +9671,11 @@
"resolved": "https://registry.npm.taobao.org/pick-by-alias/download/pick-by-alias-1.2.0.tgz",
"integrity": "sha1-X3yysfIabh6ISgyHhVqko3NhEHs="
},
"picomatch": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.0.tgz",
"integrity": "sha512-uhnEDzAbrcJ8R3g2fANnSuXZMBtkpSjxTTgn2LeSiQlfmq72enQJWdQllXW24MBLYnA1SBD2vfvx2o0Zw3Ielw=="
},
"pify": {
"version": "4.0.1",
"resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz",
......@@ -11148,8 +11184,7 @@
"requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz",
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
"dev": true
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
},
"reselect": {
"version": "3.0.1",
......@@ -13690,6 +13725,11 @@
"integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=",
"dev": true
},
"vue-wechat-title": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/vue-wechat-title/-/vue-wechat-title-2.0.5.tgz",
"integrity": "sha512-bCfKnJpbquqNY5ygNN7nRgNHGhyinWd277ecVh0Z15Tk8nS69catrvQSJIuRxXUOxoO/4Y32c6IfNbQUA8oh0g=="
},
"vuex": {
"version": "3.1.1",
"resolved": "https://registry.npm.taobao.org/vuex/download/vuex-3.1.1.tgz",
......@@ -13926,6 +13966,18 @@
"integrity": "sha1-+Xj6TJDR3+f/LWvtoqUV5xO9z0o=",
"dev": true
},
"http-proxy-middleware": {
"version": "0.19.1",
"resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
"integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
"dev": true,
"requires": {
"http-proxy": "^1.17.0",
"is-glob": "^4.0.0",
"lodash": "^4.17.11",
"micromatch": "^3.1.10"
}
},
"is-absolute-url": {
"version": "3.0.1",
"resolved": "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-3.0.1.tgz",
......
......@@ -10,7 +10,7 @@
<script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title>vue</title>
<title></title>
</head>
<body>
......
......@@ -85,6 +85,7 @@ import State from "./components/State/State.vue";
import VarBroadcast from "./components/VarBroadcast/VarBroadcast.vue";
import AutoBroadcast from "./components/AutoBroadcast/AutoBroadcast.vue";
import SlideShow from "./components/SlideShow/SlideShow.vue";
import CardReader from "./components/CardReader/CardReader.vue";
// import Gauge from "./components/Gauge/Gauge.vue";
//this is the view selecotr class
......@@ -101,7 +102,8 @@ import SlideShow from "./components/SlideShow/SlideShow.vue";
State,
VarBroadcast,
AutoBroadcast,
SlideShow
SlideShow,
CardReader
}
})
export default class App extends Vue {
......@@ -121,8 +123,10 @@ export default class App extends Vue {
"State",
"VarBroadcast",
"AutoBroadcast",
"SlideShow"
"SlideShow",
"CardReader"
];
toggleShowAddWidget(): void {
this.isShowAddWidget = !this.isShowAddWidget;
......@@ -216,7 +220,7 @@ export default class App extends Vue {
});
}
PubSub.subscribe("VarBroadcast",(messageName, Args)=>{
PubSub.subscribe("VarBroadcast",(messageName:string, Args:any)=>{
//接收到消息调用全部widget的parentUpdate函数
for (var widget of this.widgetList) {
((this.$refs[widget.ref] as Array<Widget>)[0] as Widget).parentUpdate(Args);}
......
......@@ -55,7 +55,7 @@
<b-row>
<b-col>
<b-input-group size="lg" prepend="BroadcastName" v-show="isShowPath">
<b-form-input v-model="autoUpdateName" ></b-form-input>
<b-form-input v-model="config.data.autoUpdateName" ></b-form-input>
</b-input-group>
</b-col>
</b-row>
......@@ -65,7 +65,7 @@
<b-row>
<b-col>
<b-input-group size="lg" prepend="BroadcastValue" v-show="isShowPath">
<b-form-input v-model="autoUpdateValue"></b-form-input>
<b-form-input v-model="config.data.autoUpdateValue"></b-form-input>
<b-input-group-append>
<b-button @click="broadcast" text="Button" variant="primary">Broadcast</b-button>
</b-input-group-append>
......@@ -78,7 +78,7 @@
<b-row>
<b-col>
<b-input-group size="lg" prepend="DelayTime" v-show="isShowPath" append="ms">
<b-form-input v-model="delayTime" ></b-form-input>
<b-form-input v-model="config.data.delayTime" ></b-form-input>
</b-input-group>
</b-col>
</b-row>
......@@ -128,16 +128,16 @@ export default class AutoBroadcast extends Widget {
timer?: number;
isShowPath: boolean = false;
isShowParams: boolean = false;
autoUpdateName: string = "";
autoUpdateValue: string ="";
delayTime:number = 0;
config: WidgetConfig = {
WidgetComponentName: "AutoBroadcast",
data: {
url: "",
displayname:"",
userInputData: ""
userInputData: "",
autoUpdateName:"",
autoUpdateValue:"",
delayTime:""
}
};
......@@ -264,10 +264,10 @@ export default class AutoBroadcast extends Widget {
broadcast()
{
if(this.autoUpdateName != "" && this.autoUpdateValue != "")
if(this.config.data.autoUpdateName != "" && this.config.data.autoUpdateValue != "")
{
var autoUpdateData= new Map<string, string>();
autoUpdateData.set(this.autoUpdateName,this.autoUpdateValue);
autoUpdateData.set(this.config.data.autoUpdateName,this.config.data.autoUpdateValue);
var autoUpdate:UpdatePayload = {
action: "AutoBroadcast",
variables: autoUpdateData,
......@@ -275,7 +275,7 @@ export default class AutoBroadcast extends Widget {
}
PubSub.publish('VarBroadcast',autoUpdate);
this.preStatusValue = this.autoUpdateValue;
this.preStatusValue = this.config.data.autoUpdateValue;
}
}
......@@ -292,10 +292,10 @@ export default class AutoBroadcast extends Widget {
);
await this.getData(this.pathwithVar);
if(this.autoUpdateName != "" && this.preStatusValue != this.StatusValue)
if(this.config.data.autoUpdateName != "" && this.preStatusValue != this.StatusValue)
{
var autoUpdateData= new Map<string, string>();
autoUpdateData.set(this.autoUpdateName,this.StatusValue);
autoUpdateData.set(this.config.data.autoUpdateName,this.StatusValue);
var autoUpdate:UpdatePayload = {
action: "AutoBroadcast",
variables: autoUpdateData,
......@@ -303,8 +303,8 @@ export default class AutoBroadcast extends Widget {
}
setTimeout(() => {
PubSub.publish('VarBroadcast',autoUpdate);
this.preStatusValue = this.autoUpdateValue;
}, this.delayTime);
this.preStatusValue = this.config.data.autoUpdateValue;
}, this.config.data.delayTime);
}
}
}
......
<template>
<b-container class="bv-example-row">
<b-row style="margin-top:10px">
<b-col>
<span style="float:left;" v-show = "!isShowPath" class="largeFont" v-if = "config.data.displayname != ''">{{ config.data.displayname }}</span>
<span style="float:left;" v-show = "!isShowPath" class="largeFont" v-if = "config.data.displayname == ''">{{ config.data.url }}</span>
<b-form-input v-show="isShowPath" v-model="config.data.displayname"></b-form-input>
</b-col>
<b-col>
<b-button @click="showPathConfig" variant="primary" style="float:right">
<span class="glyphicon glyphicon-cog"></span>
</b-button>
</b-col>
</b-row>
<br />
<b-row v-for="(info,index) in StatusValue" :key="index">
<b-col>
<div style="width:100%;overflow:auto;border-style: solid; border-width: 1px;">
<p style="float:left;margin:0px" class="largeFont">{{ info }}</p>
</div>
</b-col>
</b-row>
<br />
<b-row>
<b-col>
<b-input-group size="lg" prepend="path" v-show="isShowPath">
<b-form-input v-model="config.data.url"></b-form-input>
<b-input-group-append>
<b-button @click="updateUI" text="Button" variant="primary">OK</b-button>
<b-button variant="info" @click="pathPoke">poke</b-button>
</b-input-group-append>
</b-input-group>
</b-col>
</b-row>
<b-row>
<b-col>
<WidgetParams
ref="WidgetParams"
v-show="isShowParams"
action="get"
@updataVariables="viewLoad"
></WidgetParams>
</b-col>
</b-row>
<br />
<b-row>
<b-col>
<Navigation ref="FamilyLink" :url="config.data.url"></Navigation>
</b-col>
</b-row>
</b-container>
</template>
<script lang="ts">
import Vue from "vue";
import { VueSvgGauge } from "vue-svg-gauge";
import Component from "vue-class-component";
import { Prop, Watch } from "vue-property-decorator";
import { WidgetConfig } from "@/models/WidgetConfig";
import { UpdatePayload } from "@/models/UpdatePayload";
import { Widget } from "@/models/widget";
import { ResourceInfo } from "@/models/Customview";
import WidgetParams from "@/components/Common/WidgetParams.vue";
import axios from "axios";
import PathProcessor from "@/models/PathProcessor";
import StrMapObjChange from "@/models/StrMapObjChange";
import { forEach } from "typescript-collections/dist/lib/arrays";
import { map } from "d3";
import Navigation from "@/components/Common/Navigation.vue";
@Component({
components: {
WidgetParams,
Navigation
}
})
export default class CardReader extends Widget {
pathProcessor = new PathProcessor();
strMapObjChange = new StrMapObjChange();
WidgetComponentName: string = "CardReader";
StatusValue: string[] =[];
pathId: string = "";
userInputData = new Map<string, string>();
pathwithVar: string = "";
timer?: number;
isShowPath: boolean = false;
isShowParams: boolean = false;
config: WidgetConfig = {
WidgetComponentName: "CardReader",
data: {
url: "",
displayname:"",
userInputData: ""
}
};
created() {
this.config.data.userInputData = this.strMapObjChange.strMapToObj(
this.userInputData
);
}
mounted() {
this.timer = setInterval(this.refresh, 1000);
}
destroyed() {
clearInterval(this.timer);
}
updateUI() {
this.isShowPath = false;
this.isShowParams = true;
var url = this.config.data.url;
this.pathId = url.slice(0, url.indexOf("/"));
(this.$refs.WidgetParams as WidgetParams).setVariableList(
this.pathProcessor.extractVarFromPath(url)
);
}
showPathConfig() {
this.isShowPath = !this.isShowPath;
}
getConfig(): WidgetConfig {
// this.config.data.userInputData =(this.$refs.WidgetParams as WidgetParams).getVariableValues();
this.config.data.userInputData = this.strMapObjChange.strMapToObj(
(this.$refs.WidgetParams as WidgetParams).getVariableValues()
);
return this.config;
}
setConfig(widgetConfig: WidgetConfig): void {
this.config = widgetConfig;
this.updateUI();
//map不能序列化,必须要单独处理,这里的处理方法仅限map<string,string>类型
var temp = this.config.data.userInputData;
temp = JSON.parse(JSON.stringify(temp));
temp = this.strMapObjChange.objToStrMap(temp);
this.userInputData = temp;
(this.$refs.WidgetParams as WidgetParams).setVariableInput(
this.userInputData
);
}
samplePoke(sample: any) {
var samplePath = sample.CFET2CORE_SAMPLE_PATH;
var pokedPath: string;
pokedPath = samplePath;
var count: number = 0;
var temp = sample.Actions.get.Parameters;
temp = JSON.parse(JSON.stringify(temp));
temp = this.strMapObjChange.objToStrMap(temp);
var Parameters: Map<string, string>;
Parameters = temp;
Parameters.forEach((value, key) => {
count++;
if (count == 1) {
pokedPath = pokedPath + "?";
}
pokedPath = pokedPath + key + "=$" + key + "$&";
});
if (count != 0) {
pokedPath = pokedPath.substring(0, pokedPath.length - 1);
}
this.config.data.url = pokedPath;
}
pathPoke() {
var pokepath = this.config.data.url;
axios.get(pokepath, {
headers: {
'Pragma': 'no-cache',
'Cache-Control': 'no-cache'
}
}).then(response => {
this.samplePoke(response.data);
this.updateUI();
});
}
replaceStartPath(startPath: string): void {
this.config.data.url.replace("$startPath$", startPath);
}
parentUpdate(payload: UpdatePayload): void {
var shouldUpdate:boolean = false
this.userInputData = this.strMapObjChange.strMapToObj(
(this.$refs.WidgetParams as WidgetParams).getVariableValues());
var temp = this.userInputData;
temp = this.strMapObjChange.objToStrMap(temp);
this.userInputData = temp;
this.userInputData.forEach((value , key) =>{
payload.variables.forEach((valueofpayload,keyofpayload)=>{
if(key == keyofpayload && ((this.userInputData.get(key) as string) != (payload.variables.get(keyofpayload) as string)))
{
this.userInputData.set(key,payload.variables.get(keyofpayload) as string);
shouldUpdate = true;
}
});
});
if(shouldUpdate)
{
(this.$refs.WidgetParams as WidgetParams).setVariableInput(this.userInputData);
this.updateUI();
}
}
refresh() {
var Args: UpdatePayload = {
action: "get",
variables: (this.$refs.WidgetParams as WidgetParams).getVariableValues(),
target: ["self"]
};
this.viewLoad(Args);
}
async getData(url: string) {
var apiLoad = url;
await axios
.get(apiLoad, {
headers: {
Pragma: "no-cache",
"Cache-Control": "no-cache"
}
})
.then(response => {
this.StatusValue = response.data.CFET2CORE_SAMPLE_VAL;
if(this.StatusValue == undefined)
{
this.StatusValue = ["undefined"];
}
});
}
//called when widgetParams action clicked
async viewLoad(Args: UpdatePayload) {
// this.config.data.userInputData = Args.variables;
this.userInputData = Args.variables;
this.pathwithVar = this.pathProcessor.FillPathWithVar(
// this.config.data.userInputData,
this.userInputData,
this.config.data.url
);
await this.getData(this.pathwithVar);
}
}
</script>
<style scoped>
.waveView {
width: 100%;
height: auto;
}
</style>
\ No newline at end of file
......@@ -4,10 +4,32 @@ import '@/assets/css/fontSize.css';
import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap-vue/dist/bootstrap-vue.css'
import BootstrapVue from 'bootstrap-vue'
import VueRouter from 'vue-router'
Vue.config.productionTip = false;
Vue.use(BootstrapVue)
// Vue.use(VueRouter);
// const routes = [
// { path: '/', meta: {
// title: 'MdsplusWave'
// }
// }
// ];
// const router = new VueRouter({
// routes
// });
// router.beforeEach((to, from, next) => {
// document.title = 'MdsplusWave'
// next()
// })
new Vue({
render: (h) => h(App),
// router
}).$mount('#app');
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment