| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- 'use strict';
- angular.module('etcd.page')
- .controller('BrowserCtrl', function($scope, $modal, etcdApiSvc, pathSvc,
- ETCD_EVENT, d3, pollerSvc) {
- $scope.currPath = '/';
- $scope.currNode = null;
- $scope.rowClick = function(node) {
- if (node.dir) {
- $scope.currPath = node.key;
- }
- };
- $scope.truncateKey = function(key) {
- return pathSvc.tail(key);
- };
- $scope.openCreateModal = function(key) {
- $modal.open({
- templateUrl: '/page/browser/create-node.html',
- controller: 'CreateNodeCtrl',
- resolve: {
- key: d3.functor(key || $scope.currPath),
- }
- });
- };
- /**
- * Refresh the list whenever a node is changed.
- */
- $scope.$on(ETCD_EVENT.NODE_CHANGED, function(e, node) {
- var parentKey = pathSvc.getParent(node.key);
- $scope.refreshNode(parentKey);
- });
- /**
- * Refresh the list whenever a node is deleted.
- */
- $scope.$on(ETCD_EVENT.NODE_DELETED, function(e, node) {
- var parentKey = pathSvc.getParent(node.key);
- $scope.refreshNode(parentKey);
- });
- $scope.breadcrumbCallback = function(result) {
- $scope.currPath = result.path;
- };
- /**
- * Update currPath and always refetch that node.
- */
- $scope.refreshNode = function(path) {
- if ($scope.currPath === path) {
- // Force refresh.
- $scope.fetchNode();
- } else {
- $scope.currPath = path;
- }
- };
- $scope.fetchNode = function() {
- return etcdApiSvc.fetch($scope.currPath)
- .then(function(node) {
- $scope.currNode = node;
- });
- };
- $scope.$watch('currPath', function(currPath) {
- if (!currPath || currPath === '') {
- $scope.currPath = '/';
- return;
- }
- $scope.fetchNode();
- });
- pollerSvc.register('nodePoller', {
- fn: $scope.fetchNode,
- scope: $scope
- });
- });
|