OSDN Git Service

[TMP] JSON.stringify(execObj, null '\t'
[eos/zephyr.git] / front-end / app / scripts / directives / Command.ts
1 namespace app.directives {
2     export class Command implements ng.IDirective {
3
4         public restrict: string;
5         public replace: boolean;
6         public templateUrl: string;
7         public scope: boolean;
8         public controller: string;
9         public controllerAs: string;
10         public bindToController: Object;
11
12         /** 
13          * constructor
14          *
15          * @param
16          */
17         constructor() {
18             this.restrict = 'E';
19             this.replace = true; 
20             this.scope = true;
21             this.controller = 'commandController';
22             this.controllerAs = 'ctrl';
23             this.bindToController = {
24                 index: '=',
25                 name: '=',
26                 remove: '&',
27                 list: '='
28             };
29             this.templateUrl = 'templates/command.html';
30         }
31
32         /**
33          * instance生成
34          * @returns {function(): HeaderMenu}
35          * @constructor
36          */
37         public static Factory(): ng.IDirectiveFactory {
38             var directive = () => {
39             return new Command();
40             };
41             directive.$inject = [];
42             return directive;
43         }
44     }
45
46     export class CommandController {
47
48         public static $inject = ['APIEndPoint', '$scope'];
49
50         // From parent directive bindToController property
51         private index: string;
52         private name: string;
53         private remove: Function;
54         private list: declares.CommandInfo[];
55         private workspace: declares.IFileInfo;
56
57         // property of ui.bootstrap uib-accordion directive
58         private isOpen: boolean;
59         private heading: string;
60
61         // property about Option directive
62         private files: any;
63         private options: declares.IOption[];
64         private dirs: any;
65
66         constructor(private APIEndPoint: services.APIEndPoint, private $scope: ng.IScope) {
67             var controller = this;
68
69             // Get OptionControlFile and bind it to $scope.options
70             this.APIEndPoint
71                 .getOptionControlFile('dcdFilePrint')
72                 .$promise
73                 .then(function(result) {
74                     controller.options = result.info;
75                 });
76
77             this.APIEndPoint
78                 .getDirectories()
79                 .$promise
80                 .then(function(result) {
81                     controller.dirs = result.info;
82                 });
83
84             this.heading = "[" + this.index + "]: dcdFilePring";
85             this.isOpen = true;
86
87             // When call add button at executeController, all accordion close.
88             this.$scope.$on('close', () => {
89                controller.isOpen = false;
90             });
91         }
92
93         public submit() {
94             var opt = [];
95             angular.forEach(this.options, (option) => {
96
97                 var obj = {
98                     name: option.option,
99                     arguments: []
100                 };
101
102                 angular.forEach(option.arg, (arg) => {
103                     if(arg.input) {
104                         obj.arguments.push(arg.input);
105                     }
106                 });
107
108                 if(obj.arguments.length > 0) {
109                    opt.push(obj);
110                 }
111             });
112
113             var execObj = {
114                 command: this.name,
115                 workspace: this.workspace.fileId,
116                 option: opt
117             };
118
119             console.log(JSON.stringify(execObj,null,'\t'));
120         }
121
122         public removeMySelf(index:number) {
123             this.remove()(index,this.list);
124         }
125
126         private reloadFiles() {
127             var fileId = this.workspace.fileId;
128             this.APIEndPoint
129                 .getFiles(fileId)
130                 .$promise
131                 .then((result) => { 
132                     var status = result.status;
133                     if(status === 'success') {
134                         this.files = result.info;
135                     } else {
136                         console.log(result.message);
137                     }
138                 });
139         }
140
141         public debug() {
142                     console.log(this.files);
143                     console.log(this.files);
144             console.log(this.workspace);
145         }
146     } 
147 }