[{"server":null,"owner":null,"id":"4def878e-69d3-4cd0-aebd-2efa9deb4aa3","params":{"result":{"value":null,"datetime":1623133129,"status":null,"version":0},"hash":{"value":"8+eB7rZeM8XujGWS0EXHbQ==","datetime":1623133747,"status":null,"version":0},"enabled":{"value":true,"datetime":1623133717,"status":null,"version":0},"error_text":{"value":null,"datetime":1623133423,"status":null,"version":0},"type":{"value":"EgsScenario","datetime":1623133129,"status":null,"version":0},"settings":{"value":"{\r\n  \"interval\": \"00:00:02\",\r\n  \"input\": \"48.39250538706612,53.08561325603247,0 48.3916008019351,53.08549340734039,0 48.39167409940283,53.0853119589439,0 48.39181445107519,53.08495754008844,0 48.39209640494313,53.08438800284189,0 48.39227957653078,53.08389896728745,0 48.39283025959841,53.08396288429309,0 48.39373600936838,53.08412382293808,0 48.39360388037241,53.08466109322499,0 48.39313385277075,53.08562609372662,0 48.39250538706612,53.08561325603247,0\",\r\n  \"pattern\": \"(?:(?<longitude>-?\\\\d+\\\\.?\\\\d*),(?<latitude>-?\\\\d+\\\\.?\\\\d*),(?<altitude>-?\\\\d+\\\\.?\\\\d*))\\\\s*\",\r\n  \"target\": \"*/Ship\"\r\n}","datetime":1623133777,"status":null,"version":0},"state":{"value":"ok.normal","datetime":1623133423,"status":null,"version":0},"script":{"value":"# имя: 'Position Simulator'\r\n# описание: симулятор движения\r\n# тип триггера: 'EgsScenario'\r\n# создан: 2017.10.26 16.20.45, Сельченков Н.Ю.\r\n# изменен: '2021.06.08 10.29.07', Сельченков Н.Ю.\r\n# подробности: https://redmine.integra-s.com:11000/projects/eilyacuario/wiki/Position_Simulator\r\n\r\nuse System.Text.RegularExpressions.Regex\r\nuse System.Text.RegularExpressions.MatchCollection\r\n\r\nuse json_schema\r\n`\r\n{\r\n    \"type\": \"object\",\r\n    \"properties\":\r\n    {\r\n        \"input\": { \"type\": \"string\" },\r\n        \"pattern\": { \"type\": \"string\" },\r\n        \"target\": { \"type\": \"string\" },\r\n        \"interval\": { \"type\": \"string\", \"format\": \"TimeSpan\", \"default\": \"00:00:05\" },\r\n    }\r\n}\r\n` as SETTINGS\r\n\r\nlet settings = SETTINGS(this.settings)\r\nlet index    = 0\r\nlet matches  = Regex(settings.pattern).Matches(settings.input) \r\nlet interval = settings.interval.TotalSeconds \r\n\r\nlet move(target as MoveableObject, index as int) = \r\n    let groups      = matches[index].Groups\r\n    target.position = \"POINT(\" + groups[\"longitude\"] +\" \" + groups[\"latitude\"] + \")\"\r\n    target.altitude = double(groups[\"altitude\"].Value) \r\nend\r\n\r\nlet execute() =\r\n    let i = 0\r\n    from graph.Find(settings.target) of type MoveableObject do\r\n        move(it, (index + i) % matches.Count)\r\n        i = i + 1 \r\n    now\r\n    index = (index + 1) % matches.Count\r\n    void()\r\nend\r\n\r\nthis.RunOnTimer(interval, execute)\r\n","datetime":1623133747,"status":null,"version":0},"name":{"value":"Position Simulator","datetime":1623133129,"status":null,"version":0}},"entity":"item","operation":"create"}]