7 '../model/JobPagingModel',
9 '../widget/JobTableItem',
10 '../widget/JobTableEmptyItem',
26 var logger = Logger('job.js');
28 // connected socket object
34 // the list for the job
35 var ModelJobList = [];
37 // the paging model for the table of job
41 var JOB_STATUS_DONE = 'DONE';
42 var JOB_STATUS_FAILED = 'FAILED';
44 function gotoPageNum(pageNum) {
45 logger.info('gotoPageNum : ' + pageNum);
49 function _update(pageNum) {
53 function _updateView(arrJobs) {
54 return new Promise(function (resolve, reject) {
55 logger.info('_updateView');
56 var targetTableBody = $('#tic-job-table > tbody');
57 targetTableBody.empty();
59 if (arrJobs.length <= 0) {
60 targetTableBody.append(new JobTableEmptyItem().getRow());
63 _.forEach(arrJobs, function (value, index) {
64 targetTableBody.append(new JobTableItem(value, index).getRow());
70 function _updateDataModel(result) {
71 return new Promise(function (resolve, reject) {
72 logger.info('_updateDataModel');
75 _.forEach(result, function (jobItem) {
76 var item = new JobModel(jobItem);
77 ModelJobList.push(item);
80 resolve(ModelJobList);
84 function _getAllListItem() {
88 logger.info('_getAllListItem');
89 return Util.POST(AppConfig.EVENT.JOB.JOB_GET_ALL_LISTITEM, msgData);
92 function _updatePagingView(dataObj) {
93 return new Promise(function (resolve, reject) {
94 logger.info('_updatePagingView');
96 var targetPaging = $('#tic-job-list-pagination');
100 targetPaging.append(new JobPaging(dataObj).getTemplate());
103 $('#tic-job-section .pagination > li > a').on('click', function(e) {
108 pagenum = $(this).data('pagenum');
111 gotoPageNum(pagenum);
120 function _updatePagingModel (result) {
121 return new Promise(function (resolve, reject) {
122 logger.info('_updatePagingModel');
124 var totalCount, pagingCount;
128 $('#tic-job-list-pagination').empty();
131 totalCount = Number(result[0].total_count);
133 if (_.isEmpty(ModelJobPaging)) {
134 ModelJobPaging = new JobPagingModel({
135 totalCount: totalCount,
136 currentPageNum: pageNum
140 resolve(ModelJobPaging);
144 function _getTotalCount() {
145 logger.info('_getTotalCount');
146 return Util.POST(AppConfig.EVENT.JOB.JOB_GET_ALL_COUNT);
149 return _getTotalCount()
150 .then(_updatePagingModel)
151 .then(_updatePagingView)
152 .then(_getAllListItem)
153 .then(_updateDataModel)
157 function updateList(selectedPageNum) {
158 logger.info('updateList');
160 // the default value of pageNum is 1.
161 var pageNum = selectedPageNum || 1;
162 gotoPageNum(pageNum);
166 * @name doCreateAnImage
169 * pathKsFile: '/var/tmp/tic-web/1/default.ks',
170 * pathOutput: '/var/tmp/tic-web/1/'
173 function doCreateAnImage(paramObj) {
176 logger.info('doCreateAnImage');
179 jobId: paramObj.jobId,
180 pathKsFile: paramObj.pathKsFile,
181 pathOutput: paramObj.pathOutput
184 client.emit(AppConfig.EVENT.SOCKET.FS_IMAGE_ADD_FROM, msgData);
186 updateList(ModelJobPaging.getCurrentPoint());
189 function _initSocket(socket) {
194 * whether can using mic or not
196 * AppConfig.EVENT.SOCKET.MIC_AVAILABLE_FROM = 'ws/mic/available/from'
197 * AppConfig.EVENT.SOCKET.MIC_AVAILABLE_TO = 'ws/mic/available/to'
199 client.emit(AppConfig.EVENT.SOCKET.MIC_AVAILABLE_FROM);
200 client.on(AppConfig.EVENT.SOCKET.MIC_AVAILABLE_TO, function (data) {
201 $('#tic-package-create').prop('disabled', !data);
205 * when running on mic
207 * AppConfig.EVENT.SOCKET.FS_IMAGE_ADD_TO = 'ws/fs/image/add/to'
209 client.on(AppConfig.EVENT.SOCKET.FS_IMAGE_ADD_TO, function (dataObj) {
210 return new JobLog(dataObj);
216 * AppConfig.EVENT.SOCKET.FS_IMAGE_ADD_FINISH = 'ws/fs/image/add/finish'
218 client.on(AppConfig.EVENT.SOCKET.FS_IMAGE_ADD_FINISH, function (dataObj) {
219 var jobId, logItem, msgObj;
222 jobId = dataObj.jobId;
225 logItem = new JobLog(dataObj);
228 logItem = new JobLog({
229 msg: 'Image created successfully.',
233 logger.info(AppConfig.EVENT.SOCKET.FS_IMAGE_ADD_FINISH);
236 $('#tic-package-create').prop('disabled', false);
238 function onError(err) {
245 function updateJobListView() {
246 // upate the list of jobs
247 updateList(ModelJobPaging.getCurrentPoint());
249 // notification popup
250 Util.showInfoDialog('Image created successfully. The #ID is ' + jobId + '.');
253 function updateJobInfo(data) {
255 // update the status and image_id
257 job_status: JOB_STATUS_DONE,
258 image_id: data.image_id
260 return Util.POST(AppConfig.EVENT.JOB.JOB_EDIT_ONE + jobId, msgObj)
263 function addAnImage() {
268 image_name: 'image.tar.gz',
269 image_type: 'external',
270 image_size: '92164532'
272 return Util.POST(AppConfig.EVENT.IMAGE.IMAGE_ADD_ONE, msgObj)
275 function getAnImageInfo() {
276 return new Promise(function (resolve, reject) {
286 return getAnImageInfo()
289 .then(updateJobListView)
296 * AppConfig.EVENT.SOCKET.FS_IMAGE_ADD_FAIL = 'ws/fs/image/add/fail'
298 client.on(AppConfig.EVENT.SOCKET.FS_IMAGE_ADD_FAIL, function (dataObj) {
299 var jobId, logItem, msgObj;
302 jobId = dataObj.jobId;
305 logItem = new JobLog(dataObj);
308 logItem = new JobLog({
309 msg: 'Failed to create image.',
313 // notification popup
314 Util.showAlertDialog('Failed to create image. The #ID is ' + jobId + '.');
317 $('#tic-package-create').prop('disabled', false);
321 job_status: JOB_STATUS_FAILED
323 Util.POST(AppConfig.EVENT.JOB.JOB_EDIT_ONE + jobId, msgObj)
325 // upate the list of jobs
326 updateList(ModelJobPaging.getCurrentPoint());
334 // set the config information for the app
335 Util.getAppConfig().then(function (data) {
337 _initSocket(Util.getWebSocket());
346 * Update list in job page
349 updateList: updateList,
353 * @method doCreateAnImage
355 doCreateAnImage: doCreateAnImage