[{"server":null,"owner":null,"id":"7506e5b7-52a0-4c4e-9716-b122c1793e01","params":{"result":{"value":null,"datetime":1600427502,"status":null,"version":0},"hash":{"value":"shsp5aA/ZGTn+btXgcnNJA==","datetime":1600857450,"status":null,"version":0},"enabled":{"value":false,"datetime":1600857217,"status":null,"version":0},"error_text":{"value":null,"datetime":1600856854,"status":null,"version":0},"type":{"value":"EgsScenario","datetime":1600854693,"status":null,"version":0},"settings":{"value":"{\r\n  \"path\": \"./graph-{timestamp}.json\"\r\n}","datetime":1600844877,"status":null,"version":0},"state":{"value":"ok.normal","datetime":1600856854,"status":null,"version":0},"script":{"value":"# имя: 'Export Graph'\r\n# описание: сохраняет текущий граф в файл\r\n# тип триггера: 'EgsScenario'\r\n# создан: 2020.09.18 15.13.16, Сельченков Н.Ю.\r\n# изменен: '2020.09.23 14.37.33', Сельченков Н.Ю.\r\n# подробности: https://redmine.integra-s.com:11000/projects/eilyacuario/wiki/Export_Graph\r\n\r\nuse System.IO.File as File\r\nuse System.Collections.Generic.List(string) as StringList\r\nuse acuario2.utils.DateTimeExtension\r\nuse acuario2.utils.JsonExtension\r\nuse acuario2.client.Object as Object\r\nuse acuario2.protocol.Param as ProtoParam\r\nuse acuario2.protocol.Graph as ProtoGraph\r\nuse acuario2.protocol.Graph.Pin as ProtoPin\r\nuse acuario2.protocol.Graph.Item as ProtoItem\r\nuse acuario2.protocol.Graph.Link as ProtoLink\r\nuse acuario2.utils.NameValueList(ProtoParam) as ProtoParamList\r\nuse acuario2.utils.NameValueList(ProtoPin) as ProtoPinList\r\nuse acuario2.utils.NameValueList(ProtoItem) as ProtoItemList\r\nuse acuario2.utils.NameValueList(ProtoLink) as ProtoLinkList\r\n\r\nuse System.Collections.Generic.Dictionary(Zone_states, double) as PrecedenceDictionary\r\nuse System.Collections.Concurrent.ConcurrentDictionary(Zone, AbstractObject) as UpdatedZones\r\n\r\nuse json_schema\r\n`\r\n{\r\n    \"type\": \"object\",\r\n    \"properties\":\r\n    {\r\n        \"path\": { \"type\": \"string\", \"default\": \"./graph-{timestamp}.json\" }\r\n    }\r\n}\r\n` as SETTINGS\r\n\r\nlet settings  = SETTINGS(this.settings)\r\nlet timestamp = DateTimeExtension.ToUnixTime(DateTime.UtcNow) \r\nlet path      = settings.path.Replace(\"{timestamp}\", string(timestamp)) \r\n\r\nprint(\"EXPORTING GRAPH TO\", path)\r\n\r\nlet toproto(proto, types, params) = \r\n    proto.types = StringList(types)\r\n    proto.@params = params\r\n    proto    \r\n\r\nlet items = from graph.Values of type Item bind string(Id) to \r\n                let puts  = (it as Object).ExportClone(ServerId)\r\n                let item  = toproto(ProtoItem(), Types, puts[0].@params)\r\n                let puts  = from puts skip 1 bind id to it \r\n                let pins  = from Pins bind Name to \r\n                                let params = try puts[Name].@params else ProtoParamList()                 \r\n                                toproto(ProtoPin(), Types, params)         \r\n                item.pins = ProtoPinList(pins) \r\n                item\r\n\r\nlet links = from graph.Values of type Link bind string(Id) to \r\n                let puts = (it as Object).ExportClone(ServerId) \r\n                toproto(ProtoLink(), Types, puts[0].@params)\r\n\r\nlet result   = ProtoGraph()\r\nresult.items = ProtoItemList(items)\r\nresult.links = ProtoLinkList(links)\r\n\r\nlet json = JsonExtension.ToJSON(result)\r\nFile.WriteAllText(path, json)\r\n\r\nprint(\"EXPORTED GRAPH TO\", path)\r\n\r\nthis.enabled = false ","datetime":1600857453,"status":null,"version":0},"name":{"value":"Export Graph","datetime":1600427558,"status":null,"version":0}},"entity":"item","operation":"create"}]