Diễn đàn    Cổng thông tin , Chính phủ điện tử, VSP (VerySmart Portal), MVC Model View Controller, json, webapi    Lập trình javascript hướng đối tượng, some point move

11  bài
20-9-2019 8:55:51
//var cv = document.getElementById("myCanvas");
const map = theMap();
//map.createWorkers();
loadMap();
setInterval(loadMap, 8000); // 8s
document.getElementById("factorymap").addEventListener("wheel", mapZooming);

function loadMap() {
d = new Date();
$('#data').load("/positions.ashx?d=" + d.getTime(), function (response_data, status, xhr) {
//console.log('load data complete');
map.run(response_data);
});
}

function clickme(obj) {
// do some thing
var moreinfo = document.getElementById("moreinfo");
moreinfo.innerHTML = "";
moreinfo.style.left = (parseInt(obj.style.left, 10) - 40) + "px";
moreinfo.style.top = (parseInt(obj.style.top, 10) - 30) + "px";
moreinfo.innerText = map.findName(obj.id);
}

function mapZooming(event) {
var moreinfo = document.getElementById("moreinfo");
moreinfo.style.left = "-300px";
moreinfo.style.top = "-300px";

if (event.deltaY < 0) {
console.log('scrolling up');
map.zoomIn();
}
else if (event.deltaY > 0) {
console.log('scrolling down');
map.zoomOut();
}
}

// object map
function theMap() {
const obj = {};
obj.wks = new Array();
obj.scale = 100;

obj.findSetpos = function (data_pos) {
for (i = 0; i < this.wks.length; i++) {
var m_worker = this.wks;

if (m_worker.id.localeCompare(data_pos.id) == 0) {
// found
m_worker.setNewPosition(data_pos.x, data_pos.y);

x = (m_worker.x * this.scale / 100) + 'px';
y = (m_worker.y * this.scale / 100) + 'px';
$('#' + m_worker.imgctl.id).animate({ top: y, left: x }, 700);
return true;
}
}

// not found add list
const worker = new theWorker();
if (worker) {
worker.setData(data_pos);
this.wks.push(worker);

var factorymap = document.getElementById("factorymap");
var img = document.createElement("img");
factorymap.appendChild(img);
img.src = "/theme/point3.png";
img.id = worker.id;
img.style.position = "absolute";
img.setAttribute("onclick", "clickme(this);");
worker.setControl(img);
}

return false;
}

obj.findName = function (id) {
for (i = 0; i < this.wks.length; i++) {
var m_worker = this.wks;
if (m_worker.id.localeCompare(id) == 0) {
return m_worker.name;
}
}

return '';
}

obj.run = function (response_data) {
if (response_data == null) return;
if (response_data === "") return;
var arr = JSON.parse(response_data);

for (i = 0; i < arr.length; i++) {
found = this.findSetpos(arr);
}

this.rePlace();
}

obj.rePlace = function () {
for (i = 0; i < this.wks.length; i++) {
var worker = this.wks;
x = (worker.x * this.scale / 100) + 'px';
y = (worker.y * this.scale / 100) + 'px';
$('#' + worker.imgctl.id).animate({ top: y, left: x }, 20);
}
}

obj.zoomIn = function () {
if (this.scale < 111) {
this.scale += 5;
var fmap = document.getElementById("fmap");
fmap.style.width = (this.scale * 1691 / 100) + 'px';
this.rePlace();
}
}

obj.zoomOut = function () {
if (this.scale > 39) {
this.scale -= 5;
fmap.style.width = (this.scale * 1691 / 100) + 'px';
this.rePlace();
}
}

return obj;
}

// object worker
function theWorker() {
const obj = {};
obj.name = '';
obj.id = '';
obj.x = 0;
obj.y = 0;
obj.imgctl;

obj.setNewPosition = function (x2, y2) {
obj.x = x2;
obj.y = y2;
};

obj.setControl = function (ctl) {
this.imgctl = ctl;
};

obj.setData = function (data) {
//console.log(data.id + ',' + data.name + ',' + data.x + ',' + data.y);
obj.name = data.name;
obj.id = data.id;
obj.x = data.x;
obj.y = data.y;
}

return obj;
}



=======
html đây :
=======
[code]
<!doctype html>
<html lang="en">
<head>
<title>Factory workers manager</title>
<script type="text/javascript" src="/jquery.min.js"></script>
</head>
<body>
<div id="factorymap" style="border:1px solid #ccc;position:relative;overflow:hidden;">
<img id="fmap" src="/theme/map2.jpg" />
<div id="moreinfo" class="hint-text" style="background:#f6dab2;width:160px;position:absolute;border:1px solid #ccc;top:-50px;left:-50px;z-index:30;"></div>
</div>
<div id="data" style="display:none;"></div>
<script type="text/javascript" src="/pos.js"></script>
</body>
</html>
[/code]
 

Lập trình không biên giới

608  bài
20-9-2019 18:1:39
Vòng lặp for

for (i = 0; i < this.wks.length; i++) {
var m_worker = this.wks;
if (m_worker.id.localeCompare(id) == 0) {
return m_worker.name;
}
}

Tốc độ chậm hơn câu lệnh :

let wk = this.wks.find(x => x.id === id);

===
javascript thật kỳ diệu
---
Cây sẽ cho lộc và cây sẽ cho hoa ...
 

Lập trình không biên giới

608  bài
4-10-2019 15:50:1
[code]
function walking() {
console.log('+++');
if (wk.loaded == 0)
loadData();
else
wk.walk();

setTimeout(walking, 3000);
}
walking();
[/code]

Khi setInterval(foo, 3000); không hoạt động ta phải dùng cách này
---
Cây sẽ cho lộc và cây sẽ cho hoa ...
 

Lập trình không biên giới

608  bài
29-10-2019 9:56:45
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca;
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
---
Cây sẽ cho lộc và cây sẽ cho hoa ...
 

Lập trình không biên giới

608  bài
29-10-2019 9:56:56
obj.imageExists = function (image_url) {
var http = new XMLHttpRequest();

http.open('HEAD', image_url, false);
http.send();

return (http.status != 404);
}
---
Cây sẽ cho lộc và cây sẽ cho hoa ...
 

Lập trình không biên giới

608  bài
29-10-2019 9:57:46
$.ajax({
type: "GET",
url: "http://192.168.40.148:3001/api/place/places",
beforeSend: function (xhr) { xhr.setRequestHeader('access_token', token); },
success: function (resp) {
console.log('data ', resp.data);
for (i = 0; i < resp.data.length; i++) {
var li = document.createElement("LI");
li.innerHTML = '<a href="/live2.html?token=' + token + '&place_id=' + resp.data._id + '">' + resp.data.name + '</a>';
document.getElementById("places").appendChild(li);

if (resp.data._id === place_id) {
$('#myKhucvuc').html(resp.data.name);
imgurl = 'http://192.168.40.148:3001/resource/place/' + resp.data.mapImage.name;
if (obj.imageExists(imgurl)) $('#fmap').attr('src', imgurl);
}
}
}
});

api post with headers
---
Cây sẽ cho lộc và cây sẽ cho hoa ...
 

Lập trình không biên giới

608  bài
30-10-2019 15:20:49
WebClient wc = new WebClient();
byte[] bytes = wc.DownloadData(imgurl);
MemoryStream ms = new MemoryStream(bytes);
Image img = Image.FromStream(ms);
return img;

Get Image from url
---
Cây sẽ cho lộc và cây sẽ cho hoa ...
 
Tên file Mô tả chi tiết Ngày
NWeb.zip (1) Module đơn giản Newsweb trên Dotnetnuke v10.x.x.x10/18/2025 8:08:11 AM
vspforum.zip (11) Ma nguon vspforum ngay xua4/18/2023 6:38:37 AM
pdfjs.rar (2) pdfjs 2017 : hiển thị tốt trên iphone 11, 12, 13 không lỗi, bản 2012 sẽ lỗi trên iphone6/21/2022 11:52:48 AM
pdfjs2.rar (2) Xem file pdf bằng viewer.hml cua pdfjs (thư viện chuẩn mozilla) 2012. https://mozilla.github.io/pdf.js/getting_started/#download có thể download bản prebuild tại đây6/21/2022 11:52:04 AM
runner.zip (0) using three.js, orbitcontrol to view an object move random on map. Di chuyển 1 đồ vật ngẫu nhiên trên bản đồ, sử dụng với demo nhân viên di chuyển trong văn phòng. Toàn js download về là chạy12/5/2019 5:55:14 PM
gmap.zip (1) google map + marker7/17/2019 2:25:05 PM
vinsmarthomeservice.zip (1) java post json to api, use AsyncTask, event listener7/9/2019 5:00:10 PM
fblogin.zip (0) Login facebook bang javascript SDK7/9/2019 9:16:37 AM
autocomplete-location.zip (2) autocomplete location geo from google place, html + js7/4/2019 4:37:55 PM
WebAPI.zip (8) api for android access db (v1.0.0)7/4/2019 9:14:17 AM