var WORD = /[<<\w$]+/, RANGE = 500;
CodeMirror.registerHelper("hint", "anyword", function(editor, options) {
+
var acList = [],
word = options && options.word || WORD,
cur = editor.getCursor(),
function forEachParam(arr, f, fParam) {
for (var i = 0, e = arr.length; i < e; ++i){
- f(arr[i].key, fParam);
+ f(arr[i].name, fParam);
}
}
+++ /dev/null
-// CodeMirror, copyright (c) by Marijn Haverbeke and others
-// Distributed under an MIT license: http://codemirror.net/LICENSE
-
-(function(mod) {
- if (typeof exports == "object" && typeof module == "object") // CommonJS
- mod(require("codemirror"));
- else if (typeof define == "function" && define.amd) // AMD
- define(["codemirror"], mod);
- else // Plain browser env
- mod(CodeMirror);
-})(function(CodeMirror) {
- "use strict";
-
- var WORD = /[<<\w$]+/, RANGE = 500;
- CodeMirror.registerHelper("hint", "anyword", function(editor, options) {
- var acList = [],
- word = options && options.word || WORD,
- cur = editor.getCursor(),
- curLine = editor.getLine(cur.line),
- end = cur.ch,
- start = end,
- paramList = editor.data.parameterListObj.list;
-
- function forEachParam(arr, f, fParam) {
- for (var i = 0, e = arr.length; i < e; ++i){
- f(arr[i].name, fParam);
- };
- }
-
-
- function maybeAdd(possibleWord, word) {
- var pw = '<<' + possibleWord + '>>';
- if (pw.lastIndexOf(word, 0) == 0 && !arrayContains(acList, pw))
- acList.push(pw);
- }
-
- function arrayContains(arr, item) {
- if (!Array.prototype.indexOf) {
- var i = arr.length;
- while (i--) {
- if (arr[i] === item) {
- return true;
- }
- }
- return false;
- }
- return arr.indexOf(item) != -1;
- }
-
-
- options.completeSingle = false;
-
- while (start && word.test(curLine.charAt(start - 1)))
- --start;
-
- var curWord = curLine.slice(start, end);
-
- if(curWord.length > 1){
- forEachParam(paramList, maybeAdd, curWord);
- }
-
-
-
- return {list: acList, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, end)};
- });
-});
'ngMaterial': '../vendor/angular-material/angular-material.min',
'ngMessages': '../vendor/angular-messages/angular-messages.min',
'codeMirror-showHint' : '../assets/js/codemirror/addon/hint/show-hint',
+ 'codeMirror-jsonParametersHint' : '../assets/js/codemirror/addon/hint/json-parameters-hint',
'codeMirror-javascriptMode' : '../assets/js/codemirror/mode/javascript/javascript',
'codeMirror-matchBrackets' : '../assets/js/codemirror/addon/edit/matchbrackets',
},
"YANGMAN_ADD_LIST_ITEM": "Add list item",
"YANGMAN_AUGMENTATIONS": "Augmentations",
"YANGMAN_CANCEL": "Cancel",
+ "YANGMAN_CLOSE": "Close",
"YANGMAN_CLEAR_SEARCH": "Clear filter",
"YANGMAN_COLLECTION_CHANGE_NAME": "Edit collection name",
"YANGMAN_COLLECTION_DELETE": "Delete collection",
angular.module('app.yangman').controller('ParamsAdminCtrl', ParamsAdminCtrl);
- ParamsAdminCtrl.$inject = ['$mdDialog', 'YangmanService', 'HandleFileService', 'parametersList'];
+ ParamsAdminCtrl.$inject = ['$mdDialog', '$scope', 'YangmanService', 'HandleFileService', 'parametersList'];
- function ParamsAdminCtrl($mdDialog, YangmanService, HandleFileService, parametersList) {
+ function ParamsAdminCtrl($mdDialog, $scope, YangmanService, HandleFileService, parametersList) {
var vm = this;
vm.parametersList = parametersList;
vm.search = '';
- vm.sortField = '_key';
+ vm.sortField = '_name';
vm.sortAsc = true;
- vm.cancel = cancel;
+ vm.close = close;
vm.save = save;
vm.createEmptyParam = createEmptyParam;
vm.removeParam = removeParam;
vm.sortFunc = sortFunc;
vm.exportParameters = exportParameters;
vm.importParameters = importParameters;
- vm.validateKeysUnique = validateKeysUnique;
+ vm.validateNamesUnique = validateNamesUnique;
init();
+
/**
- * Loop over all key inputs in form and validate duplicities
+ * Loop over all name inputs in form and validate duplicities
*/
- function validateKeysUnique() {
+ function validateNamesUnique() {
var i = 0;
- while (vm.paramsForm.hasOwnProperty('key_' + i)){
- var modelValue = vm.paramsForm['key_' + i].$modelValue;
- vm.paramsForm['key_' + i].$setValidity(
+ while (vm.paramsForm.hasOwnProperty('name_' + i)){
+ var modelValue = vm.paramsForm['name_' + i].$modelValue;
+ vm.paramsForm['name_' + i].$setValidity(
'unique',
- vm.parametersList.isKeyUnique(modelValue)
+ vm.parametersList.isNameUnique(modelValue)
);
i++;
}
* @param fileContent
*/
function importParameters(fileContent) {
- if (fileContent && YangmanService.validateFile(fileContent, ['key', 'value'])){
+ if (fileContent && YangmanService.validateFile(fileContent, ['name', 'value'])){
try {
vm.parametersList.createParamsFromJson(fileContent);
vm.parametersList.saveToStorage();
* @returns {boolean}
*/
function filterParam(paramObj) {
- return !(paramObj._key || paramObj._value) ||
- paramObj._key.indexOf(vm.search) !== -1 ||
+ return !(paramObj._name || paramObj._value) ||
+ paramObj._name.indexOf(vm.search) !== -1 ||
paramObj._value.indexOf(vm.search) !== -1;
}
/**
* Cancel dialog
*/
- function cancel() {
- $mdDialog.cancel();
+ function close() {
+ vm.parametersList.removeEmptyParams();
+ $mdDialog.hide(vm.parametersList);
}
/**
var requestData = this;
requestData.paramsArray = [];
+ requestData.data = '';
+ requestData.type = null;
requestData.dataEditorOptions = {
mode: 'javascript',
lineNumbers: true,
- theme: 'eclipse',
- readOnly: requestData.type === 'RECEIVED',
lineWrapping: true,
matchBrackets: true,
extraKeys: { 'Ctrl-Space': 'autocomplete' },
- };
+ onLoad: function (cmInstance) {
- requestData.data = '';
- requestData.type = null;
+ cmInstance.on('changes', function () {
+ if (angular.isFunction(cmInstance.showHint)) {
+ cmInstance.showHint();
+ }
+ });
- // methods
- requestData.init = init;
+ cmInstance.on('cursorActivity', function () {
+ var lineString = cmInstance.getLine(cmInstance.getCursor().line);
+ requestData.paramsArray = RequestsService.scanDataParams($scope.parametersList, lineString);
+ if (!$scope.$$phase) {
+ $scope.$apply();
+ }
+ });
- function initCMOpts() {
- requestData.dataEditorOptions.readOnly = requestData.type === 'RECEIVED';
- requestData.dataEditorOptions.theme = requestData.type === 'RECEIVED' ? 'eclipse-disabled' : 'eclipse';
+ cmInstance.data = { parameterListObj: $scope.parametersList };
- if (requestData.type === 'SENT') {
- requestData.dataEditorOptions.onLoad = function (cmInstance){
- cmInstance.data = { parameterListObj: $scope.parametersList || { list: [] } };
+ },
+ };
- cmInstance.on('changes', function (){
- if (angular.isFunction(cmInstance.showHint)){
- cmInstance.showHint();
- }
- });
+ // methods
+ requestData.init = init;
- cmInstance.on('cursorActivity', function (){
- var lineString = cmInstance.getLine(cmInstance.getCursor().line);
- requestData.paramsArray = RequestsService.scanDataParams($scope.parametersList, lineString);
+ /**
+ * Set code mirror theme and readonly property considering requestData.type
+ */
+ function initEditorOptions() {
+ requestData.dataEditorOptions.theme = requestData.type === 'RECEIVED' ? 'eclipse-disabled' : 'eclipse';
+ requestData.dataEditorOptions.readOnly = requestData.type === 'RECEIVED';
+ }
- if (!$scope.$$phase) {
- $scope.$apply();
- }
- });
- cmInstance.refresh();
- };
- }
- }
/**
* Initialization
*/
function init(type){
requestData.type = type;
- initCMOpts();
-
-
- // watchers
- $scope.$on('YANGMAN_REFRESH_CM_DATA_' + type, refreshData);
+ initEditorOptions();
$scope.$on('YANGMAN_SET_CODEMIRROR_DATA_' + type, function (event, args){
requestData.data = args.params.data;
args.params.reqData = requestData.data;
});
- }
- /**
- * Refresh data using history request service
- */
- function refreshData() {
- requestData.data =
- $scope.requestToShow.setDataForView(true, $scope.requestToShow[$scope.requestDataToShow]);
}
+
}
});
locals: {
parametersList: $scope.parametersList,
},
+ }).then(function (parametersList){
+ $scope.setParametersList(parametersList);
+
});
}
* Create empty parameters list, load from local storage and set to $scope
*/
function initParams(){
- var paramsList = ParametersService.createEmptyParametersList('yangman_parameters');
- paramsList.loadListFromStorage();
- $scope.setParametersList(paramsList);
+ $scope.parametersList.loadListFromStorage();
}
/**
requestHeader.selectedShownDataType,
requestHeader.requestUrl,
reqData,
- $scope.parametersList
+ null
);
historyReq.setExecutionData(historyReqData.reqData, {}, '');
YangmanCtrl.$inject = [
'$mdDialog', '$scope', '$rootScope', 'YangmanDesignService', 'RequestBuilderService',
- 'EventDispatcherService', 'constants', 'PathUtilsService', 'PluginsUnsetterService', '$timeout',
+ 'EventDispatcherService', 'constants', 'ParametersService', 'PathUtilsService', 'PluginsUnsetterService', '$timeout',
];
function YangmanCtrl(
$mdDialog, $scope, $rootScope, YangmanDesignService, RequestBuilderService,
- EventDispatcherService, constants, PathUtilsService, PluginsUnsetterService, $timeout
+ EventDispatcherService, constants, ParametersService, PathUtilsService, PluginsUnsetterService, $timeout
) {
var main = this;
$scope.historyReqsSelected = false;
$scope.requestToShow = null;
$scope.requestDataToShow = '';
- $scope.parametersList = null;
+ $scope.parametersList = ParametersService.createEmptyParametersList('yangman_parameters');
main.selectedMainTab = 0;
main.leftPanelTab = 0;
* @param parametersList
*/
function setParametersList(parametersList) {
+ console.debug('setting params to $scope', parametersList);
$scope.parametersList = parametersList;
+ //$scope.rootBroadcast('YANGMAN_REFRESH_PARAMS_IN_CM');
}
/**
require.config({
- paths: {
- 'codeMirror-yangmanJsonHint': 'app/yangman/assets/js/codemirror/addon/hint/yangman-json-hint',
- },
});
define(['app/yangman/yangman.module']);
var self = this;
// properties
- self.key = '';
+ self.name = '';
self.value = '';
// attributes with underscore prefix are used for filtering in params admin
- self._key = '';
+ self._name = '';
self._value = '';
// functions
/**
* Grouped setter
*
- * @param key
+ * @param name
* @param value
*/
- function setData(key, value) {
- self.key = key;
+ function setData(name, value) {
+ self.name = name;
self.value = value;
- self._key = key;
+ self._name = name;
self._value = value;
}
/**
*
- * @returns {{key: (string|*), value: (string|*)}}
+ * @returns {{name: (string|*), value: (string|*)}}
*/
function toJSON() {
var obj = {
- key: self.key,
+ name: self.name,
value: self.value,
};
*/
function clone() {
var result = new ParameterModel();
- result.setData(self.key, self.val);
+ result.setData(self.name, self.val);
return result;
}
self.addEmptyItem = addEmptyItem;
self.toJSON = toJSON;
self.createParamsFromJson = createParamsFromJson;
- self.isKeyUnique = isKeyUnique;
+ self.isNameUnique = isNameUnique;
+ self.removeEmptyParams = removeEmptyParams;
/**
- * Returns false if key is already used
- * @param keyValue
+ * Returns false if name is already used
+ * @param nameValue
* @returns {boolean}
*/
- function isKeyUnique(keyValue) {
+ function isNameUnique(nameValue) {
return self.list.filter(function (item) {
- return item.key === keyValue;
+ return item.name === nameValue;
}).length === 1;
}
self.addRequestToList(self.createEntry());
}
+ function removeEmptyParams() {
+ self.list = self.list.filter(function (param) {
+ return param.name.length > 0;
+ });
+ }
+
/**
*
* @param elem
function createEntry(element) {
if (!element){
element = {
- key: '',
+ name: '',
value: '',
};
}
});
function notEmptyParam(item){
- return item.key;
+ return item.name;
}
};
}
/**
* Service for creating basic parameter object
* @returns {*}
- * @param key
+ * @param name
* @param value
*/
function createParameter(element){
var result = new ParameterModel();
- result.setData(element.key, element.value);
+ result.setData(element.name, element.value);
return result;
}
/**
* Service for creating empty parameters list
- * @param name used as key in local storage
+ * @param name used as name in local storage
* @returns {*}
*/
function createEmptyParametersList(name){
}
var returnedParamsList = paramsObj.list.filter( function (param){
- var paramIndex = usedParamLabelArray.indexOf(param.key);
+ var paramIndex = usedParamLabelArray.indexOf(param.name);
if ( paramIndex !== -1 ) {
return usedParamLabelArray.splice(paramIndex, 1);
}
});
usedParamLabelArray.forEach(function (param){
- returnedParamsList.push(ParametersService.createParameter(param));
+ returnedParamsList.push(ParametersService.createParameter({ name: param }));
});
return returnedParamsList;
function applyParams(paramsObj, data) {
var dataStr = JSON.stringify(data);
- paramsObj.list.forEach(function (param){
- dataStr = service.replaceStringInText(dataStr, '<<' + param.key + '>>', param.value);
- });
+ if (paramsObj && paramsObj.hasOwnProperty('list')) {
+ paramsObj.list.forEach(function (param){
+ dataStr = service.replaceStringInText(dataStr, '<<' + param.name + '>>', param.value);
+ });
+ }
return ParsingJsonService.parseJson(dataStr);
}
else {
allPreparedData.srcData = requestData;
}
+
allPreparedData.reqData = RequestsService.applyParams(params, allPreparedData.srcData);
// prepare req data
<div class="md-toolbar-tools">
<h2>{{'YANGMAN_PARAMETERS_ADMINISTRATION'| translate}}</h2>
<span flex></span>
- <md-button aria-label="{{'YANGMAN_CANCEL'| translate}}"
- ng-click="paramsAdmin.cancel()">
+ <md-button aria-label="{{'YANGMAN_CLOSE'| translate}}"
+ ng-click="paramsAdmin.close()">
<md-icon class="material-icons clickable" >
close
</md-icon>
- <md-tooltip md-direction="bottom">{{'YANGMAN_CANCEL'| translate}}</md-tooltip>
+ <md-tooltip md-direction="bottom">{{'YANGMAN_CLOSE'| translate}}</md-tooltip>
</md-button>
</div>
</md-toolbar>
</md-tooltip>
</md-button>
<md-menu-content>
- <!-- sort by key -->
+ <!-- sort by name -->
<md-menu-item>
<md-button aria-label="{{'YANGMAN_PARAMS_KEY'| translate}}"
- ng-click="paramsAdmin.sortBy('_key')">
+ ng-click="paramsAdmin.sortBy('_name')">
{{'YANGMAN_SORT_BY'| translate}}
{{'YANGMAN_PARAMS_KEY'| translate}}
{{paramsAdmin.sortAsc ? 'YANGMAN_SORT_DESC' : 'YANGMAN_SORT_ASC' | translate}}
</md-button>
</md-menu-item>
- <!-- /sort by key -->
+ <!-- /sort by name -->
<!-- sort by value -->
<md-menu-item>
orderBy: paramsAdmin.sortFunc : !paramsAdmin.sortAsc
track by $index">
- <!-- key input -->
+ <!-- name input -->
<md-input-container>
<label>{{'YANGMAN_PARAM_KEY' | translate}}</label>
- <input name="key_{{$index}}"
- ng-model="param.key"
+ <input name="name_{{$index}}"
+ ng-model="param.name"
ng-required="param.value"
- ng-change="paramsAdmin.validateKeysUnique()"
+ ng-change="paramsAdmin.validateNamesUnique()"
ng-focus="$last && paramsAdmin.createEmptyParam()"
autocomplete="off">
- <div ng-messages="paramsAdmin.paramsForm['key_'+$index].$error" multiple md-auto-hide="false">
+ <div ng-messages="paramsAdmin.paramsForm['name_'+$index].$error" multiple md-auto-hide="false">
<div ng-message="required">
{{'YANGMAN_PARAM_KEY_REQUIRED'| translate}}
</div>
</div>
</div>
</md-input-container>
- <!-- / key input -->
+ <!-- / name input -->
<!-- value input -->
<md-input-container flex>
</md-dialog-content>
<md-dialog-actions layout="row">
<span flex></span>
- <md-button ng-click="paramsAdmin.cancel()">
- {{'YANGMAN_CANCEL'| translate}}
+ <md-button ng-click="paramsAdmin.close()">
+ {{'YANGMAN_CLOSE'| translate}}
</md-button>
<md-button ng-click="paramsAdmin.save()" ng-disabled="!paramsAdmin.paramsForm.$valid">
{{'YANGMAN_SAVE'| translate}}
<div class="paramsBox" ng-show="requestData.paramsArray.length">
<div ng-repeat="param in requestData.paramsArray" class="line">
- <strong><<{{param.key}}>></strong> : <span>{{param.value !== undefined ? param.value : 'YANGUI_PARAM_DONT_REPLACE' | translate}}</span>
+ <strong><<{{param.name}}>></strong> : <span>{{param.value !== undefined ? param.value : 'YANGUI_PARAM_DONT_REPLACE' | translate}}</span>
</div>
</div>
'ngMessages',
'common/yangutils/yangutils.module',
'codemirror',
- 'codeMirror-yangmanJsonHint',
+ 'codeMirror-jsonParametersHint',
'codeMirror-javascriptMode',
'codeMirror-matchBrackets',
], function () {
+++ /dev/null
-// CodeMirror, copyright (c) by Marijn Haverbeke and others
-// Distributed under an MIT license: http://codemirror.net/LICENSE
-
-(function(mod) {
- if (typeof exports == "object" && typeof module == "object") // CommonJS
- mod(require("codemirror"));
- else if (typeof define == "function" && define.amd) // AMD
- define(["codemirror"], mod);
- else // Plain browser env
- mod(CodeMirror);
-})(function(CodeMirror) {
- "use strict";
-
- var WORD = /[<<\w$]+/, RANGE = 500;
- CodeMirror.registerHelper("hint", "anyword", function(editor, options) {
- var acList = [],
- word = options && options.word || WORD,
- cur = editor.getCursor(),
- curLine = editor.getLine(cur.line),
- end = cur.ch,
- start = end,
- paramList = editor.data.parameterListObj.list;
-
- function forEachParam(arr, f, fParam) {
- for (var i = 0, e = arr.length; i < e; ++i){
- f(arr[i].name, fParam);
- };
- }
-
-
- function maybeAdd(possibleWord, word) {
- var pw = '<<' + possibleWord + '>>';
- if (pw.lastIndexOf(word, 0) == 0 && !arrayContains(acList, pw))
- acList.push(pw);
- }
-
- function arrayContains(arr, item) {
- if (!Array.prototype.indexOf) {
- var i = arr.length;
- while (i--) {
- if (arr[i] === item) {
- return true;
- }
- }
- return false;
- }
- return arr.indexOf(item) != -1;
- }
-
-
- options.completeSingle = false;
-
- while (start && word.test(curLine.charAt(start - 1)))
- --start;
-
- var curWord = curLine.slice(start, end);
-
- if(curWord.length > 1){
- forEachParam(paramList, maybeAdd, curWord);
- }
-
-
-
- return {list: acList, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, end)};
- });
-});
* Created by dakuzma on 25. 8. 2015.
*/
require.config({
- paths: {
- 'codeMirror-yanguiJsonHint': 'app/yangui/assets/js/codemirror/addon/hint/yangui-json-hint',
- },
-
});
define(['app/yangui/yangui.module']);
'jquery-ui',\r
'codemirror',\r
'codeMirror-showHint',\r
- 'codeMirror-yanguiJsonHint',\r
+ 'codeMirror-jsonParametersHint',\r
'codeMirror-javascriptMode',\r
'codeMirror-matchBrackets',\r
'ngClip',\r