14 var ANALYSIS_URL = '<%= protocol %>//<%= hostname %>:<%= port %>/analysis';
15 var ROPO_LI = '<li class="list-group-item clearfix"><span class="tic-repository-url"><%= url %></span><button type="button" class="btn pull-right btn-default"><i class="fa fa-trash-o"></i></button></li>';
17 var repoStore = []; // { name, url }
18 var recipeStore = []; // TODO: define repo spec
20 function getRepoStore() {
24 function _addRepo(url) {
25 $('#tic-repository-list').append(_.template(ROPO_LI)({
29 // TODO: define repo spec
35 // TODO: set/get sortable repo
36 function _updateRepo() {
37 var $repo = $('#tic-repository-list');
40 _.forEach(repoStore, function(repo) {
45 function _getAnalysisUrl() {
46 return _.template(ANALYSIS_URL)({
47 protocol: location.protocol,
48 hostname: location.hostname,
49 port: parseInt(location.port) + 1 // tic-core port
53 function updatePackage() {
54 return new Promise(function (resolve, reject) {
55 // TODO: define repo spec
57 repos : _.map(_.orderBy(repoStore, ['priority']), 'url'),
62 contentType: 'text/plain',
63 data: JSON.stringify(postBody),
67 // url: './temp/test.json',
68 // url: 'http://172.21.110.103:59001/analysis',
69 url: _getAnalysisUrl(),
70 success: function(rawData) {
71 repoStore = rawData.data.repos;
73 resolve(rawData.data);
75 error: function(err) {
83 console.log('settings: init');
86 * Recipe Import/Export
88 function _recipeImportBtnHandler() {
90 Util.showAlertDialog('Not yet implemented');
92 $('#tic-repository-recipe-import').on('click', _recipeImportBtnHandler);
93 function _recipeExportBtnHandler() {
95 Util.showAlertDialog('Not yet implemented');
97 $('#tic-repository-recipe-export').on('click', _recipeExportBtnHandler);
100 * Repository Input Component
103 var input = $(this).val();
104 var duplicatedUrl = _.filter(repoStore, ['url', input]);
105 if (Util.validateURL(input) && _.isEmpty(duplicatedUrl)) {
106 $('#tic-repository-add').prop('disabled', false);
108 $('#tic-repository-add').prop('disabled', true);
111 $('#tic-repository-input').on('input', _filter);
114 * Add Repository Button
116 function _addRepoBtnHandler() {
117 var $repoInput = $('#tic-repository-input');
118 var input = $repoInput.val();
121 $('#tic-repository-add').prop('disabled', true);
123 $('#tic-repository-add').prop('disabled', true).on('click', _addRepoBtnHandler);
126 * Remove Repository Button
128 function _removeRepoBtnHandler() {
129 var $li = $(this).parent();
130 var url = $li.text();
131 _.remove(repoStore, function (node) {
132 return _.isEqual(node.url, url);
136 $('#tic-repository-list').on('click', 'button', _removeRepoBtnHandler);
142 $('#tic-repository-list').sortable({
143 group: 'tic-repository-list',
144 pullPlaceholder: false,
146 // set $item relative to cursor position
147 onDragStart: function ($item, container, _super) {
148 var offset = $item.offset()
149 var pointer = container.rootGroup.pointer;
151 left: pointer.left - offset.left,
152 top: pointer.top - offset.top
154 _super($item, container);
156 onDrag: function ($item, position) {
158 left: position.left - adjustment.left,
159 top: position.top - adjustment.top
167 function _applyRepoBtnHandler() {
168 Util.showLoadingDialog(true);
170 .then(function(rawData) {
171 return require('js/page/package').updatePackageTree(rawData);
174 Util.showLoadingDialog(false);
176 .catch(function (reason) {
178 Util.showLoadingDialog(false);
179 Util.showAlertDialog('Failed to load package list.<br>Please check the tic-core.');
182 $('#tic-repository-apply').on('click', _applyRepoBtnHandler);
190 * Get package data from tic-core
191 * @method updatePackage
192 * @return {object} object of package
194 updatePackage: updatePackage,
197 * Get repository data
198 * @method getRepoStore
199 * @return {array} array of repository object
201 getRepoStore: getRepoStore