first commit
This commit is contained in:
964
customerportal/layouts/default/resources/components/HelpDesk.js
Normal file
964
customerportal/layouts/default/resources/components/HelpDesk.js
Normal file
@@ -0,0 +1,964 @@
|
||||
/*+***********************************************************************************
|
||||
|
||||
* The contents of this file are subject to the vtiger CRM Public License Version 1.2
|
||||
|
||||
* ("License.txt"); You may not use this file except in compliance with the License
|
||||
|
||||
* The Original Code is: Vtiger CRM Open Source
|
||||
|
||||
* The Initial Developer of the Original Code is Vtiger.
|
||||
|
||||
* Portions created by Vtiger are Copyright (C) Vtiger.
|
||||
|
||||
* All Rights Reserved.
|
||||
|
||||
*************************************************************************************/
|
||||
|
||||
|
||||
|
||||
function HelpDesk_IndexView_Component($scope, $api, $webapp, $modal, sharedModalService, $translatePartialLoader, $rootScope, $http, $translate) {
|
||||
|
||||
|
||||
|
||||
if ($translatePartialLoader !== undefined) {
|
||||
|
||||
$translatePartialLoader.addPart('home');
|
||||
|
||||
$translatePartialLoader.addPart('HelpDesk');
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
var availableModules = JSON.parse(localStorage.getItem('modules'));
|
||||
|
||||
var currentModule = 'HelpDesk';
|
||||
|
||||
//set creatable true
|
||||
|
||||
if (availableModules !== null && availableModules[ currentModule ] !== undefined) {
|
||||
|
||||
$scope.isCreatable = availableModules[ currentModule ].create;
|
||||
|
||||
$scope.filterPermissions = availableModules[currentModule].recordvisibility;
|
||||
|
||||
}
|
||||
|
||||
angular.extend(this, new Portal_IndexView_Component($scope, $api, $webapp, sharedModalService));
|
||||
|
||||
$scope.exportEnabled = false;
|
||||
|
||||
$scope.$on('serviceHelpDesk', function () {
|
||||
|
||||
window.location.href = "index.php?module=HelpDesk&status=Open";
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
$scope.$on('editRecordModalHelpDesk.Template', function () {
|
||||
|
||||
$modal.open({
|
||||
|
||||
templateUrl: 'editRecordModalHelpDesk.template',
|
||||
|
||||
controller: HelpDesk_EditView_Component,
|
||||
|
||||
backdrop: 'static',
|
||||
|
||||
size: 'lg',
|
||||
|
||||
keyboard: 'false',
|
||||
|
||||
resolve: {
|
||||
|
||||
record: function () {
|
||||
|
||||
return {};
|
||||
|
||||
},
|
||||
|
||||
api: function () {
|
||||
|
||||
return $api;
|
||||
|
||||
},
|
||||
|
||||
webapp: function () {
|
||||
|
||||
return $webapp;
|
||||
|
||||
},
|
||||
|
||||
module: function () {
|
||||
|
||||
return 'HelpDesk';
|
||||
|
||||
},
|
||||
|
||||
language: function () {
|
||||
|
||||
return $scope.$parent.language;
|
||||
|
||||
},
|
||||
|
||||
editStatus: function () {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
var url = purl();
|
||||
|
||||
var status = url.param('status');
|
||||
|
||||
var loadStatus = '';
|
||||
|
||||
$scope.activateStatusElement = false;
|
||||
|
||||
if (status !== undefined && status === 'Open') {
|
||||
|
||||
loadStatus = 'Open';
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (loadStatus !== undefined && loadStatus !== '') {
|
||||
|
||||
$scope.loadOpenStatus = true;
|
||||
|
||||
var stateObject = {};
|
||||
|
||||
var title = "Portal";
|
||||
|
||||
var newUrl = "index.php?module=HelpDesk";
|
||||
|
||||
history.pushState(stateObject, title, newUrl);
|
||||
|
||||
localStorage.setItem('currentStatus', JSON.stringify({
|
||||
|
||||
"label": "Open",
|
||||
|
||||
"value": "Open"
|
||||
|
||||
}));
|
||||
|
||||
}
|
||||
|
||||
$scope.isCreateable = true;
|
||||
|
||||
$scope.viewLoading = false;
|
||||
|
||||
|
||||
|
||||
$scope.$watch('searchQ.ticketstatus', function (nvalue, ovalue) {
|
||||
|
||||
if (nvalue !== ovalue) {
|
||||
|
||||
localStorage.setItem('currentStatus', JSON.stringify($scope.searchQ.ticketstatus));
|
||||
|
||||
$scope.loadRecords();
|
||||
|
||||
$scope.currentPage = 1;
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
$scope.create = function () {
|
||||
|
||||
var modalInstance = $modal.open({
|
||||
|
||||
templateUrl: 'editRecordModalHelpDesk.template',
|
||||
|
||||
controller: HelpDesk_EditView_Component,
|
||||
|
||||
backdrop: 'static',
|
||||
|
||||
keyboard: 'false',
|
||||
|
||||
size: 'lg',
|
||||
|
||||
resolve: {
|
||||
|
||||
record: function () {
|
||||
|
||||
return {};
|
||||
|
||||
},
|
||||
|
||||
api: function () {
|
||||
|
||||
return $api;
|
||||
|
||||
},
|
||||
|
||||
webapp: function () {
|
||||
|
||||
return $webapp;
|
||||
|
||||
},
|
||||
|
||||
module: function () {
|
||||
|
||||
return $scope.module;
|
||||
|
||||
},
|
||||
|
||||
language: function () {
|
||||
|
||||
return $scope.$parent.language;
|
||||
|
||||
},
|
||||
|
||||
editStatus: function () {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$scope.loadRecords = function (pageNo) {
|
||||
|
||||
$scope.viewLoading = true;
|
||||
|
||||
$scope.module = 'HelpDesk';
|
||||
|
||||
var language = $scope.$parent.language;
|
||||
|
||||
var params = {};
|
||||
|
||||
$webapp.busy(false);
|
||||
|
||||
$scope.itemsPerPage = 10;
|
||||
|
||||
if ($scope.searchQ.onlymine) {
|
||||
|
||||
$scope.searchQ.mode = 'mine';
|
||||
|
||||
} else {
|
||||
|
||||
$scope.searchQ.mode = 'all';
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
var filter = {};
|
||||
|
||||
if ($scope.searchQ.ticketstatus !== undefined) {
|
||||
|
||||
if ($scope.searchQ.ticketstatus.value.toUpperCase() !== 'ALL') {
|
||||
|
||||
filter = {
|
||||
|
||||
'ticketstatus': $scope.searchQ.ticketstatus.value
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ($scope.sortParams === undefined) {
|
||||
|
||||
params = {
|
||||
|
||||
'mode': $scope.searchQ.mode,
|
||||
|
||||
'page': pageNo
|
||||
|
||||
}
|
||||
|
||||
} else if ($scope.sortParams !== undefined) {
|
||||
|
||||
params = $scope.sortParams;
|
||||
|
||||
}
|
||||
|
||||
$api.get($scope.module + '/FetchRecords', {
|
||||
|
||||
q: params,
|
||||
|
||||
filter: filter,
|
||||
|
||||
label: 'HelpDesk',
|
||||
|
||||
language: language
|
||||
|
||||
})
|
||||
|
||||
.success(function (result) {
|
||||
|
||||
$scope.pageInitialized = true;
|
||||
|
||||
var availableModules = JSON.parse(localStorage.getItem('modules'));
|
||||
|
||||
var currentModule = 'HelpDesk';
|
||||
|
||||
var ptitleLabel = availableModules[ currentModule ].uiLabel;
|
||||
|
||||
$scope.ptitle = ptitleLabel
|
||||
|
||||
$scope.headers = result.headers;
|
||||
|
||||
$scope.records = result.records;
|
||||
|
||||
$scope.totalPages = result.count;
|
||||
|
||||
$scope.edits = result.editLabels;
|
||||
|
||||
$scope.viewLoading = false;
|
||||
|
||||
$webapp.busy(false);
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
var ticketStatuses = [];
|
||||
|
||||
$scope.loadValues = function () {
|
||||
|
||||
var language = $scope.$parent.language;
|
||||
|
||||
if ($scope.module === 'HelpDesk') {
|
||||
|
||||
$api.get($scope.module + '/DescribeModule', {
|
||||
|
||||
language: language
|
||||
|
||||
})
|
||||
|
||||
.success(function (structure) {
|
||||
|
||||
|
||||
|
||||
var describeStructure = structure.describe.fields;
|
||||
|
||||
if (structure.describe === undefined && structure.message === 'Contacts module is disabled') {
|
||||
|
||||
alert("Contacts module has been disabled.");
|
||||
|
||||
window.location.href = "index.php?view=Logout";
|
||||
|
||||
}
|
||||
|
||||
var k = true;
|
||||
|
||||
angular.forEach(describeStructure, function (field) {
|
||||
|
||||
if (k) {
|
||||
|
||||
if (field.name === 'ticketstatus') {
|
||||
|
||||
$scope.ticketStatus = field.type.picklistValues;
|
||||
|
||||
k = false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
var all = {
|
||||
|
||||
"label": $translate.instant('All Tickets'),
|
||||
|
||||
"value": "all"
|
||||
|
||||
};
|
||||
|
||||
if ($scope.ticketStatus !== undefined) {
|
||||
|
||||
$scope.ticketStatus.unshift(all);
|
||||
|
||||
$scope.searchQ.ticketstatus = $scope.ticketStatus[ 0 ];
|
||||
|
||||
if (localStorage.getItem('currentStatus') !== undefined) {
|
||||
|
||||
$scope.currentStatus = JSON.parse(localStorage.getItem('currentStatus'));
|
||||
|
||||
if ($scope.currentStatus !== null && loadStatus == 'Open') {
|
||||
|
||||
var existingStatusLabel = $scope.currentStatus.label;
|
||||
|
||||
var existingStatusValue = $scope.currentStatus.value;
|
||||
|
||||
} else {
|
||||
|
||||
var existingStatusLabel = $translate.instant('All Tickets');
|
||||
|
||||
var existingStatusValue = "all";
|
||||
|
||||
}
|
||||
|
||||
var continueLoop = true;
|
||||
|
||||
angular.forEach($scope.ticketStatus, function (status, i) {
|
||||
|
||||
if (continueLoop) {
|
||||
|
||||
if (status.value === existingStatusValue) {
|
||||
|
||||
continueLoop = false;
|
||||
|
||||
$scope.searchQ.ticketstatus = $scope.ticketStatus[ i ];
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
$scope.activateStatus = true;
|
||||
|
||||
if ($scope.loadOpenStatus) {
|
||||
|
||||
$scope.searchQ.ticketstatus = $scope.ticketStatus[ 1 ];
|
||||
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
$scope.activateStatus = false;
|
||||
|
||||
$scope.searchQ.ticketstatus = {
|
||||
|
||||
"label": $translate.instant('All Tickets'),
|
||||
|
||||
"value": "all"
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$scope.status = [];
|
||||
|
||||
ticketStatuses = $scope.loadValues();
|
||||
|
||||
|
||||
|
||||
$scope.pageChanged = function (pageNo) {
|
||||
|
||||
$scope.loadPage = pageNo - 1;
|
||||
|
||||
if ($scope.sortParams !== undefined) {
|
||||
|
||||
$scope.sortParams.page = pageNo - 1;
|
||||
|
||||
$scope.loadRecords();
|
||||
|
||||
} else {
|
||||
|
||||
$scope.loadRecords(pageNo - 1);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
$scope.setSortOrder = function (header) {
|
||||
|
||||
var order = 'ASC';
|
||||
|
||||
if (header == $scope.OrderBy) {
|
||||
|
||||
$scope.reverse = !$scope.reverse;
|
||||
|
||||
}
|
||||
|
||||
if ($scope.reverse && $scope.OrderBy !== undefined) {
|
||||
|
||||
order = 'DESC';
|
||||
|
||||
}
|
||||
|
||||
$scope.OrderBy = header;
|
||||
|
||||
var params = {
|
||||
|
||||
'page': $scope.currentPage - 1,
|
||||
|
||||
'mode': $scope.searchQ.mode,
|
||||
|
||||
'order': order,
|
||||
|
||||
'orderBy': $scope.edits[ header ]
|
||||
|
||||
}
|
||||
|
||||
if ($scope.loadPage !== undefined) {
|
||||
|
||||
params.page = $scope.loadPage;
|
||||
|
||||
}
|
||||
|
||||
$scope.sortParams = params;
|
||||
|
||||
$scope.loadRecords();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
$scope.exportRecords = function (module) {
|
||||
|
||||
$scope.csvHeaders = [];
|
||||
|
||||
$scope.filename = $scope.ptitle;
|
||||
|
||||
if ($scope.searchQ.ticketstatus.label !== undefined) {
|
||||
|
||||
$scope.filename = $scope.ptitle + '_' + $scope.searchQ.ticketstatus.label;
|
||||
|
||||
}
|
||||
|
||||
var params1 = {};
|
||||
|
||||
var filter = {};
|
||||
|
||||
var language = $scope.$parent.language;
|
||||
|
||||
params1 = {
|
||||
|
||||
'mode': $scope.searchQ.mode
|
||||
|
||||
}
|
||||
|
||||
if ($scope.searchQ.ticketstatus.value.toUpperCase() !== 'ALL') {
|
||||
|
||||
filter = {
|
||||
|
||||
'ticketstatus': $scope.searchQ.ticketstatus.value
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
angular.forEach($scope.headers, function (header) {
|
||||
|
||||
if (header !== 'id') {
|
||||
|
||||
$scope.csvHeaders.push(header);
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
return $http.get('index.php?module=' + module + '&api=ExportRecords', {
|
||||
|
||||
params: {
|
||||
|
||||
q: params1,
|
||||
|
||||
filter: filter,
|
||||
|
||||
label: 'HelpDesk'
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
.then(function (response) {
|
||||
|
||||
return response.data.result.records;
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
function HelpDesk_DetailView_Component($scope, $api, $webapp, $translatePartialLoader, sharedModalService, $modal) {
|
||||
|
||||
$scope.module = 'HelpDesk';
|
||||
|
||||
if ($translatePartialLoader !== undefined) {
|
||||
|
||||
$translatePartialLoader.addPart('home');
|
||||
|
||||
$translatePartialLoader.addPart('HelpDesk');
|
||||
|
||||
$translatePartialLoader.addPart('Documents');
|
||||
|
||||
}
|
||||
|
||||
$scope.documentsEnabled = false;
|
||||
|
||||
//Enable or disable edit button
|
||||
|
||||
var availableModules = JSON.parse(localStorage.getItem('modules'));
|
||||
|
||||
var currentModule = $scope.module;
|
||||
|
||||
$scope.isEditable = availableModules[currentModule].edit
|
||||
|
||||
angular.extend(this, new Portal_DetailView_Component($scope, $api, $webapp));
|
||||
|
||||
$scope.$watch('HelpDeskStatus', function (nvalue, ovalue) {
|
||||
|
||||
$scope.closeButtonDisabled = false;
|
||||
|
||||
if (nvalue != ovalue) {
|
||||
|
||||
if (nvalue.toUpperCase() != 'CLOSED') {
|
||||
|
||||
$scope.isCommentCreateable = true;
|
||||
|
||||
$scope.closeButtonDisabled = true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
$scope.$on('editRecordModalDocuments.Template', function () {
|
||||
|
||||
$modal.open({
|
||||
|
||||
templateUrl: 'editRecordModalDocuments.template',
|
||||
|
||||
controller: Documents_EditView_Component,
|
||||
|
||||
backdrop: 'static',
|
||||
|
||||
keyboard: 'false',
|
||||
|
||||
resolve: {
|
||||
|
||||
record: function () {
|
||||
|
||||
return {
|
||||
|
||||
'parentId': $scope.id,
|
||||
|
||||
'parentModule': $scope.module
|
||||
|
||||
};
|
||||
|
||||
},
|
||||
|
||||
api: function () {
|
||||
|
||||
return $api;
|
||||
|
||||
},
|
||||
|
||||
webapp: function () {
|
||||
|
||||
return $webapp;
|
||||
|
||||
},
|
||||
|
||||
module: function () {
|
||||
|
||||
return 'Documents';
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
$scope.close = function () {
|
||||
|
||||
var params = {
|
||||
|
||||
'ticketstatus': 'Closed'
|
||||
|
||||
}
|
||||
|
||||
$api.post($scope.module + '/SaveRecord', {
|
||||
|
||||
record: params,
|
||||
|
||||
recordId: $scope.id
|
||||
|
||||
})
|
||||
|
||||
.success(function (savedRecord) {
|
||||
|
||||
if (savedRecord.record !== undefined) {
|
||||
|
||||
$webapp.busy();
|
||||
|
||||
// Update client data-structure to reflect Closed status.
|
||||
|
||||
var recordStatus = savedRecord.record.ticketstatus;
|
||||
|
||||
$scope.HelpDeskStatus = recordStatus;
|
||||
|
||||
var statusField = $scope.edits[ 'ticketstatus' ];
|
||||
|
||||
$scope.record[ statusField ] = $scope.HelpDeskCloseLabel;
|
||||
|
||||
$scope.closeButtonDisabled = false;
|
||||
|
||||
$webapp.busy(false)
|
||||
|
||||
$scope.isCommentCreateable = (recordStatus.toUpperCase() != 'CLOSED');
|
||||
|
||||
} else {
|
||||
|
||||
alert("Mandatory fields are missing," + savedRecord.message + '.');
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$scope.selectedTab = function (selected) {
|
||||
|
||||
$scope.selection = selected;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$scope.attachDocument = function (module, action) {
|
||||
|
||||
var actionConfig = {
|
||||
|
||||
'LBL_ADD_DOCUMENT': 'Documents'
|
||||
|
||||
};
|
||||
|
||||
if (actionConfig.hasOwnProperty(action)) {
|
||||
|
||||
sharedModalService.prepForModal(actionConfig[ action ]);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
$scope.edit = function (module, id) {
|
||||
|
||||
var modalInstance = $modal.open({
|
||||
|
||||
templateUrl: 'editRecordModalHelpDesk.template',
|
||||
|
||||
controller: HelpDesk_EditView_Component,
|
||||
|
||||
backdrop: 'static',
|
||||
|
||||
keyboard: 'false',
|
||||
|
||||
size: 'lg',
|
||||
|
||||
resolve: {
|
||||
|
||||
record: function () {
|
||||
|
||||
return $scope.record;
|
||||
|
||||
},
|
||||
|
||||
api: function () {
|
||||
|
||||
return $api;
|
||||
|
||||
},
|
||||
|
||||
webapp: function () {
|
||||
|
||||
return $webapp;
|
||||
|
||||
},
|
||||
|
||||
module: function () {
|
||||
|
||||
return $scope.module;
|
||||
|
||||
},
|
||||
|
||||
language: function () {
|
||||
|
||||
return $scope.$parent.language;
|
||||
|
||||
},
|
||||
|
||||
editStatus: function () {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
function HelpDesk_EditView_Component($scope, $modalInstance, record, api, webapp, module, $timeout, $translatePartialLoader, language, $filter, $http, editStatus) {
|
||||
|
||||
|
||||
|
||||
$scope.data = {};
|
||||
|
||||
$scope.datemodel = {};
|
||||
|
||||
$scope.timemodel = {};
|
||||
|
||||
$scope.editRecord = angular.copy(record);
|
||||
|
||||
$scope.serviceContractFieldPresent = false;
|
||||
|
||||
$scope.structure = null;
|
||||
|
||||
var availableModules = JSON.parse(localStorage.getItem('modules'));
|
||||
|
||||
if (availableModules[ 'ServiceContracts' ] !== undefined) {
|
||||
|
||||
$scope.serviceContractFieldPresent = true;
|
||||
|
||||
}
|
||||
|
||||
if ($translatePartialLoader !== undefined) {
|
||||
|
||||
$translatePartialLoader.addPart('home');
|
||||
|
||||
$translatePartialLoader.addPart('HelpDesk');
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
function splitFields(arr, size) {
|
||||
|
||||
var newArr = [];
|
||||
|
||||
for (var i = 0; i < arr.length; i += size) {
|
||||
|
||||
newArr.push(arr.slice(i, i + size));
|
||||
|
||||
}
|
||||
|
||||
return newArr;
|
||||
|
||||
}
|
||||
|
||||
$scope.openDatePicker = function ($event, elementOpened) {
|
||||
|
||||
$event.preventDefault();
|
||||
|
||||
$event.stopPropagation();
|
||||
|
||||
$scope.datemodel[ elementOpened ] = !$scope.datemodel[ elementOpened ];
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
$scope.openTimePicker = function ($event, elementOpened) {
|
||||
|
||||
$event.preventDefault();
|
||||
|
||||
$event.stopPropagation();
|
||||
|
||||
$scope.timemodel[ elementOpened ] = !$scope.timemodel[ elementOpened ];
|
||||
|
||||
};
|
||||
|
||||
// Disable weekend selection
|
||||
|
||||
$scope.disabled = function (date, mode) {
|
||||
|
||||
return (mode === 'day' && (date.getDay() === 0 || date.getDay() === 6));
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
$scope.minDate = new Date();
|
||||
|
||||
|
||||
|
||||
if (!editStatus) {
|
||||
|
||||
api.get(module + '/DescribeModule', {
|
||||
|
||||
language: language
|
||||
|
||||
})
|
||||
|
||||
.success(function (structure) {
|
||||
|
||||
var editables = [];
|
||||
|
||||
var editablesText = [];
|
||||
|
||||
$scope.timeLabels = [];
|
||||
|
||||
$scope.multipicklistFields = [];
|
||||
|
||||
$scope.referenceFields = [];
|
||||
|
||||
$scope.nonAvailableReferenceFields = [];
|
||||
|
||||
$scope.descriptionEnabled = false;
|
||||
|
||||
$scope.disabledFields = [];
|
||||
|
||||
angular.forEach(structure.describe.fields, function (field) {
|
||||
|
||||
Reference in New Issue
Block a user