mirror of
https://github.com/openhardwaremonitor/openhardwaremonitor
synced 2025-08-22 18:07:09 +00:00
117 lines
2.9 KiB
JavaScript
117 lines
2.9 KiB
JavaScript
/*
|
|
|
|
This Source Code Form is subject to the terms of the Mozilla Public
|
|
License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
Copyright (C) 2012 Prince Samuel <prince.samuel@gmail.com>
|
|
|
|
*/
|
|
|
|
ko.bindingHandlers.treeTable = {
|
|
update: function(element, valueAccessor, allBindingsAccessor) {
|
|
var dependency = ko.utils.unwrapObservable(valueAccessor()),
|
|
options = ko.toJS(allBindingsAccessor().treeOptions || {});
|
|
|
|
setTimeout(function() { $(element).treeTable(options); }, 0);
|
|
}
|
|
};
|
|
|
|
var node = function(config, parent) {
|
|
this.parent = parent;
|
|
var _this = this;
|
|
|
|
var mappingOptions = {
|
|
Children : {
|
|
create: function(args) {
|
|
return new node(args.data, _this);
|
|
}
|
|
,
|
|
key: function(data) {
|
|
return ko.utils.unwrapObservable(data.id);
|
|
}
|
|
}
|
|
};
|
|
|
|
ko.mapping.fromJS(config, mappingOptions, this);
|
|
}
|
|
|
|
$(function(){
|
|
$.getJSON('data.json', function(data) {
|
|
viewModel = new node(data, undefined);
|
|
|
|
(function() {
|
|
function flattenChildren(children, result) {
|
|
ko.utils.arrayForEach(children(), function(child) {
|
|
result.push(child);
|
|
if (child.Children) {
|
|
flattenChildren(child.Children, result);
|
|
}
|
|
});
|
|
}
|
|
|
|
viewModel.flattened = ko.dependentObservable(function() {
|
|
var result = []; //root node
|
|
|
|
if (viewModel.Children) {
|
|
flattenChildren(viewModel.Children, result);
|
|
}
|
|
|
|
return result;
|
|
});
|
|
|
|
viewModel.update = function() {
|
|
$.getJSON('data.json', function(data) {
|
|
ko.mapping.fromJS(data, {}, viewModel);
|
|
});
|
|
}
|
|
|
|
viewModel.rate = 3000; //milliseconds
|
|
viewModel.timer = {};
|
|
|
|
viewModel.startAuto = function (){
|
|
viewModel.timer = setInterval(viewModel.update, viewModel.rate);
|
|
}
|
|
|
|
viewModel.stopAuto = function (){
|
|
clearInterval(viewModel.timer);
|
|
}
|
|
|
|
viewModel.auto_refresh = ko.observable(false);
|
|
viewModel.toggleAuto = ko.dependentObservable(function() {
|
|
if (viewModel.auto_refresh())
|
|
viewModel.startAuto();
|
|
else
|
|
viewModel.stopAuto();
|
|
}, viewModel);
|
|
|
|
})();
|
|
|
|
ko.applyBindings(viewModel);
|
|
$("#tree").treeTable({
|
|
initialState: "expanded",
|
|
clickableNodeNames: true
|
|
});
|
|
});
|
|
$( "#refresh" ).button();
|
|
$( "#auto_refresh" ).button();
|
|
$( "#slider" ).slider({
|
|
value:3,
|
|
min: 1,
|
|
max: 10,
|
|
slide: function( event, ui ) {
|
|
viewModel.rate = ui.value * 1000;
|
|
if (viewModel.auto_refresh()) {
|
|
//reset the timer
|
|
viewModel.stopAuto();
|
|
viewModel.startAuto();
|
|
}
|
|
$( "#lbl" ).text( ui.value + "s");
|
|
}
|
|
});
|
|
$( "#lbl" ).text( $( "#slider" ).slider( "value" ) + "s");
|
|
|
|
});
|
|
|
|
|