[add] 改成撈每周
This commit is contained in:
parent
f5438c7f65
commit
760be5089b
14
package-lock.json
generated
14
package-lock.json
generated
@ -11,6 +11,7 @@
|
|||||||
"@ant-design/icons-vue": "^6.1.0",
|
"@ant-design/icons-vue": "^6.1.0",
|
||||||
"axios": "^0.26.1",
|
"axios": "^0.26.1",
|
||||||
"bootstrap": "^5.1.3",
|
"bootstrap": "^5.1.3",
|
||||||
|
"moment": "^2.29.2",
|
||||||
"vue": "^3.2.25"
|
"vue": "^3.2.25"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@ -1061,6 +1062,14 @@
|
|||||||
"sourcemap-codec": "^1.4.8"
|
"sourcemap-codec": "^1.4.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/moment": {
|
||||||
|
"version": "2.29.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz",
|
||||||
|
"integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==",
|
||||||
|
"engines": {
|
||||||
|
"node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/nanoid": {
|
"node_modules/nanoid": {
|
||||||
"version": "3.3.2",
|
"version": "3.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz",
|
||||||
@ -2348,6 +2357,11 @@
|
|||||||
"sourcemap-codec": "^1.4.8"
|
"sourcemap-codec": "^1.4.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"moment": {
|
||||||
|
"version": "2.29.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz",
|
||||||
|
"integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg=="
|
||||||
|
},
|
||||||
"nanoid": {
|
"nanoid": {
|
||||||
"version": "3.3.2",
|
"version": "3.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz",
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
"@ant-design/icons-vue": "^6.1.0",
|
"@ant-design/icons-vue": "^6.1.0",
|
||||||
"axios": "^0.26.1",
|
"axios": "^0.26.1",
|
||||||
"bootstrap": "^5.1.3",
|
"bootstrap": "^5.1.3",
|
||||||
|
"moment": "^2.29.2",
|
||||||
"vue": "^3.2.25"
|
"vue": "^3.2.25"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
@ -17,7 +17,7 @@ import BJ_Casino_Rank from './components/BJ_Casino_Rank.vue';
|
|||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: #2c3e50;
|
color: #2c3e50;
|
||||||
margin-top: 60px;
|
margin-top: 0px;
|
||||||
font-family: 'Zen Maru Gothic', sans-serif;
|
font-family: 'Zen Maru Gothic', sans-serif;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -6,7 +6,8 @@ import { BJ_Casino_Rank } from "../script/BJ_Casino_Rank";
|
|||||||
let Title = ref("BJ_Casino_Rank");
|
let Title = ref("BJ_Casino_Rank");
|
||||||
let RankData = ref([]);
|
let RankData = ref([]);
|
||||||
const self = {
|
const self = {
|
||||||
RankData: RankData
|
Title: Title,
|
||||||
|
RankData: RankData,
|
||||||
}
|
}
|
||||||
const Script = new BJ_Casino_Rank(self);
|
const Script = new BJ_Casino_Rank(self);
|
||||||
|
|
||||||
@ -23,6 +24,7 @@ const Script = new BJ_Casino_Rank(self);
|
|||||||
<th align="left">倍率</th>
|
<th align="left">倍率</th>
|
||||||
<th align="left">機台</th>
|
<th align="left">機台</th>
|
||||||
<th align="left">桌號</th>
|
<th align="left">桌號</th>
|
||||||
|
<th align="left">日期</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@ -43,8 +45,12 @@ const Script = new BJ_Casino_Rank(self);
|
|||||||
<td align="left">
|
<td align="left">
|
||||||
<font size="5"><b>{{ item[3][1] }}</b></font>
|
<font size="5"><b>{{ item[3][1] }}</b></font>
|
||||||
</td>
|
</td>
|
||||||
|
<td align="left">
|
||||||
|
<font size="5"><b>{{ item[4] }}</b></font>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
</tbody>
|
</tbody>
|
||||||
</table> </div>
|
</table>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
@ -1,12 +1,36 @@
|
|||||||
|
import moment from 'moment';
|
||||||
|
|
||||||
export class BJ_Casino_Rank {
|
export class BJ_Casino_Rank {
|
||||||
|
|
||||||
|
//#region public
|
||||||
|
|
||||||
|
public ContestData: string[] = ["4/7~4/13", "4/14~4/20", "4/21~4/27"];
|
||||||
|
|
||||||
|
//#endregion
|
||||||
|
|
||||||
//#region private
|
//#region private
|
||||||
|
|
||||||
private _client: any;
|
private _client: any;
|
||||||
|
|
||||||
private _ws: any;
|
private _ws: any;
|
||||||
|
|
||||||
private _rankdata: any = null;
|
private _rankdata: any[] = [];
|
||||||
|
|
||||||
|
private _nowSearchContestID: number = 0;
|
||||||
|
|
||||||
|
private _nowContestIndex: number = 0;
|
||||||
|
|
||||||
|
private _nowContestStartIndex: number = 0;
|
||||||
|
|
||||||
|
private _nowContestEndIndex: number = 0;
|
||||||
|
|
||||||
|
private _nowContestID: number = 0;
|
||||||
|
|
||||||
|
private _nowContestDate: string = "";
|
||||||
|
|
||||||
|
private _nowContestStart: string = "";
|
||||||
|
|
||||||
|
private _nowContestEnd: string = "";
|
||||||
|
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
@ -109,7 +133,12 @@ export class BJ_Casino_Rank {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case "rank.info": {
|
case "rank.info": {
|
||||||
this.SetRankData(Data);
|
this.RankDataCallBack(Data);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case "rank.history": {
|
||||||
|
this.ParseRankData(Data);
|
||||||
this._ws.close();
|
this._ws.close();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -119,13 +148,139 @@ export class BJ_Casino_Rank {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public SetRankData(data: any) {
|
public RankDataCallBack(data: any) {
|
||||||
let rankdata = data["rank"];
|
let id = +data["id"];
|
||||||
|
this._nowSearchContestID = id;
|
||||||
|
this._nowContestID = id;
|
||||||
|
this._nowContestDate = moment().format("MM/DD");
|
||||||
|
for (let i = 0; i < this.ContestData.length; i++) {
|
||||||
|
const contest: string = this.ContestData[i];
|
||||||
|
let str = contest.split("~");
|
||||||
|
let my = moment(this._nowContestDate);
|
||||||
|
let start = moment(str[0]);
|
||||||
|
let end = moment(str[1]);
|
||||||
|
let diff: number = my.diff(end, "days");
|
||||||
|
if (diff < 0) {
|
||||||
|
this._nowContestIndex = i;
|
||||||
|
this._nowContestStart = moment(start).format("MM/DD");
|
||||||
|
this._nowContestEnd = moment(end).format("MM/DD");
|
||||||
|
this._nowContestStartIndex = this._contestIDFormDate(this._nowContestStart);
|
||||||
|
this._nowContestEndIndex = this._contestIDFormDate(this._nowContestEnd);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this._client.Title.value = `${this._nowContestStart}~${this._nowContestEnd}`;
|
||||||
|
this.ParseRankData(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ParseRankData(data: any) {
|
||||||
|
let id = this._nowSearchContestID;
|
||||||
|
this.RankDataAddDate(id, data["rank"]);
|
||||||
|
this._rankdata = this._rankdata.concat(data["rank"]);
|
||||||
|
if (id !== this._nowContestStartIndex) {
|
||||||
|
this._nowSearchContestID = id - 1;
|
||||||
|
this.SendData("rank.history", { "id": this._nowSearchContestID, "t": 12, "p": 2 });
|
||||||
|
} else {
|
||||||
|
this.OrganizeRankData(this._rankdata);
|
||||||
|
this.SetRankData(this._rankdata);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public RankDataAddDate(id: number, rankdata: any) {
|
||||||
|
let date: string = this._contestDateFormID(id);
|
||||||
|
for (let i = 0; i < rankdata.length; i++) {
|
||||||
|
rankdata[i].push(date);
|
||||||
|
}
|
||||||
|
return rankdata;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OrganizeRankData(rankdata: any) {
|
||||||
|
rankdata.sort((a: any, b: any) => {
|
||||||
|
return b[1] - a[1];
|
||||||
|
});
|
||||||
|
rankdata = rankdata.filter((rankdata: any, index: any, arr: any) => {
|
||||||
|
return arr.findIndex((s: any) => rankdata[2][1] === s[2][1]) === index;
|
||||||
|
});
|
||||||
|
for (let i = 0; i < rankdata.length; i++) {
|
||||||
|
rankdata[i][0] = i + 1;
|
||||||
|
}
|
||||||
|
this._rankdata = rankdata;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SetRankData(rankdata: any) {
|
||||||
this._client.RankData.value = rankdata;
|
this._client.RankData.value = rankdata;
|
||||||
}
|
}
|
||||||
|
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
|
//#region Get
|
||||||
|
|
||||||
|
private _contestIDFormDate(date: string): number {
|
||||||
|
let my = moment(this._nowContestDate);
|
||||||
|
let target = moment(date);
|
||||||
|
let diffday: number = my.diff(target, "days");
|
||||||
|
let id = this._nowContestID - diffday;
|
||||||
|
if (id < 0) {
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
private _contestDateFormID(id: number): string {
|
||||||
|
let my: number = this._nowContestID;
|
||||||
|
let target: number = id;
|
||||||
|
let diffid: number = my - target;
|
||||||
|
if (diffid < 0) {
|
||||||
|
diffid = 0;
|
||||||
|
}
|
||||||
|
let date: string = moment().subtract(diffid, "days").format("MM/DD");
|
||||||
|
return date;
|
||||||
|
};
|
||||||
|
|
||||||
|
//#endregion
|
||||||
|
|
||||||
|
//#region Tools Function
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 陣列排序,asc&key陣列長度請一樣
|
||||||
|
* PS. boolean 帶false是先true在false
|
||||||
|
* @link JavaScript Object 排序 http://www.eion.com.tw/Blogger/?Pid=1170#:~:text=JavaScript%20Object%20排序
|
||||||
|
* @param Arr 需排序陣列
|
||||||
|
* @param asc 是否升序排列(小到大)
|
||||||
|
* @param key 需排序的key(優先順序左到右)(沒有就放空)
|
||||||
|
*/
|
||||||
|
public ObjectSort(Arr: any[], asc: boolean[] = [true], key?: string[]): any[] {
|
||||||
|
if (!key || key.length === 0 || Arr.length === 0 || Arr[0][key[0]] === undefined) {
|
||||||
|
console.error(`ObjectSort key error`);
|
||||||
|
return Arr;
|
||||||
|
} else if (asc.length !== key.length) {
|
||||||
|
console.error(`ObjectSort key asc error asc.length: ${asc.length}, key.length: ${key.length}`);
|
||||||
|
return Arr;
|
||||||
|
}
|
||||||
|
let count: number = key ? key.length : 1;
|
||||||
|
for (let i: number = count - 1; i >= 0; i--) {
|
||||||
|
Arr = Arr.sort(function (a: any, b: any): 1 | -1 {
|
||||||
|
let mya: any = a;
|
||||||
|
let myb: any = b;
|
||||||
|
if (key) {
|
||||||
|
mya = a[key[i]];
|
||||||
|
myb = b[key[i]];
|
||||||
|
}
|
||||||
|
|
||||||
|
// 加個等於數字相同不要再去排序到
|
||||||
|
if (asc[i]) {
|
||||||
|
return mya >= myb ? 1 : -1;
|
||||||
|
} else {
|
||||||
|
return mya <= myb ? 1 : -1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return Arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
//#endregion
|
||||||
|
|
||||||
//#region WebSocke
|
//#region WebSocke
|
||||||
|
|
||||||
public OnWebSocketMessage(e: any) {
|
public OnWebSocketMessage(e: any) {
|
||||||
|
Loading…
Reference in New Issue
Block a user