Тема: Обозначение государственного номера транспортного средства
Как обозначается государственный номер тс (имеется ввиду название переменной)?Не unit_id? (искал название переменной в Javascript API документации.)
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Как обозначается государственный номер тс (имеется ввиду название переменной)?Не unit_id? (искал название переменной в Javascript API документации.)
У объекта отдельного свойства как "государственный номер" в системе нет. Обычно гос номер для объекта указывают в произвольных полях ( http://sdk.wialon.com/wiki/ru/sidebar/r … lnye_polja ), либо в самом имени (как часть имени)
Aidaronly77, регистрационный номер ТС, который указан в характеристиках объекта, можно получить вместе с остальными характеристиками вызвав unit.getProfileFields(). В полученном списке испрользуйте registration_plate.
Как получить значение поля имя(где указан номер В577ВУ) на данном скриншоте? (Wialon Hosting, Javascript)
Aidaronly77, получите все произвольные при помощи функции unit.getCustomFields(). В результате получите объект, содержащий произвольные поля: {id: 3, n: "cccc", v: "kkkkkkkkkkkk"}, где id - идентификатор произвольного поля, n - имя или ключ произвольного поля, v - значение поля.
Благодарю!
Все было бы хорошо, если бы не выводило null. Поля заполнены.
var flags = wialon.item.Item.dataFlag.base | wialon.item.Unit.dataFlag.lastMessage | wialon.item.Unit.dataFlag.customFields;
var ses = wialon.core.Session;
ses.updateDataFlags ( [{id: 3, n: "cccc", v: "kkkkkkkkkkkk"}]);
Понятия не имею, что писать в фигурных скобках. Подскажите, пожалуйста.
Aidaronly77, посмотрите формат здесь http://sdk.wialon.com/wiki/ru/sidebar/r … ata_flags.
Чтобы получить все объекты с их произвольными полями, выполните такие действия:
var s = wialon.core.Session.getInstance();
var flags = wialon.item.Item.dataFlag.base | wialon.item.Unit.dataFlag.lastMessage | wialon.item.Unit.dataFlag.customFields;
var spec = [{
"type": "type",
"data": "avl_unit",
"flags": flags,
"mode": 1
}];
s.updateDataFlags(flags, function() {console.log(arguments);});
s.getItems("avl_unit");
Ясно, спасибо!
Еще вопрос, не до конца понял как реализовать следующую задачу:
Вводится гос. номер в поле: например, В557ВУ.
Далее определяется что это за машина.
Реализация в http://sdk.wialon.com/playground язык JavaScript.
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Система контроля за подвижными элементами</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript" src="https://hst-api.wialon.com/wsdk/script/wialon.js"></script>
<script language="Javascript" type="text/javascript" src="jquery.js"></script>
<link type="text/css" href="/calendar/latest.css" rel="Stylesheet" />
<script type="text/javascript" src="/calendar/latest.js"></script>
</head>
<body>
<td>Гос № ТС: </td>
<td><input type = "text" id="units"><option></option></select></td>
<br>
Ресурс:<select id="res"><option></option></select>
Геозона:<select id="zones"></select>
<br>
<tr>
<td>От: (дата)</td>
<td><input type="date" id = "from"/></td>
<td>(время)</td>
<td><input type="time" id = "fromT"/></td>
<br>
</tr>
<td>До: (дата)</td>
<td><input type="date" id = "to"/></td>
<td>(время)</td>
<td><input type="time" id = "toT"/></td>
<br>
<tr>
<form>
<td><input type="button" value="Выполнить отчет" id=exec_btn></td>
</form>
<br>
</tr><tr>
<td> <div id="log"></div></td>
</body>
</html>
</body>
</html>
JavaScript:
// Print message to log
function msg(text) { $("#log").prepend(text + "<br/>"); }
function init() { // Execute after login succeed
var sess = wialon.core.Session.getInstance(); // get instance of current Session
// flags to specify what kind of data should be returned
var flags = wialon.item.Item.dataFlag.base | wialon.item.Unit.dataFlag.lastMessage | wialon.item.Unit.dataFlag.customFields;
var spec = [{
"type": "type",
"data": "avl_unit",
"flags": flags,
"mode": 1
}];
sess.updateDataFlags(flags, function() {console.log(arguments);});
sess.getItems("avl_unit");
sess.loadLibrary("itemIcon"); // load Icon Library
sess.updateDataFlags( // load items to current session
[{type: "type", data: "avl_unit", flags: flags, mode: 0}], // Items specification
function (code) { // updateDataFlags callback
if (code) { msg(wialon.core.Errors.getErrorText(code)); return; } // exit if error code
// get loaded 'avl_unit's items
var units = sess.getItems("avl_unit");
if (!units || !units.length){ msg("Units not found"); return; } // check if units found
for (var i = 0; i< units.length; i++){ // construct Select object using found units
var u = units[i]; // current unit in cycle
// append option to select
$("#units").append("<option value='"+ u.getId() +"'>"+ u.getName()+ "</option>");
}
// bind action to select change event
$("#units").change( getSelectedUnitInfo );
}
);
}
function getSelectedUnitInfo(){ // print information about selected Unit
var val = $("#units").val(); // get selected unit id
if(!val) return; // exit if no unit selected
var unit = wialon.core.Session.getInstance().getItem(val); // get unit by id
if(!unit){ msg("Unit not found");return; } // exit if unit not found
// construct message with unit information
var text = "<div>'"+unit.getName()+"' selected. "; // get unit name
var icon = unit.getIconUrl(32); // get unit Icon url
if(icon) text = "<img class='icon' src='"+ icon +"' alt='icon'/>"+ text; // add icon to message
var pos = unit.getPosition(); // get unit position
if(pos){ // check if position data exists
var time = wialon.util.DateTime.formatTime(pos.t);
text += "<b>Last message</b> "+ time +"<br/>"+ // add last message time
"<b>Position</b> "+ pos.x+", "+pos.y +"<br/>"+ // add info about unit position
"<b>Speed</b> "+ pos.s; // add info about unit speed
// try to find unit location using coordinates
wialon.util.Gis.getLocations([{lon:pos.x, lat:pos.y}], function(code, address){
if (code) { msg(wialon.core.Errors.getErrorText(code)); return; } // exit if error code
msg(text + "<br/><b>Location of unit</b>: "+ address+"</div>"); // print message to log
});
} else // position data not exists, print message
msg(text + "<br/><b>Location of unit</b>: Unknown</div>");
}
// execute when DOM ready
$(document).ready(function () {
wialon.core.Session.getInstance().initSession("https://hst-api.wialon.com"); // init session
// For more info about how to generate token check
// [url]http://sdk.wialon.com/playground/demo/app_auth_token[/url]
wialon.core.Session.getInstance().loginToken("5dce19710a5e26ab8b7b8986cb3c49e58C291791B7F0A7AEB8AFBFCEED7DC03BC48FF5F8", "", // try to login
function (code) { // login callback
// if error code - print error message
if (code){ msg(wialon.core.Errors.getErrorText(code)); return; }
msg("Logged successfully"); init(); // when login suceed then run init() function
});
});
Чувствую, что в функции Init() что-то напутал с произвольными полями.
Подскажите, пожалуйста, в чем ошибка?!
Осознав ошибки в коде предыдущего сообщения, я высылаю новый код, правда вопрос остается прежним, необходимо чтобы в log выводилась информация о машине (название, id) по введенному в форме номеру
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Система контроля за подвижными элементами</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript" src="https://hst-api.wialon.com/wsdk/script/wialon.js"></script>
<script language="Javascript" type="text/javascript" src="jquery.js"></script>
</head>
<body>
<td>Гос № ТС: </td>
<td><input type = "text" id="units"><option></option></td>
<tr>
<td>От: (дата, время)</td>
<td><input type="datetime-local" id = "from"/></td><br>
<td>До: (дата, время)</td>
<td><input type="datetime-local" id = "to"/></td>
<br>
<br>
<tr>
<form>
<td><input type="button" value="Выполнить отчет" id=exec_btn></td>
</form>
<br>
</tr><tr>
<div id="log"></div>
</body>
</html>
// Print message to log
function msg(text) { $("#log").prepend(text + "<br/>"); }
function init() { // Execute after login succeed
var sess = wialon.core.Session.getInstance(); // get instance of current Session
// flags to specify what kind of data should be returned
var flags = wialon.item.Item.dataFlag.base | wialon.item.Unit.dataFlag.lastMessage | wialon.item.Unit.dataFlag.customFields;
var spec = [{
"type": "type",
"data": "avl_unit",
"flags": flags,
"mode": 1
}];
sess.updateDataFlags(flags, function() {console.log(arguments);});
sess.getItems("avl_unit");
}
// выполняется, когда DOM готов
$(document).ready(function () {
// $("#exec_btn").click( executeReport ); // привязать действие к кнопке
wialon.core.Session.getInstance().initSession("https://hst-api.wialon.com"); // сессия инициализации
// Больше информации об авторизации
// http://sdk.wialon.com/playground/demo/app_auth_token
wialon.core.Session.getInstance().loginToken("5dce19710a5e26ab8b7b8986cb3c49e58C291791B7F0A7AEB8AFBFCEED7DC03BC48FF5F8", "", // try to login
function (code) { // ответный вызов логина
// если ошибка - выводится сообщение об ошибке
if (code){ msg(wialon.core.Errors.getErrorText(code)); return; }
msg("Успешная авторизация"); init(); // после успешной авторизации выполняется функция init()
});
});
Aidaronly77, посмотрите скоррективанный код http://sdk.wialon.com/playground/eWlc32LM.
В селекте объектов к имени добавил имя и значение первого произвольного поля объекта, если задано.
Спасибо, выручили!
Извините, конечно, но так и не могу понять действия с произвольными полями:
Во-первых, в SDK не нашел как таковой функции getCustomFields,
во-вторых, в функции getNameByVIN ошибка с произвольными полями, вроде делаю все верно.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Система контроля за подвижными элементами</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript" src="https://hst-api.wialon.com/wsdk/script/wialon.js"></script>
<script language="Javascript" type="text/javascript" src="jquery.js"></script>
</head>
<body>
<td>Гос № ТС: </td>
<td><input type = "text" id="unit"><option></option></td>
<tr>
<td>От: (дата, время)</td>
<td><input type="datetime-local" id = "from"/></td><br>
<td>До: (дата, время)</td>
<td><input type="datetime-local" id = "to"/></td>
<br>
<br>
<tr>
<form>
<td><input type="button" value="Выполнить отчет" id=exec_btn></td>
</form>
<br>
</tr><tr>
<div id="log"></div>
</body>
</html>
// Print message to log
function msg(text) { $("#log").prepend(text + "<br/>"); }
function init()
{
var val = $("#unit").val();
var sess = wialon.core.Session.getInstance(); // get instance of current Session
// flags to specify what kind of data should be returned
var flags = wialon.item.Item.dataFlag.base | wialon.item.Unit.dataFlag.lastMessage | wialon.item.Unit.dataFlag.customFields;
sess.updateDataFlags( // load items to current session
[{type: "type", data: "avl_unit", flags: flags, mode: 0}])// Items specification
// get loaded 'avl_unit's items
}
function getUnitByVIN()
{
var val = $("#unit").val();
var sess = wialon.core.Session.getInstance();
wialon.core.Session.getInstance().loadLibrary("itemCustomFields");
var units = sess.getItems("avl_unit");
var flags = wialon.item.Item.dataFlag.base | wialon.item.Unit.dataFlag.lastMessage | wialon.item.Item.dataFlag.customFields;
if (!units || !units.length){ msg("Units not found");} // check if units found
for (var i = 0; i < units.length; i++){ // construct Select object using found units
var u = units[i]; // current unit in cycle*/
var customFields = u.getCustomFields();
var firstCustomField = "";
for (var id in customFields) {
var name2 = customFields[id].n;
var valu = customFields[id].v;
if (val==name2)
msg(u.getName());
}
}
}
// выполняется, когда DOM готов
$(document).ready(function () {
$("#exec_btn").click( getUnitByVIN ); // привязать действие к кнопке
wialon.core.Session.getInstance().loadLibrary("itemCustomFields");
wialon.core.Session.getInstance().initSession("https://hst-api.wialon.com"); // сессия инициализации
// Больше информации об авторизации
// http://sdk.wialon.com/playground/demo/app_auth_token
wialon.core.Session.getInstance().loginToken("961137eb767b676a914b282570413b74885086A2569CF5E1F7B8EA4B0735E1B58F3663F3", "", // try to login
function (code) { // ответный вызов логина
// если ошибка - выводится сообщение об ошибке
if (code){ msg(wialon.core.Errors.getErrorText(code)); return; }
msg("Успешная авторизация"); init(); // после успешной авторизации выполняется функция init()
});
});
Благодарю, разобрался! Ура deal!
Aidaronly77, функции getCustomFields, как и getAdminFields, как и getProfileFields, как и ряд остальных - это геттеры определённых свойств айтемов (т.н. пропайтемы). У ресурсов например есть zones, jobs, notifications, drivers и т.д.
У юнитов есть commadDefinitions, sensors и др. Для всех них автоматически создаются геттеры: getZones и остальные.
Обращайтесь)