2016-03-21 18:52:48 +01:00
|
|
|
###
|
|
|
|
diff.html script
|
|
|
|
###
|
|
|
|
|
2019-10-01 21:42:46 +02:00
|
|
|
llapp = angular.module 'llngConfDiff', ['ui.tree', 'ui.bootstrap', 'llApp', 'ngCookies'] , ['$rootScopeProvider', ($rootScopeProvider) -> $rootScopeProvider.digestTtl(15)]
|
2016-03-21 18:52:48 +01:00
|
|
|
llapp.controller 'DiffCtrl', [ '$scope', '$http', '$q', '$translator', '$location', ($scope, $http, $q, $translator, $location) ->
|
|
|
|
$scope.links = links
|
|
|
|
$scope.menulinks = menulinks
|
|
|
|
$scope.staticPrefix = staticPrefix
|
|
|
|
$scope.scriptname = scriptname
|
|
|
|
#$scope.formPrefix = formPrefix
|
|
|
|
$scope.availableLanguages = availableLanguages
|
|
|
|
$scope.waiting = true
|
|
|
|
$scope.showM = false
|
|
|
|
$scope.cfg = []
|
2016-03-21 18:52:53 +01:00
|
|
|
$scope.data = {}
|
2016-03-22 22:48:17 +01:00
|
|
|
$scope.currentNode = null
|
2016-03-21 18:52:48 +01:00
|
|
|
|
|
|
|
# Import translations functions
|
|
|
|
$scope.translateTitle = (node) ->
|
|
|
|
return $translator.translateField node, 'title'
|
|
|
|
$scope.translateP = $translator.translateP
|
|
|
|
$scope.translate = $translator.translate
|
|
|
|
|
2016-03-22 06:56:42 +01:00
|
|
|
$scope.toggle = (scope) ->
|
|
|
|
scope.toggle()
|
|
|
|
|
2016-03-22 22:48:17 +01:00
|
|
|
$scope.stoggle = (scope,node) ->
|
|
|
|
$scope.currentNode = node
|
|
|
|
scope.toggle()
|
|
|
|
|
2016-03-21 18:52:48 +01:00
|
|
|
# Handle menu items
|
|
|
|
$scope.menuClick = (button) ->
|
|
|
|
if button.popup
|
|
|
|
window.open button.popup
|
|
|
|
else
|
|
|
|
button.action = button.title unless button.action
|
|
|
|
switch typeof button.action
|
|
|
|
when 'function'
|
|
|
|
button.action $scope.currentNode, $scope
|
|
|
|
when 'string'
|
|
|
|
$scope[button.action]()
|
|
|
|
else
|
|
|
|
console.log typeof button.action
|
|
|
|
$scope.showM = false
|
|
|
|
|
|
|
|
# Function to change interface language
|
|
|
|
$scope.getLanguage = (lang) ->
|
|
|
|
$scope.lang = lang
|
2019-09-24 22:02:17 +02:00
|
|
|
init()
|
2016-03-21 18:52:48 +01:00
|
|
|
$scope.showM = false
|
|
|
|
|
|
|
|
# function `getCfg(b,n)`:
|
|
|
|
# Download configuration metadatas
|
|
|
|
#
|
|
|
|
#@param b local conf (0 or 1)
|
|
|
|
#@param n cfgNumber
|
|
|
|
getCfg = (b,n) ->
|
|
|
|
d = $q.defer()
|
|
|
|
if not $scope.cfg[b]? or $scope.cfg[b] != n
|
|
|
|
$http.get("#{confPrefix}#{n}").then (response) ->
|
2016-03-22 22:48:17 +01:00
|
|
|
if response and response.data
|
|
|
|
$scope.cfg[b] = response.data
|
|
|
|
date = new Date response.data.cfgDate * 1000
|
|
|
|
$scope.cfg[b].date = date.toLocaleString()
|
|
|
|
console.log "Metadatas of cfg #{n} loaded"
|
|
|
|
d.resolve 'OK'
|
|
|
|
else
|
|
|
|
d.reject response
|
2016-03-21 18:52:48 +01:00
|
|
|
, (response) ->
|
|
|
|
console.log response
|
|
|
|
d.reject 'NOK'
|
|
|
|
else
|
|
|
|
d.resolve()
|
2016-03-21 18:52:50 +01:00
|
|
|
return d.promise
|
2016-03-21 18:52:48 +01:00
|
|
|
|
|
|
|
# Intialization function
|
|
|
|
# Simply set $scope.waiting to false during $translator and tree root
|
|
|
|
# initialization
|
|
|
|
init = ->
|
2016-03-21 18:52:50 +01:00
|
|
|
$scope.message = null
|
2016-03-23 06:40:46 +01:00
|
|
|
$scope.currentNode = null
|
2019-09-24 22:02:17 +02:00
|
|
|
$q.all [
|
|
|
|
$translator.init $scope.lang
|
|
|
|
$http.get("#{staticPrefix}reverseTree.json").then (response) ->
|
|
|
|
reverseTree = response.data
|
|
|
|
console.log "Structure loaded"
|
|
|
|
]
|
|
|
|
.then ->
|
|
|
|
d = $q.defer()
|
|
|
|
$http.get("#{scriptname}diff/#{$scope.cfg[0].cfgNum}/#{$scope.cfg[1].cfgNum}").then (response) ->
|
|
|
|
data = []
|
|
|
|
data = readDiff(response.data[0],response.data[1])
|
|
|
|
$scope.data = buildTree(data)
|
|
|
|
$scope.message = ''
|
|
|
|
$scope.waiting = false
|
|
|
|
, (response) ->
|
|
|
|
$scope.message = "#{$scope.translate('error')} : #{response.statusLine}"
|
|
|
|
# Colorized link
|
|
|
|
$scope.activeModule = "conf"
|
|
|
|
$scope.myStyle = {color: '#ffb84d'}
|
2016-03-21 18:52:48 +01:00
|
|
|
|
2016-03-22 22:48:14 +01:00
|
|
|
readDiff = (c1,c2,tr=true) ->
|
2016-03-22 06:56:42 +01:00
|
|
|
res = []
|
2016-03-21 18:52:53 +01:00
|
|
|
for k,v of c1
|
2016-03-22 22:48:14 +01:00
|
|
|
if tr
|
|
|
|
tmp =
|
|
|
|
title: $scope.translate(k)
|
|
|
|
id: k
|
|
|
|
else
|
|
|
|
tmp = title: k
|
2016-03-22 06:56:42 +01:00
|
|
|
unless k.match /^cfg(?:Num|Log|Author(?:IP)?|Date)$/
|
2017-03-15 21:06:16 +01:00
|
|
|
if v? and typeof v == 'object'
|
2016-03-22 06:56:42 +01:00
|
|
|
if v.constructor == 'array'
|
|
|
|
tmp.oldvalue = v
|
|
|
|
tmp.newvalue = c2[k]
|
|
|
|
else if typeof c2[k] == 'object'
|
2016-03-22 22:48:14 +01:00
|
|
|
tmp.nodes = readDiff c1[k],c2[k], false
|
2016-03-22 06:56:42 +01:00
|
|
|
else
|
|
|
|
tmp.oldnodes = toNodes v, 'old'
|
|
|
|
else
|
|
|
|
tmp.oldvalue = v
|
|
|
|
tmp.newvalue = c2[k]
|
|
|
|
res.push tmp
|
|
|
|
for k,v of c2
|
|
|
|
unless (k.match /^cfg(?:Num|Log|Author(?:IP)?|Date)$/) or c1[k]?
|
2016-03-22 22:48:14 +01:00
|
|
|
if tr
|
|
|
|
tmp =
|
|
|
|
title: $scope.translate(k)
|
|
|
|
id: k
|
|
|
|
else
|
|
|
|
tmp = title: k
|
2017-03-15 21:06:16 +01:00
|
|
|
if v? and typeof v == 'object'
|
2016-03-22 06:56:42 +01:00
|
|
|
if v.constructor == 'array'
|
|
|
|
tmp.newvalue = v
|
|
|
|
else
|
2018-11-20 12:41:51 +01:00
|
|
|
console.log "Iteration"
|
2016-03-22 06:56:42 +01:00
|
|
|
tmp.newnodes = toNodes v, 'new'
|
|
|
|
else
|
|
|
|
tmp.newvalue = v
|
|
|
|
res.push tmp
|
|
|
|
return res
|
|
|
|
|
|
|
|
toNodes = (c,s) ->
|
|
|
|
res = []
|
|
|
|
for k,v of c
|
2016-03-22 22:48:14 +01:00
|
|
|
tmp = title:k
|
2016-03-22 06:56:42 +01:00
|
|
|
if typeof v == 'object'
|
|
|
|
if v.constructor == 'array'
|
|
|
|
tmp["#{s}value"] = v
|
|
|
|
else
|
|
|
|
tmp["#{s}nodes"] = toNodes c[k], s
|
|
|
|
else
|
|
|
|
tmp["#{s}value"] = v
|
|
|
|
res.push tmp
|
|
|
|
return res
|
2016-03-21 18:52:53 +01:00
|
|
|
|
2016-03-22 21:48:32 +01:00
|
|
|
reverseTree = []
|
|
|
|
buildTree = (data) ->
|
|
|
|
return data unless reverseTree?
|
|
|
|
res = []
|
|
|
|
for elem in data
|
|
|
|
offset = res
|
2016-03-22 22:48:14 +01:00
|
|
|
path = if reverseTree[elem.id]? then reverseTree[elem.id].split '/' else ''
|
2016-03-22 21:48:32 +01:00
|
|
|
for node in path
|
|
|
|
if node.length > 0
|
|
|
|
if offset.length
|
2017-03-15 22:04:04 +01:00
|
|
|
found = -1
|
|
|
|
for n,i in offset
|
|
|
|
if n.id == node
|
|
|
|
#offset = n.nodes
|
|
|
|
found = i
|
|
|
|
if found != -1
|
|
|
|
offset = offset[found].nodes
|
|
|
|
else
|
2016-03-22 21:48:32 +01:00
|
|
|
offset.push
|
2017-03-15 22:04:04 +01:00
|
|
|
id: node
|
2016-03-22 22:48:14 +01:00
|
|
|
title: $scope.translate node
|
2016-03-22 21:48:32 +01:00
|
|
|
nodes: []
|
|
|
|
offset = offset[offset.length-1].nodes
|
|
|
|
else
|
|
|
|
offset.push
|
2017-03-15 22:04:04 +01:00
|
|
|
id: node
|
2016-03-22 22:48:14 +01:00
|
|
|
title: $scope.translate node
|
2016-03-22 21:48:32 +01:00
|
|
|
nodes: []
|
|
|
|
offset = offset[0].nodes
|
|
|
|
offset.push elem
|
|
|
|
return res
|
|
|
|
|
|
|
|
$scope.newDiff = ->
|
|
|
|
$location.path("/#{$scope.cfg[0].cfgNum}/#{$scope.cfg[1].cfgNum}")
|
|
|
|
|
2016-03-21 18:52:48 +01:00
|
|
|
pathEvent = (event, next, current) ->
|
2018-06-21 21:07:46 +02:00
|
|
|
n = next.match(new RegExp('#!?/(latest|[0-9]+)(?:/(latest|[0-9]+))?$'))
|
2016-03-21 18:52:48 +01:00
|
|
|
if n == null
|
|
|
|
$location.path '/latest'
|
|
|
|
else
|
2016-03-21 18:52:50 +01:00
|
|
|
$scope.waiting = true
|
2016-03-21 18:52:48 +01:00
|
|
|
$q.all [
|
2016-03-21 18:52:50 +01:00
|
|
|
$translator.init $scope.lang
|
2016-03-22 21:48:32 +01:00
|
|
|
$http.get("#{staticPrefix}reverseTree.json").then (response) ->
|
|
|
|
reverseTree = response.data
|
|
|
|
console.log "Structure loaded"
|
2016-03-21 18:52:48 +01:00
|
|
|
getCfg 0, n[1]
|
|
|
|
getCfg 1, n[2] if n[2]?
|
|
|
|
]
|
2016-03-22 22:48:17 +01:00
|
|
|
.then ->
|
2016-03-21 18:52:48 +01:00
|
|
|
if n[2]?
|
|
|
|
init()
|
|
|
|
else
|
|
|
|
if $scope.cfg[0].prev
|
2016-03-21 18:52:52 +01:00
|
|
|
$scope.cfg[1] = $scope.cfg[0]
|
2016-03-22 21:48:32 +01:00
|
|
|
getCfg 0, $scope.cfg[1].prev
|
2016-03-21 18:52:48 +01:00
|
|
|
.then ->
|
|
|
|
init()
|
|
|
|
else
|
2016-03-22 21:48:32 +01:00
|
|
|
$scope.data = []
|
2016-03-21 18:52:50 +01:00
|
|
|
$scope.waiting = false
|
2016-03-22 22:48:17 +01:00
|
|
|
, ->
|
|
|
|
$scope.message = $scope.translate('error')
|
|
|
|
$scope.waiting = false
|
2016-03-21 18:52:48 +01:00
|
|
|
true
|
|
|
|
|
|
|
|
$scope.$on '$locationChangeSuccess', pathEvent
|
|
|
|
]
|