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]);
106 if (Util.validateURL(input) && _.isEmpty(duplicatedUrl)) {
107 $('#tic-repository-add').prop('disabled', false);
109 $('#tic-repository-add').prop('disabled', true);
111 $('#tic-repository-input-clear').toggleClass('hidden', _.isEmpty(input));
113 $('#tic-repository-input').on('input change', _filter);
115 function _inputClearBtnHandler() {
116 $('#tic-repository-input').val('').trigger('change').focus();
117 $(this).toggleClass('hidden', true);
119 $('#tic-repository-input-clear').on('click', _inputClearBtnHandler);
122 * Add Repository Button
124 function _addRepoBtnHandler() {
125 var $repoInput = $('#tic-repository-input');
126 var input = $repoInput.val();
129 $('#tic-repository-add').prop('disabled', true);
130 $('#tic-repository-input-clear').addClass('hidden');
132 $('#tic-repository-add').prop('disabled', true).on('click', _addRepoBtnHandler);
135 * Remove Repository Button
137 function _removeRepoBtnHandler() {
138 var $li = $(this).parent();
139 var url = $li.text();
140 _.remove(repoStore, function (node) {
141 return _.isEqual(node.url, url);
145 $('#tic-repository-list').on('click', 'button', _removeRepoBtnHandler);
151 $('#tic-repository-list').sortable({
152 group: 'tic-repository-list',
153 pullPlaceholder: false,
155 // set $item relative to cursor position
156 onDragStart: function ($item, container, _super) {
157 var offset = $item.offset()
158 var pointer = container.rootGroup.pointer;
160 left: pointer.left - offset.left,
161 top: pointer.top - offset.top
163 _super($item, container);
165 onDrag: function ($item, position) {
167 left: position.left - adjustment.left,
168 top: position.top - adjustment.top
176 function _applyRepoBtnHandler() {
177 Util.showLoadingDialog(true);
179 .then(function(rawData) {
180 return require('js/page/package').updatePackageTree(rawData);
183 Util.showLoadingDialog(false);
185 .catch(function (reason) {
187 Util.showLoadingDialog(false);
188 Util.showAlertDialog('Failed to load package list.<br>Please check the tic-core.');
191 $('#tic-repository-apply').on('click', _applyRepoBtnHandler);
199 * Get package data from tic-core
200 * @method updatePackage
201 * @return {object} object of package
203 updatePackage: updatePackage,
206 * Get repository data
207 * @method getRepoStore
208 * @return {array} array of repository object
210 getRepoStore: getRepoStore