| <!-- The <systemd-unit-status-sk> custom element declaration. |
| |
| Attributes: |
| machine - The name of the machine the service is running on. |
| service - The systemd name of the service running, such as "logserver.service". |
| |
| Events: |
| unit-action - An event triggered when the user wants to perform an action |
| on the service. The detail of the event has the form: |
| |
| { |
| machine: "skia-monitoring", |
| name: "logserver.service", |
| action: "start" |
| } |
| |
| Methods: |
| None. |
| |
| Mailbox: |
| The element subscribes to the mailbox "<machine>:<service>" and uses that |
| value to populate the element. The mailbox value is expected to be a |
| systemd.UnitStatus. |
| --> |
| |
| <link rel="stylesheet" href="/res/common/css/md.css" type="text/css" media="all" /> |
| <link rel="import" href="/res/imp/bower_components/iron-flex-layout/iron-flex-layout-classes.html"> |
| |
| <dom-module id="systemd-unit-status-sk"> |
| <style include="iron-flex"> |
| div div { |
| font-family: monospace; |
| margin: 0.6em; |
| margin-right: 2em; |
| padding: 0.4em 1.2em; |
| } |
| #machine { |
| width: 15em; |
| } |
| #service { |
| width: 15em; |
| } |
| #uptime { |
| width: 4em; |
| } |
| #state { |
| width: 6em; |
| } |
| .running { |
| color: #44AA99; |
| } |
| .failed { |
| color: #CC6677; |
| } |
| .halted { |
| color: #882255; |
| } |
| .dead { |
| color: #D95F02; |
| } |
| .exited { |
| color: #666666; |
| } |
| </style> |
| <template> |
| <div class="layout horizontal wrap"> |
| <div id=service>[[service]]</div> |
| <div id=uptime>[[uptimeOf(value.props.ExecMainStartTimestamp)]]</div> |
| <div id=state class$="[[value.status.SubState]]">[[value.status.SubState]]</div> |
| <button raised data-action="start" data-name$="[[service]]">Start </button> |
| <button raised data-action="stop" data-name$="[[service]]">Stop </button> |
| <button raised data-action="restart" data-name$="[[service]]">Restart</button> |
| </div> |
| </template> |
| </dom-module> |
| |
| <script> |
| Polymer({ |
| is: "systemd-unit-status-sk", |
| |
| properties: { |
| machine: { |
| type: String, |
| value: "", |
| }, |
| service: { |
| type: String, |
| value: "", |
| }, |
| }, |
| |
| observers: [ |
| 'subscribe(machine, service)' |
| ], |
| |
| ready: function() { |
| this.subscribe(this.machine, this.service); |
| }, |
| |
| subscribe: function(machine, service) { |
| this.value = {}; |
| sk.Mailbox.subscribe(machine+":"+service, function(value) { |
| this.value = value; |
| }.bind(this)); |
| }, |
| |
| listeners: { |
| 'tap': 'tapHandler' |
| }, |
| |
| tapHandler: function(e) { |
| var ele = sk.findParent(e.target, "BUTTON"); |
| if (ele) { |
| var detail = { |
| machine: this.machine, |
| name: ele.dataset.name, |
| action: ele.dataset.action, |
| }; |
| this.dispatchEvent(new CustomEvent('unit-action', {detail: detail, bubbles: true})); |
| } |
| }, |
| |
| uptimeOf: function(microSeconds) { |
| return sk.human.diffDate(microSeconds/1000); |
| }, |
| |
| }); |
| </script> |